{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "minDelay",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "proposers",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "executors",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "cancellers",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "bypassers",
          "type": "address[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "BypasserCallExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "CallExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "predecessor",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "delay",
          "type": "uint256"
        }
      ],
      "name": "CallScheduled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "Cancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "FunctionSelectorBlocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "FunctionSelectorUnblocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldDuration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newDuration",
          "type": "uint256"
        }
      ],
      "name": "MinDelayChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "BYPASSER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "CANCELLER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EXECUTOR_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PROPOSER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "blockFunctionSelector",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct RBACTimelock.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "bypasserExecuteBatch",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "cancel",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct RBACTimelock.Call[]",
          "name": "calls",
          "type": "tuple[]"
        },
        {
          "internalType": "bytes32",
          "name": "predecessor",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        }
      ],
      "name": "executeBatch",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getBlockedFunctionSelectorAt",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBlockedFunctionSelectorCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMinDelay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "getTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct RBACTimelock.Call[]",
          "name": "calls",
          "type": "tuple[]"
        },
        {
          "internalType": "bytes32",
          "name": "predecessor",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        }
      ],
      "name": "hashOperationBatch",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "isOperation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "registered",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "isOperationDone",
      "outputs": [
        {
          "internalType": "bool",
          "name": "done",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "isOperationPending",
      "outputs": [
        {
          "internalType": "bool",
          "name": "pending",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "isOperationReady",
      "outputs": [
        {
          "internalType": "bool",
          "name": "ready",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct RBACTimelock.Call[]",
          "name": "calls",
          "type": "tuple[]"
        },
        {
          "internalType": "bytes32",
          "name": "predecessor",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "delay",
          "type": "uint256"
        }
      ],
      "name": "scheduleBatch",
      "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": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "unblockFunctionSelector",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newDelay",
          "type": "uint256"
        }
      ],
      "name": "updateDelay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": {
    "object": "0x60806040523480156200001157600080fd5b506040516200428e3803806200428e83398181016040528101906200003791906200092d565b620000697fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177580620003f660201b60201c565b620000bb7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620003f660201b60201c565b6200010d7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e637fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620003f660201b60201c565b6200015f7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7837fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620003f660201b60201c565b620001b17fa1b2b8005de234c4b8ce8cd0be058239056e0d54f6097825b5117101469d5a8d7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775620003f660201b60201c565b620001e37fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775866200045960201b60201c565b60005b845181101562000253576200023f7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18683815181106200022b576200022a62000a45565b5b60200260200101516200045960201b60201c565b806200024b9062000aa3565b9050620001e6565b5060005b8351811015620002c457620002b07fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638583815181106200029c576200029b62000a45565b5b60200260200101516200045960201b60201c565b80620002bc9062000aa3565b905062000257565b5060005b82518110156200033557620003217ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7838483815181106200030d576200030c62000a45565b5b60200260200101516200045960201b60201c565b806200032d9062000aa3565b9050620002c8565b5060005b8151811015620003a657620003927fa1b2b8005de234c4b8ce8cd0be058239056e0d54f6097825b5117101469d5a8d8383815181106200037e576200037d62000a45565b5b60200260200101516200045960201b60201c565b806200039e9062000aa3565b905062000339565b50856003819055507f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5600087604051620003e292919062000b4e565b60405180910390a150505050505062000b7b565b600062000409836200046f60201b60201c565b905081600080858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b6200046b82826200048e60201b60201c565b5050565b6000806000838152602001908152602001600020600101549050919050565b620004a08282620004cc60201b60201c565b620004c78160016000858152602001908152602001600020620005bd60201b90919060201c565b505050565b620004de8282620005f560201b60201c565b620005b957600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200055e6200065f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620005ed836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200066760201b60201c565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b60006200067b8383620006e160201b60201c565b620006d6578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620006db565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6200072d8162000718565b81146200073957600080fd5b50565b6000815190506200074d8162000722565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007808262000753565b9050919050565b620007928162000773565b81146200079e57600080fd5b50565b600081519050620007b28162000787565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200080882620007bd565b810181811067ffffffffffffffff821117156200082a5762000829620007ce565b5b80604052505050565b60006200083f62000704565b90506200084d8282620007fd565b919050565b600067ffffffffffffffff82111562000870576200086f620007ce565b5b602082029050602081019050919050565b600080fd5b60006200089d620008978462000852565b62000833565b90508083825260208201905060208402830185811115620008c357620008c262000881565b5b835b81811015620008f05780620008db8882620007a1565b845260208401935050602081019050620008c5565b5050509392505050565b600082601f830112620009125762000911620007b8565b5b81516200092484826020860162000886565b91505092915050565b60008060008060008060c087890312156200094d576200094c6200070e565b5b60006200095d89828a016200073c565b96505060206200097089828a01620007a1565b955050604087015167ffffffffffffffff81111562000994576200099362000713565b5b620009a289828a01620008fa565b945050606087015167ffffffffffffffff811115620009c657620009c562000713565b5b620009d489828a01620008fa565b935050608087015167ffffffffffffffff811115620009f857620009f762000713565b5b62000a0689828a01620008fa565b92505060a087015167ffffffffffffffff81111562000a2a5762000a2962000713565b5b62000a3889828a01620008fa565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ab08262000718565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000ae55762000ae462000a74565b5b600182019050919050565b6000819050919050565b6000819050919050565b600062000b2562000b1f62000b198462000af0565b62000afa565b62000718565b9050919050565b62000b378162000b04565b82525050565b62000b488162000718565b82525050565b600060408201905062000b65600083018562000b2c565b62000b74602083018462000b3d565b9392505050565b6137038062000b8b6000396000f3fe6080604052600436106101f25760003560e01c806364d623531161010d578063a944142d116100a0578063ca15c8731161006f578063ca15c8731461075e578063d45c44351461079b578063d547741f146107d8578063f23a6e6114610801578063f27a0c921461083e576101f9565b8063a944142d146106a4578063b08e51c0146106cd578063bc197c81146106f8578063c4d252f514610735576101f9565b80639010d07c116100dc5780639010d07c146105d657806391d14854146106135780639f5a23f714610650578063a217fddf14610679576101f9565b806364d623531461053b5780636ceef4801461056457806375b238fc146105805780638f61f4f5146105ab576101f9565b806326bb2ec51161018557806336568abe1161015457806336568abe1461046f5780633a98b4e414610498578063515a3db3146104c1578063584b153e146104fe576101f9565b806326bb2ec5146103a15780632ab0f529146103cc5780632f2ff15d1461040957806331d5075014610432576101f9565b806313bc9f20116101c157806313bc9f20146102bf578063150b7a02146102fc578063191cb7b314610339578063248a9ca314610364576101f9565b806301ffc9a7146101fe57806303e561551461023b57806307bd0265146102785780630db866b1146102a3576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102256004803603810190610220919061214a565b610869565b6040516102329190612192565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d91906121e3565b6108e3565b60405161026f919061221f565b60405180910390f35b34801561028457600080fd5b5061028d610900565b60405161029a9190612253565b60405180910390f35b6102bd60048036038101906102b891906122d3565b610924565b005b3480156102cb57600080fd5b506102e660048036038101906102e1919061234c565b610aab565b6040516102f39190612192565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612518565b610ad1565b604051610330919061221f565b60405180910390f35b34801561034557600080fd5b5061034e610ae5565b60405161035b9190612253565b60405180910390f35b34801561037057600080fd5b5061038b6004803603810190610386919061234c565b610b09565b6040516103989190612253565b60405180910390f35b3480156103ad57600080fd5b506103b6610b28565b6040516103c391906125aa565b60405180910390f35b3480156103d857600080fd5b506103f360048036038101906103ee919061234c565b610b39565b6040516104009190612192565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b91906125c5565b610b4e565b005b34801561043e57600080fd5b506104596004803603810190610454919061234c565b610b6f565b6040516104669190612192565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906125c5565b610b83565b005b3480156104a457600080fd5b506104bf60048036038101906104ba919061214a565b610c06565b005b3480156104cd57600080fd5b506104e860048036038101906104e39190612605565b610cb9565b6040516104f59190612253565b60405180910390f35b34801561050a57600080fd5b506105256004803603810190610520919061234c565b610cf2565b6040516105329190612192565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d91906121e3565b610d07565b005b61057e60048036038101906105799190612605565b610d77565b005b34801561058c57600080fd5b50610595610f25565b6040516105a29190612253565b60405180910390f35b3480156105b757600080fd5b506105c0610f49565b6040516105cd9190612253565b60405180910390f35b3480156105e257600080fd5b506105fd60048036038101906105f89190612679565b610f6d565b60405161060a91906126c8565b60405180910390f35b34801561061f57600080fd5b5061063a600480360381019061063591906125c5565b610f9c565b6040516106479190612192565b60405180910390f35b34801561065c57600080fd5b506106776004803603810190610672919061214a565b611006565b005b34801561068557600080fd5b5061068e6110b9565b60405161069b9190612253565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c691906126e3565b6110c0565b005b3480156106d957600080fd5b506106e261127b565b6040516106ef9190612253565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a919061282e565b61129f565b60405161072c919061221f565b60405180910390f35b34801561074157600080fd5b5061075c6004803603810190610757919061234c565b6112b4565b005b34801561076a57600080fd5b506107856004803603810190610780919061234c565b6113ab565b60405161079291906125aa565b60405180910390f35b3480156107a757600080fd5b506107c260048036038101906107bd919061234c565b6113cf565b6040516107cf91906125aa565b60405180910390f35b3480156107e457600080fd5b506107ff60048036038101906107fa91906125c5565b6113ec565b005b34801561080d57600080fd5b50610828600480360381019061082391906128fd565b61140d565b604051610835919061221f565b60405180910390f35b34801561084a57600080fd5b50610853611422565b60405161086091906125aa565b60405180910390f35b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108dc57506108db8261142c565b5b9050919050565b60006108f98260046114a690919063ffffffff16565b9050919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b7fa1b2b8005de234c4b8ce8cd0be058239056e0d54f6097825b5117101469d5a8d600061094f6114bd565b905061097b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610f9c565b61098a5761098982826114c5565b5b60005b84849050811015610aa4576109c58585838181106109ae576109ad612994565b5b90506020028101906109c091906129d2565b61154a565b807f6b983f337bab73dfe37faca733adf3ea35b45b8b144ec8ee2de3a1b224564b0c8686848181106109fa576109f9612994565b5b9050602002810190610a0c91906129d2565b6000016020810190610a1e91906129fa565b878785818110610a3157610a30612994565b5b9050602002810190610a4391906129d2565b60200135888886818110610a5a57610a59612994565b5b9050602002810190610a6c91906129d2565b8060400190610a7b9190612a27565b604051610a8b9493929190612ac8565b60405180910390a280610a9d90612b37565b905061098d565b5050505050565b600080610ab7836113cf565b9050600181118015610ac95750428111155b915050919050565b600063150b7a0260e01b9050949350505050565b7fa1b2b8005de234c4b8ce8cd0be058239056e0d54f6097825b5117101469d5a8d81565b6000806000838152602001908152602001600020600101549050919050565b6000610b346004611622565b905090565b60006001610b46836113cf565b149050919050565b610b5782610b09565b610b6081611637565b610b6a838361164b565b505050565b600080610b7b836113cf565b119050919050565b610b8b6114bd565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef90612c02565b60405180910390fd5b610c02828261167f565b5050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610c3081611637565b610c63827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660046116b390919063ffffffff16565b15610cb557817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167fd91859a8d88193a56a2983deb65a5253985141c49c70bf016880b5243bd432e160405160405180910390a25b5050565b600084848484604051602001610cd29493929190612e60565b604051602081830303815290604052805190602001209050949350505050565b60006001610cff836113cf565b119050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610d3181611637565b7f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d560035483604051610d64929190612ea0565b60405180910390a1816003819055505050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636000610da26114bd565b9050610dce7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610f9c565b610ddd57610ddc82826114c5565b5b6000610deb87878787610cb9565b9050610df781866116ca565b60005b87879050811015610f1257610e32888883818110610e1b57610e1a612994565b5b9050602002810190610e2d91906129d2565b61154a565b80827fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a85818110610e6857610e67612994565b5b9050602002810190610e7a91906129d2565b6000016020810190610e8c91906129fa565b8b8b86818110610e9f57610e9e612994565b5b9050602002810190610eb191906129d2565b602001358c8c87818110610ec857610ec7612994565b5b9050602002810190610eda91906129d2565b8060400190610ee99190612a27565b604051610ef99493929190612ac8565b60405180910390a380610f0b90612b37565b9050610dfa565b50610f1c8161176b565b50505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b6000610f9482600160008681526020019081526020016000206117cf90919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561103081611637565b611063827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660046117e990919063ffffffff16565b156110b557817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f15b40cf8ed4c95cd3c0e1dedfdb3987c3f9bf3d3770d13ddf6dc4daa5ffae9ef60405160405180910390a25b5050565b6000801b81565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc160006110eb6114bd565b90506111177fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610f9c565b6111265761112582826114c5565b5b600061113488888888610cb9565b90506111408185611800565b60005b888890508110156112705761118a89898381811061116457611163612994565b5b905060200281019061117691906129d2565b80604001906111859190612a27565b6118ba565b80827f4f4da6666f52e3b6dbc3638d8eae4017722678fe58bca79cd8320817807a65be8b8b858181106111c0576111bf612994565b5b90506020028101906111d291906129d2565b60000160208101906111e491906129fa565b8c8c868181106111f7576111f6612994565b5b905060200281019061120991906129d2565b602001358d8d878181106112205761121f612994565b5b905060200281019061123291906129d2565b80604001906112419190612a27565b8d8d8d6040516112579796959493929190612ec9565b60405180910390a38061126990612b37565b9050611143565b505050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b600063bc197c8160e01b905095945050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78360006112df6114bd565b905061130b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610f9c565b61131a5761131982826114c5565b5b61132383610cf2565b611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135990612fa5565b60405180910390fd5b6002600084815260200190815260200160002060009055827fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7060405160405180910390a2505050565b60006113c860016000848152602001908152602001600020611961565b9050919050565b600060026000838152602001908152602001600020549050919050565b6113f582610b09565b6113fe81611637565b611408838361167f565b505050565b600063f23a6e6160e01b905095945050505050565b6000600354905090565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061149f575061149e82611976565b5b9050919050565b60006114b583600001836119f0565b905092915050565b600033905090565b6114cf8282610f9c565b611546576114dc81611a1b565b6114ea8360001c6020611a48565b6040516020016114fb9291906130ce565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d9190613141565b60405180910390fd5b5050565b600081600001602081019061155f91906129fa565b73ffffffffffffffffffffffffffffffffffffffff16826020013583806040019061158a9190612a27565b604051611598929190613193565b60006040518083038185875af1925050503d80600081146115d5576040519150601f19603f3d011682016040523d82523d6000602084013e6115da565b606091505b505090508061161e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116159061321e565b60405180910390fd5b5050565b600061163082600001611c84565b9050919050565b611648816116436114bd565b6114c5565b50565b6116558282611c95565b61167a8160016000858152602001908152602001600020611d7590919063ffffffff16565b505050565b6116898282611da5565b6116ae8160016000858152602001908152602001600020611e8690919063ffffffff16565b505050565b60006116c28360000183611eb6565b905092915050565b6116d382610aab565b611712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611709906132b0565b60405180910390fd5b6000801b811480611728575061172781610b39565b5b611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e9061331c565b60405180910390fd5b5050565b61177481610aab565b6117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117aa906132b0565b60405180910390fd5b6001600260008381526020019081526020016000208190555050565b60006117de83600001836119f0565b60001c905092915050565b60006117f88360000183611fca565b905092915050565b61180982610b6f565b15611849576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611840906133ae565b60405180910390fd5b611851611422565b811015611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a9061341a565b60405180910390fd5b804261189f919061343a565b60026000848152602001908152602001600020819055505050565b6004828290501061195d57600082826000906004926118db93929190613478565b906118e691906134cb565b905061191b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600461203a90919063ffffffff16565b1561195b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119529061359c565b60405180910390fd5b505b5050565b600061196f82600001611c84565b9050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119e957506119e882612051565b5b9050919050565b6000826000018281548110611a0857611a07612994565b5b9060005260206000200154905092915050565b6060611a418273ffffffffffffffffffffffffffffffffffffffff16601460ff16611a48565b9050919050565b606060006002836002611a5b91906135bc565b611a65919061343a565b67ffffffffffffffff811115611a7e57611a7d6123ed565b5b6040519080825280601f01601f191660200182016040528015611ab05781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611ae857611ae7612994565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611b4c57611b4b612994565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611b8c91906135bc565b611b96919061343a565b90505b6001811115611c36577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611bd857611bd7612994565b5b1a60f81b828281518110611bef57611bee612994565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611c2f906135fe565b9050611b99565b5060008414611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190613673565b60405180910390fd5b8091505092915050565b600081600001805490509050919050565b611c9f8282610f9c565b611d7157600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611d166114bd565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611d9d836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611fca565b905092915050565b611daf8282610f9c565b15611e8257600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e276114bd565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611eae836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611eb6565b905092915050565b60008083600101600084815260200190815260200160002054905060008114611fbe576000600182611ee89190613693565b9050600060018660000180549050611f009190613693565b9050818114611f6f576000866000018281548110611f2157611f20612994565b5b9060005260206000200154905080876000018481548110611f4557611f44612994565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480611f8357611f826136c7565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611fc4565b60009150505b92915050565b6000611fd683836120bb565b61202f578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612034565b600090505b92915050565b600061204983600001836120bb565b905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612127816120f2565b811461213257600080fd5b50565b6000813590506121448161211e565b92915050565b6000602082840312156121605761215f6120e8565b5b600061216e84828501612135565b91505092915050565b60008115159050919050565b61218c81612177565b82525050565b60006020820190506121a76000830184612183565b92915050565b6000819050919050565b6121c0816121ad565b81146121cb57600080fd5b50565b6000813590506121dd816121b7565b92915050565b6000602082840312156121f9576121f86120e8565b5b6000612207848285016121ce565b91505092915050565b612219816120f2565b82525050565b60006020820190506122346000830184612210565b92915050565b6000819050919050565b61224d8161223a565b82525050565b60006020820190506122686000830184612244565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126122935761229261226e565b5b8235905067ffffffffffffffff8111156122b0576122af612273565b5b6020830191508360208202830111156122cc576122cb612278565b5b9250929050565b600080602083850312156122ea576122e96120e8565b5b600083013567ffffffffffffffff811115612308576123076120ed565b5b6123148582860161227d565b92509250509250929050565b6123298161223a565b811461233457600080fd5b50565b60008135905061234681612320565b92915050565b600060208284031215612362576123616120e8565b5b600061237084828501612337565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123a482612379565b9050919050565b6123b481612399565b81146123bf57600080fd5b50565b6000813590506123d1816123ab565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612425826123dc565b810181811067ffffffffffffffff82111715612444576124436123ed565b5b80604052505050565b60006124576120de565b9050612463828261241c565b919050565b600067ffffffffffffffff821115612483576124826123ed565b5b61248c826123dc565b9050602081019050919050565b82818337600083830152505050565b60006124bb6124b684612468565b61244d565b9050828152602081018484840111156124d7576124d66123d7565b5b6124e2848285612499565b509392505050565b600082601f8301126124ff576124fe61226e565b5b813561250f8482602086016124a8565b91505092915050565b60008060008060808587031215612532576125316120e8565b5b6000612540878288016123c2565b9450506020612551878288016123c2565b9350506040612562878288016121ce565b925050606085013567ffffffffffffffff811115612583576125826120ed565b5b61258f878288016124ea565b91505092959194509250565b6125a4816121ad565b82525050565b60006020820190506125bf600083018461259b565b92915050565b600080604083850312156125dc576125db6120e8565b5b60006125ea85828601612337565b92505060206125fb858286016123c2565b9150509250929050565b6000806000806060858703121561261f5761261e6120e8565b5b600085013567ffffffffffffffff81111561263d5761263c6120ed565b5b6126498782880161227d565b9450945050602061265c87828801612337565b925050604061266d87828801612337565b91505092959194509250565b600080604083850312156126905761268f6120e8565b5b600061269e85828601612337565b92505060206126af858286016121ce565b9150509250929050565b6126c281612399565b82525050565b60006020820190506126dd60008301846126b9565b92915050565b6000806000806000608086880312156126ff576126fe6120e8565b5b600086013567ffffffffffffffff81111561271d5761271c6120ed565b5b6127298882890161227d565b9550955050602061273c88828901612337565b935050604061274d88828901612337565b925050606061275e888289016121ce565b9150509295509295909350565b600067ffffffffffffffff821115612786576127856123ed565b5b602082029050602081019050919050565b60006127aa6127a58461276b565b61244d565b905080838252602082019050602084028301858111156127cd576127cc612278565b5b835b818110156127f657806127e288826121ce565b8452602084019350506020810190506127cf565b5050509392505050565b600082601f8301126128155761281461226e565b5b8135612825848260208601612797565b91505092915050565b600080600080600060a0868803121561284a576128496120e8565b5b6000612858888289016123c2565b9550506020612869888289016123c2565b945050604086013567ffffffffffffffff81111561288a576128896120ed565b5b61289688828901612800565b935050606086013567ffffffffffffffff8111156128b7576128b66120ed565b5b6128c388828901612800565b925050608086013567ffffffffffffffff8111156128e4576128e36120ed565b5b6128f0888289016124ea565b9150509295509295909350565b600080600080600060a08688031215612919576129186120e8565b5b6000612927888289016123c2565b9550506020612938888289016123c2565b9450506040612949888289016121ce565b935050606061295a888289016121ce565b925050608086013567ffffffffffffffff81111561297b5761297a6120ed565b5b612987888289016124ea565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b6000823560016060038336030381126129ee576129ed6129c3565b5b80830191505092915050565b600060208284031215612a1057612a0f6120e8565b5b6000612a1e848285016123c2565b91505092915050565b60008083356001602003843603038112612a4457612a436129c3565b5b80840192508235915067ffffffffffffffff821115612a6657612a656129c8565b5b602083019250600182023603831315612a8257612a816129cd565b5b509250929050565b600082825260208201905092915050565b6000612aa78385612a8a565b9350612ab4838584612499565b612abd836123dc565b840190509392505050565b6000606082019050612add60008301876126b9565b612aea602083018661259b565b8181036040830152612afd818486612a9b565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b42826121ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b7457612b73612b08565b5b600182019050919050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612bec602f83612b7f565b9150612bf782612b90565b604082019050919050565b60006020820190508181036000830152612c1b81612bdf565b9050919050565b600082825260208201905092915050565b6000819050919050565b6000612c4c60208401846123c2565b905092915050565b612c5d81612399565b82525050565b6000612c7260208401846121ce565b905092915050565b612c83816121ad565b82525050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612cb557612cb4612c93565b5b83810192508235915060208301925067ffffffffffffffff821115612cdd57612cdc612c89565b5b600182023603831315612cf357612cf2612c8e565b5b509250929050565b600082825260208201905092915050565b6000612d188385612cfb565b9350612d25838584612499565b612d2e836123dc565b840190509392505050565b600060608301612d4c6000840184612c3d565b612d596000860182612c54565b50612d676020840184612c63565b612d746020860182612c7a565b50612d826040840184612c98565b8583036040870152612d95838284612d0c565b925050508091505092915050565b6000612daf8383612d39565b905092915050565b600082356001606003833603038112612dd357612dd2612c93565b5b82810191505092915050565b6000602082019050919050565b6000612df88385612c22565b935083602084028501612e0a84612c33565b8060005b87811015612e4e578484038952612e258284612db7565b612e2f8582612da3565b9450612e3a83612ddf565b925060208a01995050600181019050612e0e565b50829750879450505050509392505050565b60006060820190508181036000830152612e7b818688612dec565b9050612e8a6020830185612244565b612e976040830184612244565b95945050505050565b6000604082019050612eb5600083018561259b565b612ec2602083018461259b565b9392505050565b600060c082019050612ede600083018a6126b9565b612eeb602083018961259b565b8181036040830152612efe818789612a9b565b9050612f0d6060830186612244565b612f1a6080830185612244565b612f2760a083018461259b565b98975050505050505050565b7f5242414354696d656c6f636b3a206f7065726174696f6e2063616e6e6f74206260008201527f652063616e63656c6c6564000000000000000000000000000000000000000000602082015250565b6000612f8f602b83612b7f565b9150612f9a82612f33565b604082019050919050565b60006020820190508181036000830152612fbe81612f82565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613006601783612fc5565b915061301182612fd0565b601782019050919050565b600081519050919050565b60005b8381101561304557808201518184015260208101905061302a565b60008484015250505050565b600061305c8261301c565b6130668185612fc5565b9350613076818560208601613027565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006130b8601183612fc5565b91506130c382613082565b601182019050919050565b60006130d982612ff9565b91506130e58285613051565b91506130f0826130ab565b91506130fc8284613051565b91508190509392505050565b60006131138261301c565b61311d8185612b7f565b935061312d818560208601613027565b613136816123dc565b840191505092915050565b6000602082019050818103600083015261315b8184613108565b905092915050565b600081905092915050565b600061317a8385613163565b9350613187838584612499565b82840190509392505050565b60006131a082848661316e565b91508190509392505050565b7f5242414354696d656c6f636b3a20756e6465726c79696e67207472616e73616360008201527f74696f6e20726576657274656400000000000000000000000000000000000000602082015250565b6000613208602d83612b7f565b9150613213826131ac565b604082019050919050565b60006020820190508181036000830152613237816131fb565b9050919050565b7f5242414354696d656c6f636b3a206f7065726174696f6e206973206e6f74207260008201527f6561647900000000000000000000000000000000000000000000000000000000602082015250565b600061329a602483612b7f565b91506132a58261323e565b604082019050919050565b600060208201905081810360008301526132c98161328d565b9050919050565b7f5242414354696d656c6f636b3a206d697373696e6720646570656e64656e6379600082015250565b6000613306602083612b7f565b9150613311826132d0565b602082019050919050565b60006020820190508181036000830152613335816132f9565b9050919050565b7f5242414354696d656c6f636b3a206f7065726174696f6e20616c72656164792060008201527f7363686564756c65640000000000000000000000000000000000000000000000602082015250565b6000613398602983612b7f565b91506133a38261333c565b604082019050919050565b600060208201905081810360008301526133c78161338b565b9050919050565b7f5242414354696d656c6f636b3a20696e73756666696369656e742064656c6179600082015250565b6000613404602083612b7f565b915061340f826133ce565b602082019050919050565b60006020820190508181036000830152613433816133f7565b9050919050565b6000613445826121ad565b9150613450836121ad565b925082820190508082111561346857613467612b08565b5b92915050565b600080fd5b600080fd5b6000808585111561348c5761348b61346e565b5b8386111561349d5761349c613473565b5b6001850283019150848603905094509492505050565b600082905092915050565b600082821b905092915050565b60006134d783836134b3565b826134e281356120f2565b925060048210156135225761351d7fffffffff00000000000000000000000000000000000000000000000000000000836004036008026134be565b831692505b505092915050565b7f5242414354696d656c6f636b3a2073656c6563746f7220697320626c6f636b6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613586602183612b7f565b91506135918261352a565b604082019050919050565b600060208201905081810360008301526135b581613579565b9050919050565b60006135c7826121ad565b91506135d2836121ad565b92508282026135e0816121ad565b915082820484148315176135f7576135f6612b08565b5b5092915050565b6000613609826121ad565b91506000820361361c5761361b612b08565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061365d602083612b7f565b915061366882613627565b602082019050919050565b6000602082019050818103600083015261368c81613650565b9050919050565b600061369e826121ad565b91506136a9836121ad565b92508282039050818111156136c1576136c0612b08565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000813000a",
    "sourceMap": "3270:14578:14:-:0;;;5752:1188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5974:37;3544:23;;5974:13;;;:37;;:::i;:::-;6021:40;3613:26;3544:23;6021:13;;;:40;;:::i;:::-;6071;3685:26;3544:23;6071:13;;;:40;;:::i;:::-;6121:41;3758:27;3544:23;6121:13;;;:41;;:::i;:::-;6172:40;3831:26;3544:23;6172:13;;;:40;;:::i;:::-;6223:29;3544:23;6246:5;6223:10;;;:29;;:::i;:::-;6298:9;6293:111;6317:9;:16;6313:1;:20;6293:111;;;6354:39;3613:26;6380:9;6390:1;6380:12;;;;;;;;:::i;:::-;;;;;;;;6354:10;;;:39;;:::i;:::-;6335:3;;;;:::i;:::-;;;6293:111;;;;6449:9;6444:111;6468:9;:16;6464:1;:20;6444:111;;;6505:39;3685:26;6531:9;6541:1;6531:12;;;;;;;;:::i;:::-;;;;;;;;6505:10;;;:39;;:::i;:::-;6486:3;;;;:::i;:::-;;;6444:111;;;;6601:9;6596:114;6620:10;:17;6616:1;:21;6596:114;;;6658:41;3758:27;6685:10;6696:1;6685:13;;;;;;;;:::i;:::-;;;;;;;;6658:10;;;:41;;:::i;:::-;6639:3;;;;:::i;:::-;;;6596:114;;;;6755:9;6750:111;6774:9;:16;6770:1;:20;6750:111;;;6811:39;3831:26;6837:9;6847:1;6837:12;;;;;;;;:::i;:::-;;;;;;;;6811:10;;;:39;;:::i;:::-;6792:3;;;;:::i;:::-;;;6750:111;;;;6883:8;6871:9;:20;;;;6906:27;6921:1;6924:8;6906:27;;;;;;;:::i;:::-;;;;;;;;5752:1188;;;;;;3270:14578;;7172:247:0;7255:25;7283:18;7296:4;7283:12;;;:18;;:::i;:::-;7255:46;;7336:9;7311:6;:12;7318:4;7311:12;;;;;;;;;;;:22;;:34;;;;7402:9;7383:17;7377:4;7360:52;;;;;;;;;;7245:174;7172:247;;:::o;6937:110::-;7015:25;7026:4;7032:7;7015:10;;;:25;;:::i;:::-;6937:110;;:::o;4504:129::-;4578:7;4604:6;:12;4611:4;4604:12;;;;;;;;;;;:22;;;4597:29;;4504:129;;;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;;;:31;;:::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;;;:31;;;;:::i;:::-;;1978:166;;:::o;7587:233:0:-;7670:22;7678:4;7684:7;7670;;;:22;;:::i;:::-;7665:149;;7740:4;7708:6;:12;7715:4;7708:12;;;;;;;;;;;:20;;:29;7729:7;7708:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7790:12;:10;;;:12;;:::i;:::-;7763:40;;7781:7;7763:40;;7775:4;7763:40;;;;;;;;;;7665:149;7587:233;;:::o;8305:150:13:-;8375:4;8398:50;8403:3;:10;;8439:5;8423:23;;8415:32;;8398:4;;;:50;;:::i;:::-;8391:57;;8305:150;;;;:::o;3021:145:0:-;3107:4;3130:6;:12;3137:4;3130:12;;;;;;;;;;;:20;;:29;3151:7;3130:29;;;;;;;;;;;;;;;;;;;;;;;;;3123:36;;3021:145;;;;:::o;640:96:7:-;693:7;719:10;712:17;;640:96;:::o;2214:404:13:-;2277:4;2298:21;2308:3;2313:5;2298:9;;;:21;;:::i;:::-;2293:319;;2335:3;:11;;2352:5;2335:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2515:3;:11;;:18;;;;2493:3;:12;;:19;2506:5;2493:19;;;;;;;;;;;:40;;;;2554:4;2547:11;;;;2293:319;2596:5;2589:12;;2214:404;;;;;:::o;4255:127::-;4328:4;4374:1;4351:3;:12;;:19;4364:5;4351:19;;;;;;;;;;;;:24;;4344:31;;4255:127;;;;:::o;7:75:16:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:143::-;602:5;633:6;627:13;618:22;;649:33;676:5;649:33;:::i;:::-;545:143;;;;:::o;694:126::-;731:7;771:42;764:5;760:54;749:65;;694:126;;;:::o;826:96::-;863:7;892:24;910:5;892:24;:::i;:::-;881:35;;826:96;;;:::o;928:122::-;1001:24;1019:5;1001:24;:::i;:::-;994:5;991:35;981:63;;1040:1;1037;1030:12;981:63;928:122;:::o;1056:143::-;1113:5;1144:6;1138:13;1129:22;;1160:33;1187:5;1160:33;:::i;:::-;1056:143;;;;:::o;1205:117::-;1314:1;1311;1304:12;1328:102;1369:6;1420:2;1416:7;1411:2;1404:5;1400:14;1396:28;1386:38;;1328:102;;;:::o;1436:180::-;1484:77;1481:1;1474:88;1581:4;1578:1;1571:15;1605:4;1602:1;1595:15;1622:281;1705:27;1727:4;1705:27;:::i;:::-;1697:6;1693:40;1835:6;1823:10;1820:22;1799:18;1787:10;1784:34;1781:62;1778:88;;;1846:18;;:::i;:::-;1778:88;1886:10;1882:2;1875:22;1665:238;1622:281;;:::o;1909:129::-;1943:6;1970:20;;:::i;:::-;1960:30;;1999:33;2027:4;2019:6;1999:33;:::i;:::-;1909:129;;;:::o;2044:311::-;2121:4;2211:18;2203:6;2200:30;2197:56;;;2233:18;;:::i;:::-;2197:56;2283:4;2275:6;2271:17;2263:25;;2343:4;2337;2333:15;2325:23;;2044:311;;;:::o;2361:117::-;2470:1;2467;2460:12;2501:732;2608:5;2633:81;2649:64;2706:6;2649:64;:::i;:::-;2633:81;:::i;:::-;2624:90;;2734:5;2763:6;2756:5;2749:21;2797:4;2790:5;2786:16;2779:23;;2850:4;2842:6;2838:17;2830:6;2826:30;2879:3;2871:6;2868:15;2865:122;;;2898:79;;:::i;:::-;2865:122;3013:6;2996:231;3030:6;3025:3;3022:15;2996:231;;;3105:3;3134:48;3178:3;3166:10;3134:48;:::i;:::-;3129:3;3122:61;3212:4;3207:3;3203:14;3196:21;;3072:155;3056:4;3051:3;3047:14;3040:21;;2996:231;;;3000:21;2614:619;;2501:732;;;;;:::o;3256:385::-;3338:5;3387:3;3380:4;3372:6;3368:17;3364:27;3354:122;;3395:79;;:::i;:::-;3354:122;3505:6;3499:13;3530:105;3631:3;3623:6;3616:4;3608:6;3604:17;3530:105;:::i;:::-;3521:114;;3344:297;3256:385;;;;:::o;3647:1946::-;3862:6;3870;3878;3886;3894;3902;3951:3;3939:9;3930:7;3926:23;3922:33;3919:120;;;3958:79;;:::i;:::-;3919:120;4078:1;4103:64;4159:7;4150:6;4139:9;4135:22;4103:64;:::i;:::-;4093:74;;4049:128;4216:2;4242:64;4298:7;4289:6;4278:9;4274:22;4242:64;:::i;:::-;4232:74;;4187:129;4376:2;4365:9;4361:18;4355:25;4407:18;4399:6;4396:30;4393:117;;;4429:79;;:::i;:::-;4393:117;4534:89;4615:7;4606:6;4595:9;4591:22;4534:89;:::i;:::-;4524:99;;4326:307;4693:2;4682:9;4678:18;4672:25;4724:18;4716:6;4713:30;4710:117;;;4746:79;;:::i;:::-;4710:117;4851:89;4932:7;4923:6;4912:9;4908:22;4851:89;:::i;:::-;4841:99;;4643:307;5010:3;4999:9;4995:19;4989:26;5042:18;5034:6;5031:30;5028:117;;;5064:79;;:::i;:::-;5028:117;5169:89;5250:7;5241:6;5230:9;5226:22;5169:89;:::i;:::-;5159:99;;4960:308;5328:3;5317:9;5313:19;5307:26;5360:18;5352:6;5349:30;5346:117;;;5382:79;;:::i;:::-;5346:117;5487:89;5568:7;5559:6;5548:9;5544:22;5487:89;:::i;:::-;5477:99;;5278:308;3647:1946;;;;;;;;:::o;5599:180::-;5647:77;5644:1;5637:88;5744:4;5741:1;5734:15;5768:4;5765:1;5758:15;5785:180;5833:77;5830:1;5823:88;5930:4;5927:1;5920:15;5954:4;5951:1;5944:15;5971:233;6010:3;6033:24;6051:5;6033:24;:::i;:::-;6024:33;;6079:66;6072:5;6069:77;6066:103;;6149:18;;:::i;:::-;6066:103;6196:1;6189:5;6185:13;6178:20;;5971:233;;;:::o;6210:85::-;6255:7;6284:5;6273:16;;6210:85;;;:::o;6301:60::-;6329:3;6350:5;6343:12;;6301:60;;;:::o;6367:158::-;6425:9;6458:61;6476:42;6485:32;6511:5;6485:32;:::i;:::-;6476:42;:::i;:::-;6458:61;:::i;:::-;6445:74;;6367:158;;;:::o;6531:147::-;6626:45;6665:5;6626:45;:::i;:::-;6621:3;6614:58;6531:147;;:::o;6684:118::-;6771:24;6789:5;6771:24;:::i;:::-;6766:3;6759:37;6684:118;;:::o;6808:348::-;6937:4;6975:2;6964:9;6960:18;6952:26;;6988:79;7064:1;7053:9;7049:17;7040:6;6988:79;:::i;:::-;7077:72;7145:2;7134:9;7130:18;7121:6;7077:72;:::i;:::-;6808:348;;;;;:::o;3270:14578:14:-;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x6080604052600436106101f25760003560e01c806364d623531161010d578063a944142d116100a0578063ca15c8731161006f578063ca15c8731461075e578063d45c44351461079b578063d547741f146107d8578063f23a6e6114610801578063f27a0c921461083e576101f9565b8063a944142d146106a4578063b08e51c0146106cd578063bc197c81146106f8578063c4d252f514610735576101f9565b80639010d07c116100dc5780639010d07c146105d657806391d14854146106135780639f5a23f714610650578063a217fddf14610679576101f9565b806364d623531461053b5780636ceef4801461056457806375b238fc146105805780638f61f4f5146105ab576101f9565b806326bb2ec51161018557806336568abe1161015457806336568abe1461046f5780633a98b4e414610498578063515a3db3146104c1578063584b153e146104fe576101f9565b806326bb2ec5146103a15780632ab0f529146103cc5780632f2ff15d1461040957806331d5075014610432576101f9565b806313bc9f20116101c157806313bc9f20146102bf578063150b7a02146102fc578063191cb7b314610339578063248a9ca314610364576101f9565b806301ffc9a7146101fe57806303e561551461023b57806307bd0265146102785780630db866b1146102a3576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102256004803603810190610220919061214a565b610869565b6040516102329190612192565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d91906121e3565b6108e3565b60405161026f919061221f565b60405180910390f35b34801561028457600080fd5b5061028d610900565b60405161029a9190612253565b60405180910390f35b6102bd60048036038101906102b891906122d3565b610924565b005b3480156102cb57600080fd5b506102e660048036038101906102e1919061234c565b610aab565b6040516102f39190612192565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612518565b610ad1565b604051610330919061221f565b60405180910390f35b34801561034557600080fd5b5061034e610ae5565b60405161035b9190612253565b60405180910390f35b34801561037057600080fd5b5061038b6004803603810190610386919061234c565b610b09565b6040516103989190612253565b60405180910390f35b3480156103ad57600080fd5b506103b6610b28565b6040516103c391906125aa565b60405180910390f35b3480156103d857600080fd5b506103f360048036038101906103ee919061234c565b610b39565b6040516104009190612192565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b91906125c5565b610b4e565b005b34801561043e57600080fd5b506104596004803603810190610454919061234c565b610b6f565b6040516104669190612192565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906125c5565b610b83565b005b3480156104a457600080fd5b506104bf60048036038101906104ba919061214a565b610c06565b005b3480156104cd57600080fd5b506104e860048036038101906104e39190612605565b610cb9565b6040516104f59190612253565b60405180910390f35b34801561050a57600080fd5b506105256004803603810190610520919061234c565b610cf2565b6040516105329190612192565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d91906121e3565b610d07565b005b61057e60048036038101906105799190612605565b610d77565b005b34801561058c57600080fd5b50610595610f25565b6040516105a29190612253565b60405180910390f35b3480156105b757600080fd5b506105c0610f49565b6040516105cd9190612253565b60405180910390f35b3480156105e257600080fd5b506105fd60048036038101906105f89190612679565b610f6d565b60405161060a91906126c8565b60405180910390f35b34801561061f57600080fd5b5061063a600480360381019061063591906125c5565b610f9c565b6040516106479190612192565b60405180910390f35b34801561065c57600080fd5b506106776004803603810190610672919061214a565b611006565b005b34801561068557600080fd5b5061068e6110b9565b60405161069b9190612253565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c691906126e3565b6110c0565b005b3480156106d957600080fd5b506106e261127b565b6040516106ef9190612253565b60405180910390f35b34801561070457600080fd5b5061071f600480360381019061071a919061282e565b61129f565b60405161072c919061221f565b60405180910390f35b34801561074157600080fd5b5061075c6004803603810190610757919061234c565b6112b4565b005b34801561076a57600080fd5b506107856004803603810190610780919061234c565b6113ab565b60405161079291906125aa565b60405180910390f35b3480156107a757600080fd5b506107c260048036038101906107bd919061234c565b6113cf565b6040516107cf91906125aa565b60405180910390f35b3480156107e457600080fd5b506107ff60048036038101906107fa91906125c5565b6113ec565b005b34801561080d57600080fd5b50610828600480360381019061082391906128fd565b61140d565b604051610835919061221f565b60405180910390f35b34801561084a57600080fd5b50610853611422565b60405161086091906125aa565b60405180910390f35b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108dc57506108db8261142c565b5b9050919050565b60006108f98260046114a690919063ffffffff16565b9050919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b7fa1b2b8005de234c4b8ce8cd0be058239056e0d54f6097825b5117101469d5a8d600061094f6114bd565b905061097b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610f9c565b61098a5761098982826114c5565b5b60005b84849050811015610aa4576109c58585838181106109ae576109ad612994565b5b90506020028101906109c091906129d2565b61154a565b807f6b983f337bab73dfe37faca733adf3ea35b45b8b144ec8ee2de3a1b224564b0c8686848181106109fa576109f9612994565b5b9050602002810190610a0c91906129d2565b6000016020810190610a1e91906129fa565b878785818110610a3157610a30612994565b5b9050602002810190610a4391906129d2565b60200135888886818110610a5a57610a59612994565b5b9050602002810190610a6c91906129d2565b8060400190610a7b9190612a27565b604051610a8b9493929190612ac8565b60405180910390a280610a9d90612b37565b905061098d565b5050505050565b600080610ab7836113cf565b9050600181118015610ac95750428111155b915050919050565b600063150b7a0260e01b9050949350505050565b7fa1b2b8005de234c4b8ce8cd0be058239056e0d54f6097825b5117101469d5a8d81565b6000806000838152602001908152602001600020600101549050919050565b6000610b346004611622565b905090565b60006001610b46836113cf565b149050919050565b610b5782610b09565b610b6081611637565b610b6a838361164b565b505050565b600080610b7b836113cf565b119050919050565b610b8b6114bd565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef90612c02565b60405180910390fd5b610c02828261167f565b5050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610c3081611637565b610c63827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660046116b390919063ffffffff16565b15610cb557817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167fd91859a8d88193a56a2983deb65a5253985141c49c70bf016880b5243bd432e160405160405180910390a25b5050565b600084848484604051602001610cd29493929190612e60565b604051602081830303815290604052805190602001209050949350505050565b60006001610cff836113cf565b119050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610d3181611637565b7f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d560035483604051610d64929190612ea0565b60405180910390a1816003819055505050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636000610da26114bd565b9050610dce7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610f9c565b610ddd57610ddc82826114c5565b5b6000610deb87878787610cb9565b9050610df781866116ca565b60005b87879050811015610f1257610e32888883818110610e1b57610e1a612994565b5b9050602002810190610e2d91906129d2565b61154a565b80827fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a85818110610e6857610e67612994565b5b9050602002810190610e7a91906129d2565b6000016020810190610e8c91906129fa565b8b8b86818110610e9f57610e9e612994565b5b9050602002810190610eb191906129d2565b602001358c8c87818110610ec857610ec7612994565b5b9050602002810190610eda91906129d2565b8060400190610ee99190612a27565b604051610ef99493929190612ac8565b60405180910390a380610f0b90612b37565b9050610dfa565b50610f1c8161176b565b50505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b6000610f9482600160008681526020019081526020016000206117cf90919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561103081611637565b611063827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660046117e990919063ffffffff16565b156110b557817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f15b40cf8ed4c95cd3c0e1dedfdb3987c3f9bf3d3770d13ddf6dc4daa5ffae9ef60405160405180910390a25b5050565b6000801b81565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc160006110eb6114bd565b90506111177fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610f9c565b6111265761112582826114c5565b5b600061113488888888610cb9565b90506111408185611800565b60005b888890508110156112705761118a89898381811061116457611163612994565b5b905060200281019061117691906129d2565b80604001906111859190612a27565b6118ba565b80827f4f4da6666f52e3b6dbc3638d8eae4017722678fe58bca79cd8320817807a65be8b8b858181106111c0576111bf612994565b5b90506020028101906111d291906129d2565b60000160208101906111e491906129fa565b8c8c868181106111f7576111f6612994565b5b905060200281019061120991906129d2565b602001358d8d878181106112205761121f612994565b5b905060200281019061123291906129d2565b80604001906112419190612a27565b8d8d8d6040516112579796959493929190612ec9565b60405180910390a38061126990612b37565b9050611143565b505050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b600063bc197c8160e01b905095945050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78360006112df6114bd565b905061130b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610f9c565b61131a5761131982826114c5565b5b61132383610cf2565b611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135990612fa5565b60405180910390fd5b6002600084815260200190815260200160002060009055827fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7060405160405180910390a2505050565b60006113c860016000848152602001908152602001600020611961565b9050919050565b600060026000838152602001908152602001600020549050919050565b6113f582610b09565b6113fe81611637565b611408838361167f565b505050565b600063f23a6e6160e01b905095945050505050565b6000600354905090565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061149f575061149e82611976565b5b9050919050565b60006114b583600001836119f0565b905092915050565b600033905090565b6114cf8282610f9c565b611546576114dc81611a1b565b6114ea8360001c6020611a48565b6040516020016114fb9291906130ce565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153d9190613141565b60405180910390fd5b5050565b600081600001602081019061155f91906129fa565b73ffffffffffffffffffffffffffffffffffffffff16826020013583806040019061158a9190612a27565b604051611598929190613193565b60006040518083038185875af1925050503d80600081146115d5576040519150601f19603f3d011682016040523d82523d6000602084013e6115da565b606091505b505090508061161e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116159061321e565b60405180910390fd5b5050565b600061163082600001611c84565b9050919050565b611648816116436114bd565b6114c5565b50565b6116558282611c95565b61167a8160016000858152602001908152602001600020611d7590919063ffffffff16565b505050565b6116898282611da5565b6116ae8160016000858152602001908152602001600020611e8690919063ffffffff16565b505050565b60006116c28360000183611eb6565b905092915050565b6116d382610aab565b611712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611709906132b0565b60405180910390fd5b6000801b811480611728575061172781610b39565b5b611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e9061331c565b60405180910390fd5b5050565b61177481610aab565b6117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117aa906132b0565b60405180910390fd5b6001600260008381526020019081526020016000208190555050565b60006117de83600001836119f0565b60001c905092915050565b60006117f88360000183611fca565b905092915050565b61180982610b6f565b15611849576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611840906133ae565b60405180910390fd5b611851611422565b811015611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a9061341a565b60405180910390fd5b804261189f919061343a565b60026000848152602001908152602001600020819055505050565b6004828290501061195d57600082826000906004926118db93929190613478565b906118e691906134cb565b905061191b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600461203a90919063ffffffff16565b1561195b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119529061359c565b60405180910390fd5b505b5050565b600061196f82600001611c84565b9050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119e957506119e882612051565b5b9050919050565b6000826000018281548110611a0857611a07612994565b5b9060005260206000200154905092915050565b6060611a418273ffffffffffffffffffffffffffffffffffffffff16601460ff16611a48565b9050919050565b606060006002836002611a5b91906135bc565b611a65919061343a565b67ffffffffffffffff811115611a7e57611a7d6123ed565b5b6040519080825280601f01601f191660200182016040528015611ab05781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611ae857611ae7612994565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611b4c57611b4b612994565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611b8c91906135bc565b611b96919061343a565b90505b6001811115611c36577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611bd857611bd7612994565b5b1a60f81b828281518110611bef57611bee612994565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611c2f906135fe565b9050611b99565b5060008414611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190613673565b60405180910390fd5b8091505092915050565b600081600001805490509050919050565b611c9f8282610f9c565b611d7157600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611d166114bd565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611d9d836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611fca565b905092915050565b611daf8282610f9c565b15611e8257600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e276114bd565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611eae836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611eb6565b905092915050565b60008083600101600084815260200190815260200160002054905060008114611fbe576000600182611ee89190613693565b9050600060018660000180549050611f009190613693565b9050818114611f6f576000866000018281548110611f2157611f20612994565b5b9060005260206000200154905080876000018481548110611f4557611f44612994565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480611f8357611f826136c7565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611fc4565b60009150505b92915050565b6000611fd683836120bb565b61202f578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612034565b600090505b92915050565b600061204983600001836120bb565b905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612127816120f2565b811461213257600080fd5b50565b6000813590506121448161211e565b92915050565b6000602082840312156121605761215f6120e8565b5b600061216e84828501612135565b91505092915050565b60008115159050919050565b61218c81612177565b82525050565b60006020820190506121a76000830184612183565b92915050565b6000819050919050565b6121c0816121ad565b81146121cb57600080fd5b50565b6000813590506121dd816121b7565b92915050565b6000602082840312156121f9576121f86120e8565b5b6000612207848285016121ce565b91505092915050565b612219816120f2565b82525050565b60006020820190506122346000830184612210565b92915050565b6000819050919050565b61224d8161223a565b82525050565b60006020820190506122686000830184612244565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126122935761229261226e565b5b8235905067ffffffffffffffff8111156122b0576122af612273565b5b6020830191508360208202830111156122cc576122cb612278565b5b9250929050565b600080602083850312156122ea576122e96120e8565b5b600083013567ffffffffffffffff811115612308576123076120ed565b5b6123148582860161227d565b92509250509250929050565b6123298161223a565b811461233457600080fd5b50565b60008135905061234681612320565b92915050565b600060208284031215612362576123616120e8565b5b600061237084828501612337565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123a482612379565b9050919050565b6123b481612399565b81146123bf57600080fd5b50565b6000813590506123d1816123ab565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612425826123dc565b810181811067ffffffffffffffff82111715612444576124436123ed565b5b80604052505050565b60006124576120de565b9050612463828261241c565b919050565b600067ffffffffffffffff821115612483576124826123ed565b5b61248c826123dc565b9050602081019050919050565b82818337600083830152505050565b60006124bb6124b684612468565b61244d565b9050828152602081018484840111156124d7576124d66123d7565b5b6124e2848285612499565b509392505050565b600082601f8301126124ff576124fe61226e565b5b813561250f8482602086016124a8565b91505092915050565b60008060008060808587031215612532576125316120e8565b5b6000612540878288016123c2565b9450506020612551878288016123c2565b9350506040612562878288016121ce565b925050606085013567ffffffffffffffff811115612583576125826120ed565b5b61258f878288016124ea565b91505092959194509250565b6125a4816121ad565b82525050565b60006020820190506125bf600083018461259b565b92915050565b600080604083850312156125dc576125db6120e8565b5b60006125ea85828601612337565b92505060206125fb858286016123c2565b9150509250929050565b6000806000806060858703121561261f5761261e6120e8565b5b600085013567ffffffffffffffff81111561263d5761263c6120ed565b5b6126498782880161227d565b9450945050602061265c87828801612337565b925050604061266d87828801612337565b91505092959194509250565b600080604083850312156126905761268f6120e8565b5b600061269e85828601612337565b92505060206126af858286016121ce565b9150509250929050565b6126c281612399565b82525050565b60006020820190506126dd60008301846126b9565b92915050565b6000806000806000608086880312156126ff576126fe6120e8565b5b600086013567ffffffffffffffff81111561271d5761271c6120ed565b5b6127298882890161227d565b9550955050602061273c88828901612337565b935050604061274d88828901612337565b925050606061275e888289016121ce565b9150509295509295909350565b600067ffffffffffffffff821115612786576127856123ed565b5b602082029050602081019050919050565b60006127aa6127a58461276b565b61244d565b905080838252602082019050602084028301858111156127cd576127cc612278565b5b835b818110156127f657806127e288826121ce565b8452602084019350506020810190506127cf565b5050509392505050565b600082601f8301126128155761281461226e565b5b8135612825848260208601612797565b91505092915050565b600080600080600060a0868803121561284a576128496120e8565b5b6000612858888289016123c2565b9550506020612869888289016123c2565b945050604086013567ffffffffffffffff81111561288a576128896120ed565b5b61289688828901612800565b935050606086013567ffffffffffffffff8111156128b7576128b66120ed565b5b6128c388828901612800565b925050608086013567ffffffffffffffff8111156128e4576128e36120ed565b5b6128f0888289016124ea565b9150509295509295909350565b600080600080600060a08688031215612919576129186120e8565b5b6000612927888289016123c2565b9550506020612938888289016123c2565b9450506040612949888289016121ce565b935050606061295a888289016121ce565b925050608086013567ffffffffffffffff81111561297b5761297a6120ed565b5b612987888289016124ea565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b6000823560016060038336030381126129ee576129ed6129c3565b5b80830191505092915050565b600060208284031215612a1057612a0f6120e8565b5b6000612a1e848285016123c2565b91505092915050565b60008083356001602003843603038112612a4457612a436129c3565b5b80840192508235915067ffffffffffffffff821115612a6657612a656129c8565b5b602083019250600182023603831315612a8257612a816129cd565b5b509250929050565b600082825260208201905092915050565b6000612aa78385612a8a565b9350612ab4838584612499565b612abd836123dc565b840190509392505050565b6000606082019050612add60008301876126b9565b612aea602083018661259b565b8181036040830152612afd818486612a9b565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b42826121ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b7457612b73612b08565b5b600182019050919050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612bec602f83612b7f565b9150612bf782612b90565b604082019050919050565b60006020820190508181036000830152612c1b81612bdf565b9050919050565b600082825260208201905092915050565b6000819050919050565b6000612c4c60208401846123c2565b905092915050565b612c5d81612399565b82525050565b6000612c7260208401846121ce565b905092915050565b612c83816121ad565b82525050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612cb557612cb4612c93565b5b83810192508235915060208301925067ffffffffffffffff821115612cdd57612cdc612c89565b5b600182023603831315612cf357612cf2612c8e565b5b509250929050565b600082825260208201905092915050565b6000612d188385612cfb565b9350612d25838584612499565b612d2e836123dc565b840190509392505050565b600060608301612d4c6000840184612c3d565b612d596000860182612c54565b50612d676020840184612c63565b612d746020860182612c7a565b50612d826040840184612c98565b8583036040870152612d95838284612d0c565b925050508091505092915050565b6000612daf8383612d39565b905092915050565b600082356001606003833603038112612dd357612dd2612c93565b5b82810191505092915050565b6000602082019050919050565b6000612df88385612c22565b935083602084028501612e0a84612c33565b8060005b87811015612e4e578484038952612e258284612db7565b612e2f8582612da3565b9450612e3a83612ddf565b925060208a01995050600181019050612e0e565b50829750879450505050509392505050565b60006060820190508181036000830152612e7b818688612dec565b9050612e8a6020830185612244565b612e976040830184612244565b95945050505050565b6000604082019050612eb5600083018561259b565b612ec2602083018461259b565b9392505050565b600060c082019050612ede600083018a6126b9565b612eeb602083018961259b565b8181036040830152612efe818789612a9b565b9050612f0d6060830186612244565b612f1a6080830185612244565b612f2760a083018461259b565b98975050505050505050565b7f5242414354696d656c6f636b3a206f7065726174696f6e2063616e6e6f74206260008201527f652063616e63656c6c6564000000000000000000000000000000000000000000602082015250565b6000612f8f602b83612b7f565b9150612f9a82612f33565b604082019050919050565b60006020820190508181036000830152612fbe81612f82565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613006601783612fc5565b915061301182612fd0565b601782019050919050565b600081519050919050565b60005b8381101561304557808201518184015260208101905061302a565b60008484015250505050565b600061305c8261301c565b6130668185612fc5565b9350613076818560208601613027565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006130b8601183612fc5565b91506130c382613082565b601182019050919050565b60006130d982612ff9565b91506130e58285613051565b91506130f0826130ab565b91506130fc8284613051565b91508190509392505050565b60006131138261301c565b61311d8185612b7f565b935061312d818560208601613027565b613136816123dc565b840191505092915050565b6000602082019050818103600083015261315b8184613108565b905092915050565b600081905092915050565b600061317a8385613163565b9350613187838584612499565b82840190509392505050565b60006131a082848661316e565b91508190509392505050565b7f5242414354696d656c6f636b3a20756e6465726c79696e67207472616e73616360008201527f74696f6e20726576657274656400000000000000000000000000000000000000602082015250565b6000613208602d83612b7f565b9150613213826131ac565b604082019050919050565b60006020820190508181036000830152613237816131fb565b9050919050565b7f5242414354696d656c6f636b3a206f7065726174696f6e206973206e6f74207260008201527f6561647900000000000000000000000000000000000000000000000000000000602082015250565b600061329a602483612b7f565b91506132a58261323e565b604082019050919050565b600060208201905081810360008301526132c98161328d565b9050919050565b7f5242414354696d656c6f636b3a206d697373696e6720646570656e64656e6379600082015250565b6000613306602083612b7f565b9150613311826132d0565b602082019050919050565b60006020820190508181036000830152613335816132f9565b9050919050565b7f5242414354696d656c6f636b3a206f7065726174696f6e20616c72656164792060008201527f7363686564756c65640000000000000000000000000000000000000000000000602082015250565b6000613398602983612b7f565b91506133a38261333c565b604082019050919050565b600060208201905081810360008301526133c78161338b565b9050919050565b7f5242414354696d656c6f636b3a20696e73756666696369656e742064656c6179600082015250565b6000613404602083612b7f565b915061340f826133ce565b602082019050919050565b60006020820190508181036000830152613433816133f7565b9050919050565b6000613445826121ad565b9150613450836121ad565b925082820190508082111561346857613467612b08565b5b92915050565b600080fd5b600080fd5b6000808585111561348c5761348b61346e565b5b8386111561349d5761349c613473565b5b6001850283019150848603905094509492505050565b600082905092915050565b600082821b905092915050565b60006134d783836134b3565b826134e281356120f2565b925060048210156135225761351d7fffffffff00000000000000000000000000000000000000000000000000000000836004036008026134be565b831692505b505092915050565b7f5242414354696d656c6f636b3a2073656c6563746f7220697320626c6f636b6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613586602183612b7f565b91506135918261352a565b604082019050919050565b600060208201905081810360008301526135b581613579565b9050919050565b60006135c7826121ad565b91506135d2836121ad565b92508282026135e0816121ad565b915082820484148315176135f7576135f6612b08565b5b5092915050565b6000613609826121ad565b91506000820361361c5761361b612b08565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061365d602083612b7f565b915061366882613627565b602082019050919050565b6000602082019050818103600083015261368c81613650565b9050919050565b600061369e826121ad565b91506136a9836121ad565b92508282039050818111156136c1576136c0612b08565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000813000a",
    "sourceMap": "3270:14578:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7450:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16448:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3645:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17064:317;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8270:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13491:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3791:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4504:129:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15557:133:14;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8557:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4929:145:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7844:123:14;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6038:214:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15264:209:14;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9366:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8049:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13253:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11655:486;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3507:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3573:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1431:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3021:145:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14879:202:14;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2153:49:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9932:525:14;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3717:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14067:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10975:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1750:140:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8840:121:14;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5354:147:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13767:219:14;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9147:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7450:238;7569:4;7607:34;7592:49;;;:11;:49;;;;:89;;;;7645:36;7669:11;7645:23;:36::i;:::-;7592:89;7585:96;;7450:238;;;:::o;16448:151::-;16524:6;16556:35;16585:5;16556:25;:28;;:35;;;;:::i;:::-;16542:50;;16448:151;;;:::o;3645:66::-;3685:26;3645:66;:::o;17064:317::-;3831:26;7113:14;7130:12;:10;:12::i;:::-;7113:29;;7157:27;3544:23;7177:6;7157:7;:27::i;:::-;7152:83;;7200:24;7211:4;7217:6;7200:10;:24::i;:::-;7152:83;17204:9:::1;17199:176;17223:5;;:12;;17219:1;:16;17199:176;;;17256:18;17265:5;;17271:1;17265:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;17256;:18::i;:::-;17314:1;17293:71;17317:5;;17323:1;17317:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:15;;;;;;;;;;:::i;:::-;17334:5;;17340:1;17334:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:14;;;17350:5;;17356:1;17350:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:13;;;;;;;;:::i;:::-;17293:71;;;;;;;;;:::i;:::-;;;;;;;;17237:3;;;;:::i;:::-;;;17199:176;;;;7103:149:::0;17064:317;;;:::o;8270:208::-;8337:10;8359:17;8379:16;8392:2;8379:12;:16::i;:::-;8359:36;;3915:1;8412:9;:27;:59;;;;;8456:15;8443:9;:28;;8412:59;8405:66;;;8270:208;;;:::o;13491:200::-;13629:6;13654:30;;;13647:37;;13491:200;;;;;;:::o;3791:66::-;3831:26;3791:66;:::o;4504:129:0:-;4578:7;4604:6;:12;4611:4;4604:12;;;;;;;;;;;:22;;;4597:29;;4504:129;;;:::o;15557:133:14:-;15623:7;15649:34;:25;:32;:34::i;:::-;15642:41;;15557:133;:::o;8557:136::-;8623:9;3915:1;8651:16;8664:2;8651:12;:16::i;:::-;:35;8644:42;;8557:136;;;:::o;4929:145:0:-;5012:18;5025:4;5012:12;:18::i;:::-;2631:16;2642:4;2631:10;:16::i;:::-;5042:25:::1;5053:4;5059:7;5042:10;:25::i;:::-;4929:145:::0;;;:::o;7844:123:14:-;7906:15;7959:1;7940:16;7953:2;7940:12;:16::i;:::-;:20;7933:27;;7844:123;;;:::o;6038:214:0:-;6144:12;:10;:12::i;:::-;6133:23;;:7;:23;;;6125:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;6219:26;6231:4;6237:7;6219:11;:26::i;:::-;6038:214;;:::o;15264:209:14:-;3544:23;2631:16:0;2642:4;2631:10;:16::i;:::-;15358:42:14::1;15391:8;15358:42;;;:25;:32;;:42;;;;:::i;:::-;15354:113;;;15447:8;15421:35;;;;;;;;;;;;;15354:113;15264:209:::0;;:::o;9366:230::-;9511:12;9563:5;;9570:11;9583:4;9552:36;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9542:47;;;;;;9535:54;;9366:230;;;;;;:::o;8049:141::-;8118:12;3915:1;8149:16;8162:2;8149:12;:16::i;:::-;:34;8142:41;;8049:141;;;:::o;13253:164::-;3544:23;2631:16:0;2642:4;2631:10;:16::i;:::-;13345:35:14::1;13360:9;;13371:8;13345:35;;;;;;;:::i;:::-;;;;;;;;13402:8;13390:9;:20;;;;13253:164:::0;;:::o;11655:486::-;3685:26;7113:14;7130:12;:10;:12::i;:::-;7113:29;;7157:27;3544:23;7177:6;7157:7;:27::i;:::-;7152:83;;7200:24;7211:4;7217:6;7200:10;:24::i;:::-;7152:83;11833:10:::1;11846:44;11865:5;;11872:11;11885:4;11846:18;:44::i;:::-;11833:57;;11901:28;11913:2;11917:11;11901;:28::i;:::-;11944:9;11939:172;11963:5;;:12;;11959:1;:16;11939:172;;;11996:18;12005:5;;12011:1;12005:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;11996;:18::i;:::-;12050:1;12046:2;12033:67;12053:5;;12059:1;12053:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:15;;;;;;;;;;:::i;:::-;12070:5;;12076:1;12070:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:14;;;12086:5;;12092:1;12086:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:13;;;;;;;;:::i;:::-;12033:67;;;;;;;;;:::i;:::-;;;;;;;;11977:3;;;;:::i;:::-;;;11939:172;;;;12120:14;12131:2;12120:10;:14::i;:::-;11823:318;7103:149:::0;11655:486;;;;;:::o;3507:60::-;3544:23;3507:60;:::o;3573:66::-;3613:26;3573:66;:::o;1431:151:1:-;1521:7;1547:28;1569:5;1547:12;:18;1560:4;1547:18;;;;;;;;;;;:21;;:28;;;;:::i;:::-;1540:35;;1431:151;;;;:::o;3021:145:0:-;3107:4;3130:6;:12;3137:4;3130:12;;;;;;;;;;;:20;;:29;3151:7;3130:29;;;;;;;;;;;;;;;;;;;;;;;;;3123:36;;3021:145;;;;:::o;14879:202:14:-;3544:23;2631:16:0;2642:4;2631:10;:16::i;:::-;14971:39:14::1;15001:8;14971:39;;;:25;:29;;:39;;;;:::i;:::-;14967:108;;;15055:8;15031:33;;;;;;;;;;;;;14967:108;14879:202:::0;;:::o;2153:49:0:-;2198:4;2153:49;;;:::o;9932:525:14:-;3613:26;7113:14;7130:12;:10;:12::i;:::-;7113:29;;7157:27;3544:23;7177:6;7157:7;:27::i;:::-;7152:83;;7200:24;7211:4;7217:6;7200:10;:24::i;:::-;7152:83;10126:10:::1;10139:44;10158:5;;10165:11;10178:4;10139:18;:44::i;:::-;10126:57;;10193:20;10203:2;10207:5;10193:9;:20::i;:::-;10228:9;10223:228;10247:5;;:12;;10243:1;:16;10223:228;;;10280:47;10313:5;;10319:1;10313:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:13;;;;;;;;:::i;:::-;10280:32;:47::i;:::-;10364:1;10360:2;10346:94;10367:5;;10373:1;10367:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:15;;;;;;;;;;:::i;:::-;10384:5;;10390:1;10384:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:14;;;10400:5;;10406:1;10400:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:13;;;;;;;;:::i;:::-;10415:11;10428:4;10434:5;10346:94;;;;;;;;;;;;:::i;:::-;;;;;;;;10261:3;;;;:::i;:::-;;;10223:228;;;;10116:341;7103:149:::0;9932:525;;;;;;:::o;3717:68::-;3758:27;3717:68;:::o;14067:247::-;14246:6;14271:36;;;14264:43;;14067:247;;;;;;;:::o;10975:235::-;3758:27;7113:14;7130:12;:10;:12::i;:::-;7113:29;;7157:27;3544:23;7177:6;7157:7;:27::i;:::-;7152:83;;7200:24;7211:4;7217:6;7200:10;:24::i;:::-;7152:83;11072:22:::1;11091:2;11072:18;:22::i;:::-;11064:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11159:11;:15;11171:2;11159:15;;;;;;;;;;;11152:22;;;11200:2;11190:13;;;;;;;;;;7103:149:::0;10975:235;;:::o;1750:140:1:-;1830:7;1856:27;:12;:18;1869:4;1856:18;;;;;;;;;;;:25;:27::i;:::-;1849:34;;1750:140;;;:::o;8840:121:14:-;8903:17;8939:11;:15;8951:2;8939:15;;;;;;;;;;;;8932:22;;8840:121;;;:::o;5354:147:0:-;5438:18;5451:4;5438:12;:18::i;:::-;2631:16;2642:4;2631:10;:16::i;:::-;5468:26:::1;5480:4;5486:7;5468:11;:26::i;:::-;5354:147:::0;;;:::o;13767:219:14:-;13923:6;13948:31;;;13941:38;;13767:219;;;;;;;:::o;9147:103::-;9199:16;9234:9;;9227:16;;9147:103;:::o;634:212:1:-;719:4;757:42;742:57;;;:11;:57;;;;:97;;;;803:36;827:11;803:23;:36::i;:::-;742:97;735:104;;634:212;;;:::o;7096:129:13:-;7170:7;7196:22;7200:3;:10;;7212:5;7196:3;:22::i;:::-;7189:29;;7096:129;;;;:::o;640:96:7:-;693:7;719:10;712:17;;640:96;:::o;3844:479:0:-;3932:22;3940:4;3946:7;3932;:22::i;:::-;3927:390;;4115:28;4135:7;4115:19;:28::i;:::-;4214:38;4242:4;4234:13;;4249:2;4214:19;:38::i;:::-;4022:252;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3970:336;;;;;;;;;;;:::i;:::-;;;;;;;;3927:390;3844:479;;:::o;12204:226:14:-;12284:12;12302:4;:11;;;;;;;;;;:::i;:::-;:16;;12326:4;:10;;;12338:4;:9;;;;;;;;:::i;:::-;12302:46;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12283:65;;;12366:7;12358:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12273:157;12204:226;:::o;6639:115:13:-;6702:7;6728:19;6736:3;:10;;6728:7;:19::i;:::-;6721:26;;6639:115;;;:::o;3460:103:0:-;3526:30;3537:4;3543:12;:10;:12::i;:::-;3526:10;:30::i;:::-;3460:103;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;:31::i;:::-;2106;2129:7;2106:12;:18;2119:4;2106:18;;;;;;;;;;;:22;;:31;;;;:::i;:::-;;1978:166;;:::o;2233:171::-;2321:32;2339:4;2345:7;2321:17;:32::i;:::-;2363:34;2389:7;2363:12;:18;2376:4;2363:18;;;;;;;;;;;:25;;:34;;;;:::i;:::-;;2233:171;;:::o;6210:129:13:-;6283:4;6306:26;6314:3;:10;;6326:5;6306:7;:26::i;:::-;6299:33;;6210:129;;;;:::o;12513:265:14:-;12598:20;12615:2;12598:16;:20::i;:::-;12590:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12700:1;12692:10;;12677:11;:25;:57;;;;12706:28;12722:11;12706:15;:28::i;:::-;12677:57;12669:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12513:265;;:::o;12860:169::-;12918:20;12935:2;12918:16;:20::i;:::-;12910:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;3915:1;12989:11;:15;13001:2;12989:15;;;;;;;;;;;:33;;;;12860:169;:::o;9563:156:13:-;9637:7;9687:22;9691:3;:10;;9703:5;9687:3;:22::i;:::-;9679:31;;9656:56;;9563:156;;;;:::o;5919:123::-;5989:4;6012:23;6017:3;:10;;6029:5;6012:4;:23::i;:::-;6005:30;;5919:123;;;;:::o;10553:269:14:-;10626:15;10638:2;10626:11;:15::i;:::-;10625:16;10617:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10714:13;:11;:13::i;:::-;10705:5;:22;;10697:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10810:5;10792:15;:23;;;;:::i;:::-;10774:11;:15;10786:2;10774:15;;;;;;;;;;;:41;;;;10553:269;;:::o;17548:298::-;17652:1;17638:4;;:11;;:15;17669:7;17634:52;17695:15;17720:4;;:8;;17726:1;17720:8;;;;;;;:::i;:::-;17713:16;;;;;:::i;:::-;17695:34;;17748:53;17791:8;17783:17;;;17748:25;:34;;:53;;;;:::i;:::-;17747:54;17739:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;17624:222;17548:298;;;:::o;9106:115:13:-;9169:7;9195:19;9203:3;:10;;9195:7;:19::i;:::-;9188:26;;9106:115;;;:::o;2732:202:0:-;2817:4;2855:32;2840:47;;;:11;:47;;;;:87;;;;2891:36;2915:11;2891:23;:36::i;:::-;2840:87;2833:94;;2732:202;;;:::o;4912:118:13:-;4979:7;5005:3;:11;;5017:5;5005:18;;;;;;;;:::i;:::-;;;;;;;;;;4998:25;;4912:118;;;;:::o;2407:149:8:-;2465:13;2497:52;2525:4;2509:22;;343:2;2497:52;;:11;:52::i;:::-;2490:59;;2407:149;;;:::o;1818:437::-;1893:13;1918:19;1963:1;1954:6;1950:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1940:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1918:47;;1975:15;:6;1982:1;1975:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;2000;:6;2007:1;2000:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;2030:9;2055:1;2046:6;2042:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;2030:26;;2025:128;2062:1;2058;:5;2025:128;;;2096:8;2113:3;2105:5;:11;2096:21;;;;;;;:::i;:::-;;;;;2084:6;2091:1;2084:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;2141:1;2131:11;;;;;2065:3;;;;:::i;:::-;;;2025:128;;;;2179:1;2170:5;:10;2162:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2241:6;2227:21;;;1818:437;;;;:::o;4463:107:13:-;4519:7;4545:3;:11;;:18;;;;4538:25;;4463:107;;;:::o;7587:233:0:-;7670:22;7678:4;7684:7;7670;:22::i;:::-;7665:149;;7740:4;7708:6;:12;7715:4;7708:12;;;;;;;;;;;:20;;:29;7729:7;7708:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7790:12;:10;:12::i;:::-;7763:40;;7781:7;7763:40;;7775:4;7763:40;;;;;;;;;;7665:149;7587:233;;:::o;8305:150:13:-;8375:4;8398:50;8403:3;:10;;8439:5;8423:23;;8415:32;;8398:4;:50::i;:::-;8391:57;;8305:150;;;;:::o;7991:234:0:-;8074:22;8082:4;8088:7;8074;:22::i;:::-;8070:149;;;8144:5;8112:6;:12;8119:4;8112:12;;;;;;;;;;;:20;;:29;8133:7;8112:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8195:12;:10;:12::i;:::-;8168:40;;8186:7;8168:40;;8180:4;8168:40;;;;;;;;;;8070:149;7991:234;;:::o;8623:156:13:-;8696:4;8719:53;8727:3;:10;;8763:5;8747:23;;8739:32;;8719:7;:53::i;:::-;8712:60;;8623:156;;;;:::o;2786:1388::-;2852:4;2968:18;2989:3;:12;;:19;3002:5;2989:19;;;;;;;;;;;;2968:40;;3037:1;3023:10;:15;3019:1149;;3392:21;3429:1;3416:10;:14;;;;:::i;:::-;3392:38;;3444:17;3485:1;3464:3;:11;;:18;;;;:22;;;;:::i;:::-;3444:42;;3518:13;3505:9;:26;3501:398;;3551:17;3571:3;:11;;3583:9;3571:22;;;;;;;;:::i;:::-;;;;;;;;;;3551:42;;3722:9;3693:3;:11;;3705:13;3693:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;3831:10;3805:3;:12;;:23;3818:9;3805:23;;;;;;;;;;;:36;;;;3533:366;3501:398;3977:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4069:3;:12;;:19;4082:5;4069:19;;;;;;;;;;;4062:26;;;4110:4;4103:11;;;;;;;3019:1149;4152:5;4145:12;;;2786:1388;;;;;:::o;2214:404::-;2277:4;2298:21;2308:3;2313:5;2298:9;:21::i;:::-;2293:319;;2335:3;:11;;2352:5;2335:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2515:3;:11;;:18;;;;2493:3;:12;;:19;2506:5;2493:19;;;;;;;;;;;:40;;;;2554:4;2547:11;;;;2293:319;2596:5;2589:12;;2214:404;;;;;:::o;6420:138::-;6500:4;6523:28;6533:3;:10;;6545:5;6523:9;:28::i;:::-;6516:35;;6420:138;;;;:::o;829:155:9:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;4255:127:13:-;4328:4;4374:1;4351:3;:12;;:19;4364:5;4351:19;;;;;;;;;;;;:24;;4344:31;;4255:127;;;;:::o;7:75:16:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:77::-;1555:7;1584:5;1573:16;;1518:77;;;:::o;1601:122::-;1674:24;1692:5;1674:24;:::i;:::-;1667:5;1664:35;1654:63;;1713:1;1710;1703:12;1654:63;1601:122;:::o;1729:139::-;1775:5;1813:6;1800:20;1791:29;;1829:33;1856:5;1829:33;:::i;:::-;1729:139;;;;:::o;1874:329::-;1933:6;1982:2;1970:9;1961:7;1957:23;1953:32;1950:119;;;1988:79;;:::i;:::-;1950:119;2108:1;2133:53;2178:7;2169:6;2158:9;2154:22;2133:53;:::i;:::-;2123:63;;2079:117;1874:329;;;;:::o;2209:115::-;2294:23;2311:5;2294:23;:::i;:::-;2289:3;2282:36;2209:115;;:::o;2330:218::-;2421:4;2459:2;2448:9;2444:18;2436:26;;2472:69;2538:1;2527:9;2523:17;2514:6;2472:69;:::i;:::-;2330:218;;;;:::o;2554:77::-;2591:7;2620:5;2609:16;;2554:77;;;:::o;2637:118::-;2724:24;2742:5;2724:24;:::i;:::-;2719:3;2712:37;2637:118;;:::o;2761:222::-;2854:4;2892:2;2881:9;2877:18;2869:26;;2905:71;2973:1;2962:9;2958:17;2949:6;2905:71;:::i;:::-;2761:222;;;;:::o;2989:117::-;3098:1;3095;3088:12;3112:117;3221:1;3218;3211:12;3235:117;3344:1;3341;3334:12;3392:592;3489:8;3499:6;3549:3;3542:4;3534:6;3530:17;3526:27;3516:122;;3557:79;;:::i;:::-;3516:122;3670:6;3657:20;3647:30;;3700:18;3692:6;3689:30;3686:117;;;3722:79;;:::i;:::-;3686:117;3836:4;3828:6;3824:17;3812:29;;3890:3;3882:4;3874:6;3870:17;3860:8;3856:32;3853:41;3850:128;;;3897:79;;:::i;:::-;3850:128;3392:592;;;;;:::o;3990:607::-;4100:6;4108;4157:2;4145:9;4136:7;4132:23;4128:32;4125:119;;;4163:79;;:::i;:::-;4125:119;4311:1;4300:9;4296:17;4283:31;4341:18;4333:6;4330:30;4327:117;;;4363:79;;:::i;:::-;4327:117;4476:104;4572:7;4563:6;4552:9;4548:22;4476:104;:::i;:::-;4458:122;;;;4254:336;3990:607;;;;;:::o;4603:122::-;4676:24;4694:5;4676:24;:::i;:::-;4669:5;4666:35;4656:63;;4715:1;4712;4705:12;4656:63;4603:122;:::o;4731:139::-;4777:5;4815:6;4802:20;4793:29;;4831:33;4858:5;4831:33;:::i;:::-;4731:139;;;;:::o;4876:329::-;4935:6;4984:2;4972:9;4963:7;4959:23;4955:32;4952:119;;;4990:79;;:::i;:::-;4952:119;5110:1;5135:53;5180:7;5171:6;5160:9;5156:22;5135:53;:::i;:::-;5125:63;;5081:117;4876:329;;;;:::o;5211:126::-;5248:7;5288:42;5281:5;5277:54;5266:65;;5211:126;;;:::o;5343:96::-;5380:7;5409:24;5427:5;5409:24;:::i;:::-;5398:35;;5343:96;;;:::o;5445:122::-;5518:24;5536:5;5518:24;:::i;:::-;5511:5;5508:35;5498:63;;5557:1;5554;5547:12;5498:63;5445:122;:::o;5573:139::-;5619:5;5657:6;5644:20;5635:29;;5673:33;5700:5;5673:33;:::i;:::-;5573:139;;;;:::o;5718:117::-;5827:1;5824;5817:12;5841:102;5882:6;5933:2;5929:7;5924:2;5917:5;5913:14;5909:28;5899:38;;5841:102;;;:::o;5949:180::-;5997:77;5994:1;5987:88;6094:4;6091:1;6084:15;6118:4;6115:1;6108:15;6135:281;6218:27;6240:4;6218:27;:::i;:::-;6210:6;6206:40;6348:6;6336:10;6333:22;6312:18;6300:10;6297:34;6294:62;6291:88;;;6359:18;;:::i;:::-;6291:88;6399:10;6395:2;6388:22;6178:238;6135:281;;:::o;6422:129::-;6456:6;6483:20;;:::i;:::-;6473:30;;6512:33;6540:4;6532:6;6512:33;:::i;:::-;6422:129;;;:::o;6557:307::-;6618:4;6708:18;6700:6;6697:30;6694:56;;;6730:18;;:::i;:::-;6694:56;6768:29;6790:6;6768:29;:::i;:::-;6760:37;;6852:4;6846;6842:15;6834:23;;6557:307;;;:::o;6870:146::-;6967:6;6962:3;6957;6944:30;7008:1;6999:6;6994:3;6990:16;6983:27;6870:146;;;:::o;7022:423::-;7099:5;7124:65;7140:48;7181:6;7140:48;:::i;:::-;7124:65;:::i;:::-;7115:74;;7212:6;7205:5;7198:21;7250:4;7243:5;7239:16;7288:3;7279:6;7274:3;7270:16;7267:25;7264:112;;;7295:79;;:::i;:::-;7264:112;7385:54;7432:6;7427:3;7422;7385:54;:::i;:::-;7105:340;7022:423;;;;;:::o;7464:338::-;7519:5;7568:3;7561:4;7553:6;7549:17;7545:27;7535:122;;7576:79;;:::i;:::-;7535:122;7693:6;7680:20;7718:78;7792:3;7784:6;7777:4;7769:6;7765:17;7718:78;:::i;:::-;7709:87;;7525:277;7464:338;;;;:::o;7808:943::-;7903:6;7911;7919;7927;7976:3;7964:9;7955:7;7951:23;7947:33;7944:120;;;7983:79;;:::i;:::-;7944:120;8103:1;8128:53;8173:7;8164:6;8153:9;8149:22;8128:53;:::i;:::-;8118:63;;8074:117;8230:2;8256:53;8301:7;8292:6;8281:9;8277:22;8256:53;:::i;:::-;8246:63;;8201:118;8358:2;8384:53;8429:7;8420:6;8409:9;8405:22;8384:53;:::i;:::-;8374:63;;8329:118;8514:2;8503:9;8499:18;8486:32;8545:18;8537:6;8534:30;8531:117;;;8567:79;;:::i;:::-;8531:117;8672:62;8726:7;8717:6;8706:9;8702:22;8672:62;:::i;:::-;8662:72;;8457:287;7808:943;;;;;;;:::o;8757:118::-;8844:24;8862:5;8844:24;:::i;:::-;8839:3;8832:37;8757:118;;:::o;8881:222::-;8974:4;9012:2;9001:9;8997:18;8989:26;;9025:71;9093:1;9082:9;9078:17;9069:6;9025:71;:::i;:::-;8881:222;;;;:::o;9109:474::-;9177:6;9185;9234:2;9222:9;9213:7;9209:23;9205:32;9202:119;;;9240:79;;:::i;:::-;9202:119;9360:1;9385:53;9430:7;9421:6;9410:9;9406:22;9385:53;:::i;:::-;9375:63;;9331:117;9487:2;9513:53;9558:7;9549:6;9538:9;9534:22;9513:53;:::i;:::-;9503:63;;9458:118;9109:474;;;;;:::o;9589:897::-;9717:6;9725;9733;9741;9790:2;9778:9;9769:7;9765:23;9761:32;9758:119;;;9796:79;;:::i;:::-;9758:119;9944:1;9933:9;9929:17;9916:31;9974:18;9966:6;9963:30;9960:117;;;9996:79;;:::i;:::-;9960:117;10109:104;10205:7;10196:6;10185:9;10181:22;10109:104;:::i;:::-;10091:122;;;;9887:336;10262:2;10288:53;10333:7;10324:6;10313:9;10309:22;10288:53;:::i;:::-;10278:63;;10233:118;10390:2;10416:53;10461:7;10452:6;10441:9;10437:22;10416:53;:::i;:::-;10406:63;;10361:118;9589:897;;;;;;;:::o;10492:474::-;10560:6;10568;10617:2;10605:9;10596:7;10592:23;10588:32;10585:119;;;10623:79;;:::i;:::-;10585:119;10743:1;10768:53;10813:7;10804:6;10793:9;10789:22;10768:53;:::i;:::-;10758:63;;10714:117;10870:2;10896:53;10941:7;10932:6;10921:9;10917:22;10896:53;:::i;:::-;10886:63;;10841:118;10492:474;;;;;:::o;10972:118::-;11059:24;11077:5;11059:24;:::i;:::-;11054:3;11047:37;10972:118;;:::o;11096:222::-;11189:4;11227:2;11216:9;11212:18;11204:26;;11240:71;11308:1;11297:9;11293:17;11284:6;11240:71;:::i;:::-;11096:222;;;;:::o;11324:1043::-;11461:6;11469;11477;11485;11493;11542:3;11530:9;11521:7;11517:23;11513:33;11510:120;;;11549:79;;:::i;:::-;11510:120;11697:1;11686:9;11682:17;11669:31;11727:18;11719:6;11716:30;11713:117;;;11749:79;;:::i;:::-;11713:117;11862:104;11958:7;11949:6;11938:9;11934:22;11862:104;:::i;:::-;11844:122;;;;11640:336;12015:2;12041:53;12086:7;12077:6;12066:9;12062:22;12041:53;:::i;:::-;12031:63;;11986:118;12143:2;12169:53;12214:7;12205:6;12194:9;12190:22;12169:53;:::i;:::-;12159:63;;12114:118;12271:2;12297:53;12342:7;12333:6;12322:9;12318:22;12297:53;:::i;:::-;12287:63;;12242:118;11324:1043;;;;;;;;:::o;12373:311::-;12450:4;12540:18;12532:6;12529:30;12526:56;;;12562:18;;:::i;:::-;12526:56;12612:4;12604:6;12600:17;12592:25;;12672:4;12666;12662:15;12654:23;;12373:311;;;:::o;12707:710::-;12803:5;12828:81;12844:64;12901:6;12844:64;:::i;:::-;12828:81;:::i;:::-;12819:90;;12929:5;12958:6;12951:5;12944:21;12992:4;12985:5;12981:16;12974:23;;13045:4;13037:6;13033:17;13025:6;13021:30;13074:3;13066:6;13063:15;13060:122;;;13093:79;;:::i;:::-;13060:122;13208:6;13191:220;13225:6;13220:3;13217:15;13191:220;;;13300:3;13329:37;13362:3;13350:10;13329:37;:::i;:::-;13324:3;13317:50;13396:4;13391:3;13387:14;13380:21;;13267:144;13251:4;13246:3;13242:14;13235:21;;13191:220;;;13195:21;12809:608;;12707:710;;;;;:::o;13440:370::-;13511:5;13560:3;13553:4;13545:6;13541:17;13537:27;13527:122;;13568:79;;:::i;:::-;13527:122;13685:6;13672:20;13710:94;13800:3;13792:6;13785:4;13777:6;13773:17;13710:94;:::i;:::-;13701:103;;13517:293;13440:370;;;;:::o;13816:1509::-;13970:6;13978;13986;13994;14002;14051:3;14039:9;14030:7;14026:23;14022:33;14019:120;;;14058:79;;:::i;:::-;14019:120;14178:1;14203:53;14248:7;14239:6;14228:9;14224:22;14203:53;:::i;:::-;14193:63;;14149:117;14305:2;14331:53;14376:7;14367:6;14356:9;14352:22;14331:53;:::i;:::-;14321:63;;14276:118;14461:2;14450:9;14446:18;14433:32;14492:18;14484:6;14481:30;14478:117;;;14514:79;;:::i;:::-;14478:117;14619:78;14689:7;14680:6;14669:9;14665:22;14619:78;:::i;:::-;14609:88;;14404:303;14774:2;14763:9;14759:18;14746:32;14805:18;14797:6;14794:30;14791:117;;;14827:79;;:::i;:::-;14791:117;14932:78;15002:7;14993:6;14982:9;14978:22;14932:78;:::i;:::-;14922:88;;14717:303;15087:3;15076:9;15072:19;15059:33;15119:18;15111:6;15108:30;15105:117;;;15141:79;;:::i;:::-;15105:117;15246:62;15300:7;15291:6;15280:9;15276:22;15246:62;:::i;:::-;15236:72;;15030:288;13816:1509;;;;;;;;:::o;15331:1089::-;15435:6;15443;15451;15459;15467;15516:3;15504:9;15495:7;15491:23;15487:33;15484:120;;;15523:79;;:::i;:::-;15484:120;15643:1;15668:53;15713:7;15704:6;15693:9;15689:22;15668:53;:::i;:::-;15658:63;;15614:117;15770:2;15796:53;15841:7;15832:6;15821:9;15817:22;15796:53;:::i;:::-;15786:63;;15741:118;15898:2;15924:53;15969:7;15960:6;15949:9;15945:22;15924:53;:::i;:::-;15914:63;;15869:118;16026:2;16052:53;16097:7;16088:6;16077:9;16073:22;16052:53;:::i;:::-;16042:63;;15997:118;16182:3;16171:9;16167:19;16154:33;16214:18;16206:6;16203:30;16200:117;;;16236:79;;:::i;:::-;16200:117;16341:62;16395:7;16386:6;16375:9;16371:22;16341:62;:::i;:::-;16331:72;;16125:288;15331:1089;;;;;;;;:::o;16426:180::-;16474:77;16471:1;16464:88;16571:4;16568:1;16561:15;16595:4;16592:1;16585:15;16612:117;16721:1;16718;16711:12;16735:117;16844:1;16841;16834:12;16858:117;16967:1;16964;16957:12;16981:390;17071:4;17125:11;17112:25;17225:1;17219:4;17215:12;17204:8;17188:14;17184:29;17180:48;17160:18;17156:73;17146:168;;17233:79;;:::i;:::-;17146:168;17345:18;17335:8;17331:33;17323:41;;17076:295;16981:390;;;;:::o;17377:329::-;17436:6;17485:2;17473:9;17464:7;17460:23;17456:32;17453:119;;;17491:79;;:::i;:::-;17453:119;17611:1;17636:53;17681:7;17672:6;17661:9;17657:22;17636:53;:::i;:::-;17626:63;;17582:117;17377:329;;;;:::o;17712:724::-;17789:4;17795:6;17851:11;17838:25;17951:1;17945:4;17941:12;17930:8;17914:14;17910:29;17906:48;17886:18;17882:73;17872:168;;17959:79;;:::i;:::-;17872:168;18071:18;18061:8;18057:33;18049:41;;18123:4;18110:18;18100:28;;18151:18;18143:6;18140:30;18137:117;;;18173:79;;:::i;:::-;18137:117;18281:2;18275:4;18271:13;18263:21;;18338:4;18330:6;18326:17;18310:14;18306:38;18300:4;18296:49;18293:136;;;18348:79;;:::i;:::-;18293:136;17802:634;17712:724;;;;;:::o;18442:168::-;18525:11;18559:6;18554:3;18547:19;18599:4;18594:3;18590:14;18575:29;;18442:168;;;;:::o;18638:314::-;18734:3;18755:70;18818:6;18813:3;18755:70;:::i;:::-;18748:77;;18835:56;18884:6;18879:3;18872:5;18835:56;:::i;:::-;18916:29;18938:6;18916:29;:::i;:::-;18911:3;18907:39;18900:46;;18638:314;;;;;:::o;18958:549::-;19135:4;19173:2;19162:9;19158:18;19150:26;;19186:71;19254:1;19243:9;19239:17;19230:6;19186:71;:::i;:::-;19267:72;19335:2;19324:9;19320:18;19311:6;19267:72;:::i;:::-;19386:9;19380:4;19376:20;19371:2;19360:9;19356:18;19349:48;19414:86;19495:4;19486:6;19478;19414:86;:::i;:::-;19406:94;;18958:549;;;;;;;:::o;19513:180::-;19561:77;19558:1;19551:88;19658:4;19655:1;19648:15;19682:4;19679:1;19672:15;19699:233;19738:3;19761:24;19779:5;19761:24;:::i;:::-;19752:33;;19807:66;19800:5;19797:77;19794:103;;19877:18;;:::i;:::-;19794:103;19924:1;19917:5;19913:13;19906:20;;19699:233;;;:::o;19938:169::-;20022:11;20056:6;20051:3;20044:19;20096:4;20091:3;20087:14;20072:29;;19938:169;;;;:::o;20113:234::-;20253:34;20249:1;20241:6;20237:14;20230:58;20322:17;20317:2;20309:6;20305:15;20298:42;20113:234;:::o;20353:366::-;20495:3;20516:67;20580:2;20575:3;20516:67;:::i;:::-;20509:74;;20592:93;20681:3;20592:93;:::i;:::-;20710:2;20705:3;20701:12;20694:19;;20353:366;;;:::o;20725:419::-;20891:4;20929:2;20918:9;20914:18;20906:26;;20978:9;20972:4;20968:20;20964:1;20953:9;20949:17;20942:47;21006:131;21132:4;21006:131;:::i;:::-;20998:139;;20725:419;;;:::o;21150:206::-;21271:11;21305:6;21300:3;21293:19;21345:4;21340:3;21336:14;21321:29;;21150:206;;;;:::o;21362:126::-;21455:4;21478:3;21470:11;;21362:126;;;:::o;21494:122::-;21546:5;21571:39;21606:2;21601:3;21597:12;21592:3;21571:39;:::i;:::-;21562:48;;21494:122;;;;:::o;21622:108::-;21699:24;21717:5;21699:24;:::i;:::-;21694:3;21687:37;21622:108;;:::o;21736:122::-;21788:5;21813:39;21848:2;21843:3;21839:12;21834:3;21813:39;:::i;:::-;21804:48;;21736:122;;;;:::o;21864:108::-;21941:24;21959:5;21941:24;:::i;:::-;21936:3;21929:37;21864:108;;:::o;21978:117::-;22087:1;22084;22077:12;22101:117;22210:1;22207;22200:12;22224:117;22333:1;22330;22323:12;22347:711;22411:5;22418:6;22474:3;22461:17;22566:1;22560:4;22556:12;22545:8;22529:14;22525:29;22521:48;22501:18;22497:73;22487:168;;22574:79;;:::i;:::-;22487:168;22697:8;22677:18;22673:33;22664:42;;22739:5;22726:19;22716:29;;22774:4;22767:5;22763:16;22754:25;;22802:18;22794:6;22791:30;22788:117;;;22824:79;;:::i;:::-;22788:117;22960:4;22952:6;22948:17;22932:14;22928:38;22921:5;22917:50;22914:137;;;22970:79;;:::i;:::-;22914:137;22425:633;22347:711;;;;;:::o;23064:158::-;23137:11;23171:6;23166:3;23159:19;23211:4;23206:3;23202:14;23187:29;;23064:158;;;;:::o;23250:294::-;23336:3;23357:60;23410:6;23405:3;23357:60;:::i;:::-;23350:67;;23427:56;23476:6;23471:3;23464:5;23427:56;:::i;:::-;23508:29;23530:6;23508:29;:::i;:::-;23503:3;23499:39;23492:46;;23250:294;;;;;:::o;23610:889::-;23715:3;23751:4;23746:3;23742:14;23823:50;23867:4;23860:5;23856:16;23849:5;23823:50;:::i;:::-;23886:63;23943:4;23938:3;23934:14;23920:12;23886:63;:::i;:::-;23766:193;24025:50;24069:4;24062:5;24058:16;24051:5;24025:50;:::i;:::-;24088:63;24145:4;24140:3;24136:14;24122:12;24088:63;:::i;:::-;23969:192;24240:61;24295:4;24288:5;24284:16;24277:5;24240:61;:::i;:::-;24348:3;24342:4;24338:14;24331:4;24326:3;24322:14;24315:38;24374:87;24456:4;24442:12;24428;24374:87;:::i;:::-;24366:95;;24171:301;;24489:4;24482:11;;23720:779;23610:889;;;;:::o;24505:248::-;24620:10;24655:92;24743:3;24735:6;24655:92;:::i;:::-;24641:106;;24505:248;;;;:::o;24759:371::-;24836:5;24891:3;24878:17;24983:1;24977:4;24973:12;24962:8;24946:14;24942:29;24938:48;24918:18;24914:73;24904:168;;24991:79;;:::i;:::-;24904:168;25114:8;25094:18;25090:33;25081:42;;24842:288;24759:371;;;;:::o;25136:139::-;25232:4;25264;25259:3;25255:14;25247:22;;25136:139;;;:::o;25345:1064::-;25520:3;25543:108;25644:6;25639:3;25543:108;:::i;:::-;25536:115;;25677:3;25722:4;25714:6;25710:17;25705:3;25701:27;25752:82;25828:5;25752:82;:::i;:::-;25857:7;25888:1;25873:491;25898:6;25895:1;25892:13;25873:491;;;25969:9;25963:4;25959:20;25954:3;25947:33;26014:66;26073:6;26064:7;26014:66;:::i;:::-;26101:110;26206:4;26191:13;26101:110;:::i;:::-;26093:118;;26234:86;26313:6;26234:86;:::i;:::-;26224:96;;26349:4;26344:3;26340:14;26333:21;;25933:431;25920:1;25917;25913:9;25908:14;;25873:491;;;25877:14;26380:4;26373:11;;26400:3;26393:10;;25525:884;;;;25345:1064;;;;;:::o;26415:705::-;26670:4;26708:2;26697:9;26693:18;26685:26;;26757:9;26751:4;26747:20;26743:1;26732:9;26728:17;26721:47;26785:164;26944:4;26935:6;26927;26785:164;:::i;:::-;26777:172;;26959:72;27027:2;27016:9;27012:18;27003:6;26959:72;:::i;:::-;27041;27109:2;27098:9;27094:18;27085:6;27041:72;:::i;:::-;26415:705;;;;;;;:::o;27126:332::-;27247:4;27285:2;27274:9;27270:18;27262:26;;27298:71;27366:1;27355:9;27351:17;27342:6;27298:71;:::i;:::-;27379:72;27447:2;27436:9;27432:18;27423:6;27379:72;:::i;:::-;27126:332;;;;;:::o;27464:882::-;27725:4;27763:3;27752:9;27748:19;27740:27;;27777:71;27845:1;27834:9;27830:17;27821:6;27777:71;:::i;:::-;27858:72;27926:2;27915:9;27911:18;27902:6;27858:72;:::i;:::-;27977:9;27971:4;27967:20;27962:2;27951:9;27947:18;27940:48;28005:86;28086:4;28077:6;28069;28005:86;:::i;:::-;27997:94;;28101:72;28169:2;28158:9;28154:18;28145:6;28101:72;:::i;:::-;28183:73;28251:3;28240:9;28236:19;28227:6;28183:73;:::i;:::-;28266;28334:3;28323:9;28319:19;28310:6;28266:73;:::i;:::-;27464:882;;;;;;;;;;:::o;28352:230::-;28492:34;28488:1;28480:6;28476:14;28469:58;28561:13;28556:2;28548:6;28544:15;28537:38;28352:230;:::o;28588:366::-;28730:3;28751:67;28815:2;28810:3;28751:67;:::i;:::-;28744:74;;28827:93;28916:3;28827:93;:::i;:::-;28945:2;28940:3;28936:12;28929:19;;28588:366;;;:::o;28960:419::-;29126:4;29164:2;29153:9;29149:18;29141:26;;29213:9;29207:4;29203:20;29199:1;29188:9;29184:17;29177:47;29241:131;29367:4;29241:131;:::i;:::-;29233:139;;28960:419;;;:::o;29385:148::-;29487:11;29524:3;29509:18;;29385:148;;;;:::o;29539:173::-;29679:25;29675:1;29667:6;29663:14;29656:49;29539:173;:::o;29718:402::-;29878:3;29899:85;29981:2;29976:3;29899:85;:::i;:::-;29892:92;;29993:93;30082:3;29993:93;:::i;:::-;30111:2;30106:3;30102:12;30095:19;;29718:402;;;:::o;30126:99::-;30178:6;30212:5;30206:12;30196:22;;30126:99;;;:::o;30231:246::-;30312:1;30322:113;30336:6;30333:1;30330:13;30322:113;;;30421:1;30416:3;30412:11;30406:18;30402:1;30397:3;30393:11;30386:39;30358:2;30355:1;30351:10;30346:15;;30322:113;;;30469:1;30460:6;30455:3;30451:16;30444:27;30293:184;30231:246;;;:::o;30483:390::-;30589:3;30617:39;30650:5;30617:39;:::i;:::-;30672:89;30754:6;30749:3;30672:89;:::i;:::-;30665:96;;30770:65;30828:6;30823:3;30816:4;30809:5;30805:16;30770:65;:::i;:::-;30860:6;30855:3;30851:16;30844:23;;30593:280;30483:390;;;;:::o;30879:167::-;31019:19;31015:1;31007:6;31003:14;30996:43;30879:167;:::o;31052:402::-;31212:3;31233:85;31315:2;31310:3;31233:85;:::i;:::-;31226:92;;31327:93;31416:3;31327:93;:::i;:::-;31445:2;31440:3;31436:12;31429:19;;31052:402;;;:::o;31460:967::-;31842:3;31864:148;32008:3;31864:148;:::i;:::-;31857:155;;32029:95;32120:3;32111:6;32029:95;:::i;:::-;32022:102;;32141:148;32285:3;32141:148;:::i;:::-;32134:155;;32306:95;32397:3;32388:6;32306:95;:::i;:::-;32299:102;;32418:3;32411:10;;31460:967;;;;;:::o;32433:377::-;32521:3;32549:39;32582:5;32549:39;:::i;:::-;32604:71;32668:6;32663:3;32604:71;:::i;:::-;32597:78;;32684:65;32742:6;32737:3;32730:4;32723:5;32719:16;32684:65;:::i;:::-;32774:29;32796:6;32774:29;:::i;:::-;32769:3;32765:39;32758:46;;32525:285;32433:377;;;;:::o;32816:313::-;32929:4;32967:2;32956:9;32952:18;32944:26;;33016:9;33010:4;33006:20;33002:1;32991:9;32987:17;32980:47;33044:78;33117:4;33108:6;33044:78;:::i;:::-;33036:86;;32816:313;;;;:::o;33135:147::-;33236:11;33273:3;33258:18;;33135:147;;;;:::o;33310:327::-;33424:3;33445:88;33526:6;33521:3;33445:88;:::i;:::-;33438:95;;33543:56;33592:6;33587:3;33580:5;33543:56;:::i;:::-;33624:6;33619:3;33615:16;33608:23;;33310:327;;;;;:::o;33643:291::-;33783:3;33805:103;33904:3;33895:6;33887;33805:103;:::i;:::-;33798:110;;33925:3;33918:10;;33643:291;;;;;:::o;33940:232::-;34080:34;34076:1;34068:6;34064:14;34057:58;34149:15;34144:2;34136:6;34132:15;34125:40;33940:232;:::o;34178:366::-;34320:3;34341:67;34405:2;34400:3;34341:67;:::i;:::-;34334:74;;34417:93;34506:3;34417:93;:::i;:::-;34535:2;34530:3;34526:12;34519:19;;34178:366;;;:::o;34550:419::-;34716:4;34754:2;34743:9;34739:18;34731:26;;34803:9;34797:4;34793:20;34789:1;34778:9;34774:17;34767:47;34831:131;34957:4;34831:131;:::i;:::-;34823:139;;34550:419;;;:::o;34975:223::-;35115:34;35111:1;35103:6;35099:14;35092:58;35184:6;35179:2;35171:6;35167:15;35160:31;34975:223;:::o;35204:366::-;35346:3;35367:67;35431:2;35426:3;35367:67;:::i;:::-;35360:74;;35443:93;35532:3;35443:93;:::i;:::-;35561:2;35556:3;35552:12;35545:19;;35204:366;;;:::o;35576:419::-;35742:4;35780:2;35769:9;35765:18;35757:26;;35829:9;35823:4;35819:20;35815:1;35804:9;35800:17;35793:47;35857:131;35983:4;35857:131;:::i;:::-;35849:139;;35576:419;;;:::o;36001:182::-;36141:34;36137:1;36129:6;36125:14;36118:58;36001:182;:::o;36189:366::-;36331:3;36352:67;36416:2;36411:3;36352:67;:::i;:::-;36345:74;;36428:93;36517:3;36428:93;:::i;:::-;36546:2;36541:3;36537:12;36530:19;;36189:366;;;:::o;36561:419::-;36727:4;36765:2;36754:9;36750:18;36742:26;;36814:9;36808:4;36804:20;36800:1;36789:9;36785:17;36778:47;36842:131;36968:4;36842:131;:::i;:::-;36834:139;;36561:419;;;:::o;36986:228::-;37126:34;37122:1;37114:6;37110:14;37103:58;37195:11;37190:2;37182:6;37178:15;37171:36;36986:228;:::o;37220:366::-;37362:3;37383:67;37447:2;37442:3;37383:67;:::i;:::-;37376:74;;37459:93;37548:3;37459:93;:::i;:::-;37577:2;37572:3;37568:12;37561:19;;37220:366;;;:::o;37592:419::-;37758:4;37796:2;37785:9;37781:18;37773:26;;37845:9;37839:4;37835:20;37831:1;37820:9;37816:17;37809:47;37873:131;37999:4;37873:131;:::i;:::-;37865:139;;37592:419;;;:::o;38017:182::-;38157:34;38153:1;38145:6;38141:14;38134:58;38017:182;:::o;38205:366::-;38347:3;38368:67;38432:2;38427:3;38368:67;:::i;:::-;38361:74;;38444:93;38533:3;38444:93;:::i;:::-;38562:2;38557:3;38553:12;38546:19;;38205:366;;;:::o;38577:419::-;38743:4;38781:2;38770:9;38766:18;38758:26;;38830:9;38824:4;38820:20;38816:1;38805:9;38801:17;38794:47;38858:131;38984:4;38858:131;:::i;:::-;38850:139;;38577:419;;;:::o;39002:191::-;39042:3;39061:20;39079:1;39061:20;:::i;:::-;39056:25;;39095:20;39113:1;39095:20;:::i;:::-;39090:25;;39138:1;39135;39131:9;39124:16;;39159:3;39156:1;39153:10;39150:36;;;39166:18;;:::i;:::-;39150:36;39002:191;;;;:::o;39199:117::-;39308:1;39305;39298:12;39322:117;39431:1;39428;39421:12;39445:469;39550:9;39561;39599:8;39587:10;39584:24;39581:111;;;39611:79;;:::i;:::-;39581:111;39717:6;39707:8;39704:20;39701:107;;;39727:79;;:::i;:::-;39701:107;39858:1;39846:10;39842:18;39834:6;39830:31;39817:44;;39897:10;39887:8;39883:25;39870:38;;39445:469;;;;;;;:::o;39920:96::-;39978:6;40006:3;39996:13;;39920:96;;;;:::o;40114:107::-;40158:8;40208:5;40202:4;40198:16;40177:37;;40114:107;;;;:::o;40227:548::-;40317:5;40348:45;40389:3;40382:5;40348:45;:::i;:::-;40418:5;40442:40;40472:8;40459:22;40442:40;:::i;:::-;40433:49;;40506:1;40498:6;40495:13;40492:276;;;40576:168;40660:66;40630:6;40627:1;40623:14;40620:1;40616:22;40576:168;:::i;:::-;40553:5;40532:226;40523:235;;40492:276;40323:452;;40227:548;;;;:::o;40781:220::-;40921:34;40917:1;40909:6;40905:14;40898:58;40990:3;40985:2;40977:6;40973:15;40966:28;40781:220;:::o;41007:366::-;41149:3;41170:67;41234:2;41229:3;41170:67;:::i;:::-;41163:74;;41246:93;41335:3;41246:93;:::i;:::-;41364:2;41359:3;41355:12;41348:19;;41007:366;;;:::o;41379:419::-;41545:4;41583:2;41572:9;41568:18;41560:26;;41632:9;41626:4;41622:20;41618:1;41607:9;41603:17;41596:47;41660:131;41786:4;41660:131;:::i;:::-;41652:139;;41379:419;;;:::o;41804:410::-;41844:7;41867:20;41885:1;41867:20;:::i;:::-;41862:25;;41901:20;41919:1;41901:20;:::i;:::-;41896:25;;41956:1;41953;41949:9;41978:30;41996:11;41978:30;:::i;:::-;41967:41;;42157:1;42148:7;42144:15;42141:1;42138:22;42118:1;42111:9;42091:83;42068:139;;42187:18;;:::i;:::-;42068:139;41852:362;41804:410;;;;:::o;42220:171::-;42259:3;42282:24;42300:5;42282:24;:::i;:::-;42273:33;;42328:4;42321:5;42318:15;42315:41;;42336:18;;:::i;:::-;42315:41;42383:1;42376:5;42372:13;42365:20;;42220:171;;;:::o;42397:182::-;42537:34;42533:1;42525:6;42521:14;42514:58;42397:182;:::o;42585:366::-;42727:3;42748:67;42812:2;42807:3;42748:67;:::i;:::-;42741:74;;42824:93;42913:3;42824:93;:::i;:::-;42942:2;42937:3;42933:12;42926:19;;42585:366;;;:::o;42957:419::-;43123:4;43161:2;43150:9;43146:18;43138:26;;43210:9;43204:4;43200:20;43196:1;43185:9;43181:17;43174:47;43238:131;43364:4;43238:131;:::i;:::-;43230:139;;42957:419;;;:::o;43382:194::-;43422:4;43442:20;43460:1;43442:20;:::i;:::-;43437:25;;43476:20;43494:1;43476:20;:::i;:::-;43471:25;;43520:1;43517;43513:9;43505:17;;43544:1;43538:4;43535:11;43532:37;;;43549:18;;:::i;:::-;43532:37;43382:194;;;;:::o;43582:180::-;43630:77;43627:1;43620:88;43727:4;43724:1;43717:15;43751:4;43748:1;43741:15",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "ADMIN_ROLE()": "75b238fc",
    "BYPASSER_ROLE()": "191cb7b3",
    "CANCELLER_ROLE()": "b08e51c0",
    "DEFAULT_ADMIN_ROLE()": "a217fddf",
    "EXECUTOR_ROLE()": "07bd0265",
    "PROPOSER_ROLE()": "8f61f4f5",
    "blockFunctionSelector(bytes4)": "9f5a23f7",
    "bypasserExecuteBatch((address,uint256,bytes)[])": "0db866b1",
    "cancel(bytes32)": "c4d252f5",
    "executeBatch((address,uint256,bytes)[],bytes32,bytes32)": "6ceef480",
    "getBlockedFunctionSelectorAt(uint256)": "03e56155",
    "getBlockedFunctionSelectorCount()": "26bb2ec5",
    "getMinDelay()": "f27a0c92",
    "getRoleAdmin(bytes32)": "248a9ca3",
    "getRoleMember(bytes32,uint256)": "9010d07c",
    "getRoleMemberCount(bytes32)": "ca15c873",
    "getTimestamp(bytes32)": "d45c4435",
    "grantRole(bytes32,address)": "2f2ff15d",
    "hasRole(bytes32,address)": "91d14854",
    "hashOperationBatch((address,uint256,bytes)[],bytes32,bytes32)": "515a3db3",
    "isOperation(bytes32)": "31d50750",
    "isOperationDone(bytes32)": "2ab0f529",
    "isOperationPending(bytes32)": "584b153e",
    "isOperationReady(bytes32)": "13bc9f20",
    "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
    "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
    "onERC721Received(address,address,uint256,bytes)": "150b7a02",
    "renounceRole(bytes32,address)": "36568abe",
    "revokeRole(bytes32,address)": "d547741f",
    "scheduleBatch((address,uint256,bytes)[],bytes32,bytes32,uint256)": "a944142d",
    "supportsInterface(bytes4)": "01ffc9a7",
    "unblockFunctionSelector(bytes4)": "3a98b4e4",
    "updateDelay(uint256)": "64d62353"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minDelay\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"proposers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"executors\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"cancellers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"bypassers\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"BypasserCallExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"CallExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"CallScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"Cancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"FunctionSelectorBlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"FunctionSelectorUnblocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldDuration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDuration\",\"type\":\"uint256\"}],\"name\":\"MinDelayChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BYPASSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CANCELLER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXECUTOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROPOSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"blockFunctionSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct RBACTimelock.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"bypasserExecuteBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct RBACTimelock.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getBlockedFunctionSelectorAt\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockedFunctionSelectorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct RBACTimelock.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"hashOperationBatch\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationDone\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"done\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationPending\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"isOperationReady\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ready\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct RBACTimelock.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"predecessor\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delay\",\"type\":\"uint256\"}],\"name\":\"scheduleBatch\",\"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\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"unblockFunctionSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDelay\",\"type\":\"uint256\"}],\"name\":\"updateDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract is a modified version of OpenZeppelin's contracts/governance/TimelockController.sol contract from v4.7.0, accessed in commit 561d1061fc568f04c7a65853538e834a889751e8 of github.com/OpenZeppelin/openzeppelin-contracts Said contract is under \\\"Copyright (c) 2016-2023 zOS Global Limited and contributors\\\" and its original MIT license can be found at https://github.com/OpenZeppelin/openzeppelin-contracts/blob/561d1061fc568f04c7a65853538e834a889751e8/LICENSE\",\"events\":{\"BypasserCallExecuted(uint256,address,uint256,bytes)\":{\"details\":\"Emitted when a call is performed via bypasser.\"},\"CallExecuted(bytes32,uint256,address,uint256,bytes)\":{\"details\":\"Emitted when a call is performed as part of operation `id`.\"},\"CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,bytes32,uint256)\":{\"details\":\"Emitted when a call is scheduled as part of operation `id`.\"},\"Cancelled(bytes32)\":{\"details\":\"Emitted when operation `id` is cancelled.\"},\"FunctionSelectorBlocked(bytes4)\":{\"details\":\"Emitted when a function selector is blocked.\"},\"FunctionSelectorUnblocked(bytes4)\":{\"details\":\"Emitted when a function selector is unblocked.\"},\"MinDelayChange(uint256,uint256)\":{\"details\":\"Emitted when the minimum delay for future operations is modified.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"blockFunctionSelector(bytes4)\":{\"details\":\"Blocks a function selector from being used, i.e. schedule operations with this function selector will revert. Note that blocked selectors are only checked when an operation is being scheduled, not when it is executed. You may want to check any pending operations for whether they contain the blocked selector and cancel them. Requirements: - the caller must have the 'admin' role.\"},\"bypasserExecuteBatch((address,uint256,bytes)[])\":{\"details\":\"Directly execute a batch of transactions, bypassing any other checks. Note that we perform a raw call to each target. Raw calls to targets that don't have associated contract code will always succeed regardless of payload. Emits one {BypasserCallExecuted} event per transaction in the batch. Requirements: - the caller must have the 'bypasser' or 'admin' role.\"},\"cancel(bytes32)\":{\"details\":\"Cancel an operation. Requirements: - the caller must have the 'canceller' or 'admin' role.\"},\"constructor\":{\"details\":\"Initializes the contract with the following parameters: - `minDelay`: initial minimum delay for operations - `admin`: account to be granted admin role - `proposers`: accounts to be granted proposer role - `executors`: accounts to be granted executor role - `cancellers`: accounts to be granted canceller role - `bypassers`: accounts to be granted bypasser role\"},\"executeBatch((address,uint256,bytes)[],bytes32,bytes32)\":{\"details\":\"Execute an (ready) operation containing a batch of transactions. Note that we perform a raw call to each target. Raw calls to targets that don't have associated contract code will always succeed regardless of payload. Emits one {CallExecuted} event per transaction in the batch. Requirements: - the caller must have the 'executor' or 'admin' role.\"},\"getBlockedFunctionSelectorAt(uint256)\":{\"details\":\"Returns the blocked function selector with the given index. Function selectors are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getBlockedFunctionSelectorCount} and {getBlockedFunctionSelectorAt} via RPC, make sure you perform all queries on the same block. When using these functions within an onchain transaction, make sure that the state of this contract hasn't changed in between invocations to avoid time-of-check time-of-use bugs. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getBlockedFunctionSelectorCount()\":{\"details\":\"Returns the number of blocked function selectors.\"},\"getMinDelay()\":{\"details\":\"Returns the minimum delay for an operation to become valid. This value can be changed by executing an operation that calls `updateDelay`.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getTimestamp(bytes32)\":{\"details\":\"Returns the timestamp at with an operation becomes ready (0 for unset operations, 1 for done operations).\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"hashOperationBatch((address,uint256,bytes)[],bytes32,bytes32)\":{\"details\":\"Returns the identifier of an operation containing a batch of transactions.\"},\"isOperation(bytes32)\":{\"details\":\"Returns whether an id correspond to a registered operation. This includes both Pending, Ready and Done operations.\"},\"isOperationDone(bytes32)\":{\"details\":\"Returns whether an operation is done or not.\"},\"isOperationPending(bytes32)\":{\"details\":\"Returns whether an operation is pending or not.\"},\"isOperationReady(bytes32)\":{\"details\":\"Returns whether an operation is ready or not.\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155Receiver-onERC1155BatchReceived}.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155Receiver-onERC1155Received}.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"scheduleBatch((address,uint256,bytes)[],bytes32,bytes32,uint256)\":{\"details\":\"Schedule an operation containing a batch of transactions. Emits one {CallScheduled} event per transaction in the batch. Requirements: - the caller must have the 'proposer' or 'admin' role. - all payloads must not start with a blocked function selector.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unblockFunctionSelector(bytes4)\":{\"details\":\"Unblocks a previously blocked function selector so it can be used again. Requirements: - the caller must have the 'admin' role.\"},\"updateDelay(uint256)\":{\"details\":\"Changes the minimum timelock duration for future operations. Emits a {MinDelayChange} event. Requirements: - the caller must have the 'admin' role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contract module which acts as a timelocked controller with role-based access control. When set as the owner of an `Ownable` smart contract, it can enforce a timelock on `onlyOwner` maintenance operations and prevent a list of blocked functions from being called. The timelock can be bypassed by a bypasser or an admin in emergency situations that require quick action. Non-emergency actions are expected to follow the timelock. The contract has five roles. Each role can be inhabited by multiple (potentially overlapping) addresses. 1) Admin: The admin manages membership for all roles (including the admin    role itself). The admin automatically inhabits all other roles. The admin    can call the bypasserExecuteBatch function to bypass any restrictions like    the delay imposed by the timelock and the list of blocked functions. The    admin can manage the list of blocked functions. In practice, the admin    role is expected to (1) be inhabited by a contract requiring a secure    quorum of votes before taking any action and (2) to be used rarely, namely    only for emergency actions or configuration of the RBACTimelock. 2) Proposer: The proposer can schedule delayed operations that don't use any    blocked function selector. 3) Executor: The executor can execute previously scheduled operations once    their delay has expired. The contract enforces that the calls in an    operation are executed with the correct args (target, data, value), but    the executor can freely choose the gas limit. Since the executor is    typically not particularly trusted, we recommend that (transitive) callees    implement standard behavior of simply reverting if insufficient gas is    provided. In particular, this means callees should not have non-reverting    gas-dependent branches. 4) Canceller: The canceller can cancel operations that have been scheduled    but not yet executed. 5) Bypasser: The bypasser can bypass any restrictions like the delay imposed    by the timelock and the list of blocked functions to immediately execute    operations, e.g. in case of emergencies. Note that this contract doesn't place any restrictions on the gas limit used when executing operations. See the above comment on the executor role for more details.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v0.8/mcm/RBACTimelock/RBACTimelock.sol\":\"RBACTimelock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@eth-optimism/=node_modules/@eth-optimism/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=foundry-lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=foundry-lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=foundry-lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=foundry-lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"foundry-lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88\",\"dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ\"]},\"foundry-lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"foundry-lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"foundry-lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"foundry-lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"foundry-lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"foundry-lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x2e53602b96c1bf97c731ed3e2a981b4f85e23a9410a5ebd36e549a4cc93340dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://523f47b3ecc6d4e47b4b998d3356199988eef8a42a10dff5a3660d5f9e76cc71\",\"dweb:/ipfs/QmRLH8CNvDsuLzNCjsbpLM3RHD9he5ESXroYoDT3tpaTCA\"]},\"foundry-lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"foundry-lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf\",\"dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng\"]},\"foundry-lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"foundry-lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"foundry-lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"foundry-lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"foundry-lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0xacbaaa9be521944f83d2852379e1f40b28ada61a256493474f6cdc9b59620598\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15aa625baf68ba948a074361f38f7cf0e6198ba67d1d808c43865409296f1e72\",\"dweb:/ipfs/Qmbcae8x18H5Uzp2DsQcfZH3PMxokhhVCcwks22CDqVsPQ\"]},\"src/v0.8/mcm/RBACTimelock/RBACTimelock.sol\":{\"keccak256\":\"0x831be7cf5c69cf1f174494b6a054584722cb7b32682a3bd1e552099a98ddd076\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://dbf9ced54ccfd412851b8c90665caef7744442b067947c0ccdb4ba50a1ad405b\",\"dweb:/ipfs/QmSqDn9XG5tn8xGSLV3nkCPqmxphD5hAWV83FCvKFNYjPF\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.19+commit.7dd6d404"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "minDelay",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "admin",
              "type": "address"
            },
            {
              "internalType": "address[]",
              "name": "proposers",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "executors",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "cancellers",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "bypassers",
              "type": "address[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "target",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "BypasserCallExecuted",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "target",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "CallExecuted",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "target",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes",
              "indexed": false
            },
            {
              "internalType": "bytes32",
              "name": "predecessor",
              "type": "bytes32",
              "indexed": false
            },
            {
              "internalType": "bytes32",
              "name": "salt",
              "type": "bytes32",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "delay",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "CallScheduled",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "Cancelled",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "selector",
              "type": "bytes4",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "FunctionSelectorBlocked",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "selector",
              "type": "bytes4",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "FunctionSelectorUnblocked",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "oldDuration",
              "type": "uint256",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "newDuration",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "MinDelayChange",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "previousAdminRole",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "newAdminRole",
              "type": "bytes32",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleAdminChanged",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleGranted",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleRevoked",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "ADMIN_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "BYPASSER_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "CANCELLER_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "DEFAULT_ADMIN_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "EXECUTOR_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "PROPOSER_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "selector",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "blockFunctionSelector"
        },
        {
          "inputs": [
            {
              "internalType": "struct RBACTimelock.Call[]",
              "name": "calls",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ]
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "bypasserExecuteBatch"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "cancel"
        },
        {
          "inputs": [
            {
              "internalType": "struct RBACTimelock.Call[]",
              "name": "calls",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ]
            },
            {
              "internalType": "bytes32",
              "name": "predecessor",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "salt",
              "type": "bytes32"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "executeBatch"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getBlockedFunctionSelectorAt",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getBlockedFunctionSelectorCount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getMinDelay",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getRoleAdmin",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getRoleMember",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getRoleMemberCount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getTimestamp",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "grantRole"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "hasRole",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct RBACTimelock.Call[]",
              "name": "calls",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ]
            },
            {
              "internalType": "bytes32",
              "name": "predecessor",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "salt",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function",
          "name": "hashOperationBatch",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "hash",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "isOperation",
          "outputs": [
            {
              "internalType": "bool",
              "name": "registered",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "isOperationDone",
          "outputs": [
            {
              "internalType": "bool",
              "name": "done",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "isOperationPending",
          "outputs": [
            {
              "internalType": "bool",
              "name": "pending",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "isOperationReady",
          "outputs": [
            {
              "internalType": "bool",
              "name": "ready",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "onERC1155BatchReceived",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "onERC1155Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "onERC721Received",
          "outputs": [
            {
              "internalType": "bytes4",
              "name": "",
              "type": "bytes4"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "renounceRole"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "revokeRole"
        },
        {
          "inputs": [
            {
              "internalType": "struct RBACTimelock.Call[]",
              "name": "calls",
              "type": "tuple[]",
              "components": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ]
            },
            {
              "internalType": "bytes32",
              "name": "predecessor",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "salt",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "delay",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "scheduleBatch"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "selector",
              "type": "bytes4"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "unblockFunctionSelector"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newDelay",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "updateDelay"
        },
        {
          "inputs": [],
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "blockFunctionSelector(bytes4)": {
            "details": "Blocks a function selector from being used, i.e. schedule operations with this function selector will revert. Note that blocked selectors are only checked when an operation is being scheduled, not when it is executed. You may want to check any pending operations for whether they contain the blocked selector and cancel them. Requirements: - the caller must have the 'admin' role."
          },
          "bypasserExecuteBatch((address,uint256,bytes)[])": {
            "details": "Directly execute a batch of transactions, bypassing any other checks. Note that we perform a raw call to each target. Raw calls to targets that don't have associated contract code will always succeed regardless of payload. Emits one {BypasserCallExecuted} event per transaction in the batch. Requirements: - the caller must have the 'bypasser' or 'admin' role."
          },
          "cancel(bytes32)": {
            "details": "Cancel an operation. Requirements: - the caller must have the 'canceller' or 'admin' role."
          },
          "constructor": {
            "details": "Initializes the contract with the following parameters: - `minDelay`: initial minimum delay for operations - `admin`: account to be granted admin role - `proposers`: accounts to be granted proposer role - `executors`: accounts to be granted executor role - `cancellers`: accounts to be granted canceller role - `bypassers`: accounts to be granted bypasser role"
          },
          "executeBatch((address,uint256,bytes)[],bytes32,bytes32)": {
            "details": "Execute an (ready) operation containing a batch of transactions. Note that we perform a raw call to each target. Raw calls to targets that don't have associated contract code will always succeed regardless of payload. Emits one {CallExecuted} event per transaction in the batch. Requirements: - the caller must have the 'executor' or 'admin' role."
          },
          "getBlockedFunctionSelectorAt(uint256)": {
            "details": "Returns the blocked function selector with the given index. Function selectors are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getBlockedFunctionSelectorCount} and {getBlockedFunctionSelectorAt} via RPC, make sure you perform all queries on the same block. When using these functions within an onchain transaction, make sure that the state of this contract hasn't changed in between invocations to avoid time-of-check time-of-use bugs. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information."
          },
          "getBlockedFunctionSelectorCount()": {
            "details": "Returns the number of blocked function selectors."
          },
          "getMinDelay()": {
            "details": "Returns the minimum delay for an operation to become valid. This value can be changed by executing an operation that calls `updateDelay`."
          },
          "getRoleAdmin(bytes32)": {
            "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
          },
          "getRoleMember(bytes32,uint256)": {
            "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information."
          },
          "getRoleMemberCount(bytes32)": {
            "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role."
          },
          "getTimestamp(bytes32)": {
            "details": "Returns the timestamp at with an operation becomes ready (0 for unset operations, 1 for done operations)."
          },
          "grantRole(bytes32,address)": {
            "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."
          },
          "hasRole(bytes32,address)": {
            "details": "Returns `true` if `account` has been granted `role`."
          },
          "hashOperationBatch((address,uint256,bytes)[],bytes32,bytes32)": {
            "details": "Returns the identifier of an operation containing a batch of transactions."
          },
          "isOperation(bytes32)": {
            "details": "Returns whether an id correspond to a registered operation. This includes both Pending, Ready and Done operations."
          },
          "isOperationDone(bytes32)": {
            "details": "Returns whether an operation is done or not."
          },
          "isOperationPending(bytes32)": {
            "details": "Returns whether an operation is pending or not."
          },
          "isOperationReady(bytes32)": {
            "details": "Returns whether an operation is ready or not."
          },
          "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": {
            "details": "See {IERC1155Receiver-onERC1155BatchReceived}."
          },
          "onERC1155Received(address,address,uint256,uint256,bytes)": {
            "details": "See {IERC1155Receiver-onERC1155Received}."
          },
          "onERC721Received(address,address,uint256,bytes)": {
            "details": "See {IERC721Receiver-onERC721Received}."
          },
          "renounceRole(bytes32,address)": {
            "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."
          },
          "revokeRole(bytes32,address)": {
            "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."
          },
          "scheduleBatch((address,uint256,bytes)[],bytes32,bytes32,uint256)": {
            "details": "Schedule an operation containing a batch of transactions. Emits one {CallScheduled} event per transaction in the batch. Requirements: - the caller must have the 'proposer' or 'admin' role. - all payloads must not start with a blocked function selector."
          },
          "supportsInterface(bytes4)": {
            "details": "See {IERC165-supportsInterface}."
          },
          "unblockFunctionSelector(bytes4)": {
            "details": "Unblocks a previously blocked function selector so it can be used again. Requirements: - the caller must have the 'admin' role."
          },
          "updateDelay(uint256)": {
            "details": "Changes the minimum timelock duration for future operations. Emits a {MinDelayChange} event. Requirements: - the caller must have the 'admin' role."
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        ":@eth-optimism/=node_modules/@eth-optimism/",
        ":@openzeppelin/=node_modules/@openzeppelin/",
        ":ds-test/=foundry-lib/forge-std/lib/ds-test/src/",
        ":erc4626-tests/=foundry-lib/openzeppelin-contracts/lib/erc4626-tests/",
        ":forge-std/=foundry-lib/forge-std/src/",
        ":hardhat/=node_modules/hardhat/",
        ":openzeppelin-contracts/=foundry-lib/openzeppelin-contracts/contracts/"
      ],
      "optimizer": {
        "enabled": false,
        "runs": 200
      },
      "metadata": {
        "bytecodeHash": "none"
      },
      "compilationTarget": {
        "src/v0.8/mcm/RBACTimelock/RBACTimelock.sol": "RBACTimelock"
      },
      "libraries": {}
    },
    "sources": {
      "foundry-lib/openzeppelin-contracts/contracts/access/AccessControl.sol": {
        "keccak256": "0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c",
        "urls": [
          "bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88",
          "dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol": {
        "keccak256": "0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247",
        "urls": [
          "bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b",
          "dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/access/IAccessControl.sol": {
        "keccak256": "0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57",
        "urls": [
          "bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a",
          "dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol": {
        "keccak256": "0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676",
        "urls": [
          "bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276",
          "dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "keccak256": "0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b",
        "urls": [
          "bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec",
          "dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": {
        "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da",
        "urls": [
          "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708",
          "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/utils/Address.sol": {
        "keccak256": "0x2e53602b96c1bf97c731ed3e2a981b4f85e23a9410a5ebd36e549a4cc93340dc",
        "urls": [
          "bzz-raw://523f47b3ecc6d4e47b4b998d3356199988eef8a42a10dff5a3660d5f9e76cc71",
          "dweb:/ipfs/QmRLH8CNvDsuLzNCjsbpLM3RHD9he5ESXroYoDT3tpaTCA"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/utils/Context.sol": {
        "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
        "urls": [
          "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
          "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/utils/Strings.sol": {
        "keccak256": "0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f",
        "urls": [
          "bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf",
          "dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": {
        "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b",
        "urls": [
          "bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d",
          "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": {
        "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
        "urls": [
          "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
          "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/utils/math/Math.sol": {
        "keccak256": "0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858",
        "urls": [
          "bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4",
          "dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": {
        "keccak256": "0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc",
        "urls": [
          "bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7",
          "dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"
        ],
        "license": "MIT"
      },
      "foundry-lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol": {
        "keccak256": "0xacbaaa9be521944f83d2852379e1f40b28ada61a256493474f6cdc9b59620598",
        "urls": [
          "bzz-raw://15aa625baf68ba948a074361f38f7cf0e6198ba67d1d808c43865409296f1e72",
          "dweb:/ipfs/Qmbcae8x18H5Uzp2DsQcfZH3PMxokhhVCcwks22CDqVsPQ"
        ],
        "license": "MIT"
      },
      "src/v0.8/mcm/RBACTimelock/RBACTimelock.sol": {
        "keccak256": "0x831be7cf5c69cf1f174494b6a054584722cb7b32682a3bd1e552099a98ddd076",
        "urls": [
          "bzz-raw://dbf9ced54ccfd412851b8c90665caef7744442b067947c0ccdb4ba50a1ad405b",
          "dweb:/ipfs/QmSqDn9XG5tn8xGSLV3nkCPqmxphD5hAWV83FCvKFNYjPF"
        ],
        "license": "BUSL-1.1"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "src/v0.8/mcm/RBACTimelock/RBACTimelock.sol",
    "id": 3748,
    "exportedSymbols": {
      "AccessControl": [
        315
      ],
      "AccessControlEnumerable": [
        440
      ],
      "Address": [
        927
      ],
      "Context": [
        949
      ],
      "ERC165": [
        1202
      ],
      "EnumerableSet": [
        2798
      ],
      "IAccessControl": [
        513
      ],
      "IAccessControlEnumerable": [
        538
      ],
      "IERC1155Receiver": [
        579
      ],
      "IERC165": [
        1214
      ],
      "IERC721Receiver": [
        597
      ],
      "Math": [
        2080
      ],
      "RBACTimelock": [
        3747
      ],
      "SignedMath": [
        2185
      ],
      "Strings": [
        1178
      ]
    },
    "nodeType": "SourceUnit",
    "src": "37:17812:14",
    "nodes": [
      {
        "id": 2800,
        "nodeType": "PragmaDirective",
        "src": "37:24:14",
        "nodes": [],
        "literals": [
          "solidity",
          "=",
          "0.8",
          ".19"
        ]
      },
      {
        "id": 2801,
        "nodeType": "ImportDirective",
        "src": "63:67:14",
        "nodes": [],
        "absolutePath": "foundry-lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol",
        "file": "openzeppelin-contracts/access/AccessControlEnumerable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 3748,
        "sourceUnit": 441,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 2802,
        "nodeType": "ImportDirective",
        "src": "131:65:14",
        "nodes": [],
        "absolutePath": "foundry-lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol",
        "file": "openzeppelin-contracts/token/ERC721/IERC721Receiver.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 3748,
        "sourceUnit": 598,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 2803,
        "nodeType": "ImportDirective",
        "src": "197:67:14",
        "nodes": [],
        "absolutePath": "foundry-lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol",
        "file": "openzeppelin-contracts/token/ERC1155/IERC1155Receiver.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 3748,
        "sourceUnit": 580,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 2804,
        "nodeType": "ImportDirective",
        "src": "265:50:14",
        "nodes": [],
        "absolutePath": "foundry-lib/openzeppelin-contracts/contracts/utils/Address.sol",
        "file": "openzeppelin-contracts/utils/Address.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 3748,
        "sourceUnit": 928,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 2805,
        "nodeType": "ImportDirective",
        "src": "316:64:14",
        "nodes": [],
        "absolutePath": "foundry-lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol",
        "file": "openzeppelin-contracts/utils/structs/EnumerableSet.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 3748,
        "sourceUnit": 2799,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 3747,
        "nodeType": "ContractDefinition",
        "src": "3270:14578:14",
        "nodes": [
          {
            "id": 2816,
            "nodeType": "UsingForDirective",
            "src": "3360:49:14",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 2813,
              "name": "EnumerableSet",
              "nameLocations": [
                "3366:13:14"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2798,
              "src": "3366:13:14"
            },
            "typeName": {
              "id": 2815,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 2814,
                "name": "EnumerableSet.Bytes32Set",
                "nameLocations": [
                  "3384:13:14",
                  "3398:10:14"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 2390,
                "src": "3384:24:14"
              },
              "referencedDeclaration": 2390,
              "src": "3384:24:14",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Bytes32Set_$2390_storage_ptr",
                "typeString": "struct EnumerableSet.Bytes32Set"
              }
            }
          },
          {
            "id": 2823,
            "nodeType": "StructDefinition",
            "src": "3415:86:14",
            "nodes": [],
            "canonicalName": "RBACTimelock.Call",
            "members": [
              {
                "constant": false,
                "id": 2818,
                "mutability": "mutable",
                "name": "target",
                "nameLocation": "3445:6:14",
                "nodeType": "VariableDeclaration",
                "scope": 2823,
                "src": "3437:14:14",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2817,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3437:7:14",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2820,
                "mutability": "mutable",
                "name": "value",
                "nameLocation": "3469:5:14",
                "nodeType": "VariableDeclaration",
                "scope": 2823,
                "src": "3461:13:14",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2819,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3461:7:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2822,
                "mutability": "mutable",
                "name": "data",
                "nameLocation": "3490:4:14",
                "nodeType": "VariableDeclaration",
                "scope": 2823,
                "src": "3484:10:14",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 2821,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "3484:5:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Call",
            "nameLocation": "3422:4:14",
            "scope": 3747,
            "visibility": "public"
          },
          {
            "id": 2828,
            "nodeType": "VariableDeclaration",
            "src": "3507:60:14",
            "nodes": [],
            "constant": true,
            "functionSelector": "75b238fc",
            "mutability": "constant",
            "name": "ADMIN_ROLE",
            "nameLocation": "3531:10:14",
            "scope": 3747,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2824,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3507:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "41444d494e5f524f4c45",
                  "id": 2826,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "3554:12:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775",
                    "typeString": "literal_string \"ADMIN_ROLE\""
                  },
                  "value": "ADMIN_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775",
                    "typeString": "literal_string \"ADMIN_ROLE\""
                  }
                ],
                "id": 2825,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "3544:9:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 2827,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "3544:23:14",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "id": 2833,
            "nodeType": "VariableDeclaration",
            "src": "3573:66:14",
            "nodes": [],
            "constant": true,
            "functionSelector": "8f61f4f5",
            "mutability": "constant",
            "name": "PROPOSER_ROLE",
            "nameLocation": "3597:13:14",
            "scope": 3747,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2829,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3573:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "50524f504f5345525f524f4c45",
                  "id": 2831,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "3623:15:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1",
                    "typeString": "literal_string \"PROPOSER_ROLE\""
                  },
                  "value": "PROPOSER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1",
                    "typeString": "literal_string \"PROPOSER_ROLE\""
                  }
                ],
                "id": 2830,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "3613:9:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 2832,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "3613:26:14",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "id": 2838,
            "nodeType": "VariableDeclaration",
            "src": "3645:66:14",
            "nodes": [],
            "constant": true,
            "functionSelector": "07bd0265",
            "mutability": "constant",
            "name": "EXECUTOR_ROLE",
            "nameLocation": "3669:13:14",
            "scope": 3747,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2834,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3645:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "4558454355544f525f524f4c45",
                  "id": 2836,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "3695:15:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63",
                    "typeString": "literal_string \"EXECUTOR_ROLE\""
                  },
                  "value": "EXECUTOR_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63",
                    "typeString": "literal_string \"EXECUTOR_ROLE\""
                  }
                ],
                "id": 2835,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "3685:9:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 2837,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "3685:26:14",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "id": 2843,
            "nodeType": "VariableDeclaration",
            "src": "3717:68:14",
            "nodes": [],
            "constant": true,
            "functionSelector": "b08e51c0",
            "mutability": "constant",
            "name": "CANCELLER_ROLE",
            "nameLocation": "3741:14:14",
            "scope": 3747,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2839,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3717:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "43414e43454c4c45525f524f4c45",
                  "id": 2841,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "3768:16:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783",
                    "typeString": "literal_string \"CANCELLER_ROLE\""
                  },
                  "value": "CANCELLER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783",
                    "typeString": "literal_string \"CANCELLER_ROLE\""
                  }
                ],
                "id": 2840,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "3758:9:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 2842,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "3758:27:14",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "id": 2848,
            "nodeType": "VariableDeclaration",
            "src": "3791:66:14",
            "nodes": [],
            "constant": true,
            "functionSelector": "191cb7b3",
            "mutability": "constant",
            "name": "BYPASSER_ROLE",
            "nameLocation": "3815:13:14",
            "scope": 3747,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2844,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3791:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "42595041535345525f524f4c45",
                  "id": 2846,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "3841:15:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_a1b2b8005de234c4b8ce8cd0be058239056e0d54f6097825b5117101469d5a8d",
                    "typeString": "literal_string \"BYPASSER_ROLE\""
                  },
                  "value": "BYPASSER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_a1b2b8005de234c4b8ce8cd0be058239056e0d54f6097825b5117101469d5a8d",
                    "typeString": "literal_string \"BYPASSER_ROLE\""
                  }
                ],
                "id": 2845,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "3831:9:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 2847,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "3831:26:14",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "id": 2854,
            "nodeType": "VariableDeclaration",
            "src": "3863:54:14",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "_DONE_TIMESTAMP",
            "nameLocation": "3889:15:14",
            "scope": 3747,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2849,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "3863:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "31",
                  "id": 2852,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "3915:1:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_1_by_1",
                    "typeString": "int_const 1"
                  },
                  "value": "1"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_1_by_1",
                    "typeString": "int_const 1"
                  }
                ],
                "id": 2851,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "3907:7:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_uint256_$",
                  "typeString": "type(uint256)"
                },
                "typeName": {
                  "id": 2850,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3907:7:14",
                  "typeDescriptions": {}
                }
              },
              "id": 2853,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "3907:10:14",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 2858,
            "nodeType": "VariableDeclaration",
            "src": "3924:47:14",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_timestamps",
            "nameLocation": "3960:11:14",
            "scope": 3747,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 2857,
              "keyName": "",
              "keyNameLocation": "-1:-1:-1",
              "keyType": {
                "id": 2855,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "3932:7:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "3924:27:14",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueName": "",
              "valueNameLocation": "-1:-1:-1",
              "valueType": {
                "id": 2856,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3943:7:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "private"
          },
          {
            "id": 2860,
            "nodeType": "VariableDeclaration",
            "src": "3977:25:14",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_minDelay",
            "nameLocation": "3993:9:14",
            "scope": 3747,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2859,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "3977:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "private"
          },
          {
            "id": 2863,
            "nodeType": "VariableDeclaration",
            "src": "4008:58:14",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_blockedFunctionSelectors",
            "nameLocation": "4041:25:14",
            "scope": 3747,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Bytes32Set_$2390_storage",
              "typeString": "struct EnumerableSet.Bytes32Set"
            },
            "typeName": {
              "id": 2862,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 2861,
                "name": "EnumerableSet.Bytes32Set",
                "nameLocations": [
                  "4008:13:14",
                  "4022:10:14"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 2390,
                "src": "4008:24:14"
              },
              "referencedDeclaration": 2390,
              "src": "4008:24:14",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Bytes32Set_$2390_storage_ptr",
                "typeString": "struct EnumerableSet.Bytes32Set"
              }
            },
            "visibility": "private"
          },
          {
            "id": 2882,
            "nodeType": "EventDefinition",
            "src": "4161:226:14",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 2864,
              "nodeType": "StructuredDocumentation",
              "src": "4073:83:14",
              "text": " @dev Emitted when a call is scheduled as part of operation `id`."
            },
            "eventSelector": "4f4da6666f52e3b6dbc3638d8eae4017722678fe58bca79cd8320817807a65be",
            "name": "CallScheduled",
            "nameLocation": "4167:13:14",
            "parameters": {
              "id": 2881,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2866,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "4206:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "4190:18:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2865,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4190:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2868,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "4234:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "4218:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2867,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4218:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2870,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "4257:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "4249:14:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2869,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4249:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2872,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "4281:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "4273:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2871,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4273:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2874,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "4302:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "4296:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2873,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4296:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2876,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "predecessor",
                  "nameLocation": "4324:11:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "4316:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2875,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4316:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2878,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "salt",
                  "nameLocation": "4353:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "4345:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2877,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4345:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2880,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "delay",
                  "nameLocation": "4375:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2882,
                  "src": "4367:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2879,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4367:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4180:206:14"
            }
          },
          {
            "id": 2895,
            "nodeType": "EventDefinition",
            "src": "4481:105:14",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 2883,
              "nodeType": "StructuredDocumentation",
              "src": "4393:83:14",
              "text": " @dev Emitted when a call is performed as part of operation `id`."
            },
            "eventSelector": "c2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58",
            "name": "CallExecuted",
            "nameLocation": "4487:12:14",
            "parameters": {
              "id": 2894,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2885,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "4516:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2895,
                  "src": "4500:18:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2884,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4500:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2887,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "4536:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2895,
                  "src": "4520:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2886,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4520:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2889,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "4551:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2895,
                  "src": "4543:14:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2888,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4543:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2891,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "4567:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2895,
                  "src": "4559:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2890,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4559:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2893,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "4580:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2895,
                  "src": "4574:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2892,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4574:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4499:86:14"
            }
          },
          {
            "id": 2906,
            "nodeType": "EventDefinition",
            "src": "4667:93:14",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 2896,
              "nodeType": "StructuredDocumentation",
              "src": "4592:70:14",
              "text": " @dev Emitted when a call is performed via bypasser."
            },
            "eventSelector": "6b983f337bab73dfe37faca733adf3ea35b45b8b144ec8ee2de3a1b224564b0c",
            "name": "BypasserCallExecuted",
            "nameLocation": "4673:20:14",
            "parameters": {
              "id": 2905,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2898,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "4710:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2906,
                  "src": "4694:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2897,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4694:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2900,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "4725:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2906,
                  "src": "4717:14:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2899,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4717:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2902,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "4741:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2906,
                  "src": "4733:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2901,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4733:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2904,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "4754:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2906,
                  "src": "4748:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2903,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4748:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4693:66:14"
            }
          },
          {
            "id": 2911,
            "nodeType": "EventDefinition",
            "src": "4836:36:14",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 2907,
              "nodeType": "StructuredDocumentation",
              "src": "4766:65:14",
              "text": " @dev Emitted when operation `id` is cancelled."
            },
            "eventSelector": "baa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb70",
            "name": "Cancelled",
            "nameLocation": "4842:9:14",
            "parameters": {
              "id": 2910,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2909,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "4868:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2911,
                  "src": "4852:18:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2908,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4852:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4851:20:14"
            }
          },
          {
            "id": 2918,
            "nodeType": "EventDefinition",
            "src": "4972:63:14",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 2912,
              "nodeType": "StructuredDocumentation",
              "src": "4878:89:14",
              "text": " @dev Emitted when the minimum delay for future operations is modified."
            },
            "eventSelector": "11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5",
            "name": "MinDelayChange",
            "nameLocation": "4978:14:14",
            "parameters": {
              "id": 2917,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2914,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "oldDuration",
                  "nameLocation": "5001:11:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2918,
                  "src": "4993:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2913,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4993:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2916,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newDuration",
                  "nameLocation": "5022:11:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2918,
                  "src": "5014:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2915,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5014:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4992:42:14"
            }
          },
          {
            "id": 2923,
            "nodeType": "EventDefinition",
            "src": "5114:55:14",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 2919,
              "nodeType": "StructuredDocumentation",
              "src": "5041:68:14",
              "text": " @dev Emitted when a function selector is blocked."
            },
            "eventSelector": "15b40cf8ed4c95cd3c0e1dedfdb3987c3f9bf3d3770d13ddf6dc4daa5ffae9ef",
            "name": "FunctionSelectorBlocked",
            "nameLocation": "5120:23:14",
            "parameters": {
              "id": 2922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2921,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "selector",
                  "nameLocation": "5159:8:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2923,
                  "src": "5144:23:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2920,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "5144:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5143:25:14"
            }
          },
          {
            "id": 2928,
            "nodeType": "EventDefinition",
            "src": "5250:57:14",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 2924,
              "nodeType": "StructuredDocumentation",
              "src": "5175:70:14",
              "text": " @dev Emitted when a function selector is unblocked."
            },
            "eventSelector": "d91859a8d88193a56a2983deb65a5253985141c49c70bf016880b5243bd432e1",
            "name": "FunctionSelectorUnblocked",
            "nameLocation": "5256:25:14",
            "parameters": {
              "id": 2927,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2926,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "selector",
                  "nameLocation": "5297:8:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 2928,
                  "src": "5282:23:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2925,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "5282:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5281:25:14"
            }
          },
          {
            "id": 3068,
            "nodeType": "FunctionDefinition",
            "src": "5752:1188:14",
            "nodes": [],
            "body": {
              "id": 3067,
              "nodeType": "Block",
              "src": "5964:976:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2949,
                        "name": "ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2828,
                        "src": "5988:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2950,
                        "name": "ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2828,
                        "src": "6000:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2948,
                      "name": "_setRoleAdmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 251,
                      "src": "5974:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 2951,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5974:37:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2952,
                  "nodeType": "ExpressionStatement",
                  "src": "5974:37:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2954,
                        "name": "PROPOSER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2833,
                        "src": "6035:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2955,
                        "name": "ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2828,
                        "src": "6050:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2953,
                      "name": "_setRoleAdmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 251,
                      "src": "6021:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 2956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6021:40:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2957,
                  "nodeType": "ExpressionStatement",
                  "src": "6021:40:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2959,
                        "name": "EXECUTOR_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2838,
                        "src": "6085:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2960,
                        "name": "ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2828,
                        "src": "6100:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2958,
                      "name": "_setRoleAdmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 251,
                      "src": "6071:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 2961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6071:40:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2962,
                  "nodeType": "ExpressionStatement",
                  "src": "6071:40:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2964,
                        "name": "CANCELLER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2843,
                        "src": "6135:14:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2965,
                        "name": "ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2828,
                        "src": "6151:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2963,
                      "name": "_setRoleAdmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 251,
                      "src": "6121:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 2966,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6121:41:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2967,
                  "nodeType": "ExpressionStatement",
                  "src": "6121:41:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2969,
                        "name": "BYPASSER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2848,
                        "src": "6186:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2970,
                        "name": "ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2828,
                        "src": "6201:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2968,
                      "name": "_setRoleAdmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 251,
                      "src": "6172:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 2971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6172:40:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2972,
                  "nodeType": "ExpressionStatement",
                  "src": "6172:40:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2974,
                        "name": "ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2828,
                        "src": "6234:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2975,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2933,
                        "src": "6246:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2973,
                      "name": "_setupRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 223,
                      "src": "6223:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 2976,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6223:29:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2977,
                  "nodeType": "ExpressionStatement",
                  "src": "6223:29:14"
                },
                {
                  "body": {
                    "id": 2996,
                    "nodeType": "Block",
                    "src": "6340:64:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2990,
                              "name": "PROPOSER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2833,
                              "src": "6365:13:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 2991,
                                "name": "proposers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2936,
                                "src": "6380:9:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2993,
                              "indexExpression": {
                                "id": 2992,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2979,
                                "src": "6390:1:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6380:12:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2989,
                            "name": "_setupRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 223,
                            "src": "6354:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 2994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6354:39:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2995,
                        "nodeType": "ExpressionStatement",
                        "src": "6354:39:14"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2985,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2982,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2979,
                      "src": "6313:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 2983,
                        "name": "proposers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2936,
                        "src": "6317:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2984,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6327:6:14",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6317:16:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6313:20:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2997,
                  "initializationExpression": {
                    "assignments": [
                      2979
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2979,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "6306:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2997,
                        "src": "6298:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2978,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6298:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 2981,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 2980,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6310:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6298:13:14"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 2987,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "6335:3:14",
                      "subExpression": {
                        "id": 2986,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2979,
                        "src": "6337:1:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2988,
                    "nodeType": "ExpressionStatement",
                    "src": "6335:3:14"
                  },
                  "nodeType": "ForStatement",
                  "src": "6293:111:14"
                },
                {
                  "body": {
                    "id": 3016,
                    "nodeType": "Block",
                    "src": "6491:64:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3010,
                              "name": "EXECUTOR_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2838,
                              "src": "6516:13:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3011,
                                "name": "executors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2939,
                                "src": "6531:9:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 3013,
                              "indexExpression": {
                                "id": 3012,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2999,
                                "src": "6541:1:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6531:12:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3009,
                            "name": "_setupRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 223,
                            "src": "6505:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6505:39:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3015,
                        "nodeType": "ExpressionStatement",
                        "src": "6505:39:14"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3002,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2999,
                      "src": "6464:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3003,
                        "name": "executors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2939,
                        "src": "6468:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 3004,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6478:6:14",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6468:16:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6464:20:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3017,
                  "initializationExpression": {
                    "assignments": [
                      2999
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2999,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "6457:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3017,
                        "src": "6449:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2998,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6449:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3001,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3000,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6461:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6449:13:14"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3007,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "6486:3:14",
                      "subExpression": {
                        "id": 3006,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2999,
                        "src": "6488:1:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3008,
                    "nodeType": "ExpressionStatement",
                    "src": "6486:3:14"
                  },
                  "nodeType": "ForStatement",
                  "src": "6444:111:14"
                },
                {
                  "body": {
                    "id": 3036,
                    "nodeType": "Block",
                    "src": "6644:66:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3030,
                              "name": "CANCELLER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2843,
                              "src": "6669:14:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3031,
                                "name": "cancellers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2942,
                                "src": "6685:10:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 3033,
                              "indexExpression": {
                                "id": 3032,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3019,
                                "src": "6696:1:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6685:13:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3029,
                            "name": "_setupRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 223,
                            "src": "6658:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6658:41:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3035,
                        "nodeType": "ExpressionStatement",
                        "src": "6658:41:14"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3022,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3019,
                      "src": "6616:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3023,
                        "name": "cancellers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2942,
                        "src": "6620:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 3024,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6631:6:14",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6620:17:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6616:21:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3037,
                  "initializationExpression": {
                    "assignments": [
                      3019
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3019,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "6609:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3037,
                        "src": "6601:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3018,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6601:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3021,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3020,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6613:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6601:13:14"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3027,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "6639:3:14",
                      "subExpression": {
                        "id": 3026,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3019,
                        "src": "6641:1:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3028,
                    "nodeType": "ExpressionStatement",
                    "src": "6639:3:14"
                  },
                  "nodeType": "ForStatement",
                  "src": "6596:114:14"
                },
                {
                  "body": {
                    "id": 3056,
                    "nodeType": "Block",
                    "src": "6797:64:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3050,
                              "name": "BYPASSER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2848,
                              "src": "6822:13:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3051,
                                "name": "bypassers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2945,
                                "src": "6837:9:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 3053,
                              "indexExpression": {
                                "id": 3052,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3039,
                                "src": "6847:1:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6837:12:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3049,
                            "name": "_setupRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 223,
                            "src": "6811:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6811:39:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3055,
                        "nodeType": "ExpressionStatement",
                        "src": "6811:39:14"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3045,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3042,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3039,
                      "src": "6770:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3043,
                        "name": "bypassers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2945,
                        "src": "6774:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 3044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6784:6:14",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6774:16:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6770:20:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3057,
                  "initializationExpression": {
                    "assignments": [
                      3039
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3039,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "6763:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3057,
                        "src": "6755:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3038,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6755:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3041,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3040,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6767:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6755:13:14"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3047,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "6792:3:14",
                      "subExpression": {
                        "id": 3046,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3039,
                        "src": "6794:1:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3048,
                    "nodeType": "ExpressionStatement",
                    "src": "6792:3:14"
                  },
                  "nodeType": "ForStatement",
                  "src": "6750:111:14"
                },
                {
                  "expression": {
                    "id": 3060,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3058,
                      "name": "_minDelay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2860,
                      "src": "6871:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3059,
                      "name": "minDelay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2931,
                      "src": "6883:8:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6871:20:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3061,
                  "nodeType": "ExpressionStatement",
                  "src": "6871:20:14"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 3063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6921:1:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "id": 3064,
                        "name": "minDelay",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2931,
                        "src": "6924:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3062,
                      "name": "MinDelayChange",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2918,
                      "src": "6906:14:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 3065,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6906:27:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3066,
                  "nodeType": "EmitStatement",
                  "src": "6901:32:14"
                }
              ]
            },
            "documentation": {
              "id": 2929,
              "nodeType": "StructuredDocumentation",
              "src": "5314:433:14",
              "text": " @dev Initializes the contract with the following parameters:\n - `minDelay`: initial minimum delay for operations\n - `admin`: account to be granted admin role\n - `proposers`: accounts to be granted proposer role\n - `executors`: accounts to be granted executor role\n - `cancellers`: accounts to be granted canceller role\n - `bypassers`: accounts to be granted bypasser role"
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 2946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2931,
                  "mutability": "mutable",
                  "name": "minDelay",
                  "nameLocation": "5781:8:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3068,
                  "src": "5773:16:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2930,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5773:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2933,
                  "mutability": "mutable",
                  "name": "admin",
                  "nameLocation": "5807:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3068,
                  "src": "5799:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2932,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5799:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2936,
                  "mutability": "mutable",
                  "name": "proposers",
                  "nameLocation": "5839:9:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3068,
                  "src": "5822:26:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2934,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5822:7:14",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2935,
                    "nodeType": "ArrayTypeName",
                    "src": "5822:9:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2939,
                  "mutability": "mutable",
                  "name": "executors",
                  "nameLocation": "5875:9:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3068,
                  "src": "5858:26:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2937,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5858:7:14",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2938,
                    "nodeType": "ArrayTypeName",
                    "src": "5858:9:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2942,
                  "mutability": "mutable",
                  "name": "cancellers",
                  "nameLocation": "5911:10:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3068,
                  "src": "5894:27:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2940,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5894:7:14",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2941,
                    "nodeType": "ArrayTypeName",
                    "src": "5894:9:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2945,
                  "mutability": "mutable",
                  "name": "bypassers",
                  "nameLocation": "5948:9:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3068,
                  "src": "5931:26:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2943,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5931:7:14",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2944,
                    "nodeType": "ArrayTypeName",
                    "src": "5931:9:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5763:200:14"
            },
            "returnParameters": {
              "id": 2947,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5964:0:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 3092,
            "nodeType": "ModifierDefinition",
            "src": "7060:192:14",
            "nodes": [],
            "body": {
              "id": 3091,
              "nodeType": "Block",
              "src": "7103:149:14",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    3074
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3074,
                      "mutability": "mutable",
                      "name": "sender",
                      "nameLocation": "7121:6:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 3091,
                      "src": "7113:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3073,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7113:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3077,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3075,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 939,
                      "src": "7130:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 3076,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7130:12:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7113:29:14"
                },
                {
                  "condition": {
                    "id": 3082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "7156:28:14",
                    "subExpression": {
                      "arguments": [
                        {
                          "id": 3079,
                          "name": "ADMIN_ROLE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2828,
                          "src": "7165:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "id": 3080,
                          "name": "sender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3074,
                          "src": "7177:6:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 3078,
                        "name": "hasRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 79,
                        "src": "7157:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                          "typeString": "function (bytes32,address) view returns (bool)"
                        }
                      },
                      "id": 3081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7157:27:14",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3089,
                  "nodeType": "IfStatement",
                  "src": "7152:83:14",
                  "trueBody": {
                    "id": 3088,
                    "nodeType": "Block",
                    "src": "7186:49:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3084,
                              "name": "role",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3071,
                              "src": "7211:4:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3085,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3074,
                              "src": "7217:6:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3083,
                            "name": "_checkRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              92,
                              131
                            ],
                            "referencedDeclaration": 131,
                            "src": "7200:10:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) view"
                            }
                          },
                          "id": 3086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7200:24:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3087,
                        "nodeType": "ExpressionStatement",
                        "src": "7200:24:14"
                      }
                    ]
                  }
                },
                {
                  "id": 3090,
                  "nodeType": "PlaceholderStatement",
                  "src": "7244:1:14"
                }
              ]
            },
            "documentation": {
              "id": 3069,
              "nodeType": "StructuredDocumentation",
              "src": "6946:109:14",
              "text": " @dev Modifier to make a function callable only by a certain role or the\n admin role."
            },
            "name": "onlyRoleOrAdminRole",
            "nameLocation": "7069:19:14",
            "parameters": {
              "id": 3072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3071,
                  "mutability": "mutable",
                  "name": "role",
                  "nameLocation": "7097:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3092,
                  "src": "7089:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3070,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7089:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7088:14:14"
            },
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 3097,
            "nodeType": "FunctionDefinition",
            "src": "7354:29:14",
            "nodes": [],
            "body": {
              "id": 3096,
              "nodeType": "Block",
              "src": "7381:2:14",
              "nodes": [],
              "statements": []
            },
            "documentation": {
              "id": 3093,
              "nodeType": "StructuredDocumentation",
              "src": "7258:91:14",
              "text": " @dev Contract might receive/hold ETH as part of the maintenance process."
            },
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 3094,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7361:2:14"
            },
            "returnParameters": {
              "id": 3095,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7381:0:14"
            },
            "scope": 3747,
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 3121,
            "nodeType": "FunctionDefinition",
            "src": "7450:238:14",
            "nodes": [],
            "body": {
              "id": 3120,
              "nodeType": "Block",
              "src": "7575:113:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 3113,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3108,
                        "name": "interfaceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3100,
                        "src": "7592:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3110,
                              "name": "IERC1155Receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 579,
                              "src": "7612:16:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$579_$",
                                "typeString": "type(contract IERC1155Receiver)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$579_$",
                                "typeString": "type(contract IERC1155Receiver)"
                              }
                            ],
                            "id": 3109,
                            "name": "type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -27,
                            "src": "7607:4:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 3111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7607:22:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155Receiver_$579",
                            "typeString": "type(contract IERC1155Receiver)"
                          }
                        },
                        "id": 3112,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "7630:11:14",
                        "memberName": "interfaceId",
                        "nodeType": "MemberAccess",
                        "src": "7607:34:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "7592:49:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "arguments": [
                        {
                          "id": 3116,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3100,
                          "src": "7669:11:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "id": 3114,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -25,
                          "src": "7645:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_super$_RBACTimelock_$3747_$",
                            "typeString": "type(contract super RBACTimelock)"
                          }
                        },
                        "id": 3115,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "7651:17:14",
                        "memberName": "supportsInterface",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 356,
                        "src": "7645:23:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (bytes4) view returns (bool)"
                        }
                      },
                      "id": 3117,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7645:36:14",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "7592:89:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3107,
                  "id": 3119,
                  "nodeType": "Return",
                  "src": "7585:96:14"
                }
              ]
            },
            "baseFunctions": [
              356,
              1213
            ],
            "documentation": {
              "id": 3098,
              "nodeType": "StructuredDocumentation",
              "src": "7389:56:14",
              "text": " @dev See {IERC165-supportsInterface}."
            },
            "functionSelector": "01ffc9a7",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "7459:17:14",
            "overrides": {
              "id": 3104,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 3102,
                  "name": "IERC165",
                  "nameLocations": [
                    "7526:7:14"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1214,
                  "src": "7526:7:14"
                },
                {
                  "id": 3103,
                  "name": "AccessControlEnumerable",
                  "nameLocations": [
                    "7535:23:14"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 440,
                  "src": "7535:23:14"
                }
              ],
              "src": "7517:42:14"
            },
            "parameters": {
              "id": 3101,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3100,
                  "mutability": "mutable",
                  "name": "interfaceId",
                  "nameLocation": "7484:11:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3121,
                  "src": "7477:18:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3099,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "7477:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7476:20:14"
            },
            "returnParameters": {
              "id": 3107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3106,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3121,
                  "src": "7569:4:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3105,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7569:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7568:6:14"
            },
            "scope": 3747,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3136,
            "nodeType": "FunctionDefinition",
            "src": "7844:123:14",
            "nodes": [],
            "body": {
              "id": 3135,
              "nodeType": "Block",
              "src": "7923:44:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 3130,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3124,
                          "src": "7953:2:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 3129,
                        "name": "getTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3203,
                        "src": "7940:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32) view returns (uint256)"
                        }
                      },
                      "id": 3131,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7940:16:14",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 3132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7959:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7940:20:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3128,
                  "id": 3134,
                  "nodeType": "Return",
                  "src": "7933:27:14"
                }
              ]
            },
            "documentation": {
              "id": 3122,
              "nodeType": "StructuredDocumentation",
              "src": "7694:145:14",
              "text": " @dev Returns whether an id correspond to a registered operation. This\n includes both Pending, Ready and Done operations."
            },
            "functionSelector": "31d50750",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isOperation",
            "nameLocation": "7853:11:14",
            "parameters": {
              "id": 3125,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3124,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "7873:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3136,
                  "src": "7865:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3123,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7865:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7864:12:14"
            },
            "returnParameters": {
              "id": 3128,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3127,
                  "mutability": "mutable",
                  "name": "registered",
                  "nameLocation": "7911:10:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3136,
                  "src": "7906:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3126,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7906:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7905:17:14"
            },
            "scope": 3747,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3151,
            "nodeType": "FunctionDefinition",
            "src": "8049:141:14",
            "nodes": [],
            "body": {
              "id": 3150,
              "nodeType": "Block",
              "src": "8132:58:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 3145,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3139,
                          "src": "8162:2:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 3144,
                        "name": "getTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3203,
                        "src": "8149:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32) view returns (uint256)"
                        }
                      },
                      "id": 3146,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8149:16:14",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 3147,
                      "name": "_DONE_TIMESTAMP",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2854,
                      "src": "8168:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8149:34:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3143,
                  "id": 3149,
                  "nodeType": "Return",
                  "src": "8142:41:14"
                }
              ]
            },
            "documentation": {
              "id": 3137,
              "nodeType": "StructuredDocumentation",
              "src": "7973:71:14",
              "text": " @dev Returns whether an operation is pending or not."
            },
            "functionSelector": "584b153e",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isOperationPending",
            "nameLocation": "8058:18:14",
            "parameters": {
              "id": 3140,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3139,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "8085:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3151,
                  "src": "8077:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3138,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8077:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8076:12:14"
            },
            "returnParameters": {
              "id": 3143,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3142,
                  "mutability": "mutable",
                  "name": "pending",
                  "nameLocation": "8123:7:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3151,
                  "src": "8118:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3141,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8118:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8117:14:14"
            },
            "scope": 3747,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3175,
            "nodeType": "FunctionDefinition",
            "src": "8270:208:14",
            "nodes": [],
            "body": {
              "id": 3174,
              "nodeType": "Block",
              "src": "8349:129:14",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    3160
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3160,
                      "mutability": "mutable",
                      "name": "timestamp",
                      "nameLocation": "8367:9:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 3174,
                      "src": "8359:17:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3159,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8359:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3164,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 3162,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3154,
                        "src": "8392:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3161,
                      "name": "getTimestamp",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3203,
                      "src": "8379:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) view returns (uint256)"
                      }
                    },
                    "id": 3163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8379:16:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8359:36:14"
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3165,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3160,
                        "src": "8412:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 3166,
                        "name": "_DONE_TIMESTAMP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2854,
                        "src": "8424:15:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "8412:27:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3171,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3168,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3160,
                        "src": "8443:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "expression": {
                          "id": 3169,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "8456:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 3170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "8462:9:14",
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "src": "8456:15:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "8443:28:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8412:59:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3158,
                  "id": 3173,
                  "nodeType": "Return",
                  "src": "8405:66:14"
                }
              ]
            },
            "documentation": {
              "id": 3152,
              "nodeType": "StructuredDocumentation",
              "src": "8196:69:14",
              "text": " @dev Returns whether an operation is ready or not."
            },
            "functionSelector": "13bc9f20",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isOperationReady",
            "nameLocation": "8279:16:14",
            "parameters": {
              "id": 3155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3154,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "8304:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3175,
                  "src": "8296:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3153,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8296:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8295:12:14"
            },
            "returnParameters": {
              "id": 3158,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3157,
                  "mutability": "mutable",
                  "name": "ready",
                  "nameLocation": "8342:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3175,
                  "src": "8337:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3156,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8337:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8336:12:14"
            },
            "scope": 3747,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3190,
            "nodeType": "FunctionDefinition",
            "src": "8557:136:14",
            "nodes": [],
            "body": {
              "id": 3189,
              "nodeType": "Block",
              "src": "8634:59:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 3184,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3178,
                          "src": "8664:2:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 3183,
                        "name": "getTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3203,
                        "src": "8651:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32) view returns (uint256)"
                        }
                      },
                      "id": 3185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8651:16:14",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "id": 3186,
                      "name": "_DONE_TIMESTAMP",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2854,
                      "src": "8671:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8651:35:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3182,
                  "id": 3188,
                  "nodeType": "Return",
                  "src": "8644:42:14"
                }
              ]
            },
            "documentation": {
              "id": 3176,
              "nodeType": "StructuredDocumentation",
              "src": "8484:68:14",
              "text": " @dev Returns whether an operation is done or not."
            },
            "functionSelector": "2ab0f529",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isOperationDone",
            "nameLocation": "8566:15:14",
            "parameters": {
              "id": 3179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3178,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "8590:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3190,
                  "src": "8582:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3177,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8582:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8581:12:14"
            },
            "returnParameters": {
              "id": 3182,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3181,
                  "mutability": "mutable",
                  "name": "done",
                  "nameLocation": "8628:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3190,
                  "src": "8623:9:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3180,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8623:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8622:11:14"
            },
            "scope": 3747,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3203,
            "nodeType": "FunctionDefinition",
            "src": "8840:121:14",
            "nodes": [],
            "body": {
              "id": 3202,
              "nodeType": "Block",
              "src": "8922:39:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 3198,
                      "name": "_timestamps",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2858,
                      "src": "8939:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 3200,
                    "indexExpression": {
                      "id": 3199,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3193,
                      "src": "8951:2:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8939:15:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3197,
                  "id": 3201,
                  "nodeType": "Return",
                  "src": "8932:22:14"
                }
              ]
            },
            "documentation": {
              "id": 3191,
              "nodeType": "StructuredDocumentation",
              "src": "8699:136:14",
              "text": " @dev Returns the timestamp at with an operation becomes ready (0 for\n unset operations, 1 for done operations)."
            },
            "functionSelector": "d45c4435",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTimestamp",
            "nameLocation": "8849:12:14",
            "parameters": {
              "id": 3194,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3193,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "8870:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3203,
                  "src": "8862:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3192,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8862:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8861:12:14"
            },
            "returnParameters": {
              "id": 3197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3196,
                  "mutability": "mutable",
                  "name": "timestamp",
                  "nameLocation": "8911:9:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3203,
                  "src": "8903:17:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3195,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8903:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8902:19:14"
            },
            "scope": 3747,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3212,
            "nodeType": "FunctionDefinition",
            "src": "9147:103:14",
            "nodes": [],
            "body": {
              "id": 3211,
              "nodeType": "Block",
              "src": "9217:33:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 3209,
                    "name": "_minDelay",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2860,
                    "src": "9234:9:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3208,
                  "id": 3210,
                  "nodeType": "Return",
                  "src": "9227:16:14"
                }
              ]
            },
            "documentation": {
              "id": 3204,
              "nodeType": "StructuredDocumentation",
              "src": "8967:175:14",
              "text": " @dev Returns the minimum delay for an operation to become valid.\n This value can be changed by executing an operation that calls `updateDelay`."
            },
            "functionSelector": "f27a0c92",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getMinDelay",
            "nameLocation": "9156:11:14",
            "parameters": {
              "id": 3205,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9167:2:14"
            },
            "returnParameters": {
              "id": 3208,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3207,
                  "mutability": "mutable",
                  "name": "duration",
                  "nameLocation": "9207:8:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3212,
                  "src": "9199:16:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3206,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9199:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9198:18:14"
            },
            "scope": 3747,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3236,
            "nodeType": "FunctionDefinition",
            "src": "9366:230:14",
            "nodes": [],
            "body": {
              "id": 3235,
              "nodeType": "Block",
              "src": "9525:71:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 3229,
                            "name": "calls",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3217,
                            "src": "9563:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct RBACTimelock.Call calldata[] calldata"
                            }
                          },
                          {
                            "id": 3230,
                            "name": "predecessor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3219,
                            "src": "9570:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 3231,
                            "name": "salt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3221,
                            "src": "9583:4:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct RBACTimelock.Call calldata[] calldata"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 3227,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9552:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 3228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9556:6:14",
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "9552:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 3232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9552:36:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3226,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "9542:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 3233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9542:47:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 3225,
                  "id": 3234,
                  "nodeType": "Return",
                  "src": "9535:54:14"
                }
              ]
            },
            "documentation": {
              "id": 3213,
              "nodeType": "StructuredDocumentation",
              "src": "9256:105:14",
              "text": " @dev Returns the identifier of an operation containing a batch of\n transactions."
            },
            "functionSelector": "515a3db3",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hashOperationBatch",
            "nameLocation": "9375:18:14",
            "parameters": {
              "id": 3222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3217,
                  "mutability": "mutable",
                  "name": "calls",
                  "nameLocation": "9419:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3236,
                  "src": "9403:21:14",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "struct RBACTimelock.Call[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3215,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 3214,
                        "name": "Call",
                        "nameLocations": [
                          "9403:4:14"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2823,
                        "src": "9403:4:14"
                      },
                      "referencedDeclaration": 2823,
                      "src": "9403:4:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Call_$2823_storage_ptr",
                        "typeString": "struct RBACTimelock.Call"
                      }
                    },
                    "id": 3216,
                    "nodeType": "ArrayTypeName",
                    "src": "9403:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Call_$2823_storage_$dyn_storage_ptr",
                      "typeString": "struct RBACTimelock.Call[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3219,
                  "mutability": "mutable",
                  "name": "predecessor",
                  "nameLocation": "9442:11:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3236,
                  "src": "9434:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3218,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9434:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3221,
                  "mutability": "mutable",
                  "name": "salt",
                  "nameLocation": "9471:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3236,
                  "src": "9463:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3220,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9463:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9393:88:14"
            },
            "returnParameters": {
              "id": 3225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3224,
                  "mutability": "mutable",
                  "name": "hash",
                  "nameLocation": "9519:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3236,
                  "src": "9511:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3223,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9511:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9510:14:14"
            },
            "scope": 3747,
            "stateMutability": "pure",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3307,
            "nodeType": "FunctionDefinition",
            "src": "9932:525:14",
            "nodes": [],
            "body": {
              "id": 3306,
              "nodeType": "Block",
              "src": "10116:341:14",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    3254
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3254,
                      "mutability": "mutable",
                      "name": "id",
                      "nameLocation": "10134:2:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 3306,
                      "src": "10126:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3253,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10126:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3260,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 3256,
                        "name": "calls",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3241,
                        "src": "10158:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct RBACTimelock.Call calldata[] calldata"
                        }
                      },
                      {
                        "id": 3257,
                        "name": "predecessor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3243,
                        "src": "10165:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3258,
                        "name": "salt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3245,
                        "src": "10178:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct RBACTimelock.Call calldata[] calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3255,
                      "name": "hashOperationBatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3236,
                      "src": "10139:18:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (struct RBACTimelock.Call calldata[] calldata,bytes32,bytes32) pure returns (bytes32)"
                      }
                    },
                    "id": 3259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10139:44:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10126:57:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3262,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3254,
                        "src": "10203:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3263,
                        "name": "delay",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3247,
                        "src": "10207:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3261,
                      "name": "_schedule",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3341,
                      "src": "10193:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 3264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10193:20:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3265,
                  "nodeType": "ExpressionStatement",
                  "src": "10193:20:14"
                },
                {
                  "body": {
                    "id": 3304,
                    "nodeType": "Block",
                    "src": "10266:185:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 3278,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3241,
                                  "src": "10313:5:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                  }
                                },
                                "id": 3280,
                                "indexExpression": {
                                  "id": 3279,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3267,
                                  "src": "10319:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10313:8:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata"
                                }
                              },
                              "id": 3281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10322:4:14",
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2822,
                              "src": "10313:13:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3277,
                            "name": "_checkFunctionSelectorNotBlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3746,
                            "src": "10280:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_calldata_ptr_$returns$__$",
                              "typeString": "function (bytes calldata) view"
                            }
                          },
                          "id": 3282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10280:47:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3283,
                        "nodeType": "ExpressionStatement",
                        "src": "10280:47:14"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3285,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3254,
                              "src": "10360:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3286,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3267,
                              "src": "10364:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 3287,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3241,
                                  "src": "10367:5:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                  }
                                },
                                "id": 3289,
                                "indexExpression": {
                                  "id": 3288,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3267,
                                  "src": "10373:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10367:8:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata"
                                }
                              },
                              "id": 3290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10376:6:14",
                              "memberName": "target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2818,
                              "src": "10367:15:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 3291,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3241,
                                  "src": "10384:5:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                  }
                                },
                                "id": 3293,
                                "indexExpression": {
                                  "id": 3292,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3267,
                                  "src": "10390:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10384:8:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata"
                                }
                              },
                              "id": 3294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10393:5:14",
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2820,
                              "src": "10384:14:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 3295,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3241,
                                  "src": "10400:5:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                  }
                                },
                                "id": 3297,
                                "indexExpression": {
                                  "id": 3296,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3267,
                                  "src": "10406:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10400:8:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata"
                                }
                              },
                              "id": 3298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10409:4:14",
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2822,
                              "src": "10400:13:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "id": 3299,
                              "name": "predecessor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3243,
                              "src": "10415:11:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3300,
                              "name": "salt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3245,
                              "src": "10428:4:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3301,
                              "name": "delay",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3247,
                              "src": "10434:5:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3284,
                            "name": "CallScheduled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2882,
                            "src": "10346:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256,address,uint256,bytes memory,bytes32,bytes32,uint256)"
                            }
                          },
                          "id": 3302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10346:94:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3303,
                        "nodeType": "EmitStatement",
                        "src": "10341:99:14"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3270,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3267,
                      "src": "10243:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3271,
                        "name": "calls",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3241,
                        "src": "10247:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct RBACTimelock.Call calldata[] calldata"
                        }
                      },
                      "id": 3272,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10253:6:14",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "10247:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10243:16:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3305,
                  "initializationExpression": {
                    "assignments": [
                      3267
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3267,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "10236:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3305,
                        "src": "10228:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3266,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10228:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3269,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3268,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10240:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10228:13:14"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3275,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "10261:3:14",
                      "subExpression": {
                        "id": 3274,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3267,
                        "src": "10263:1:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3276,
                    "nodeType": "ExpressionStatement",
                    "src": "10261:3:14"
                  },
                  "nodeType": "ForStatement",
                  "src": "10223:228:14"
                }
              ]
            },
            "documentation": {
              "id": 3237,
              "nodeType": "StructuredDocumentation",
              "src": "9602:325:14",
              "text": " @dev Schedule an operation containing a batch of transactions.\n Emits one {CallScheduled} event per transaction in the batch.\n Requirements:\n - the caller must have the 'proposer' or 'admin' role.\n - all payloads must not start with a blocked function selector."
            },
            "functionSelector": "a944142d",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 3250,
                    "name": "PROPOSER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2833,
                    "src": "10101:13:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3251,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 3249,
                  "name": "onlyRoleOrAdminRole",
                  "nameLocations": [
                    "10081:19:14"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3092,
                  "src": "10081:19:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "10081:34:14"
              }
            ],
            "name": "scheduleBatch",
            "nameLocation": "9941:13:14",
            "parameters": {
              "id": 3248,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3241,
                  "mutability": "mutable",
                  "name": "calls",
                  "nameLocation": "9980:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3307,
                  "src": "9964:21:14",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "struct RBACTimelock.Call[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3239,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 3238,
                        "name": "Call",
                        "nameLocations": [
                          "9964:4:14"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2823,
                        "src": "9964:4:14"
                      },
                      "referencedDeclaration": 2823,
                      "src": "9964:4:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Call_$2823_storage_ptr",
                        "typeString": "struct RBACTimelock.Call"
                      }
                    },
                    "id": 3240,
                    "nodeType": "ArrayTypeName",
                    "src": "9964:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Call_$2823_storage_$dyn_storage_ptr",
                      "typeString": "struct RBACTimelock.Call[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3243,
                  "mutability": "mutable",
                  "name": "predecessor",
                  "nameLocation": "10003:11:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3307,
                  "src": "9995:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3242,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9995:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3245,
                  "mutability": "mutable",
                  "name": "salt",
                  "nameLocation": "10032:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3307,
                  "src": "10024:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3244,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10024:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3247,
                  "mutability": "mutable",
                  "name": "delay",
                  "nameLocation": "10054:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3307,
                  "src": "10046:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3246,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10046:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9954:111:14"
            },
            "returnParameters": {
              "id": 3252,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10116:0:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3341,
            "nodeType": "FunctionDefinition",
            "src": "10553:269:14",
            "nodes": [],
            "body": {
              "id": 3340,
              "nodeType": "Block",
              "src": "10607:215:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3319,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "10625:16:14",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 3317,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3310,
                              "src": "10638:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3316,
                            "name": "isOperation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3136,
                            "src": "10626:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view returns (bool)"
                            }
                          },
                          "id": 3318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10626:15:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5242414354696d656c6f636b3a206f7065726174696f6e20616c7265616479207363686564756c6564",
                        "id": 3320,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10643:43:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0aeb4f296f8a0fcb1d287ff92710455a173617cab6625ff3fbdc0c7db9f0a202",
                          "typeString": "literal_string \"RBACTimelock: operation already scheduled\""
                        },
                        "value": "RBACTimelock: operation already scheduled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0aeb4f296f8a0fcb1d287ff92710455a173617cab6625ff3fbdc0c7db9f0a202",
                          "typeString": "literal_string \"RBACTimelock: operation already scheduled\""
                        }
                      ],
                      "id": 3315,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10617:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10617:70:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3322,
                  "nodeType": "ExpressionStatement",
                  "src": "10617:70:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3327,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3324,
                          "name": "delay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3312,
                          "src": "10705:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3325,
                            "name": "getMinDelay",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3212,
                            "src": "10714:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 3326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10714:13:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10705:22:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5242414354696d656c6f636b3a20696e73756666696369656e742064656c6179",
                        "id": 3328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10729:34:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b79b48c18f847728162c341035cdebe850189aeaa9a57f325b1350b75a933895",
                          "typeString": "literal_string \"RBACTimelock: insufficient delay\""
                        },
                        "value": "RBACTimelock: insufficient delay"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b79b48c18f847728162c341035cdebe850189aeaa9a57f325b1350b75a933895",
                          "typeString": "literal_string \"RBACTimelock: insufficient delay\""
                        }
                      ],
                      "id": 3323,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10697:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10697:67:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3330,
                  "nodeType": "ExpressionStatement",
                  "src": "10697:67:14"
                },
                {
                  "expression": {
                    "id": 3338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 3331,
                        "name": "_timestamps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2858,
                        "src": "10774:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 3333,
                      "indexExpression": {
                        "id": 3332,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3310,
                        "src": "10786:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10774:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3337,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 3334,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "10792:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 3335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "10798:9:14",
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "src": "10792:15:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "id": 3336,
                        "name": "delay",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3312,
                        "src": "10810:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "10792:23:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10774:41:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3339,
                  "nodeType": "ExpressionStatement",
                  "src": "10774:41:14"
                }
              ]
            },
            "documentation": {
              "id": 3308,
              "nodeType": "StructuredDocumentation",
              "src": "10463:85:14",
              "text": " @dev Schedule an operation that becomes valid after a given delay."
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_schedule",
            "nameLocation": "10562:9:14",
            "parameters": {
              "id": 3313,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3310,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "10580:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3341,
                  "src": "10572:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3309,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10572:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3312,
                  "mutability": "mutable",
                  "name": "delay",
                  "nameLocation": "10592:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3341,
                  "src": "10584:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3311,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10584:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10571:27:14"
            },
            "returnParameters": {
              "id": 3314,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10607:0:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 3367,
            "nodeType": "FunctionDefinition",
            "src": "10975:235:14",
            "nodes": [],
            "body": {
              "id": 3366,
              "nodeType": "Block",
              "src": "11054:156:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 3352,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3344,
                            "src": "11091:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3351,
                          "name": "isOperationPending",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3151,
                          "src": "11072:18:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 3353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11072:22:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5242414354696d656c6f636b3a206f7065726174696f6e2063616e6e6f742062652063616e63656c6c6564",
                        "id": 3354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11096:45:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_28d2a218d53cd1f70c0851290c0b612d294206ccab8b008ac081de9c2f67fa8c",
                          "typeString": "literal_string \"RBACTimelock: operation cannot be cancelled\""
                        },
                        "value": "RBACTimelock: operation cannot be cancelled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_28d2a218d53cd1f70c0851290c0b612d294206ccab8b008ac081de9c2f67fa8c",
                          "typeString": "literal_string \"RBACTimelock: operation cannot be cancelled\""
                        }
                      ],
                      "id": 3350,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11064:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3355,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11064:78:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3356,
                  "nodeType": "ExpressionStatement",
                  "src": "11064:78:14"
                },
                {
                  "expression": {
                    "id": 3360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "11152:22:14",
                    "subExpression": {
                      "baseExpression": {
                        "id": 3357,
                        "name": "_timestamps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2858,
                        "src": "11159:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 3359,
                      "indexExpression": {
                        "id": 3358,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3344,
                        "src": "11171:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11159:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3361,
                  "nodeType": "ExpressionStatement",
                  "src": "11152:22:14"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 3363,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3344,
                        "src": "11200:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3362,
                      "name": "Cancelled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2911,
                      "src": "11190:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 3364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11190:13:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3365,
                  "nodeType": "EmitStatement",
                  "src": "11185:18:14"
                }
              ]
            },
            "documentation": {
              "id": 3342,
              "nodeType": "StructuredDocumentation",
              "src": "10828:142:14",
              "text": " @dev Cancel an operation.\n Requirements:\n - the caller must have the 'canceller' or 'admin' role."
            },
            "functionSelector": "c4d252f5",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 3347,
                    "name": "CANCELLER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2843,
                    "src": "11038:14:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3348,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 3346,
                  "name": "onlyRoleOrAdminRole",
                  "nameLocations": [
                    "11018:19:14"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3092,
                  "src": "11018:19:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "11018:35:14"
              }
            ],
            "name": "cancel",
            "nameLocation": "10984:6:14",
            "parameters": {
              "id": 3345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3344,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "10999:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3367,
                  "src": "10991:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3343,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10991:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10990:12:14"
            },
            "returnParameters": {
              "id": 3349,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11054:0:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3436,
            "nodeType": "FunctionDefinition",
            "src": "11655:486:14",
            "nodes": [],
            "body": {
              "id": 3435,
              "nodeType": "Block",
              "src": "11823:318:14",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    3383
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3383,
                      "mutability": "mutable",
                      "name": "id",
                      "nameLocation": "11841:2:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 3435,
                      "src": "11833:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3382,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11833:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3389,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 3385,
                        "name": "calls",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3372,
                        "src": "11865:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct RBACTimelock.Call calldata[] calldata"
                        }
                      },
                      {
                        "id": 3386,
                        "name": "predecessor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3374,
                        "src": "11872:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3387,
                        "name": "salt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3376,
                        "src": "11885:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct RBACTimelock.Call calldata[] calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3384,
                      "name": "hashOperationBatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3236,
                      "src": "11846:18:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (struct RBACTimelock.Call calldata[] calldata,bytes32,bytes32) pure returns (bytes32)"
                      }
                    },
                    "id": 3388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11846:44:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11833:57:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3391,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3383,
                        "src": "11913:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3392,
                        "name": "predecessor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3374,
                        "src": "11917:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3390,
                      "name": "_beforeCall",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3491,
                      "src": "11901:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32) view"
                      }
                    },
                    "id": 3393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11901:28:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3394,
                  "nodeType": "ExpressionStatement",
                  "src": "11901:28:14"
                },
                {
                  "body": {
                    "id": 3429,
                    "nodeType": "Block",
                    "src": "11982:129:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 3407,
                                "name": "calls",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3372,
                                "src": "12005:5:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                }
                              },
                              "id": 3409,
                              "indexExpression": {
                                "id": 3408,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3396,
                                "src": "12011:1:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12005:8:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                "typeString": "struct RBACTimelock.Call calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                "typeString": "struct RBACTimelock.Call calldata"
                              }
                            ],
                            "id": 3406,
                            "name": "_execute",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3461,
                            "src": "11996:8:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Call_$2823_calldata_ptr_$returns$__$",
                              "typeString": "function (struct RBACTimelock.Call calldata)"
                            }
                          },
                          "id": 3410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11996:18:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3411,
                        "nodeType": "ExpressionStatement",
                        "src": "11996:18:14"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3413,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3383,
                              "src": "12046:2:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3414,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3396,
                              "src": "12050:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 3415,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3372,
                                  "src": "12053:5:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                  }
                                },
                                "id": 3417,
                                "indexExpression": {
                                  "id": 3416,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3396,
                                  "src": "12059:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12053:8:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata"
                                }
                              },
                              "id": 3418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12062:6:14",
                              "memberName": "target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2818,
                              "src": "12053:15:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 3419,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3372,
                                  "src": "12070:5:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                  }
                                },
                                "id": 3421,
                                "indexExpression": {
                                  "id": 3420,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3396,
                                  "src": "12076:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12070:8:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata"
                                }
                              },
                              "id": 3422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12079:5:14",
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2820,
                              "src": "12070:14:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 3423,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3372,
                                  "src": "12086:5:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                  }
                                },
                                "id": 3425,
                                "indexExpression": {
                                  "id": 3424,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3396,
                                  "src": "12092:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12086:8:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata"
                                }
                              },
                              "id": 3426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12095:4:14",
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2822,
                              "src": "12086:13:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3412,
                            "name": "CallExecuted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2895,
                            "src": "12033:12:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,uint256,address,uint256,bytes memory)"
                            }
                          },
                          "id": 3427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12033:67:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3428,
                        "nodeType": "EmitStatement",
                        "src": "12028:72:14"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3399,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3396,
                      "src": "11959:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3400,
                        "name": "calls",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3372,
                        "src": "11963:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct RBACTimelock.Call calldata[] calldata"
                        }
                      },
                      "id": 3401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11969:6:14",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "11963:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11959:16:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3430,
                  "initializationExpression": {
                    "assignments": [
                      3396
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3396,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "11952:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3430,
                        "src": "11944:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3395,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11944:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3398,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3397,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11956:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11944:13:14"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "11977:3:14",
                      "subExpression": {
                        "id": 3403,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3396,
                        "src": "11979:1:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3405,
                    "nodeType": "ExpressionStatement",
                    "src": "11977:3:14"
                  },
                  "nodeType": "ForStatement",
                  "src": "11939:172:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3432,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3383,
                        "src": "12131:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3431,
                      "name": "_afterCall",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3511,
                      "src": "12120:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 3433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12120:14:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3434,
                  "nodeType": "ExpressionStatement",
                  "src": "12120:14:14"
                }
              ]
            },
            "documentation": {
              "id": 3368,
              "nodeType": "StructuredDocumentation",
              "src": "11216:434:14",
              "text": " @dev Execute an (ready) operation containing a batch of transactions.\n Note that we perform a raw call to each target. Raw calls to targets that\n don't have associated contract code will always succeed regardless of\n payload.\n Emits one {CallExecuted} event per transaction in the batch.\n Requirements:\n - the caller must have the 'executor' or 'admin' role."
            },
            "functionSelector": "6ceef480",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 3379,
                    "name": "EXECUTOR_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2838,
                    "src": "11808:13:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3380,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 3378,
                  "name": "onlyRoleOrAdminRole",
                  "nameLocations": [
                    "11788:19:14"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3092,
                  "src": "11788:19:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "11788:34:14"
              }
            ],
            "name": "executeBatch",
            "nameLocation": "11664:12:14",
            "parameters": {
              "id": 3377,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3372,
                  "mutability": "mutable",
                  "name": "calls",
                  "nameLocation": "11702:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "11686:21:14",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "struct RBACTimelock.Call[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3370,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 3369,
                        "name": "Call",
                        "nameLocations": [
                          "11686:4:14"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2823,
                        "src": "11686:4:14"
                      },
                      "referencedDeclaration": 2823,
                      "src": "11686:4:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Call_$2823_storage_ptr",
                        "typeString": "struct RBACTimelock.Call"
                      }
                    },
                    "id": 3371,
                    "nodeType": "ArrayTypeName",
                    "src": "11686:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Call_$2823_storage_$dyn_storage_ptr",
                      "typeString": "struct RBACTimelock.Call[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3374,
                  "mutability": "mutable",
                  "name": "predecessor",
                  "nameLocation": "11725:11:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "11717:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3373,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11717:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3376,
                  "mutability": "mutable",
                  "name": "salt",
                  "nameLocation": "11754:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "11746:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3375,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11746:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11676:88:14"
            },
            "returnParameters": {
              "id": 3381,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11823:0:14"
            },
            "scope": 3747,
            "stateMutability": "payable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3461,
            "nodeType": "FunctionDefinition",
            "src": "12204:226:14",
            "nodes": [],
            "body": {
              "id": 3460,
              "nodeType": "Block",
              "src": "12273:157:14",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    3444,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3444,
                      "mutability": "mutable",
                      "name": "success",
                      "nameLocation": "12289:7:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 3460,
                      "src": "12284:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3443,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "12284:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 3454,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3451,
                          "name": "call",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3440,
                          "src": "12338:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                            "typeString": "struct RBACTimelock.Call calldata"
                          }
                        },
                        "id": 3452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "12343:4:14",
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2822,
                        "src": "12338:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        ],
                        "expression": {
                          "expression": {
                            "id": 3445,
                            "name": "call",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3440,
                            "src": "12302:4:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                              "typeString": "struct RBACTimelock.Call calldata"
                            }
                          },
                          "id": 3446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "12307:6:14",
                          "memberName": "target",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2818,
                          "src": "12302:11:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "12314:4:14",
                        "memberName": "call",
                        "nodeType": "MemberAccess",
                        "src": "12302:16:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                        }
                      },
                      "id": 3450,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "value"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "expression": {
                            "id": 3448,
                            "name": "call",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3440,
                            "src": "12326:4:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                              "typeString": "struct RBACTimelock.Call calldata"
                            }
                          },
                          "id": 3449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "12331:5:14",
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2820,
                          "src": "12326:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "src": "12302:35:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                        "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                      }
                    },
                    "id": 3453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12302:46:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12283:65:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3456,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3444,
                        "src": "12366:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5242414354696d656c6f636b3a20756e6465726c79696e67207472616e73616374696f6e207265766572746564",
                        "id": 3457,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12375:47:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_10d6901a2e6f72dea57db18052902ef0744a7dd0af852a55606e9c0eeb638c32",
                          "typeString": "literal_string \"RBACTimelock: underlying transaction reverted\""
                        },
                        "value": "RBACTimelock: underlying transaction reverted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_10d6901a2e6f72dea57db18052902ef0744a7dd0af852a55606e9c0eeb638c32",
                          "typeString": "literal_string \"RBACTimelock: underlying transaction reverted\""
                        }
                      ],
                      "id": 3455,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "12358:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12358:65:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3459,
                  "nodeType": "ExpressionStatement",
                  "src": "12358:65:14"
                }
              ]
            },
            "documentation": {
              "id": 3437,
              "nodeType": "StructuredDocumentation",
              "src": "12147:52:14",
              "text": " @dev Execute an operation's call."
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_execute",
            "nameLocation": "12213:8:14",
            "parameters": {
              "id": 3441,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3440,
                  "mutability": "mutable",
                  "name": "call",
                  "nameLocation": "12245:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3461,
                  "src": "12231:18:14",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                    "typeString": "struct RBACTimelock.Call"
                  },
                  "typeName": {
                    "id": 3439,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3438,
                      "name": "Call",
                      "nameLocations": [
                        "12231:4:14"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2823,
                      "src": "12231:4:14"
                    },
                    "referencedDeclaration": 2823,
                    "src": "12231:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Call_$2823_storage_ptr",
                      "typeString": "struct RBACTimelock.Call"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12221:34:14"
            },
            "returnParameters": {
              "id": 3442,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12273:0:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "id": 3491,
            "nodeType": "FunctionDefinition",
            "src": "12513:265:14",
            "nodes": [],
            "body": {
              "id": 3490,
              "nodeType": "Block",
              "src": "12580:198:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 3471,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3464,
                            "src": "12615:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3470,
                          "name": "isOperationReady",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3175,
                          "src": "12598:16:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 3472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12598:20:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5242414354696d656c6f636b3a206f7065726174696f6e206973206e6f74207265616479",
                        "id": 3473,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12620:38:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dfaef629b9a873d517e9bc00181e700b6f289632bb309006624652d9c7b18919",
                          "typeString": "literal_string \"RBACTimelock: operation is not ready\""
                        },
                        "value": "RBACTimelock: operation is not ready"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dfaef629b9a873d517e9bc00181e700b6f289632bb309006624652d9c7b18919",
                          "typeString": "literal_string \"RBACTimelock: operation is not ready\""
                        }
                      ],
                      "id": 3469,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "12590:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12590:69:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3475,
                  "nodeType": "ExpressionStatement",
                  "src": "12590:69:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3477,
                            "name": "predecessor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3466,
                            "src": "12677:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 3480,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12700:1:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 3479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12692:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 3478,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "12692:7:14",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12692:10:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12677:25:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 3484,
                              "name": "predecessor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3466,
                              "src": "12722:11:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3483,
                            "name": "isOperationDone",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3190,
                            "src": "12706:15:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view returns (bool)"
                            }
                          },
                          "id": 3485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12706:28:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12677:57:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5242414354696d656c6f636b3a206d697373696e6720646570656e64656e6379",
                        "id": 3487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12736:34:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_83faec89b531c9ab6b85ff7f528edb39984d7a03ef7efef5bd36dc38c689687b",
                          "typeString": "literal_string \"RBACTimelock: missing dependency\""
                        },
                        "value": "RBACTimelock: missing dependency"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_83faec89b531c9ab6b85ff7f528edb39984d7a03ef7efef5bd36dc38c689687b",
                          "typeString": "literal_string \"RBACTimelock: missing dependency\""
                        }
                      ],
                      "id": 3476,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "12669:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3488,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12669:102:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3489,
                  "nodeType": "ExpressionStatement",
                  "src": "12669:102:14"
                }
              ]
            },
            "documentation": {
              "id": 3462,
              "nodeType": "StructuredDocumentation",
              "src": "12436:72:14",
              "text": " @dev Checks before execution of an operation's calls."
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_beforeCall",
            "nameLocation": "12522:11:14",
            "parameters": {
              "id": 3467,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3464,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "12542:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3491,
                  "src": "12534:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3463,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12534:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3466,
                  "mutability": "mutable",
                  "name": "predecessor",
                  "nameLocation": "12554:11:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3491,
                  "src": "12546:19:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3465,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12546:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12533:33:14"
            },
            "returnParameters": {
              "id": 3468,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12580:0:14"
            },
            "scope": 3747,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 3511,
            "nodeType": "FunctionDefinition",
            "src": "12860:169:14",
            "nodes": [],
            "body": {
              "id": 3510,
              "nodeType": "Block",
              "src": "12900:129:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 3499,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3494,
                            "src": "12935:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 3498,
                          "name": "isOperationReady",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3175,
                          "src": "12918:16:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 3500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12918:20:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5242414354696d656c6f636b3a206f7065726174696f6e206973206e6f74207265616479",
                        "id": 3501,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12940:38:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dfaef629b9a873d517e9bc00181e700b6f289632bb309006624652d9c7b18919",
                          "typeString": "literal_string \"RBACTimelock: operation is not ready\""
                        },
                        "value": "RBACTimelock: operation is not ready"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dfaef629b9a873d517e9bc00181e700b6f289632bb309006624652d9c7b18919",
                          "typeString": "literal_string \"RBACTimelock: operation is not ready\""
                        }
                      ],
                      "id": 3497,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "12910:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3502,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12910:69:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3503,
                  "nodeType": "ExpressionStatement",
                  "src": "12910:69:14"
                },
                {
                  "expression": {
                    "id": 3508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 3504,
                        "name": "_timestamps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2858,
                        "src": "12989:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 3506,
                      "indexExpression": {
                        "id": 3505,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3494,
                        "src": "13001:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12989:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3507,
                      "name": "_DONE_TIMESTAMP",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2854,
                      "src": "13007:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12989:33:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3509,
                  "nodeType": "ExpressionStatement",
                  "src": "12989:33:14"
                }
              ]
            },
            "documentation": {
              "id": 3492,
              "nodeType": "StructuredDocumentation",
              "src": "12784:71:14",
              "text": " @dev Checks after execution of an operation's calls."
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterCall",
            "nameLocation": "12869:10:14",
            "parameters": {
              "id": 3495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3494,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "12888:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3511,
                  "src": "12880:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3493,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12880:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12879:12:14"
            },
            "returnParameters": {
              "id": 3496,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12900:0:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 3530,
            "nodeType": "FunctionDefinition",
            "src": "13253:164:14",
            "nodes": [],
            "body": {
              "id": 3529,
              "nodeType": "Block",
              "src": "13330:87:14",
              "nodes": [],
              "statements": [
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 3521,
                        "name": "_minDelay",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2860,
                        "src": "13360:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3522,
                        "name": "newDelay",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3514,
                        "src": "13371:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3520,
                      "name": "MinDelayChange",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2918,
                      "src": "13345:14:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 3523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13345:35:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3524,
                  "nodeType": "EmitStatement",
                  "src": "13340:40:14"
                },
                {
                  "expression": {
                    "id": 3527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 3525,
                      "name": "_minDelay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2860,
                      "src": "13390:9:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3526,
                      "name": "newDelay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3514,
                      "src": "13402:8:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13390:20:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3528,
                  "nodeType": "ExpressionStatement",
                  "src": "13390:20:14"
                }
              ]
            },
            "documentation": {
              "id": 3512,
              "nodeType": "StructuredDocumentation",
              "src": "13035:213:14",
              "text": " @dev Changes the minimum timelock duration for future operations.\n Emits a {MinDelayChange} event.\n Requirements:\n - the caller must have the 'admin' role."
            },
            "functionSelector": "64d62353",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 3517,
                    "name": "ADMIN_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2828,
                    "src": "13318:10:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3518,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 3516,
                  "name": "onlyRole",
                  "nameLocations": [
                    "13309:8:14"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 38,
                  "src": "13309:8:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "13309:20:14"
              }
            ],
            "name": "updateDelay",
            "nameLocation": "13262:11:14",
            "parameters": {
              "id": 3515,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3514,
                  "mutability": "mutable",
                  "name": "newDelay",
                  "nameLocation": "13282:8:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3530,
                  "src": "13274:16:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3513,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13274:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13273:18:14"
            },
            "returnParameters": {
              "id": 3519,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13330:0:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "external"
          },
          {
            "id": 3550,
            "nodeType": "FunctionDefinition",
            "src": "13491:200:14",
            "nodes": [],
            "body": {
              "id": 3549,
              "nodeType": "Block",
              "src": "13637:54:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "expression": {
                        "id": 3545,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -28,
                        "src": "13654:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RBACTimelock_$3747",
                          "typeString": "contract RBACTimelock"
                        }
                      },
                      "id": 3546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13659:16:14",
                      "memberName": "onERC721Received",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3550,
                      "src": "13654:21:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                        "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                      }
                    },
                    "id": 3547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "13676:8:14",
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "src": "13654:30:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 3544,
                  "id": 3548,
                  "nodeType": "Return",
                  "src": "13647:37:14"
                }
              ]
            },
            "baseFunctions": [
              596
            ],
            "documentation": {
              "id": 3531,
              "nodeType": "StructuredDocumentation",
              "src": "13423:63:14",
              "text": " @dev See {IERC721Receiver-onERC721Received}."
            },
            "functionSelector": "150b7a02",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onERC721Received",
            "nameLocation": "13500:16:14",
            "overrides": {
              "id": 3541,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13611:8:14"
            },
            "parameters": {
              "id": 3540,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3533,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3550,
                  "src": "13526:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3532,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13526:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3535,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3550,
                  "src": "13543:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3534,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13543:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3537,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3550,
                  "src": "13560:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3536,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13560:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3539,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3550,
                  "src": "13577:12:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3538,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13577:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13516:79:14"
            },
            "returnParameters": {
              "id": 3544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3543,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3550,
                  "src": "13629:6:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3542,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "13629:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13628:8:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3572,
            "nodeType": "FunctionDefinition",
            "src": "13767:219:14",
            "nodes": [],
            "body": {
              "id": 3571,
              "nodeType": "Block",
              "src": "13931:55:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "expression": {
                        "id": 3567,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -28,
                        "src": "13948:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RBACTimelock_$3747",
                          "typeString": "contract RBACTimelock"
                        }
                      },
                      "id": 3568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13953:17:14",
                      "memberName": "onERC1155Received",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3572,
                      "src": "13948:22:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                      }
                    },
                    "id": 3569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "13971:8:14",
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "src": "13948:31:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 3566,
                  "id": 3570,
                  "nodeType": "Return",
                  "src": "13941:38:14"
                }
              ]
            },
            "baseFunctions": [
              560
            ],
            "documentation": {
              "id": 3551,
              "nodeType": "StructuredDocumentation",
              "src": "13697:65:14",
              "text": " @dev See {IERC1155Receiver-onERC1155Received}."
            },
            "functionSelector": "f23a6e61",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onERC1155Received",
            "nameLocation": "13776:17:14",
            "overrides": {
              "id": 3563,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13905:8:14"
            },
            "parameters": {
              "id": 3562,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3553,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3572,
                  "src": "13803:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3552,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13803:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3555,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3572,
                  "src": "13820:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3554,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13820:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3557,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3572,
                  "src": "13837:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3556,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13837:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3559,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3572,
                  "src": "13854:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3558,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13854:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3561,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3572,
                  "src": "13871:12:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3560,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13871:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13793:96:14"
            },
            "returnParameters": {
              "id": 3566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3565,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3572,
                  "src": "13923:6:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3564,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "13923:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13922:8:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3596,
            "nodeType": "FunctionDefinition",
            "src": "14067:247:14",
            "nodes": [],
            "body": {
              "id": 3595,
              "nodeType": "Block",
              "src": "14254:60:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "expression": {
                        "id": 3591,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -28,
                        "src": "14271:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_RBACTimelock_$3747",
                          "typeString": "contract RBACTimelock"
                        }
                      },
                      "id": 3592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14276:22:14",
                      "memberName": "onERC1155BatchReceived",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3596,
                      "src": "14271:27:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                        "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                      }
                    },
                    "id": 3593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "14299:8:14",
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "src": "14271:36:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 3590,
                  "id": 3594,
                  "nodeType": "Return",
                  "src": "14264:43:14"
                }
              ]
            },
            "baseFunctions": [
              578
            ],
            "documentation": {
              "id": 3573,
              "nodeType": "StructuredDocumentation",
              "src": "13992:70:14",
              "text": " @dev See {IERC1155Receiver-onERC1155BatchReceived}."
            },
            "functionSelector": "bc197c81",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onERC1155BatchReceived",
            "nameLocation": "14076:22:14",
            "overrides": {
              "id": 3587,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14228:8:14"
            },
            "parameters": {
              "id": 3586,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3575,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3596,
                  "src": "14108:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3574,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14108:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3577,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3596,
                  "src": "14125:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3576,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14125:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3580,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3596,
                  "src": "14142:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3578,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14142:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3579,
                    "nodeType": "ArrayTypeName",
                    "src": "14142:9:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3583,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3596,
                  "src": "14168:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3581,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14168:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3582,
                    "nodeType": "ArrayTypeName",
                    "src": "14168:9:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3585,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3596,
                  "src": "14194:12:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3584,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14194:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14098:114:14"
            },
            "returnParameters": {
              "id": 3590,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3589,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3596,
                  "src": "14246:6:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3588,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "14246:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14245:8:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3616,
            "nodeType": "FunctionDefinition",
            "src": "14879:202:14",
            "nodes": [],
            "body": {
              "id": 3615,
              "nodeType": "Block",
              "src": "14957:124:14",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 3607,
                        "name": "selector",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3599,
                        "src": "15001:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "id": 3605,
                        "name": "_blockedFunctionSelectors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2863,
                        "src": "14971:25:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$2390_storage",
                          "typeString": "struct EnumerableSet.Bytes32Set storage ref"
                        }
                      },
                      "id": 3606,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14997:3:14",
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2408,
                      "src": "14971:29:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$2390_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$2390_storage_ptr_$",
                        "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 3608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14971:39:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3614,
                  "nodeType": "IfStatement",
                  "src": "14967:108:14",
                  "trueBody": {
                    "id": 3613,
                    "nodeType": "Block",
                    "src": "15012:63:14",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3610,
                              "name": "selector",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3599,
                              "src": "15055:8:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 3609,
                            "name": "FunctionSelectorBlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2923,
                            "src": "15031:23:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes4_$returns$__$",
                              "typeString": "function (bytes4)"
                            }
                          },
                          "id": 3611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15031:33:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3612,
                        "nodeType": "EmitStatement",
                        "src": "15026:38:14"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 3597,
              "nodeType": "StructuredDocumentation",
              "src": "14414:460:14",
              "text": " @dev Blocks a function selector from being used, i.e. schedule\n operations with this function selector will revert.\n Note that blocked selectors are only checked when an operation is being\n scheduled, not when it is executed. You may want to check any pending\n operations for whether they contain the blocked selector and cancel them.\n Requirements:\n - the caller must have the 'admin' role."
            },
            "functionSelector": "9f5a23f7",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 3602,
                    "name": "ADMIN_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2828,
                    "src": "14945:10:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3603,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 3601,
                  "name": "onlyRole",
                  "nameLocations": [
                    "14936:8:14"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 38,
                  "src": "14936:8:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "14936:20:14"
              }
            ],
            "name": "blockFunctionSelector",
            "nameLocation": "14888:21:14",
            "parameters": {
              "id": 3600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3599,
                  "mutability": "mutable",
                  "name": "selector",
                  "nameLocation": "14917:8:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3616,
                  "src": "14910:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3598,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "14910:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14909:17:14"
            },
            "returnParameters": {
              "id": 3604,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14957:0:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 3636,
            "nodeType": "FunctionDefinition",
            "src": "15264:209:14",
            "nodes": [],
            "body": {
              "id": 3635,
              "nodeType": "Block",
              "src": "15344:129:14",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 3627,
                        "name": "selector",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3619,
                        "src": "15391:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "id": 3625,
                        "name": "_blockedFunctionSelectors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2863,
                        "src": "15358:25:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$2390_storage",
                          "typeString": "struct EnumerableSet.Bytes32Set storage ref"
                        }
                      },
                      "id": 3626,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15384:6:14",
                      "memberName": "remove",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2426,
                      "src": "15358:32:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$2390_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$2390_storage_ptr_$",
                        "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 3628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15358:42:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3634,
                  "nodeType": "IfStatement",
                  "src": "15354:113:14",
                  "trueBody": {
                    "id": 3633,
                    "nodeType": "Block",
                    "src": "15402:65:14",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3630,
                              "name": "selector",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3619,
                              "src": "15447:8:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 3629,
                            "name": "FunctionSelectorUnblocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2928,
                            "src": "15421:25:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes4_$returns$__$",
                              "typeString": "function (bytes4)"
                            }
                          },
                          "id": 3631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15421:35:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3632,
                        "nodeType": "EmitStatement",
                        "src": "15416:40:14"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 3617,
              "nodeType": "StructuredDocumentation",
              "src": "15087:172:14",
              "text": " @dev Unblocks a previously blocked function selector so it can be used again.\n Requirements:\n - the caller must have the 'admin' role."
            },
            "functionSelector": "3a98b4e4",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 3622,
                    "name": "ADMIN_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2828,
                    "src": "15332:10:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3623,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 3621,
                  "name": "onlyRole",
                  "nameLocations": [
                    "15323:8:14"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 38,
                  "src": "15323:8:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "15323:20:14"
              }
            ],
            "name": "unblockFunctionSelector",
            "nameLocation": "15273:23:14",
            "parameters": {
              "id": 3620,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3619,
                  "mutability": "mutable",
                  "name": "selector",
                  "nameLocation": "15304:8:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3636,
                  "src": "15297:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3618,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "15297:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15296:17:14"
            },
            "returnParameters": {
              "id": 3624,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15344:0:14"
            },
            "scope": 3747,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 3647,
            "nodeType": "FunctionDefinition",
            "src": "15557:133:14",
            "nodes": [],
            "body": {
              "id": 3646,
              "nodeType": "Block",
              "src": "15632:58:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 3642,
                        "name": "_blockedFunctionSelectors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2863,
                        "src": "15649:25:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Set_$2390_storage",
                          "typeString": "struct EnumerableSet.Bytes32Set storage ref"
                        }
                      },
                      "id": 3643,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15675:6:14",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2459,
                      "src": "15649:32:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$2390_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Bytes32Set_$2390_storage_ptr_$",
                        "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 3644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15649:34:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3641,
                  "id": 3645,
                  "nodeType": "Return",
                  "src": "15642:41:14"
                }
              ]
            },
            "documentation": {
              "id": 3637,
              "nodeType": "StructuredDocumentation",
              "src": "15479:73:14",
              "text": " @dev Returns the number of blocked function selectors."
            },
            "functionSelector": "26bb2ec5",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBlockedFunctionSelectorCount",
            "nameLocation": "15566:31:14",
            "parameters": {
              "id": 3638,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15597:2:14"
            },
            "returnParameters": {
              "id": 3641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3640,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3647,
                  "src": "15623:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3639,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15623:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15622:9:14"
            },
            "scope": 3747,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 3664,
            "nodeType": "FunctionDefinition",
            "src": "16448:151:14",
            "nodes": [],
            "body": {
              "id": 3663,
              "nodeType": "Block",
              "src": "16532:67:14",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 3659,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3650,
                            "src": "16585:5:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 3657,
                            "name": "_blockedFunctionSelectors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2863,
                            "src": "16556:25:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Bytes32Set_$2390_storage",
                              "typeString": "struct EnumerableSet.Bytes32Set storage ref"
                            }
                          },
                          "id": 3658,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "16582:2:14",
                          "memberName": "at",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2477,
                          "src": "16556:28:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$2390_storage_ptr_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_struct$_Bytes32Set_$2390_storage_ptr_$",
                            "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 3660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16556:35:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3656,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "16549:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": {
                        "id": 3655,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "16549:6:14",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 3661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16549:43:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 3654,
                  "id": 3662,
                  "nodeType": "Return",
                  "src": "16542:50:14"
                }
              ]
            },
            "documentation": {
              "id": 3648,
              "nodeType": "StructuredDocumentation",
              "src": "15695:748:14",
              "text": " @dev Returns the blocked function selector with the given index. Function\n selectors are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getBlockedFunctionSelectorCount} and\n {getBlockedFunctionSelectorAt} via RPC, make sure you perform all queries\n on the same block. When using these functions within an onchain\n transaction, make sure that the state of this contract hasn't changed in\n between invocations to avoid time-of-check time-of-use bugs.\n See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum\n post] for more information."
            },
            "functionSelector": "03e56155",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBlockedFunctionSelectorAt",
            "nameLocation": "16457:28:14",
            "parameters": {
              "id": 3651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3650,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "16494:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3664,
                  "src": "16486:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16486:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16485:15:14"
            },
            "returnParameters": {
              "id": 3654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3653,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3664,
                  "src": "16524:6:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 3652,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "16524:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16523:8:14"
            },
            "scope": 3747,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 3711,
            "nodeType": "FunctionDefinition",
            "src": "17064:317:14",
            "nodes": [],
            "body": {
              "id": 3710,
              "nodeType": "Block",
              "src": "17189:192:14",
              "nodes": [],
              "statements": [
                {
                  "body": {
                    "id": 3708,
                    "nodeType": "Block",
                    "src": "17242:133:14",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 3687,
                                "name": "calls",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3669,
                                "src": "17265:5:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                }
                              },
                              "id": 3689,
                              "indexExpression": {
                                "id": 3688,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3676,
                                "src": "17271:1:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17265:8:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                "typeString": "struct RBACTimelock.Call calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                "typeString": "struct RBACTimelock.Call calldata"
                              }
                            ],
                            "id": 3686,
                            "name": "_execute",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3461,
                            "src": "17256:8:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Call_$2823_calldata_ptr_$returns$__$",
                              "typeString": "function (struct RBACTimelock.Call calldata)"
                            }
                          },
                          "id": 3690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17256:18:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3691,
                        "nodeType": "ExpressionStatement",
                        "src": "17256:18:14"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3693,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3676,
                              "src": "17314:1:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 3694,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3669,
                                  "src": "17317:5:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                  }
                                },
                                "id": 3696,
                                "indexExpression": {
                                  "id": 3695,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3676,
                                  "src": "17323:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17317:8:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata"
                                }
                              },
                              "id": 3697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "17326:6:14",
                              "memberName": "target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2818,
                              "src": "17317:15:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 3698,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3669,
                                  "src": "17334:5:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                  }
                                },
                                "id": 3700,
                                "indexExpression": {
                                  "id": 3699,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3676,
                                  "src": "17340:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17334:8:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata"
                                }
                              },
                              "id": 3701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "17343:5:14",
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2820,
                              "src": "17334:14:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 3702,
                                  "name": "calls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3669,
                                  "src": "17350:5:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct RBACTimelock.Call calldata[] calldata"
                                  }
                                },
                                "id": 3704,
                                "indexExpression": {
                                  "id": 3703,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3676,
                                  "src": "17356:1:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17350:8:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Call_$2823_calldata_ptr",
                                  "typeString": "struct RBACTimelock.Call calldata"
                                }
                              },
                              "id": 3705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "17359:4:14",
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2822,
                              "src": "17350:13:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3692,
                            "name": "BypasserCallExecuted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2906,
                            "src": "17293:20:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (uint256,address,uint256,bytes memory)"
                            }
                          },
                          "id": 3706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17293:71:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3707,
                        "nodeType": "EmitStatement",
                        "src": "17288:76:14"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3679,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3676,
                      "src": "17219:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3680,
                        "name": "calls",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3669,
                        "src": "17223:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct RBACTimelock.Call calldata[] calldata"
                        }
                      },
                      "id": 3681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "17229:6:14",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "17223:12:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17219:16:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3709,
                  "initializationExpression": {
                    "assignments": [
                      3676
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3676,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "17212:1:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3709,
                        "src": "17204:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3675,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17204:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3678,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3677,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17216:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "17204:13:14"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3684,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "17237:3:14",
                      "subExpression": {
                        "id": 3683,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3676,
                        "src": "17239:1:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3685,
                    "nodeType": "ExpressionStatement",
                    "src": "17237:3:14"
                  },
                  "nodeType": "ForStatement",
                  "src": "17199:176:14"
                }
              ]
            },
            "documentation": {
              "id": 3665,
              "nodeType": "StructuredDocumentation",
              "src": "16605:454:14",
              "text": " @dev Directly execute a batch of transactions, bypassing any other\n checks.\n Note that we perform a raw call to each target. Raw calls to targets that\n don't have associated contract code will always succeed regardless of\n payload.\n Emits one {BypasserCallExecuted} event per transaction in the batch.\n Requirements:\n - the caller must have the 'bypasser' or 'admin' role."
            },
            "functionSelector": "0db866b1",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 3672,
                    "name": "BYPASSER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2848,
                    "src": "17174:13:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3673,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 3671,
                  "name": "onlyRoleOrAdminRole",
                  "nameLocations": [
                    "17154:19:14"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 3092,
                  "src": "17154:19:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "17154:34:14"
              }
            ],
            "name": "bypasserExecuteBatch",
            "nameLocation": "17073:20:14",
            "parameters": {
              "id": 3670,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3669,
                  "mutability": "mutable",
                  "name": "calls",
                  "nameLocation": "17119:5:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3711,
                  "src": "17103:21:14",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Call_$2823_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "struct RBACTimelock.Call[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3667,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 3666,
                        "name": "Call",
                        "nameLocations": [
                          "17103:4:14"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2823,
                        "src": "17103:4:14"
                      },
                      "referencedDeclaration": 2823,
                      "src": "17103:4:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Call_$2823_storage_ptr",
                        "typeString": "struct RBACTimelock.Call"
                      }
                    },
                    "id": 3668,
                    "nodeType": "ArrayTypeName",
                    "src": "17103:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Call_$2823_storage_$dyn_storage_ptr",
                      "typeString": "struct RBACTimelock.Call[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17093:37:14"
            },
            "returnParameters": {
              "id": 3674,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17189:0:14"
            },
            "scope": 3747,
            "stateMutability": "payable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 3746,
            "nodeType": "FunctionDefinition",
            "src": "17548:298:14",
            "nodes": [],
            "body": {
              "id": 3745,
              "nodeType": "Block",
              "src": "17624:222:14",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 3717,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3714,
                        "src": "17638:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      "id": 3718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "17643:6:14",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "17638:11:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "hexValue": "34",
                      "id": 3719,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17652:1:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "src": "17638:15:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3723,
                  "nodeType": "IfStatement",
                  "src": "17634:52:14",
                  "trueBody": {
                    "id": 3722,
                    "nodeType": "Block",
                    "src": "17655:31:14",
                    "statements": [
                      {
                        "functionReturnParameters": 3716,
                        "id": 3721,
                        "nodeType": "Return",
                        "src": "17669:7:14"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3725
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3725,
                      "mutability": "mutable",
                      "name": "selector",
                      "nameLocation": "17702:8:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 3745,
                      "src": "17695:15:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 3724,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "17695:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3732,
                  "initialValue": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "id": 3728,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3714,
                          "src": "17720:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "endExpression": {
                          "hexValue": "34",
                          "id": 3729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17726:1:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        },
                        "id": 3730,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexRangeAccess",
                        "src": "17720:8:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr_slice",
                          "typeString": "bytes calldata slice"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr_slice",
                          "typeString": "bytes calldata slice"
                        }
                      ],
                      "id": 3727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "17713:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": {
                        "id": 3726,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "17713:6:14",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 3731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17713:16:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17695:34:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "17747:54:14",
                        "subExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3738,
                                  "name": "selector",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3725,
                                  "src": "17791:8:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "id": 3737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "17783:7:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 3736,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "17783:7:14",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17783:17:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 3734,
                              "name": "_blockedFunctionSelectors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2863,
                              "src": "17748:25:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Bytes32Set_$2390_storage",
                                "typeString": "struct EnumerableSet.Bytes32Set storage ref"
                              }
                            },
                            "id": 3735,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "17774:8:14",
                            "memberName": "contains",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2444,
                            "src": "17748:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$2390_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$2390_storage_ptr_$",
                              "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)"
                            }
                          },
                          "id": 3740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17748:53:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5242414354696d656c6f636b3a2073656c6563746f7220697320626c6f636b6564",
                        "id": 3742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17803:35:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_569e2da5f59dcfdd1cb8c9ea2f8793bb8227c5971e7afeb6ace73880771cf41b",
                          "typeString": "literal_string \"RBACTimelock: selector is blocked\""
                        },
                        "value": "RBACTimelock: selector is blocked"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_569e2da5f59dcfdd1cb8c9ea2f8793bb8227c5971e7afeb6ace73880771cf41b",
                          "typeString": "literal_string \"RBACTimelock: selector is blocked\""
                        }
                      ],
                      "id": 3733,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "17739:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17739:100:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3744,
                  "nodeType": "ExpressionStatement",
                  "src": "17739:100:14"
                }
              ]
            },
            "documentation": {
              "id": 3712,
              "nodeType": "StructuredDocumentation",
              "src": "17387:155:14",
              "text": " @dev Checks to see if the function being scheduled is blocked.  This\n is used when trying to schedule or batch schedule an operation."
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkFunctionSelectorNotBlocked",
            "nameLocation": "17557:32:14",
            "parameters": {
              "id": 3715,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3714,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "17605:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 3746,
                  "src": "17590:19:14",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3713,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "17590:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17589:21:14"
            },
            "returnParameters": {
              "id": 3716,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17624:0:14"
            },
            "scope": 3747,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 2807,
              "name": "AccessControlEnumerable",
              "nameLocations": [
                "3295:23:14"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 440,
              "src": "3295:23:14"
            },
            "id": 2808,
            "nodeType": "InheritanceSpecifier",
            "src": "3295:23:14"
          },
          {
            "baseName": {
              "id": 2809,
              "name": "IERC721Receiver",
              "nameLocations": [
                "3320:15:14"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 597,
              "src": "3320:15:14"
            },
            "id": 2810,
            "nodeType": "InheritanceSpecifier",
            "src": "3320:15:14"
          },
          {
            "baseName": {
              "id": 2811,
              "name": "IERC1155Receiver",
              "nameLocations": [
                "3337:16:14"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 579,
              "src": "3337:16:14"
            },
            "id": 2812,
            "nodeType": "InheritanceSpecifier",
            "src": "3337:16:14"
          }
        ],
        "canonicalName": "RBACTimelock",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 2806,
          "nodeType": "StructuredDocumentation",
          "src": "382:2887:14",
          "text": " @notice Contract module which acts as a timelocked controller with role-based\n access control. When set as the owner of an `Ownable` smart contract, it\n can enforce a timelock on `onlyOwner` maintenance operations and prevent\n a list of blocked functions from being called. The timelock can be bypassed\n by a bypasser or an admin in emergency situations that require quick action.\n Non-emergency actions are expected to follow the timelock.\n The contract has five roles. Each role can be inhabited by multiple\n (potentially overlapping) addresses.\n 1) Admin: The admin manages membership for all roles (including the admin\n    role itself). The admin automatically inhabits all other roles. The admin\n    can call the bypasserExecuteBatch function to bypass any restrictions like\n    the delay imposed by the timelock and the list of blocked functions. The\n    admin can manage the list of blocked functions. In practice, the admin\n    role is expected to (1) be inhabited by a contract requiring a secure\n    quorum of votes before taking any action and (2) to be used rarely, namely\n    only for emergency actions or configuration of the RBACTimelock.\n 2) Proposer: The proposer can schedule delayed operations that don't use any\n    blocked function selector.\n 3) Executor: The executor can execute previously scheduled operations once\n    their delay has expired. The contract enforces that the calls in an\n    operation are executed with the correct args (target, data, value), but\n    the executor can freely choose the gas limit. Since the executor is\n    typically not particularly trusted, we recommend that (transitive) callees\n    implement standard behavior of simply reverting if insufficient gas is\n    provided. In particular, this means callees should not have non-reverting\n    gas-dependent branches.\n 4) Canceller: The canceller can cancel operations that have been scheduled\n    but not yet executed.\n 5) Bypasser: The bypasser can bypass any restrictions like the delay imposed\n    by the timelock and the list of blocked functions to immediately execute\n    operations, e.g. in case of emergencies.\n Note that this contract doesn't place any restrictions on the gas limit used\n when executing operations. See the above comment on the executor role for\n more details.\n @dev This contract is a modified version of OpenZeppelin's\n contracts/governance/TimelockController.sol contract from v4.7.0, accessed in\n commit 561d1061fc568f04c7a65853538e834a889751e8 of\n github.com/OpenZeppelin/openzeppelin-contracts\n Said contract is under \"Copyright (c) 2016-2023 zOS Global Limited and\n contributors\" and its original MIT license can be found at\n https://github.com/OpenZeppelin/openzeppelin-contracts/blob/561d1061fc568f04c7a65853538e834a889751e8/LICENSE"
        },
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          3747,
          579,
          597,
          440,
          315,
          1202,
          1214,
          538,
          513,
          949
        ],
        "name": "RBACTimelock",
        "nameLocation": "3279:12:14",
        "scope": 3748,
        "usedErrors": []
      }
    ],
    "license": "BUSL-1.1"
  },
  "id": 14
}