{ "abi": [{ "type": "constructor", "inputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "CHALLENGER", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "FINALIZATION_PERIOD_SECONDS", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "L2_BLOCK_TIME", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "PROPOSER", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "SUBMISSION_INTERVAL", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "challenger", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "computeL2Timestamp", "inputs": [{ "name": "_l2BlockNumber", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "deleteL2Outputs", "inputs": [{ "name": "_l2OutputIndex", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "finalizationPeriodSeconds", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "getL2Output", "inputs": [{ "name": "_l2OutputIndex", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "tuple", "internalType": "struct Types.OutputProposal", "components": [{ "name": "outputRoot", "type": "bytes32", "internalType": "bytes32" }, { "name": "timestamp", "type": "uint128", "internalType": "uint128" }, { "name": "l2BlockNumber", "type": "uint128", "internalType": "uint128" }] }], "stateMutability": "view" }, { "type": "function", "name": "getL2OutputAfter", "inputs": [{ "name": "_l2BlockNumber", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "tuple", "internalType": "struct Types.OutputProposal", "components": [{ "name": "outputRoot", "type": "bytes32", "internalType": "bytes32" }, { "name": "timestamp", "type": "uint128", "internalType": "uint128" }, { "name": "l2BlockNumber", "type": "uint128", "internalType": "uint128" }] }], "stateMutability": "view" }, { "type": "function", "name": "getL2OutputIndexAfter", "inputs": [{ "name": "_l2BlockNumber", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "initialize", "inputs": [{ "name": "_submissionInterval", "type": "uint256", "internalType": "uint256" }, { "name": "_l2BlockTime", "type": "uint256", "internalType": "uint256" }, { "name": "_startingBlockNumber", "type": "uint256", "internalType": "uint256" }, { "name": "_startingTimestamp", "type": "uint256", "internalType": "uint256" }, { "name": "_proposer", "type": "address", "internalType": "address" }, { "name": "_challenger", "type": "address", "internalType": "address" }, { "name": "_finalizationPeriodSeconds", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "l2BlockTime", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "latestBlockNumber", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "latestOutputIndex", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "nextBlockNumber", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "nextOutputIndex", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "proposeL2Output", "inputs": [{ "name": "_outputRoot", "type": "bytes32", "internalType": "bytes32" }, { "name": "_l2BlockNumber", "type": "uint256", "internalType": "uint256" }, { "name": "_l1BlockHash", "type": "bytes32", "internalType": "bytes32" }, { "name": "_l1BlockNumber", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "proposer", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "startingBlockNumber", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "startingTimestamp", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "submissionInterval", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "version", "inputs": [], "outputs": [{ "name": "", "type": "string", "internalType": "string" }], "stateMutability": "view" }, { "type": "event", "name": "Initialized", "inputs": [{ "name": "version", "type": "uint8", "indexed": false, "internalType": "uint8" }], "anonymous": false }, { "type": "event", "name": "OutputProposed", "inputs": [{ "name": "outputRoot", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "l2OutputIndex", "type": "uint256", "indexed": true, "internalType": "uint256" }, { "name": "l2BlockNumber", "type": "uint256", "indexed": true, "internalType": "uint256" }, { "name": "l1Timestamp", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "OutputsDeleted", "inputs": [{ "name": "prevNextOutputIndex", "type": "uint256", "indexed": true, "internalType": "uint256" }, { "name": "newNextOutputIndex", "type": "uint256", "indexed": true, "internalType": "uint256" }], "anonymous": false }], "bytecode": { "object": "0x60806040523480156200001157600080fd5b50620000256001806000808080806200002b565b62000328565b600054610100900460ff16158080156200004c5750600054600160ff909116105b806200007c575062000069306200031960201b6200135d1760201c565b1580156200007c575060005460ff166001145b620000e55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000109576000805461ff0019166101001790555b60008811620001815760405162461bcd60e51b815260206004820152603a60248201527f4c324f75747075744f7261636c653a207375626d697373696f6e20696e74657260448201527f76616c206d7573742062652067726561746572207468616e20300000000000006064820152608401620000dc565b60008711620001f95760405162461bcd60e51b815260206004820152603460248201527f4c324f75747075744f7261636c653a204c3220626c6f636b2074696d65206d7560448201527f73742062652067726561746572207468616e20300000000000000000000000006064820152608401620000dc565b428511156200027f5760405162461bcd60e51b8152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201526374696d6560e01b608482015260a401620000dc565b6004889055600587905560018690556002859055600780546001600160a01b038087166001600160a01b0319928316179092556006805492861692909116919091179055600882905580156200030f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6001600160a01b03163b151590565b6115d580620003386000396000f3fe60806040526004361061018a5760003560e01c806389c44cbb116100d6578063ce5db8d61161007f578063dcec334811610059578063dcec33481461049b578063e1a41bcf146104b0578063f4daa291146104c657600080fd5b8063ce5db8d614610445578063cf8e5cf01461045b578063d1de856c1461047b57600080fd5b8063a25ae557116100b0578063a25ae55714610391578063a8e4fb90146103ed578063bffa7f0f1461041a57600080fd5b806389c44cbb1461034857806393991af3146103685780639aaab6481461037e57600080fd5b806369f16eec1161013857806370872aa51161011257806370872aa5146102fc5780637f00642014610312578063887862721461033257600080fd5b806369f16eec146102a75780636abcf563146102bc5780636b4d98dd146102d157600080fd5b8063529933df11610169578063529933df146101ea578063534db0e2146101ff57806354fd4d501461025157600080fd5b80622134cc1461018f5780631c89c97d146101b35780634599c788146101d5575b600080fd5b34801561019b57600080fd5b506005545b6040519081526020015b60405180910390f35b3480156101bf57600080fd5b506101d36101ce3660046113a2565b6104db565b005b3480156101e157600080fd5b506101a06108b6565b3480156101f657600080fd5b506004546101a0565b34801561020b57600080fd5b5060065461022c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101aa565b34801561025d57600080fd5b5061029a6040518060400160405280600581526020017f312e382e3000000000000000000000000000000000000000000000000000000081525081565b6040516101aa9190611405565b3480156102b357600080fd5b506101a0610929565b3480156102c857600080fd5b506003546101a0565b3480156102dd57600080fd5b5060065473ffffffffffffffffffffffffffffffffffffffff1661022c565b34801561030857600080fd5b506101a060015481565b34801561031e57600080fd5b506101a061032d366004611478565b61093b565b34801561033e57600080fd5b506101a060025481565b34801561035457600080fd5b506101d3610363366004611478565b610b4f565b34801561037457600080fd5b506101a060055481565b6101d361038c366004611491565b610de9565b34801561039d57600080fd5b506103b16103ac366004611478565b61124a565b60408051825181526020808401516fffffffffffffffffffffffffffffffff9081169183019190915292820151909216908201526060016101aa565b3480156103f957600080fd5b5060075461022c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561042657600080fd5b5060075473ffffffffffffffffffffffffffffffffffffffff1661022c565b34801561045157600080fd5b506101a060085481565b34801561046757600080fd5b506103b1610476366004611478565b6112de565b34801561048757600080fd5b506101a0610496366004611478565b611316565b3480156104a757600080fd5b506101a0611346565b3480156104bc57600080fd5b506101a060045481565b3480156104d257600080fd5b506008546101a0565b600054610100900460ff16158080156104fb5750600054600160ff909116105b806105155750303b158015610515575060005460ff166001145b6105a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561060457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60008811610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a207375626d697373696f6e20696e74657260448201527f76616c206d7573742062652067726561746572207468616e2030000000000000606482015260840161059d565b60008711610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4c324f75747075744f7261636c653a204c3220626c6f636b2074696d65206d7560448201527f73742062652067726561746572207468616e2030000000000000000000000000606482015260840161059d565b428511156107db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a40161059d565b60048890556005879055600186905560028590556007805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556006805492861692909116919091179055600882905580156108ac57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6003546000901561092057600380546108d1906001906114f2565b815481106108e1576108e1611509565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b600354600090610924906001906114f2565b60006109456108b6565b8211156109fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f70726f706f736564000000000000000000000000000000000000000000000000608482015260a40161059d565b600354610aaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e2070726f706f7360648201527f6564207965740000000000000000000000000000000000000000000000000000608482015260a40161059d565b6003546000905b80821015610b485760006002610acc8385611538565b610ad69190611550565b90508460038281548110610aec57610aec611509565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff161015610b3e57610b37816001611538565b9250610b42565b8091505b50610ab6565b5092915050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206368616c6c656e60448201527f67657220616464726573732063616e2064656c657465206f7574707574730000606482015260840161059d565b6003548110610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f747075747320616674657220746865206c6174657374206f757470757420696e60648201527f6465780000000000000000000000000000000000000000000000000000000000608482015260a40161059d565b60085460038281548110610cc357610cc3611509565b6000918252602090912060016002909202010154610cf3906fffffffffffffffffffffffffffffffff16426114f2565b10610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f74707574732074686174206861766520616c7265616479206265656e2066696e60648201527f616c697a65640000000000000000000000000000000000000000000000000000608482015260a40161059d565b6000610db160035490565b90508160035581817f4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b660405160405180910390a35050565b60075473ffffffffffffffffffffffffffffffffffffffff163314610eb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c79207468652070726f706f736560448201527f7220616464726573732063616e2070726f706f7365206e6577206f757470757460648201527f7300000000000000000000000000000000000000000000000000000000000000608482015260a40161059d565b610ebe611346565b8314610f72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a40161059d565b42610f7c84611316565b10611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324f75747075744f7261636c653a2063616e6e6f742070726f706f7365204c60448201527f32206f757470757420696e207468652066757475726500000000000000000000606482015260840161059d565b83611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a204c32206f75747075742070726f706f7360448201527f616c2063616e6e6f7420626520746865207a65726f2068617368000000000000606482015260840161059d565b81156111525781814014611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a40161059d565b8261115c60035490565b857fa7aaf2512769da4e444e3de247be2564225c2e7a8f74cfe528e46e17d24868e24260405161118e91815260200190565b60405180910390a45050604080516060810182529283526fffffffffffffffffffffffffffffffff4281166020850190815292811691840191825260038054600181018255600091909152935160029094027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810194909455915190518216700100000000000000000000000000000000029116177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c90910155565b60408051606081018252600080825260208201819052918101919091526003828154811061127a5761127a611509565b600091825260209182902060408051606081018252600290930290910180548352600101546fffffffffffffffffffffffffffffffff8082169484019490945270010000000000000000000000000000000090049092169181019190915292915050565b604080516060810182526000808252602082018190529181019190915260036113068361093b565b8154811061127a5761127a611509565b60006005546001548361132991906114f2565b611333919061158b565b6002546113409190611538565b92915050565b60006004546113536108b6565b6109249190611538565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b803573ffffffffffffffffffffffffffffffffffffffff8116811461139d57600080fd5b919050565b600080600080600080600060e0888a0312156113bd57600080fd5b873596506020880135955060408801359450606088013593506113e260808901611379565b92506113f060a08901611379565b915060c0880135905092959891949750929550565b600060208083528351808285015260005b8181101561143257858101830151858201604001528201611416565b81811115611444576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561148a57600080fd5b5035919050565b600080600080608085870312156114a757600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611504576115046114c3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561154b5761154b6114c3565b500190565b600082611586577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115c3576115c36114c3565b50029056fea164736f6c634300080f000a", "sourceMap": "611:13425:133:-:0;;;2792:305;;;;;;;;;-1:-1:-1;2816:274:133;2862:1;;2928;;;;;2816:10;:274::i;:::-;611:13425;;3742:985;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;;3209:33;3236:4;3209:18;;;;;:33;;:::i;:::-;3208:34;:55;;;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:43;;216:2:357;3146:190:43;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:357;;;338:44;399:19;;3146:190:43;;;;;;;;;3346:12;:16;;-1:-1:-1;;3346:16:43;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:43;;;;;3372:65;4088:1:133::1;4066:19;:23;4058:94;;;::::0;-1:-1:-1;;;4058:94:133;;631:2:357;4058:94:133::1;::::0;::::1;613:21:357::0;670:2;650:18;;;643:30;709:34;689:18;;;682:62;780:28;760:18;;;753:56;826:19;;4058:94:133::1;429:422:357::0;4058:94:133::1;4185:1;4170:12;:16;4162:81;;;::::0;-1:-1:-1;;;4162:81:133;;1058:2:357;4162:81:133::1;::::0;::::1;1040:21:357::0;1097:2;1077:18;;;1070:30;1136:34;1116:18;;;1109:62;1207:22;1187:18;;;1180:50;1247:19;;4162:81:133::1;856:416:357::0;4162:81:133::1;4296:15;4274:18;:37;;4253:152;;;::::0;-1:-1:-1;;;4253:152:133;;1479:2:357;4253:152:133::1;::::0;::::1;1461:21:357::0;1518:2;1498:18;;;1491:30;;;1557:34;1537:18;;;1530:62;1628:34;1608:18;;;1601:62;-1:-1:-1;;;1679:19:357;;;1672:35;1724:19;;4253:152:133::1;1277:472:357::0;4253:152:133::1;4416:18;:40:::0;;;4466:11:::1;:26:::0;;;4502:19:::1;:42:::0;;;4554:17:::1;:38:::0;;;4602:8:::1;:20:::0;;-1:-1:-1;;;;;4602:20:133;;::::1;-1:-1:-1::0;;;;;;4602:20:133;;::::1;;::::0;;;4632:10:::1;:24:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;4666:25:::1;:54:::0;;;3457:99:43;;;;3507:5;3491:21;;-1:-1:-1;;3491:21:43;;;3531:14;;-1:-1:-1;1906:36:357;;3531:14:43;;1894:2:357;1879:18;3531:14:43;;;;;;;3457:99;3090:472;3742:985:133;;;;;;;:::o;1175:320:59:-;-1:-1:-1;;;;;1465:19:59;;:23;;;1175:320::o;1754:194:357:-;611:13425:133;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x60806040526004361061018a5760003560e01c806389c44cbb116100d6578063ce5db8d61161007f578063dcec334811610059578063dcec33481461049b578063e1a41bcf146104b0578063f4daa291146104c657600080fd5b8063ce5db8d614610445578063cf8e5cf01461045b578063d1de856c1461047b57600080fd5b8063a25ae557116100b0578063a25ae55714610391578063a8e4fb90146103ed578063bffa7f0f1461041a57600080fd5b806389c44cbb1461034857806393991af3146103685780639aaab6481461037e57600080fd5b806369f16eec1161013857806370872aa51161011257806370872aa5146102fc5780637f00642014610312578063887862721461033257600080fd5b806369f16eec146102a75780636abcf563146102bc5780636b4d98dd146102d157600080fd5b8063529933df11610169578063529933df146101ea578063534db0e2146101ff57806354fd4d501461025157600080fd5b80622134cc1461018f5780631c89c97d146101b35780634599c788146101d5575b600080fd5b34801561019b57600080fd5b506005545b6040519081526020015b60405180910390f35b3480156101bf57600080fd5b506101d36101ce3660046113a2565b6104db565b005b3480156101e157600080fd5b506101a06108b6565b3480156101f657600080fd5b506004546101a0565b34801561020b57600080fd5b5060065461022c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101aa565b34801561025d57600080fd5b5061029a6040518060400160405280600581526020017f312e382e3000000000000000000000000000000000000000000000000000000081525081565b6040516101aa9190611405565b3480156102b357600080fd5b506101a0610929565b3480156102c857600080fd5b506003546101a0565b3480156102dd57600080fd5b5060065473ffffffffffffffffffffffffffffffffffffffff1661022c565b34801561030857600080fd5b506101a060015481565b34801561031e57600080fd5b506101a061032d366004611478565b61093b565b34801561033e57600080fd5b506101a060025481565b34801561035457600080fd5b506101d3610363366004611478565b610b4f565b34801561037457600080fd5b506101a060055481565b6101d361038c366004611491565b610de9565b34801561039d57600080fd5b506103b16103ac366004611478565b61124a565b60408051825181526020808401516fffffffffffffffffffffffffffffffff9081169183019190915292820151909216908201526060016101aa565b3480156103f957600080fd5b5060075461022c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561042657600080fd5b5060075473ffffffffffffffffffffffffffffffffffffffff1661022c565b34801561045157600080fd5b506101a060085481565b34801561046757600080fd5b506103b1610476366004611478565b6112de565b34801561048757600080fd5b506101a0610496366004611478565b611316565b3480156104a757600080fd5b506101a0611346565b3480156104bc57600080fd5b506101a060045481565b3480156104d257600080fd5b506008546101a0565b600054610100900460ff16158080156104fb5750600054600160ff909116105b806105155750303b158015610515575060005460ff166001145b6105a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561060457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60008811610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a207375626d697373696f6e20696e74657260448201527f76616c206d7573742062652067726561746572207468616e2030000000000000606482015260840161059d565b60008711610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4c324f75747075744f7261636c653a204c3220626c6f636b2074696d65206d7560448201527f73742062652067726561746572207468616e2030000000000000000000000000606482015260840161059d565b428511156107db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f4c324f75747075744f7261636c653a207374617274696e67204c322074696d65908201527f7374616d70206d757374206265206c657373207468616e2063757272656e742060648201527f74696d6500000000000000000000000000000000000000000000000000000000608482015260a40161059d565b60048890556005879055600186905560028590556007805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556006805492861692909116919091179055600882905580156108ac57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6003546000901561092057600380546108d1906001906114f2565b815481106108e1576108e1611509565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16919050565b6001545b905090565b600354600090610924906001906114f2565b60006109456108b6565b8211156109fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f7420666f72206120626c6f636b207468617420686173206e6f74206265656e2060648201527f70726f706f736564000000000000000000000000000000000000000000000000608482015260a40161059d565b600354610aaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707560448201527f74206173206e6f206f7574707574732068617665206265656e2070726f706f7360648201527f6564207965740000000000000000000000000000000000000000000000000000608482015260a40161059d565b6003546000905b80821015610b485760006002610acc8385611538565b610ad69190611550565b90508460038281548110610aec57610aec611509565b600091825260209091206002909102016001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff161015610b3e57610b37816001611538565b9250610b42565b8091505b50610ab6565b5092915050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4c324f75747075744f7261636c653a206f6e6c7920746865206368616c6c656e60448201527f67657220616464726573732063616e2064656c657465206f7574707574730000606482015260840161059d565b6003548110610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f747075747320616674657220746865206c6174657374206f757470757420696e60648201527f6465780000000000000000000000000000000000000000000000000000000000608482015260a40161059d565b60085460038281548110610cc357610cc3611509565b6000918252602090912060016002909202010154610cf3906fffffffffffffffffffffffffffffffff16426114f2565b10610da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7560448201527f74707574732074686174206861766520616c7265616479206265656e2066696e60648201527f616c697a65640000000000000000000000000000000000000000000000000000608482015260a40161059d565b6000610db160035490565b90508160035581817f4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b660405160405180910390a35050565b60075473ffffffffffffffffffffffffffffffffffffffff163314610eb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4c324f75747075744f7261636c653a206f6e6c79207468652070726f706f736560448201527f7220616464726573732063616e2070726f706f7365206e6577206f757470757460648201527f7300000000000000000000000000000000000000000000000000000000000000608482015260a40161059d565b610ebe611346565b8314610f72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d757360448201527f7420626520657175616c20746f206e65787420657870656374656420626c6f6360648201527f6b206e756d626572000000000000000000000000000000000000000000000000608482015260a40161059d565b42610f7c84611316565b10611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c324f75747075744f7261636c653a2063616e6e6f742070726f706f7365204c60448201527f32206f757470757420696e207468652066757475726500000000000000000000606482015260840161059d565b83611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4c324f75747075744f7261636c653a204c32206f75747075742070726f706f7360448201527f616c2063616e6e6f7420626520746865207a65726f2068617368000000000000606482015260840161059d565b81156111525781814014611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4c324f75747075744f7261636c653a20626c6f636b206861736820646f65732060448201527f6e6f74206d61746368207468652068617368206174207468652065787065637460648201527f6564206865696768740000000000000000000000000000000000000000000000608482015260a40161059d565b8261115c60035490565b857fa7aaf2512769da4e444e3de247be2564225c2e7a8f74cfe528e46e17d24868e24260405161118e91815260200190565b60405180910390a45050604080516060810182529283526fffffffffffffffffffffffffffffffff4281166020850190815292811691840191825260038054600181018255600091909152935160029094027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b810194909455915190518216700100000000000000000000000000000000029116177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c90910155565b60408051606081018252600080825260208201819052918101919091526003828154811061127a5761127a611509565b600091825260209182902060408051606081018252600290930290910180548352600101546fffffffffffffffffffffffffffffffff8082169484019490945270010000000000000000000000000000000090049092169181019190915292915050565b604080516060810182526000808252602082018190529181019190915260036113068361093b565b8154811061127a5761127a611509565b60006005546001548361132991906114f2565b611333919061158b565b6002546113409190611538565b92915050565b60006004546113536108b6565b6109249190611538565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b803573ffffffffffffffffffffffffffffffffffffffff8116811461139d57600080fd5b919050565b600080600080600080600060e0888a0312156113bd57600080fd5b873596506020880135955060408801359450606088013593506113e260808901611379565b92506113f060a08901611379565b915060c0880135905092959891949750929550565b600060208083528351808285015260005b8181101561143257858101830151858201604001528201611416565b81811115611444576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561148a57600080fd5b5035919050565b600080600080608085870312156114a757600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611504576115046114c3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561154b5761154b6114c3565b500190565b600082611586577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115c3576115c36114c3565b50029056fea164736f6c634300080f000a", "sourceMap": "611:13425:133:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5264:92;;;;;;;;;;-1:-1:-1;5338:11:133;;5264:92;;;160:25:357;;;148:2;133:18;5264:92:133;;;;;;;;3742:985;;;;;;;;;;-1:-1:-1;3742:985:133;;;;;:::i;:::-;;:::i;:::-;;13212:174;;;;;;;;;;;;;:::i;4953:105::-;;;;;;;;;;-1:-1:-1;5033:18:133;;4953:105;;1426:25;;;;;;;;;;-1:-1:-1;1426:25:133;;;;;;;;;;;1182:42:357;1170:55;;;1152:74;;1140:2;1125:18;1426:25:133;1006:226:357;2598:40:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12608:105::-;;;;;;;;;;;;;:::i;12849:97::-;;;;;;;;;;-1:-1:-1;12923:9:133;:16;12849:97;;5580:88;;;;;;;;;;-1:-1:-1;5651:10:133;;;;5580:88;;743:34;;;;;;;;;;;;;;;;10969:896;;;;;;;;;;-1:-1:-1;10969:896:133;;;;;:::i;:::-;;:::i;863:32::-;;;;;;;;;;;;;;;;6689:975;;;;;;;;;;-1:-1:-1;6689:975:133;;;;;:::i;:::-;;:::i;1285:26::-;;;;;;;;;;;;;;;;8258:1981;;;;;;:::i;:::-;;:::i;10443:146::-;;;;;;;;;;-1:-1:-1;10443:146:133;;;;;:::i;:::-;;:::i;:::-;;;;2705:13:357;;2687:32;;2766:4;2754:17;;;2748:24;2791:34;2863:21;;;2841:20;;;2834:51;;;;2933:17;;;2927:24;2923:33;;;2901:20;;;2894:63;2675:2;2660:18;10443:146:133;2473:490:357;1564:23:133;;;;;;;;;;-1:-1:-1;1564:23:133;;;;;;;;5886:84;;;;;;;;;;-1:-1:-1;5955:8:133;;;;5886:84;;1728:40;;;;;;;;;;;;;;;;12228:174;;;;;;;;;;-1:-1:-1;12228:174:133;;;;;:::i;:::-;;:::i;13854:180::-;;;;;;;;;;-1:-1:-1;13854:180:133;;;;;:::i;:::-;;:::i;13524:121::-;;;;;;;;;;;;;:::i;1114:33::-;;;;;;;;;;;;;;;;6221:120;;;;;;;;;;-1:-1:-1;6309:25:133;;6221:120;;3742:985;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:43;1465:19:59;:23;;;3208:55:43;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;;;;3170:2:357;3146:190:43;;;3152:21:357;3209:2;3189:18;;;3182:30;3248:34;3228:18;;;3221:62;3319:16;3299:18;;;3292:44;3353:19;;3146:190:43;;;;;;;;;3346:12;:16;;;;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;;;;;;;3372:65;4088:1:133::1;4066:19;:23;4058:94;;;::::0;::::1;::::0;;3585:2:357;4058:94:133::1;::::0;::::1;3567:21:357::0;3624:2;3604:18;;;3597:30;3663:34;3643:18;;;3636:62;3734:28;3714:18;;;3707:56;3780:19;;4058:94:133::1;3383:422:357::0;4058:94:133::1;4185:1;4170:12;:16;4162:81;;;::::0;::::1;::::0;;4012:2:357;4162:81:133::1;::::0;::::1;3994:21:357::0;4051:2;4031:18;;;4024:30;4090:34;4070:18;;;4063:62;4161:22;4141:18;;;4134:50;4201:19;;4162:81:133::1;3810:416:357::0;4162:81:133::1;4296:15;4274:18;:37;;4253:152;;;::::0;::::1;::::0;;4433:2:357;4253:152:133::1;::::0;::::1;4415:21:357::0;4472:2;4452:18;;;4445:30;;;4511:34;4491:18;;;4484:62;4582:34;4562:18;;;4555:62;4654:6;4633:19;;;4626:35;4678:19;;4253:152:133::1;4231:472:357::0;4253:152:133::1;4416:18;:40:::0;;;4466:11:::1;:26:::0;;;4502:19:::1;:42:::0;;;4554:17:::1;:38:::0;;;4602:8:::1;:20:::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;;4632:10:::1;:24:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;4666:25:::1;:54:::0;;;3457:99:43;;;;3507:5;3491:21;;;;;;3531:14;;-1:-1:-1;4860:36:357;;3531:14:43;;4848:2:357;4833:18;3531:14:43;;;;;;;3457:99;3090:472;3742:985:133;;;;;;;:::o;13212:174::-;13288:9;:16;13262:7;;13288:21;:91;;13334:9;13344:16;;:20;;13363:1;;13344:20;:::i;:::-;13334:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:45;;;;;;;;;13212:174;-1:-1:-1;13212:174:133:o;13288:91::-;13312:19;;13288:91;13281:98;;13212:174;:::o;12608:105::-;12686:9;:16;12660:7;;12686:20;;12705:1;;12686:20;:::i;10969:896::-;11045:7;11184:19;:17;:19::i;:::-;11166:14;:37;;11145:156;;;;;;;5617:2:357;11145:156:133;;;5599:21:357;5656:2;5636:18;;;5629:30;5695:34;5675:18;;;5668:62;5766:34;5746:18;;;5739:62;5838:10;5817:19;;;5810:39;5866:19;;11145:156:133;5415:476:357;11145:156:133;11379:9;:16;11371:103;;;;;;;6098:2:357;11371:103:133;;;6080:21:357;6137:2;6117:18;;;6110:30;6176:34;6156:18;;;6149:62;6247:34;6227:18;;;6220:62;6319:8;6298:19;;;6291:37;6345:19;;11371:103:133;5896:474:357;11371:103:133;11589:9;:16;11552:10;;11615:224;11627:2;11622;:7;11615:224;;;11645:11;11671:1;11660:7;11665:2;11660;:7;:::i;:::-;11659:13;;;;:::i;:::-;11645:27;;11721:14;11690:9;11700:3;11690:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:28;;;;;;;;:45;11686:143;;;11760:7;:3;11766:1;11760:7;:::i;:::-;11755:12;;11686:143;;;11811:3;11806:8;;11686:143;11631:208;11615:224;;;-1:-1:-1;11856:2:133;10969:896;-1:-1:-1;;10969:896:133:o;6689:975::-;6779:10;;;;6765;:24;6757:99;;;;;;;6989:2:357;6757:99:133;;;6971:21:357;7028:2;7008:18;;;7001:30;7067:34;7047:18;;;7040:62;7138:32;7118:18;;;7111:60;7188:19;;6757:99:133;6787:426:357;6757:99:133;6974:9;:16;6957:33;;6936:135;;;;;;;7420:2:357;6936:135:133;;;7402:21:357;7459:2;7439:18;;;7432:30;7498:34;7478:18;;;7471:62;7569:34;7549:18;;;7542:62;7641:5;7620:19;;;7613:34;7664:19;;6936:135:133;7218:471:357;6936:135:133;7238:25;;7200:9;7210:14;7200:25;;;;;;;;:::i;:::-;;;;;;;;;:35;:25;;;;;:35;;7182:53;;7200:35;;7182:15;:53;:::i;:::-;:81;7161:198;;;;;;;7896:2:357;7161:198:133;;;7878:21:357;7935:2;7915:18;;;7908:30;7974:34;7954:18;;;7947:62;8045:34;8025:18;;;8018:62;8117:8;8096:19;;;8089:37;8143:19;;7161:198:133;7694:474:357;7161:198:133;7370:29;7402:17;12923:9;:16;;12849:97;7402:17;7370:49;;7564:14;7548;7541:38;7642:14;7619:21;7604:53;;;;;;;;;;6747:917;6689:975;:::o;8258:1981::-;8481:8;;;;8467:10;:22;8459:100;;;;;;;8375:2:357;8459:100:133;;;8357:21:357;8414:2;8394:18;;;8387:30;8453:34;8433:18;;;8426:62;8524:34;8504:18;;;8497:62;8596:3;8575:19;;;8568:32;8617:19;;8459:100:133;8173:469:357;8459:100:133;8609:17;:15;:17::i;:::-;8591:14;:35;8570:154;;;;;;;8849:2:357;8570:154:133;;;8831:21:357;8888:2;8868:18;;;8861:30;8927:34;8907:18;;;8900:62;8998:34;8978:18;;;8971:62;9070:10;9049:19;;;9042:39;9098:19;;8570:154:133;8647:476:357;8570:154:133;8793:15;8756:34;8775:14;8756:18;:34::i;:::-;:52;8735:153;;;;;;;9330:2:357;8735:153:133;;;9312:21:357;9369:2;9349:18;;;9342:30;9408:34;9388:18;;;9381:62;9479:24;9459:18;;;9452:52;9521:19;;8735:153:133;9128:418:357;8735:153:133;8907:11;8899:96;;;;;;;9753:2:357;8899:96:133;;;9735:21:357;9792:2;9772:18;;;9765:30;9831:34;9811:18;;;9804:62;9902:28;9882:18;;;9875:56;9948:19;;8899:96:133;9551:422:357;8899:96:133;9010:26;;9006:897;;9773:12;9754:14;9744:25;:41;9719:173;;;;;;;10180:2:357;9719:173:133;;;10162:21:357;10219:2;10199:18;;;10192:30;10258:34;10238:18;;;10231:62;10329:34;10309:18;;;10302:62;10401:11;10380:19;;;10373:40;10430:19;;9719:173:133;9978:477:357;9719:173:133;9965:14;9946:17;12923:9;:16;;12849:97;9946:17;9933:11;9918:79;9981:15;9918:79;;;;160:25:357;;148:2;133:18;;14:177;9918:79:133;;;;;;;;-1:-1:-1;;10036:186:133;;;;;;;;;;;;10135:15;10036:186;;;;;;;;;;;;;;;;;10008:9;:224;;;;;;;-1:-1:-1;10008:224:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8258:1981::o;10443:146::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;10557:9:133;10567:14;10557:25;;;;;;;;:::i;:::-;;;;;;;;;;10550:32;;;;;;;;10557:25;;;;;;;10550:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10443:146;-1:-1:-1;;10443:146:133:o;12228:174::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;12347:9:133;12357:37;12379:14;12357:21;:37::i;:::-;12347:48;;;;;;;;:::i;13854:180::-;13927:7;14015:11;;13992:19;;13975:14;:36;;;;:::i;:::-;13974:52;;;;:::i;:::-;13953:17;;:74;;;;:::i;:::-;13946:81;13854:180;-1:-1:-1;;13854:180:133:o;13524:121::-;13572:7;13620:18;;13598:19;:17;:19::i;:::-;:40;;;;:::i;1175:320:59:-;1465:19;;;:23;;;1175:320::o;196:196:357:-;264:20;;324:42;313:54;;303:65;;293:93;;382:1;379;372:12;293:93;196:196;;;:::o;397:604::-;510:6;518;526;534;542;550;558;611:3;599:9;590:7;586:23;582:33;579:53;;;628:1;625;618:12;579:53;664:9;651:23;641:33;;721:2;710:9;706:18;693:32;683:42;;772:2;761:9;757:18;744:32;734:42;;823:2;812:9;808:18;795:32;785:42;;846:39;880:3;869:9;865:19;846:39;:::i;:::-;836:49;;904:39;938:3;927:9;923:19;904:39;:::i;:::-;894:49;;990:3;979:9;975:19;962:33;952:43;;397:604;;;;;;;;;;:::o;1237:656::-;1349:4;1378:2;1407;1396:9;1389:21;1439:6;1433:13;1482:6;1477:2;1466:9;1462:18;1455:34;1507:1;1517:140;1531:6;1528:1;1525:13;1517:140;;;1626:14;;;1622:23;;1616:30;1592:17;;;1611:2;1588:26;1581:66;1546:10;;1517:140;;;1675:6;1672:1;1669:13;1666:91;;;1745:1;1740:2;1731:6;1720:9;1716:22;1712:31;1705:42;1666:91;-1:-1:-1;1809:2:357;1797:15;1814:66;1793:88;1778:104;;;;1884:2;1774:113;;1237:656;-1:-1:-1;;;1237:656:357:o;1898:180::-;1957:6;2010:2;1998:9;1989:7;1985:23;1981:32;1978:52;;;2026:1;2023;2016:12;1978:52;-1:-1:-1;2049:23:357;;1898:180;-1:-1:-1;1898:180:357:o;2083:385::-;2169:6;2177;2185;2193;2246:3;2234:9;2225:7;2221:23;2217:33;2214:53;;;2263:1;2260;2253:12;2214:53;-1:-1:-1;;2286:23:357;;;2356:2;2341:18;;2328:32;;-1:-1:-1;2407:2:357;2392:18;;2379:32;;2458:2;2443:18;2430:32;;-1:-1:-1;2083:385:357;-1:-1:-1;2083:385:357:o;4907:184::-;4959:77;4956:1;4949:88;5056:4;5053:1;5046:15;5080:4;5077:1;5070:15;5096:125;5136:4;5164:1;5161;5158:8;5155:34;;;5169:18;;:::i;:::-;-1:-1:-1;5206:9:357;;5096:125::o;5226:184::-;5278:77;5275:1;5268:88;5375:4;5372:1;5365:15;5399:4;5396:1;5389:15;6375:128;6415:3;6446:1;6442:6;6439:1;6436:13;6433:39;;;6452:18;;:::i;:::-;-1:-1:-1;6488:9:357;;6375:128::o;6508:274::-;6548:1;6574;6564:189;;6609:77;6606:1;6599:88;6710:4;6707:1;6700:15;6738:4;6735:1;6728:15;6564:189;-1:-1:-1;6767:9:357;;6508:274::o;10460:228::-;10500:7;10626:1;10558:66;10554:74;10551:1;10548:81;10543:1;10536:9;10529:17;10525:105;10522:131;;;10633:18;;:::i;:::-;-1:-1:-1;10673:9:357;;10460:228::o", "linkReferences": {} }, "methodIdentifiers": { "CHALLENGER()": "6b4d98dd", "FINALIZATION_PERIOD_SECONDS()": "f4daa291", "L2_BLOCK_TIME()": "002134cc", "PROPOSER()": "bffa7f0f", "SUBMISSION_INTERVAL()": "529933df", "challenger()": "534db0e2", "computeL2Timestamp(uint256)": "d1de856c", "deleteL2Outputs(uint256)": "89c44cbb", "finalizationPeriodSeconds()": "ce5db8d6", "getL2Output(uint256)": "a25ae557", "getL2OutputAfter(uint256)": "cf8e5cf0", "getL2OutputIndexAfter(uint256)": "7f006420", "initialize(uint256,uint256,uint256,uint256,address,address,uint256)": "1c89c97d", "l2BlockTime()": "93991af3", "latestBlockNumber()": "4599c788", "latestOutputIndex()": "69f16eec", "nextBlockNumber()": "dcec3348", "nextOutputIndex()": "6abcf563", "proposeL2Output(bytes32,uint256,bytes32,uint256)": "9aaab648", "proposer()": "a8e4fb90", "startingBlockNumber()": "70872aa5", "startingTimestamp()": "88786272", "submissionInterval()": "e1a41bcf", "version()": "54fd4d50" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2OutputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"l2BlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1Timestamp\",\"type\":\"uint256\"}],\"name\":\"OutputProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"prevNextOutputIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newNextOutputIndex\",\"type\":\"uint256\"}],\"name\":\"OutputsDeleted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHALLENGER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FINALIZATION_PERIOD_SECONDS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_BLOCK_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROPOSER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SUBMISSION_INTERVAL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"computeL2Timestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"}],\"name\":\"deleteL2Outputs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizationPeriodSeconds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"}],\"name\":\"getL2Output\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"timestamp\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.OutputProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"getL2OutputAfter\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"timestamp\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.OutputProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"getL2OutputIndexAfter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_submissionInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_l2BlockTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startingBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startingTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_finalizationPeriodSeconds\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2BlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestOutputIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextOutputIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_l1BlockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_l1BlockNumber\",\"type\":\"uint256\"}],\"name\":\"proposeL2Output\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startingBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startingTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submissionInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:proxied\":\"@title L2OutputOracle\",\"events\":{\"OutputProposed(bytes32,uint256,uint256,uint256)\":{\"params\":{\"l1Timestamp\":\"The L1 timestamp when proposed.\",\"l2BlockNumber\":\"The L2 block number of the output root.\",\"l2OutputIndex\":\"The index of the output in the l2Outputs array.\",\"outputRoot\":\"The output root.\"}},\"OutputsDeleted(uint256,uint256)\":{\"params\":{\"newNextOutputIndex\":\"Next L2 output index after the deletion.\",\"prevNextOutputIndex\":\"Next L2 output index before the deletion.\"}}},\"kind\":\"dev\",\"methods\":{\"CHALLENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Address of the challenger.\"}},\"FINALIZATION_PERIOD_SECONDS()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Finalization period in seconds.\"}},\"L2_BLOCK_TIME()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"L2 block time.\"}},\"PROPOSER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Address of the proposer.\"}},\"SUBMISSION_INTERVAL()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Submission interval.\"}},\"computeL2Timestamp(uint256)\":{\"params\":{\"_l2BlockNumber\":\"The L2 block number of the target block.\"},\"returns\":{\"_0\":\"L2 timestamp of the given block.\"}},\"deleteL2Outputs(uint256)\":{\"params\":{\"_l2OutputIndex\":\"Index of the first L2 output to be deleted.                       All outputs after this output will also be deleted.\"}},\"getL2Output(uint256)\":{\"params\":{\"_l2OutputIndex\":\"Index of the output to return.\"},\"returns\":{\"_0\":\"The output at the given index.\"}},\"getL2OutputAfter(uint256)\":{\"params\":{\"_l2BlockNumber\":\"L2 block number to find a checkpoint for.\"},\"returns\":{\"_0\":\"First checkpoint that commits to the given L2 block number.\"}},\"getL2OutputIndexAfter(uint256)\":{\"params\":{\"_l2BlockNumber\":\"L2 block number to find a checkpoint for.\"},\"returns\":{\"_0\":\"Index of the first checkpoint that commits to the given L2 block number.\"}},\"initialize(uint256,uint256,uint256,uint256,address,address,uint256)\":{\"params\":{\"_challenger\":\"The address of the challenger.\",\"_finalizationPeriodSeconds\":\"The minimum time (in seconds) that must elapse before a withdrawal                                   can be finalized.\",\"_l2BlockTime\":\"The time per L2 block, in seconds.\",\"_proposer\":\"The address of the proposer.\",\"_startingBlockNumber\":\"The number of the first L2 block.\",\"_startingTimestamp\":\"The timestamp of the first L2 block.\",\"_submissionInterval\":\"Interval in blocks at which checkpoints must be submitted.\"}},\"latestBlockNumber()\":{\"returns\":{\"_0\":\"Latest submitted L2 block number.\"}},\"latestOutputIndex()\":{\"returns\":{\"_0\":\"The number of outputs that have been proposed.\"}},\"nextBlockNumber()\":{\"returns\":{\"_0\":\"Next L2 block number.\"}},\"nextOutputIndex()\":{\"returns\":{\"_0\":\"The index of the next output to be proposed.\"}},\"proposeL2Output(bytes32,uint256,bytes32,uint256)\":{\"params\":{\"_l1BlockHash\":\"A block hash which must be included in the current chain.\",\"_l1BlockNumber\":\"The block number with the specified block hash.\",\"_l2BlockNumber\":\"The L2 block number that resulted in _outputRoot.\",\"_outputRoot\":\"The L2 output of the checkpoint block.\"}}},\"stateVariables\":{\"challenger\":{\"custom:network-specific\":\"\"},\"finalizationPeriodSeconds\":{\"custom:network-specific\":\"\"},\"l2BlockTime\":{\"custom:network-specific\":\"\"},\"proposer\":{\"custom:network-specific\":\"\"},\"submissionInterval\":{\"custom:network-specific\":\"\"},\"version\":{\"custom:semver\":\"1.8.0\"}},\"version\":1},\"userdoc\":{\"events\":{\"OutputProposed(bytes32,uint256,uint256,uint256)\":{\"notice\":\"Emitted when an output is proposed.\"},\"OutputsDeleted(uint256,uint256)\":{\"notice\":\"Emitted when outputs are deleted.\"}},\"kind\":\"user\",\"methods\":{\"CHALLENGER()\":{\"notice\":\"Getter for the challenger address.         Public getter is legacy and will be removed in the future. Use `challenger` instead.\"},\"FINALIZATION_PERIOD_SECONDS()\":{\"notice\":\"Getter for the finalizationPeriodSeconds.         Public getter is legacy and will be removed in the future. Use `finalizationPeriodSeconds` instead.\"},\"L2_BLOCK_TIME()\":{\"notice\":\"Getter for the l2BlockTime.         Public getter is legacy and will be removed in the future. Use `l2BlockTime` instead.\"},\"PROPOSER()\":{\"notice\":\"Getter for the proposer address.         Public getter is legacy and will be removed in the future. Use `proposer` instead.\"},\"SUBMISSION_INTERVAL()\":{\"notice\":\"Getter for the submissionInterval.         Public getter is legacy and will be removed in the future. Use `submissionInterval` instead.\"},\"challenger()\":{\"notice\":\"The address of the challenger. Can be updated via upgrade.\"},\"computeL2Timestamp(uint256)\":{\"notice\":\"Returns the L2 timestamp corresponding to a given L2 block number.\"},\"constructor\":{\"notice\":\"Constructs the L2OutputOracle contract. Initializes variables to the same values as         in the getting-started config.\"},\"deleteL2Outputs(uint256)\":{\"notice\":\"Deletes all output proposals after and including the proposal that corresponds to         the given output index. Only the challenger address can delete outputs.\"},\"finalizationPeriodSeconds()\":{\"notice\":\"The minimum time (in seconds) that must elapse before a withdrawal can be finalized.\"},\"getL2Output(uint256)\":{\"notice\":\"Returns an output by index. Needed to return a struct instead of a tuple.\"},\"getL2OutputAfter(uint256)\":{\"notice\":\"Returns the L2 output proposal that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block.\"},\"getL2OutputIndexAfter(uint256)\":{\"notice\":\"Returns the index of the L2 output that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block.\"},\"initialize(uint256,uint256,uint256,uint256,address,address,uint256)\":{\"notice\":\"Initializer.\"},\"l2BlockTime()\":{\"notice\":\"The time between L2 blocks in seconds. Once set, this value MUST NOT be modified.\"},\"latestBlockNumber()\":{\"notice\":\"Returns the block number of the latest submitted L2 output proposal.         If no proposals been submitted yet then this function will return the starting         block number.\"},\"latestOutputIndex()\":{\"notice\":\"Returns the number of outputs that have been proposed.         Will revert if no outputs have been proposed yet.\"},\"nextBlockNumber()\":{\"notice\":\"Computes the block number of the next L2 block that needs to be checkpointed.\"},\"nextOutputIndex()\":{\"notice\":\"Returns the index of the next output to be proposed.\"},\"proposeL2Output(bytes32,uint256,bytes32,uint256)\":{\"notice\":\"Accepts an outputRoot and the timestamp of the corresponding L2 block.         The timestamp must be equal to the current value returned by `nextTimestamp()` in         order to be accepted. This function may only be called by the Proposer.\"},\"proposer()\":{\"notice\":\"The address of the proposer. Can be updated via upgrade.\"},\"startingBlockNumber()\":{\"notice\":\"The number of the first L2 block recorded in this contract.\"},\"startingTimestamp()\":{\"notice\":\"The timestamp of the first L2 block recorded in this contract.\"},\"submissionInterval()\":{\"notice\":\"The interval in L2 blocks at which checkpoints must be submitted.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"The L2OutputOracle contains an array of L2 state outputs, where each output is a         commitment to the state of the L2 chain. Other contracts like the OptimismPortal use         these outputs to verify information about the state of L2.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L1/L2OutputOracle.sol\":\"L2OutputOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689\",\"dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]},\"src/L1/L2OutputOracle.sol\":{\"keccak256\":\"0x342c5084f3c640c90530122bd78372c011d6162e698dd8c8daec9496fef01d42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8700a3d486bd62cbb861ff80175b8040336940515791073af6a036db7c2df303\",\"dweb:/ipfs/QmSGKTH84rVHWgMg4d6GQZCmCJ16KuUuTsMwPMDdJxCsww\"]},\"src/L1/ResourceMetering.sol\":{\"keccak256\":\"0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409\",\"dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM\"]},\"src/libraries/Arithmetic.sol\":{\"keccak256\":\"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72\",\"dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq\"]},\"src/libraries/Burn.sol\":{\"keccak256\":\"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f\",\"dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b\",\"dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e\",\"dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.15+commit.e14f2714" }, "language": "Solidity", "output": { "abi": [{ "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [{ "internalType": "uint8", "name": "version", "type": "uint8", "indexed": false }], "type": "event", "name": "Initialized", "anonymous": false }, { "inputs": [{ "internalType": "bytes32", "name": "outputRoot", "type": "bytes32", "indexed": true }, { "internalType": "uint256", "name": "l2OutputIndex", "type": "uint256", "indexed": true }, { "internalType": "uint256", "name": "l2BlockNumber", "type": "uint256", "indexed": true }, { "internalType": "uint256", "name": "l1Timestamp", "type": "uint256", "indexed": false }], "type": "event", "name": "OutputProposed", "anonymous": false }, { "inputs": [{ "internalType": "uint256", "name": "prevNextOutputIndex", "type": "uint256", "indexed": true }, { "internalType": "uint256", "name": "newNextOutputIndex", "type": "uint256", "indexed": true }], "type": "event", "name": "OutputsDeleted", "anonymous": false }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "CHALLENGER", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "FINALIZATION_PERIOD_SECONDS", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "L2_BLOCK_TIME", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "PROPOSER", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "SUBMISSION_INTERVAL", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "challenger", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "uint256", "name": "_l2BlockNumber", "type": "uint256" }], "stateMutability": "view", "type": "function", "name": "computeL2Timestamp", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "uint256", "name": "_l2OutputIndex", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "deleteL2Outputs" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "finalizationPeriodSeconds", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "uint256", "name": "_l2OutputIndex", "type": "uint256" }], "stateMutability": "view", "type": "function", "name": "getL2Output", "outputs": [{ "internalType": "struct Types.OutputProposal", "name": "", "type": "tuple", "components": [{ "internalType": "bytes32", "name": "outputRoot", "type": "bytes32" }, { "internalType": "uint128", "name": "timestamp", "type": "uint128" }, { "internalType": "uint128", "name": "l2BlockNumber", "type": "uint128" }] }] }, { "inputs": [{ "internalType": "uint256", "name": "_l2BlockNumber", "type": "uint256" }], "stateMutability": "view", "type": "function", "name": "getL2OutputAfter", "outputs": [{ "internalType": "struct Types.OutputProposal", "name": "", "type": "tuple", "components": [{ "internalType": "bytes32", "name": "outputRoot", "type": "bytes32" }, { "internalType": "uint128", "name": "timestamp", "type": "uint128" }, { "internalType": "uint128", "name": "l2BlockNumber", "type": "uint128" }] }] }, { "inputs": [{ "internalType": "uint256", "name": "_l2BlockNumber", "type": "uint256" }], "stateMutability": "view", "type": "function", "name": "getL2OutputIndexAfter", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "uint256", "name": "_submissionInterval", "type": "uint256" }, { "internalType": "uint256", "name": "_l2BlockTime", "type": "uint256" }, { "internalType": "uint256", "name": "_startingBlockNumber", "type": "uint256" }, { "internalType": "uint256", "name": "_startingTimestamp", "type": "uint256" }, { "internalType": "address", "name": "_proposer", "type": "address" }, { "internalType": "address", "name": "_challenger", "type": "address" }, { "internalType": "uint256", "name": "_finalizationPeriodSeconds", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "initialize" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "l2BlockTime", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "latestBlockNumber", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "latestOutputIndex", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "nextBlockNumber", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "nextOutputIndex", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "bytes32", "name": "_outputRoot", "type": "bytes32" }, { "internalType": "uint256", "name": "_l2BlockNumber", "type": "uint256" }, { "internalType": "bytes32", "name": "_l1BlockHash", "type": "bytes32" }, { "internalType": "uint256", "name": "_l1BlockNumber", "type": "uint256" }], "stateMutability": "payable", "type": "function", "name": "proposeL2Output" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "proposer", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "startingBlockNumber", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "startingTimestamp", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "submissionInterval", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "version", "outputs": [{ "internalType": "string", "name": "", "type": "string" }] }], "devdoc": { "kind": "dev", "methods": { "CHALLENGER()": { "custom:legacy": "", "returns": { "_0": "Address of the challenger." } }, "FINALIZATION_PERIOD_SECONDS()": { "custom:legacy": "", "returns": { "_0": "Finalization period in seconds." } }, "L2_BLOCK_TIME()": { "custom:legacy": "", "returns": { "_0": "L2 block time." } }, "PROPOSER()": { "custom:legacy": "", "returns": { "_0": "Address of the proposer." } }, "SUBMISSION_INTERVAL()": { "custom:legacy": "", "returns": { "_0": "Submission interval." } }, "computeL2Timestamp(uint256)": { "params": { "_l2BlockNumber": "The L2 block number of the target block." }, "returns": { "_0": "L2 timestamp of the given block." } }, "deleteL2Outputs(uint256)": { "params": { "_l2OutputIndex": "Index of the first L2 output to be deleted.                       All outputs after this output will also be deleted." } }, "getL2Output(uint256)": { "params": { "_l2OutputIndex": "Index of the output to return." }, "returns": { "_0": "The output at the given index." } }, "getL2OutputAfter(uint256)": { "params": { "_l2BlockNumber": "L2 block number to find a checkpoint for." }, "returns": { "_0": "First checkpoint that commits to the given L2 block number." } }, "getL2OutputIndexAfter(uint256)": { "params": { "_l2BlockNumber": "L2 block number to find a checkpoint for." }, "returns": { "_0": "Index of the first checkpoint that commits to the given L2 block number." } }, "initialize(uint256,uint256,uint256,uint256,address,address,uint256)": { "params": { "_challenger": "The address of the challenger.", "_finalizationPeriodSeconds": "The minimum time (in seconds) that must elapse before a withdrawal                                   can be finalized.", "_l2BlockTime": "The time per L2 block, in seconds.", "_proposer": "The address of the proposer.", "_startingBlockNumber": "The number of the first L2 block.", "_startingTimestamp": "The timestamp of the first L2 block.", "_submissionInterval": "Interval in blocks at which checkpoints must be submitted." } }, "latestBlockNumber()": { "returns": { "_0": "Latest submitted L2 block number." } }, "latestOutputIndex()": { "returns": { "_0": "The number of outputs that have been proposed." } }, "nextBlockNumber()": { "returns": { "_0": "Next L2 block number." } }, "nextOutputIndex()": { "returns": { "_0": "The index of the next output to be proposed." } }, "proposeL2Output(bytes32,uint256,bytes32,uint256)": { "params": { "_l1BlockHash": "A block hash which must be included in the current chain.", "_l1BlockNumber": "The block number with the specified block hash.", "_l2BlockNumber": "The L2 block number that resulted in _outputRoot.", "_outputRoot": "The L2 output of the checkpoint block." } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "CHALLENGER()": { "notice": "Getter for the challenger address.         Public getter is legacy and will be removed in the future. Use `challenger` instead." }, "FINALIZATION_PERIOD_SECONDS()": { "notice": "Getter for the finalizationPeriodSeconds.         Public getter is legacy and will be removed in the future. Use `finalizationPeriodSeconds` instead." }, "L2_BLOCK_TIME()": { "notice": "Getter for the l2BlockTime.         Public getter is legacy and will be removed in the future. Use `l2BlockTime` instead." }, "PROPOSER()": { "notice": "Getter for the proposer address.         Public getter is legacy and will be removed in the future. Use `proposer` instead." }, "SUBMISSION_INTERVAL()": { "notice": "Getter for the submissionInterval.         Public getter is legacy and will be removed in the future. Use `submissionInterval` instead." }, "challenger()": { "notice": "The address of the challenger. Can be updated via upgrade." }, "computeL2Timestamp(uint256)": { "notice": "Returns the L2 timestamp corresponding to a given L2 block number." }, "constructor": { "notice": "Constructs the L2OutputOracle contract. Initializes variables to the same values as         in the getting-started config." }, "deleteL2Outputs(uint256)": { "notice": "Deletes all output proposals after and including the proposal that corresponds to         the given output index. Only the challenger address can delete outputs." }, "finalizationPeriodSeconds()": { "notice": "The minimum time (in seconds) that must elapse before a withdrawal can be finalized." }, "getL2Output(uint256)": { "notice": "Returns an output by index. Needed to return a struct instead of a tuple." }, "getL2OutputAfter(uint256)": { "notice": "Returns the L2 output proposal that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block." }, "getL2OutputIndexAfter(uint256)": { "notice": "Returns the index of the L2 output that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block." }, "initialize(uint256,uint256,uint256,uint256,address,address,uint256)": { "notice": "Initializer." }, "l2BlockTime()": { "notice": "The time between L2 blocks in seconds. Once set, this value MUST NOT be modified." }, "latestBlockNumber()": { "notice": "Returns the block number of the latest submitted L2 output proposal.         If no proposals been submitted yet then this function will return the starting         block number." }, "latestOutputIndex()": { "notice": "Returns the number of outputs that have been proposed.         Will revert if no outputs have been proposed yet." }, "nextBlockNumber()": { "notice": "Computes the block number of the next L2 block that needs to be checkpointed." }, "nextOutputIndex()": { "notice": "Returns the index of the next output to be proposed." }, "proposeL2Output(bytes32,uint256,bytes32,uint256)": { "notice": "Accepts an outputRoot and the timestamp of the corresponding L2 block.         The timestamp must be equal to the current value returned by `nextTimestamp()` in         order to be accepted. This function may only be called by the Proposer." }, "proposer()": { "notice": "The address of the proposer. Can be updated via upgrade." }, "startingBlockNumber()": { "notice": "The number of the first L2 block recorded in this contract." }, "startingTimestamp()": { "notice": "The timestamp of the first L2 block recorded in this contract." }, "submissionInterval()": { "notice": "The interval in L2 blocks at which checkpoints must be submitted." }, "version()": { "notice": "Semantic version." } }, "version": 1 } }, "settings": { "remappings": ["@lib-keccak/=lib/lib-keccak/contracts/lib/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@rari-capital/solmate/=lib/solmate/", "@solady-test/=lib/lib-keccak/lib/solady/test/", "@solady/=lib/solady/src/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/", "lib-keccak/=lib/lib-keccak/contracts/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "safe-contracts/=lib/safe-contracts/contracts/", "solady/=lib/solady/", "solmate/=lib/solmate/src/"], "optimizer": { "enabled": true, "runs": 999999 }, "metadata": { "bytecodeHash": "none" }, "compilationTarget": { "src/L1/L2OutputOracle.sol": "L2OutputOracle" }, "evmVersion": "london", "libraries": {} }, "sources": { "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { "keccak256": "0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66", "urls": ["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f", "dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Address.sol": { "keccak256": "0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10", "urls": ["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487", "dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { "keccak256": "0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0", "urls": ["bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929", "dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": { "keccak256": "0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7", "urls": ["bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689", "dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy"], "license": "MIT" }, "lib/solmate/src/utils/FixedPointMathLib.sol": { "keccak256": "0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d", "urls": ["bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c", "dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8"], "license": "MIT" }, "src/L1/L2OutputOracle.sol": { "keccak256": "0x342c5084f3c640c90530122bd78372c011d6162e698dd8c8daec9496fef01d42", "urls": ["bzz-raw://8700a3d486bd62cbb861ff80175b8040336940515791073af6a036db7c2df303", "dweb:/ipfs/QmSGKTH84rVHWgMg4d6GQZCmCJ16KuUuTsMwPMDdJxCsww"], "license": "MIT" }, "src/L1/ResourceMetering.sol": { "keccak256": "0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408", "urls": ["bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409", "dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM"], "license": "MIT" }, "src/libraries/Arithmetic.sol": { "keccak256": "0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db", "urls": ["bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72", "dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq"], "license": "MIT" }, "src/libraries/Burn.sol": { "keccak256": "0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010", "urls": ["bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f", "dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb"], "license": "MIT" }, "src/libraries/Constants.sol": { "keccak256": "0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132", "urls": ["bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b", "dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp"], "license": "MIT" }, "src/libraries/Types.sol": { "keccak256": "0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4", "urls": ["bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e", "dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc"], "license": "MIT" }, "src/universal/ISemver.sol": { "keccak256": "0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44", "urls": ["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a", "dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"], "license": "MIT" } }, "version": 1 }, "storageLayout": { "storage": [{ "astId": 49534, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "_initialized", "offset": 0, "slot": "0", "type": "t_uint8" }, { "astId": 49537, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "_initializing", "offset": 1, "slot": "0", "type": "t_bool" }, { "astId": 85939, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "startingBlockNumber", "offset": 0, "slot": "1", "type": "t_uint256" }, { "astId": 85942, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "startingTimestamp", "offset": 0, "slot": "2", "type": "t_uint256" }, { "astId": 85947, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "l2Outputs", "offset": 0, "slot": "3", "type": "t_array(t_struct(OutputProposal)104307_storage)dyn_storage" }, { "astId": 85950, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "submissionInterval", "offset": 0, "slot": "4", "type": "t_uint256" }, { "astId": 85953, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "l2BlockTime", "offset": 0, "slot": "5", "type": "t_uint256" }, { "astId": 85956, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "challenger", "offset": 0, "slot": "6", "type": "t_address" }, { "astId": 85959, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "proposer", "offset": 0, "slot": "7", "type": "t_address" }, { "astId": 85962, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "finalizationPeriodSeconds", "offset": 0, "slot": "8", "type": "t_uint256" }], "types": { "t_address": { "encoding": "inplace", "label": "address", "numberOfBytes": "20" }, "t_array(t_struct(OutputProposal)104307_storage)dyn_storage": { "encoding": "dynamic_array", "label": "struct Types.OutputProposal[]", "numberOfBytes": "32", "base": "t_struct(OutputProposal)104307_storage" }, "t_bool": { "encoding": "inplace", "label": "bool", "numberOfBytes": "1" }, "t_bytes32": { "encoding": "inplace", "label": "bytes32", "numberOfBytes": "32" }, "t_struct(OutputProposal)104307_storage": { "encoding": "inplace", "label": "struct Types.OutputProposal", "numberOfBytes": "64", "members": [{ "astId": 104302, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "outputRoot", "offset": 0, "slot": "0", "type": "t_bytes32" }, { "astId": 104304, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "timestamp", "offset": 0, "slot": "1", "type": "t_uint128" }, { "astId": 104306, "contract": "src/L1/L2OutputOracle.sol:L2OutputOracle", "label": "l2BlockNumber", "offset": 16, "slot": "1", "type": "t_uint128" }] }, "t_uint128": { "encoding": "inplace", "label": "uint128", "numberOfBytes": "16" }, "t_uint256": { "encoding": "inplace", "label": "uint256", "numberOfBytes": "32" }, "t_uint8": { "encoding": "inplace", "label": "uint8", "numberOfBytes": "1" } } }, "userdoc": { "version": 1, "kind": "user", "methods": { "CHALLENGER()": { "notice": "Getter for the challenger address.         Public getter is legacy and will be removed in the future. Use `challenger` instead." }, "FINALIZATION_PERIOD_SECONDS()": { "notice": "Getter for the finalizationPeriodSeconds.         Public getter is legacy and will be removed in the future. Use `finalizationPeriodSeconds` instead." }, "L2_BLOCK_TIME()": { "notice": "Getter for the l2BlockTime.         Public getter is legacy and will be removed in the future. Use `l2BlockTime` instead." }, "PROPOSER()": { "notice": "Getter for the proposer address.         Public getter is legacy and will be removed in the future. Use `proposer` instead." }, "SUBMISSION_INTERVAL()": { "notice": "Getter for the submissionInterval.         Public getter is legacy and will be removed in the future. Use `submissionInterval` instead." }, "challenger()": { "notice": "The address of the challenger. Can be updated via upgrade." }, "computeL2Timestamp(uint256)": { "notice": "Returns the L2 timestamp corresponding to a given L2 block number." }, "constructor": { "notice": "Constructs the L2OutputOracle contract. Initializes variables to the same values as         in the getting-started config." }, "deleteL2Outputs(uint256)": { "notice": "Deletes all output proposals after and including the proposal that corresponds to         the given output index. Only the challenger address can delete outputs." }, "finalizationPeriodSeconds()": { "notice": "The minimum time (in seconds) that must elapse before a withdrawal can be finalized." }, "getL2Output(uint256)": { "notice": "Returns an output by index. Needed to return a struct instead of a tuple." }, "getL2OutputAfter(uint256)": { "notice": "Returns the L2 output proposal that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block." }, "getL2OutputIndexAfter(uint256)": { "notice": "Returns the index of the L2 output that checkpoints a given L2 block number.         Uses a binary search to find the first output greater than or equal to the given         block." }, "initialize(uint256,uint256,uint256,uint256,address,address,uint256)": { "notice": "Initializer." }, "l2BlockTime()": { "notice": "The time between L2 blocks in seconds. Once set, this value MUST NOT be modified." }, "latestBlockNumber()": { "notice": "Returns the block number of the latest submitted L2 output proposal.         If no proposals been submitted yet then this function will return the starting         block number." }, "latestOutputIndex()": { "notice": "Returns the number of outputs that have been proposed.         Will revert if no outputs have been proposed yet." }, "nextBlockNumber()": { "notice": "Computes the block number of the next L2 block that needs to be checkpointed." }, "nextOutputIndex()": { "notice": "Returns the index of the next output to be proposed." }, "proposeL2Output(bytes32,uint256,bytes32,uint256)": { "notice": "Accepts an outputRoot and the timestamp of the corresponding L2 block.         The timestamp must be equal to the current value returned by `nextTimestamp()` in         order to be accepted. This function may only be called by the Proposer." }, "proposer()": { "notice": "The address of the proposer. Can be updated via upgrade." }, "startingBlockNumber()": { "notice": "The number of the first L2 block recorded in this contract." }, "startingTimestamp()": { "notice": "The timestamp of the first L2 block recorded in this contract." }, "submissionInterval()": { "notice": "The interval in L2 blocks at which checkpoints must be submitted." }, "version()": { "notice": "Semantic version." } }, "events": { "OutputProposed(bytes32,uint256,uint256,uint256)": { "notice": "Emitted when an output is proposed." }, "OutputsDeleted(uint256,uint256)": { "notice": "Emitted when outputs are deleted." } }, "notice": "The L2OutputOracle contains an array of L2 state outputs, where each output is a         commitment to the state of the L2 chain. Other contracts like the OptimismPortal use         these outputs to verify information about the state of L2." }, "devdoc": { "version": 1, "kind": "dev", "methods": { "CHALLENGER()": { "returns": { "_0": "Address of the challenger." } }, "FINALIZATION_PERIOD_SECONDS()": { "returns": { "_0": "Finalization period in seconds." } }, "L2_BLOCK_TIME()": { "returns": { "_0": "L2 block time." } }, "PROPOSER()": { "returns": { "_0": "Address of the proposer." } }, "SUBMISSION_INTERVAL()": { "returns": { "_0": "Submission interval." } }, "computeL2Timestamp(uint256)": { "params": { "_l2BlockNumber": "The L2 block number of the target block." }, "returns": { "_0": "L2 timestamp of the given block." } }, "deleteL2Outputs(uint256)": { "params": { "_l2OutputIndex": "Index of the first L2 output to be deleted.                       All outputs after this output will also be deleted." } }, "getL2Output(uint256)": { "params": { "_l2OutputIndex": "Index of the output to return." }, "returns": { "_0": "The output at the given index." } }, "getL2OutputAfter(uint256)": { "params": { "_l2BlockNumber": "L2 block number to find a checkpoint for." }, "returns": { "_0": "First checkpoint that commits to the given L2 block number." } }, "getL2OutputIndexAfter(uint256)": { "params": { "_l2BlockNumber": "L2 block number to find a checkpoint for." }, "returns": { "_0": "Index of the first checkpoint that commits to the given L2 block number." } }, "initialize(uint256,uint256,uint256,uint256,address,address,uint256)": { "params": { "_challenger": "The address of the challenger.", "_finalizationPeriodSeconds": "The minimum time (in seconds) that must elapse before a withdrawal                                   can be finalized.", "_l2BlockTime": "The time per L2 block, in seconds.", "_proposer": "The address of the proposer.", "_startingBlockNumber": "The number of the first L2 block.", "_startingTimestamp": "The timestamp of the first L2 block.", "_submissionInterval": "Interval in blocks at which checkpoints must be submitted." } }, "latestBlockNumber()": { "returns": { "_0": "Latest submitted L2 block number." } }, "latestOutputIndex()": { "returns": { "_0": "The number of outputs that have been proposed." } }, "nextBlockNumber()": { "returns": { "_0": "Next L2 block number." } }, "nextOutputIndex()": { "returns": { "_0": "The index of the next output to be proposed." } }, "proposeL2Output(bytes32,uint256,bytes32,uint256)": { "params": { "_l1BlockHash": "A block hash which must be included in the current chain.", "_l1BlockNumber": "The block number with the specified block hash.", "_l2BlockNumber": "The L2 block number that resulted in _outputRoot.", "_outputRoot": "The L2 output of the checkpoint block." } } }, "events": { "OutputProposed(bytes32,uint256,uint256,uint256)": { "params": { "l1Timestamp": "The L1 timestamp when proposed.", "l2BlockNumber": "The L2 block number of the output root.", "l2OutputIndex": "The index of the output in the l2Outputs array.", "outputRoot": "The output root." } }, "OutputsDeleted(uint256,uint256)": { "params": { "newNextOutputIndex": "Next L2 output index after the deletion.", "prevNextOutputIndex": "Next L2 output index before the deletion." } } } }, "ast": { "absolutePath": "src/L1/L2OutputOracle.sol", "id": 86436, "exportedSymbols": { "Constants": [103096], "ISemver": [109417], "Initializable": [49678], "L2OutputOracle": [86435], "Types": [104349] }, "nodeType": "SourceUnit", "src": "32:14005:133", "nodes": [{ "id": 85923, "nodeType": "PragmaDirective", "src": "32:23:133", "nodes": [], "literals": ["solidity", "0.8", ".15"] }, { "id": 85925, "nodeType": "ImportDirective", "src": "57:86:133", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", "file": "@openzeppelin/contracts/proxy/utils/Initializable.sol", "nameLocation": "-1:-1:-1", "scope": 86436, "sourceUnit": 49679, "symbolAliases": [{ "foreign": { "id": 85924, "name": "Initializable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49678, "src": "66:13:133", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85927, "nodeType": "ImportDirective", "src": "144:52:133", "nodes": [], "absolutePath": "src/universal/ISemver.sol", "file": "src/universal/ISemver.sol", "nameLocation": "-1:-1:-1", "scope": 86436, "sourceUnit": 109418, "symbolAliases": [{ "foreign": { "id": 85926, "name": "ISemver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109417, "src": "153:7:133", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85929, "nodeType": "ImportDirective", "src": "197:48:133", "nodes": [], "absolutePath": "src/libraries/Types.sol", "file": "src/libraries/Types.sol", "nameLocation": "-1:-1:-1", "scope": 86436, "sourceUnit": 104350, "symbolAliases": [{ "foreign": { "id": 85928, "name": "Types", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104349, "src": "206:5:133", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85931, "nodeType": "ImportDirective", "src": "246:56:133", "nodes": [], "absolutePath": "src/libraries/Constants.sol", "file": "src/libraries/Constants.sol", "nameLocation": "-1:-1:-1", "scope": 86436, "sourceUnit": 103097, "symbolAliases": [{ "foreign": { "id": 85930, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103096, "src": "255:9:133", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86435, "nodeType": "ContractDefinition", "src": "611:13425:133", "nodes": [{ "id": 85939, "nodeType": "VariableDeclaration", "src": "743:34:133", "nodes": [], "constant": false, "documentation": { "id": 85937, "nodeType": "StructuredDocumentation", "src": "667:71:133", "text": "@notice The number of the first L2 block recorded in this contract." }, "functionSelector": "70872aa5", "mutability": "mutable", "name": "startingBlockNumber", "nameLocation": "758:19:133", "scope": 86435, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85938, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "743:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "public" }, { "id": 85942, "nodeType": "VariableDeclaration", "src": "863:32:133", "nodes": [], "constant": false, "documentation": { "id": 85940, "nodeType": "StructuredDocumentation", "src": "784:74:133", "text": "@notice The timestamp of the first L2 block recorded in this contract." }, "functionSelector": "88786272", "mutability": "mutable", "name": "startingTimestamp", "nameLocation": "878:17:133", "scope": 86435, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85941, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "863:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "public" }, { "id": 85947, "nodeType": "VariableDeclaration", "src": "951:41:133", "nodes": [], "constant": false, "documentation": { "id": 85943, "nodeType": "StructuredDocumentation", "src": "902:44:133", "text": "@notice An array of L2 output proposals." }, "mutability": "mutable", "name": "l2Outputs", "nameLocation": "983:9:133", "scope": 86435, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal[]" }, "typeName": { "baseType": { "id": 85945, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 85944, "name": "Types.OutputProposal", "nodeType": "IdentifierPath", "referencedDeclaration": 104307, "src": "951:20:133" }, "referencedDeclaration": 104307, "src": "951:20:133", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_storage_ptr", "typeString": "struct Types.OutputProposal" } }, "id": 85946, "nodeType": "ArrayTypeName", "src": "951:22:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage_ptr", "typeString": "struct Types.OutputProposal[]" } }, "visibility": "internal" }, { "id": 85950, "nodeType": "VariableDeclaration", "src": "1114:33:133", "nodes": [], "constant": false, "documentation": { "id": 85948, "nodeType": "StructuredDocumentation", "src": "999:110:133", "text": "@notice The interval in L2 blocks at which checkpoints must be submitted.\n @custom:network-specific" }, "functionSelector": "e1a41bcf", "mutability": "mutable", "name": "submissionInterval", "nameLocation": "1129:18:133", "scope": 86435, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85949, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1114:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "public" }, { "id": 85953, "nodeType": "VariableDeclaration", "src": "1285:26:133", "nodes": [], "constant": false, "documentation": { "id": 85951, "nodeType": "StructuredDocumentation", "src": "1154:126:133", "text": "@notice The time between L2 blocks in seconds. Once set, this value MUST NOT be modified.\n @custom:network-specific" }, "functionSelector": "93991af3", "mutability": "mutable", "name": "l2BlockTime", "nameLocation": "1300:11:133", "scope": 86435, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85952, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1285:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "public" }, { "id": 85956, "nodeType": "VariableDeclaration", "src": "1426:25:133", "nodes": [], "constant": false, "documentation": { "id": 85954, "nodeType": "StructuredDocumentation", "src": "1318:103:133", "text": "@notice The address of the challenger. Can be updated via upgrade.\n @custom:network-specific" }, "functionSelector": "534db0e2", "mutability": "mutable", "name": "challenger", "nameLocation": "1441:10:133", "scope": 86435, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85955, "name": "address", "nodeType": "ElementaryTypeName", "src": "1426:7:133", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "public" }, { "id": 85959, "nodeType": "VariableDeclaration", "src": "1564:23:133", "nodes": [], "constant": false, "documentation": { "id": 85957, "nodeType": "StructuredDocumentation", "src": "1458:101:133", "text": "@notice The address of the proposer. Can be updated via upgrade.\n @custom:network-specific" }, "functionSelector": "a8e4fb90", "mutability": "mutable", "name": "proposer", "nameLocation": "1579:8:133", "scope": 86435, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85958, "name": "address", "nodeType": "ElementaryTypeName", "src": "1564:7:133", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "public" }, { "id": 85962, "nodeType": "VariableDeclaration", "src": "1728:40:133", "nodes": [], "constant": false, "documentation": { "id": 85960, "nodeType": "StructuredDocumentation", "src": "1594:129:133", "text": "@notice The minimum time (in seconds) that must elapse before a withdrawal can be finalized.\n @custom:network-specific" }, "functionSelector": "ce5db8d6", "mutability": "mutable", "name": "finalizationPeriodSeconds", "nameLocation": "1743:25:133", "scope": 86435, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85961, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1728:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "public" }, { "id": 85973, "nodeType": "EventDefinition", "src": "2080:146:133", "nodes": [], "anonymous": false, "documentation": { "id": 85963, "nodeType": "StructuredDocumentation", "src": "1775:300:133", "text": "@notice Emitted when an output is proposed.\n @param outputRoot    The output root.\n @param l2OutputIndex The index of the output in the l2Outputs array.\n @param l2BlockNumber The L2 block number of the output root.\n @param l1Timestamp   The L1 timestamp when proposed." }, "eventSelector": "a7aaf2512769da4e444e3de247be2564225c2e7a8f74cfe528e46e17d24868e2", "name": "OutputProposed", "nameLocation": "2086:14:133", "parameters": { "id": 85972, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85965, "indexed": true, "mutability": "mutable", "name": "outputRoot", "nameLocation": "2126:10:133", "nodeType": "VariableDeclaration", "scope": 85973, "src": "2110:26:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 85964, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2110:7:133", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }, { "constant": false, "id": 85967, "indexed": true, "mutability": "mutable", "name": "l2OutputIndex", "nameLocation": "2154:13:133", "nodeType": "VariableDeclaration", "scope": 85973, "src": "2138:29:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85966, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2138:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 85969, "indexed": true, "mutability": "mutable", "name": "l2BlockNumber", "nameLocation": "2185:13:133", "nodeType": "VariableDeclaration", "scope": 85973, "src": "2169:29:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85968, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2169:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 85971, "indexed": false, "mutability": "mutable", "name": "l1Timestamp", "nameLocation": "2208:11:133", "nodeType": "VariableDeclaration", "scope": 85973, "src": "2200:19:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85970, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2200:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "2100:125:133" } }, { "id": 85980, "nodeType": "EventDefinition", "src": "2435:94:133", "nodes": [], "anonymous": false, "documentation": { "id": 85974, "nodeType": "StructuredDocumentation", "src": "2232:198:133", "text": "@notice Emitted when outputs are deleted.\n @param prevNextOutputIndex Next L2 output index before the deletion.\n @param newNextOutputIndex  Next L2 output index after the deletion." }, "eventSelector": "4ee37ac2c786ec85e87592d3c5c8a1dd66f8496dda3f125d9ea8ca5f657629b6", "name": "OutputsDeleted", "nameLocation": "2441:14:133", "parameters": { "id": 85979, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85976, "indexed": true, "mutability": "mutable", "name": "prevNextOutputIndex", "nameLocation": "2472:19:133", "nodeType": "VariableDeclaration", "scope": 85980, "src": "2456:35:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85975, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2456:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 85978, "indexed": true, "mutability": "mutable", "name": "newNextOutputIndex", "nameLocation": "2509:18:133", "nodeType": "VariableDeclaration", "scope": 85980, "src": "2493:34:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85977, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2493:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "2455:73:133" } }, { "id": 85984, "nodeType": "VariableDeclaration", "src": "2598:40:133", "nodes": [], "baseFunctions": [109416], "constant": true, "documentation": { "id": 85981, "nodeType": "StructuredDocumentation", "src": "2535:58:133", "text": "@notice Semantic version.\n @custom:semver 1.8.0" }, "functionSelector": "54fd4d50", "mutability": "constant", "name": "version", "nameLocation": "2621:7:133", "scope": 86435, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 85982, "name": "string", "nodeType": "ElementaryTypeName", "src": "2598:6:133", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "hexValue": "312e382e30", "id": 85983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2631:7:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_cd02a4b5da981b4c403351c949b2ca4bdb2fb4b72b50891f7eb106d3eb7049e9", "typeString": "literal_string \"1.8.0\"" }, "value": "1.8.0" }, "visibility": "public" }, { "id": 86005, "nodeType": "FunctionDefinition", "src": "2792:305:133", "nodes": [], "body": { "id": 86004, "nodeType": "Block", "src": "2806:291:133", "nodes": [], "statements": [{ "expression": { "arguments": [{ "hexValue": "31", "id": 85989, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2862:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, { "hexValue": "31", "id": 85990, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2891:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, { "hexValue": "30", "id": 85991, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2928:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "hexValue": "30", "id": 85992, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2963:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "arguments": [{ "hexValue": "30", "id": 85995, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2997:1:133", "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": 85994, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2989:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85993, "name": "address", "nodeType": "ElementaryTypeName", "src": "2989:7:133", "typeDescriptions": {} } }, "id": 85996, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2989:10:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [{ "hexValue": "30", "id": 85999, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3034:1:133", "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": 85998, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3026:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85997, "name": "address", "nodeType": "ElementaryTypeName", "src": "3026:7:133", "typeDescriptions": {} } }, "id": 86000, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3026:10:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "hexValue": "30", "id": 86001, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3078:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }], "id": 85988, "name": "initialize", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86076, "src": "2816:10:133", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256,uint256,uint256,address,address,uint256)" } }, "id": 86002, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": ["_submissionInterval", "_l2BlockTime", "_startingBlockNumber", "_startingTimestamp", "_proposer", "_challenger", "_finalizationPeriodSeconds"], "nodeType": "FunctionCall", "src": "2816:274:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86003, "nodeType": "ExpressionStatement", "src": "2816:274:133" }] }, "documentation": { "id": 85985, "nodeType": "StructuredDocumentation", "src": "2645:142:133", "text": "@notice Constructs the L2OutputOracle contract. Initializes variables to the same values as\n         in the getting-started config." }, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 85986, "nodeType": "ParameterList", "parameters": [], "src": "2803:2:133" }, "returnParameters": { "id": 85987, "nodeType": "ParameterList", "parameters": [], "src": "2806:0:133" }, "scope": 86435, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 86076, "nodeType": "FunctionDefinition", "src": "3742:985:133", "nodes": [], "body": { "id": 86075, "nodeType": "Block", "src": "4048:679:133", "nodes": [], "statements": [{ "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86028, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86026, "name": "_submissionInterval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86008, "src": "4066:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 86027, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4088:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4066:23:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a207375626d697373696f6e20696e74657276616c206d7573742062652067726561746572207468616e2030", "id": 86029, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4091:60:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a22226fa4dda9c6c644d22b26affbedef5d3fc150a8b26008a6baa26d85d543f", "typeString": "literal_string \"L2OutputOracle: submission interval must be greater than 0\"" }, "value": "L2OutputOracle: submission interval must be greater than 0" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_a22226fa4dda9c6c644d22b26affbedef5d3fc150a8b26008a6baa26d85d543f", "typeString": "literal_string \"L2OutputOracle: submission interval must be greater than 0\"" }], "id": 86025, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4058:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86030, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4058:94:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86031, "nodeType": "ExpressionStatement", "src": "4058:94:133" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86033, "name": "_l2BlockTime", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86010, "src": "4170:12:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 86034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4185:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4170:16:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a204c3220626c6f636b2074696d65206d7573742062652067726561746572207468616e2030", "id": 86036, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4188:54:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ac9ff37c1a6529ab3b67321d57550ba5021740edf6aa58a5708726b9aa5179b7", "typeString": "literal_string \"L2OutputOracle: L2 block time must be greater than 0\"" }, "value": "L2OutputOracle: L2 block time must be greater than 0" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_ac9ff37c1a6529ab3b67321d57550ba5021740edf6aa58a5708726b9aa5179b7", "typeString": "literal_string \"L2OutputOracle: L2 block time must be greater than 0\"" }], "id": 86032, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4162:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4162:81:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86038, "nodeType": "ExpressionStatement", "src": "4162:81:133" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86040, "name": "_startingTimestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86014, "src": "4274:18:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "expression": { "id": 86041, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4296:5:133", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 86042, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4296:15:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4274:37:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a207374617274696e67204c322074696d657374616d70206d757374206265206c657373207468616e2063757272656e742074696d65", "id": 86044, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4325:70:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_898fd7ed8708de35483db60bd4b962ea9e8aa9058ba6455714580e35a9e067a7", "typeString": "literal_string \"L2OutputOracle: starting L2 timestamp must be less than current time\"" }, "value": "L2OutputOracle: starting L2 timestamp must be less than current time" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_898fd7ed8708de35483db60bd4b962ea9e8aa9058ba6455714580e35a9e067a7", "typeString": "literal_string \"L2OutputOracle: starting L2 timestamp must be less than current time\"" }], "id": 86039, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4253:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86045, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4253:152:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86046, "nodeType": "ExpressionStatement", "src": "4253:152:133" }, { "expression": { "id": 86049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86047, "name": "submissionInterval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85950, "src": "4416:18:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 86048, "name": "_submissionInterval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86008, "src": "4437:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4416:40:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 86050, "nodeType": "ExpressionStatement", "src": "4416:40:133" }, { "expression": { "id": 86053, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86051, "name": "l2BlockTime", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85953, "src": "4466:11:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 86052, "name": "_l2BlockTime", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86010, "src": "4480:12:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4466:26:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 86054, "nodeType": "ExpressionStatement", "src": "4466:26:133" }, { "expression": { "id": 86057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86055, "name": "startingBlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85939, "src": "4502:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 86056, "name": "_startingBlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86012, "src": "4524:20:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4502:42:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 86058, "nodeType": "ExpressionStatement", "src": "4502:42:133" }, { "expression": { "id": 86061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86059, "name": "startingTimestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85942, "src": "4554:17:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 86060, "name": "_startingTimestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86014, "src": "4574:18:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4554:38:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 86062, "nodeType": "ExpressionStatement", "src": "4554:38:133" }, { "expression": { "id": 86065, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86063, "name": "proposer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85959, "src": "4602:8:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 86064, "name": "_proposer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86016, "src": "4613:9:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4602:20:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 86066, "nodeType": "ExpressionStatement", "src": "4602:20:133" }, { "expression": { "id": 86069, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86067, "name": "challenger", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85956, "src": "4632:10:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 86068, "name": "_challenger", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86018, "src": "4645:11:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4632:24:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 86070, "nodeType": "ExpressionStatement", "src": "4632:24:133" }, { "expression": { "id": 86073, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86071, "name": "finalizationPeriodSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85962, "src": "4666:25:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 86072, "name": "_finalizationPeriodSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86020, "src": "4694:26:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4666:54:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 86074, "nodeType": "ExpressionStatement", "src": "4666:54:133" }] }, "documentation": { "id": 86006, "nodeType": "StructuredDocumentation", "src": "3103:634:133", "text": "@notice Initializer.\n @param _submissionInterval  Interval in blocks at which checkpoints must be submitted.\n @param _l2BlockTime         The time per L2 block, in seconds.\n @param _startingBlockNumber The number of the first L2 block.\n @param _startingTimestamp   The timestamp of the first L2 block.\n @param _proposer            The address of the proposer.\n @param _challenger          The address of the challenger.\n @param _finalizationPeriodSeconds The minimum time (in seconds) that must elapse before a withdrawal\n                                   can be finalized." }, "functionSelector": "1c89c97d", "implemented": true, "kind": "function", "modifiers": [{ "id": 86023, "kind": "modifierInvocation", "modifierName": { "id": 86022, "name": "initializer", "nodeType": "IdentifierPath", "referencedDeclaration": 49598, "src": "4032:11:133" }, "nodeType": "ModifierInvocation", "src": "4032:11:133" }], "name": "initialize", "nameLocation": "3751:10:133", "parameters": { "id": 86021, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86008, "mutability": "mutable", "name": "_submissionInterval", "nameLocation": "3779:19:133", "nodeType": "VariableDeclaration", "scope": 86076, "src": "3771:27:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86007, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3771:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 86010, "mutability": "mutable", "name": "_l2BlockTime", "nameLocation": "3816:12:133", "nodeType": "VariableDeclaration", "scope": 86076, "src": "3808:20:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86009, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3808:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 86012, "mutability": "mutable", "name": "_startingBlockNumber", "nameLocation": "3846:20:133", "nodeType": "VariableDeclaration", "scope": 86076, "src": "3838:28:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86011, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3838:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 86014, "mutability": "mutable", "name": "_startingTimestamp", "nameLocation": "3884:18:133", "nodeType": "VariableDeclaration", "scope": 86076, "src": "3876:26:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86013, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3876:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 86016, "mutability": "mutable", "name": "_proposer", "nameLocation": "3920:9:133", "nodeType": "VariableDeclaration", "scope": 86076, "src": "3912:17:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86015, "name": "address", "nodeType": "ElementaryTypeName", "src": "3912:7:133", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 86018, "mutability": "mutable", "name": "_challenger", "nameLocation": "3947:11:133", "nodeType": "VariableDeclaration", "scope": 86076, "src": "3939:19:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86017, "name": "address", "nodeType": "ElementaryTypeName", "src": "3939:7:133", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 86020, "mutability": "mutable", "name": "_finalizationPeriodSeconds", "nameLocation": "3976:26:133", "nodeType": "VariableDeclaration", "scope": 86076, "src": "3968:34:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86019, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3968:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "3761:247:133" }, "returnParameters": { "id": 86024, "nodeType": "ParameterList", "parameters": [], "src": "4048:0:133" }, "scope": 86435, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 86085, "nodeType": "FunctionDefinition", "src": "4953:105:133", "nodes": [], "body": { "id": 86084, "nodeType": "Block", "src": "5016:42:133", "nodes": [], "statements": [{ "expression": { "id": 86082, "name": "submissionInterval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85950, "src": "5033:18:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 86081, "id": 86083, "nodeType": "Return", "src": "5026:25:133" }] }, "documentation": { "id": 86077, "nodeType": "StructuredDocumentation", "src": "4733:215:133", "text": "@notice Getter for the submissionInterval.\n         Public getter is legacy and will be removed in the future. Use `submissionInterval` instead.\n @return Submission interval.\n @custom:legacy" }, "functionSelector": "529933df", "implemented": true, "kind": "function", "modifiers": [], "name": "SUBMISSION_INTERVAL", "nameLocation": "4962:19:133", "parameters": { "id": 86078, "nodeType": "ParameterList", "parameters": [], "src": "4981:2:133" }, "returnParameters": { "id": 86081, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86080, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86085, "src": "5007:7:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86079, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5007:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "5006:9:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 86094, "nodeType": "FunctionDefinition", "src": "5264:92:133", "nodes": [], "body": { "id": 86093, "nodeType": "Block", "src": "5321:35:133", "nodes": [], "statements": [{ "expression": { "id": 86091, "name": "l2BlockTime", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85953, "src": "5338:11:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 86090, "id": 86092, "nodeType": "Return", "src": "5331:18:133" }] }, "documentation": { "id": 86086, "nodeType": "StructuredDocumentation", "src": "5064:195:133", "text": "@notice Getter for the l2BlockTime.\n         Public getter is legacy and will be removed in the future. Use `l2BlockTime` instead.\n @return L2 block time.\n @custom:legacy" }, "functionSelector": "002134cc", "implemented": true, "kind": "function", "modifiers": [], "name": "L2_BLOCK_TIME", "nameLocation": "5273:13:133", "parameters": { "id": 86087, "nodeType": "ParameterList", "parameters": [], "src": "5286:2:133" }, "returnParameters": { "id": 86090, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86089, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86094, "src": "5312:7:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86088, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5312:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "5311:9:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 86103, "nodeType": "FunctionDefinition", "src": "5580:88:133", "nodes": [], "body": { "id": 86102, "nodeType": "Block", "src": "5634:34:133", "nodes": [], "statements": [{ "expression": { "id": 86100, "name": "challenger", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85956, "src": "5651:10:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 86099, "id": 86101, "nodeType": "Return", "src": "5644:17:133" }] }, "documentation": { "id": 86095, "nodeType": "StructuredDocumentation", "src": "5362:213:133", "text": "@notice Getter for the challenger address.\n         Public getter is legacy and will be removed in the future. Use `challenger` instead.\n @return Address of the challenger.\n @custom:legacy" }, "functionSelector": "6b4d98dd", "implemented": true, "kind": "function", "modifiers": [], "name": "CHALLENGER", "nameLocation": "5589:10:133", "parameters": { "id": 86096, "nodeType": "ParameterList", "parameters": [], "src": "5599:2:133" }, "returnParameters": { "id": 86099, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86098, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86103, "src": "5625:7:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86097, "name": "address", "nodeType": "ElementaryTypeName", "src": "5625:7:133", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "5624:9:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 86112, "nodeType": "FunctionDefinition", "src": "5886:84:133", "nodes": [], "body": { "id": 86111, "nodeType": "Block", "src": "5938:32:133", "nodes": [], "statements": [{ "expression": { "id": 86109, "name": "proposer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85959, "src": "5955:8:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 86108, "id": 86110, "nodeType": "Return", "src": "5948:15:133" }] }, "documentation": { "id": 86104, "nodeType": "StructuredDocumentation", "src": "5674:207:133", "text": "@notice Getter for the proposer address.\n         Public getter is legacy and will be removed in the future. Use `proposer` instead.\n @return Address of the proposer.\n @custom:legacy" }, "functionSelector": "bffa7f0f", "implemented": true, "kind": "function", "modifiers": [], "name": "PROPOSER", "nameLocation": "5895:8:133", "parameters": { "id": 86105, "nodeType": "ParameterList", "parameters": [], "src": "5903:2:133" }, "returnParameters": { "id": 86108, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86107, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86112, "src": "5929:7:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86106, "name": "address", "nodeType": "ElementaryTypeName", "src": "5929:7:133", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "5928:9:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 86121, "nodeType": "FunctionDefinition", "src": "6221:120:133", "nodes": [], "body": { "id": 86120, "nodeType": "Block", "src": "6292:49:133", "nodes": [], "statements": [{ "expression": { "id": 86118, "name": "finalizationPeriodSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85962, "src": "6309:25:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 86117, "id": 86119, "nodeType": "Return", "src": "6302:32:133" }] }, "documentation": { "id": 86113, "nodeType": "StructuredDocumentation", "src": "5976:240:133", "text": "@notice Getter for the finalizationPeriodSeconds.\n         Public getter is legacy and will be removed in the future. Use `finalizationPeriodSeconds` instead.\n @return Finalization period in seconds.\n @custom:legacy" }, "functionSelector": "f4daa291", "implemented": true, "kind": "function", "modifiers": [], "name": "FINALIZATION_PERIOD_SECONDS", "nameLocation": "6230:27:133", "parameters": { "id": 86114, "nodeType": "ParameterList", "parameters": [], "src": "6257:2:133" }, "returnParameters": { "id": 86117, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86116, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86121, "src": "6283:7:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86115, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6283:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "6282:9:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 86168, "nodeType": "FunctionDefinition", "src": "6689:975:133", "nodes": [], "body": { "id": 86167, "nodeType": "Block", "src": "6747:917:133", "nodes": [], "statements": [{ "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 86131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86128, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6765:3:133", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 86129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "6765:10:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 86130, "name": "challenger", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85956, "src": "6779:10:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6765:24:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a206f6e6c7920746865206368616c6c656e67657220616464726573732063616e2064656c657465206f757470757473", "id": 86132, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6791:64:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_73ca084205f86e7b7b010a7bf147aa19f097b7f0a2c7768452f50d69ddf1c8a6", "typeString": "literal_string \"L2OutputOracle: only the challenger address can delete outputs\"" }, "value": "L2OutputOracle: only the challenger address can delete outputs" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_73ca084205f86e7b7b010a7bf147aa19f097b7f0a2c7768452f50d69ddf1c8a6", "typeString": "literal_string \"L2OutputOracle: only the challenger address can delete outputs\"" }], "id": 86127, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6757:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86133, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6757:99:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86134, "nodeType": "ExpressionStatement", "src": "6757:99:133" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86136, "name": "_l2OutputIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86124, "src": "6957:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "expression": { "id": 86137, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "6974:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86138, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "6974:16:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6957:33:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f75747075747320616674657220746865206c6174657374206f757470757420696e646578", "id": 86140, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6992:69:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8fade7eaadcf8920b61cd280bfaf9215de3229fd9b8bc0c114506f50c3323d08", "typeString": "literal_string \"L2OutputOracle: cannot delete outputs after the latest output index\"" }, "value": "L2OutputOracle: cannot delete outputs after the latest output index" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8fade7eaadcf8920b61cd280bfaf9215de3229fd9b8bc0c114506f50c3323d08", "typeString": "literal_string \"L2OutputOracle: cannot delete outputs after the latest output index\"" }], "id": 86135, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6936:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86141, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6936:135:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86142, "nodeType": "ExpressionStatement", "src": "6936:135:133" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86150, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86144, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "7182:5:133", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 86145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "src": "7182:15:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "expression": { "baseExpression": { "id": 86146, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "7200:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86148, "indexExpression": { "id": 86147, "name": "_l2OutputIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86124, "src": "7210:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7200:25:133", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_storage", "typeString": "struct Types.OutputProposal storage ref" } }, "id": 86149, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": 104304, "src": "7200:35:133", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, "src": "7182:53:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "id": 86151, "name": "finalizationPeriodSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85962, "src": "7238:25:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7182:81:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a2063616e6e6f742064656c657465206f7574707574732074686174206861766520616c7265616479206265656e2066696e616c697a6564", "id": 86153, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7277:72:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_d750945a6d3cdf9f7770d0a5d95aa9b56f37a0ad47759ca246a1b772fdac6c07", "typeString": "literal_string \"L2OutputOracle: cannot delete outputs that have already been finalized\"" }, "value": "L2OutputOracle: cannot delete outputs that have already been finalized" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_d750945a6d3cdf9f7770d0a5d95aa9b56f37a0ad47759ca246a1b772fdac6c07", "typeString": "literal_string \"L2OutputOracle: cannot delete outputs that have already been finalized\"" }], "id": 86143, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7161:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86154, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7161:198:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86155, "nodeType": "ExpressionStatement", "src": "7161:198:133" }, { "assignments": [86157], "declarations": [{ "constant": false, "id": 86157, "mutability": "mutable", "name": "prevNextL2OutputIndex", "nameLocation": "7378:21:133", "nodeType": "VariableDeclaration", "scope": 86167, "src": "7370:29:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86156, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7370:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "id": 86160, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "id": 86158, "name": "nextOutputIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86382, "src": "7402:15:133", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 86159, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7402:17:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "7370:49:133" }, { "AST": { "nodeType": "YulBlock", "src": "7527:62:133", "statements": [{ "expression": { "arguments": [{ "name": "l2Outputs.slot", "nodeType": "YulIdentifier", "src": "7548:14:133" }, { "name": "_l2OutputIndex", "nodeType": "YulIdentifier", "src": "7564:14:133" }], "functionName": { "name": "sstore", "nodeType": "YulIdentifier", "src": "7541:6:133" }, "nodeType": "YulFunctionCall", "src": "7541:38:133" }, "nodeType": "YulExpressionStatement", "src": "7541:38:133" }] }, "evmVersion": "london", "externalReferences": [{ "declaration": 86124, "isOffset": false, "isSlot": false, "src": "7564:14:133", "valueSize": 1 }, { "declaration": 85947, "isOffset": false, "isSlot": true, "src": "7548:14:133", "suffix": "slot", "valueSize": 1 }], "id": 86161, "nodeType": "InlineAssembly", "src": "7518:71:133" }, { "eventCall": { "arguments": [{ "id": 86163, "name": "prevNextL2OutputIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86157, "src": "7619:21:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 86164, "name": "_l2OutputIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86124, "src": "7642:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 86162, "name": "OutputsDeleted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85980, "src": "7604:14:133", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)" } }, "id": 86165, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7604:53:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86166, "nodeType": "EmitStatement", "src": "7599:58:133" }] }, "documentation": { "id": 86122, "nodeType": "StructuredDocumentation", "src": "6347:337:133", "text": "@notice Deletes all output proposals after and including the proposal that corresponds to\n         the given output index. Only the challenger address can delete outputs.\n @param _l2OutputIndex Index of the first L2 output to be deleted.\n                       All outputs after this output will also be deleted." }, "functionSelector": "89c44cbb", "implemented": true, "kind": "function", "modifiers": [], "name": "deleteL2Outputs", "nameLocation": "6698:15:133", "parameters": { "id": 86125, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86124, "mutability": "mutable", "name": "_l2OutputIndex", "nameLocation": "6722:14:133", "nodeType": "VariableDeclaration", "scope": 86168, "src": "6714:22:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86123, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6714:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "6713:24:133" }, "returnParameters": { "id": 86126, "nodeType": "ParameterList", "parameters": [], "src": "6747:0:133" }, "scope": 86435, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 86261, "nodeType": "FunctionDefinition", "src": "8258:1981:133", "nodes": [], "body": { "id": 86260, "nodeType": "Block", "src": "8449:1790:133", "nodes": [], "statements": [{ "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 86184, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86181, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8467:3:133", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 86182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "8467:10:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 86183, "name": "proposer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85959, "src": "8481:8:133", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "8467:22:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a206f6e6c79207468652070726f706f73657220616464726573732063616e2070726f706f7365206e6577206f757470757473", "id": 86185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8491:67:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9f1c67e2dc62ce3502755d353f72e304832f39c730ef77e02614e374f1fb53d3", "typeString": "literal_string \"L2OutputOracle: only the proposer address can propose new outputs\"" }, "value": "L2OutputOracle: only the proposer address can propose new outputs" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_9f1c67e2dc62ce3502755d353f72e304832f39c730ef77e02614e374f1fb53d3", "typeString": "literal_string \"L2OutputOracle: only the proposer address can propose new outputs\"" }], "id": 86180, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8459:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86186, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8459:100:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86187, "nodeType": "ExpressionStatement", "src": "8459:100:133" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86189, "name": "_l2BlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86173, "src": "8591:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "id": 86190, "name": "nextBlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86415, "src": "8609:15:133", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 86191, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8609:17:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8591:35:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a20626c6f636b206e756d626572206d75737420626520657175616c20746f206e65787420657870656374656420626c6f636b206e756d626572", "id": 86193, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8640:74:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_06e1bf88480451e9a05edd933fbefd888745eeb4cd60fea580144d9699d6c8c6", "typeString": "literal_string \"L2OutputOracle: block number must be equal to next expected block number\"" }, "value": "L2OutputOracle: block number must be equal to next expected block number" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_06e1bf88480451e9a05edd933fbefd888745eeb4cd60fea580144d9699d6c8c6", "typeString": "literal_string \"L2OutputOracle: block number must be equal to next expected block number\"" }], "id": 86188, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8570:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8570:154:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86195, "nodeType": "ExpressionStatement", "src": "8570:154:133" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [{ "id": 86198, "name": "_l2BlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86173, "src": "8775:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 86197, "name": "computeL2Timestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86434, "src": "8756:18:133", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, "id": 86199, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8756:34:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "expression": { "id": 86200, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "8793:5:133", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 86201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "src": "8793:15:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8756:52:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a2063616e6e6f742070726f706f7365204c32206f757470757420696e2074686520667574757265", "id": 86203, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8822:56:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_398aa710210a226bac70935aec326d363ca55bd0968a10f188845909ad22cbc6", "typeString": "literal_string \"L2OutputOracle: cannot propose L2 output in the future\"" }, "value": "L2OutputOracle: cannot propose L2 output in the future" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_398aa710210a226bac70935aec326d363ca55bd0968a10f188845909ad22cbc6", "typeString": "literal_string \"L2OutputOracle: cannot propose L2 output in the future\"" }], "id": 86196, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8735:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8735:153:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86205, "nodeType": "ExpressionStatement", "src": "8735:153:133" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "id": 86212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86207, "name": "_outputRoot", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86171, "src": "8907:11:133", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [{ "hexValue": "30", "id": 86210, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8930:1:133", "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": 86209, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8922:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 86208, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8922:7:133", "typeDescriptions": {} } }, "id": 86211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8922:10:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "8907:25:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a204c32206f75747075742070726f706f73616c2063616e6e6f7420626520746865207a65726f2068617368", "id": 86213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8934:60:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_bd49586dceb93dcaff5457c4b7f965cdcdd796092fef31828e5d2ee522ee1ffa", "typeString": "literal_string \"L2OutputOracle: L2 output proposal cannot be the zero hash\"" }, "value": "L2OutputOracle: L2 output proposal cannot be the zero hash" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_bd49586dceb93dcaff5457c4b7f965cdcdd796092fef31828e5d2ee522ee1ffa", "typeString": "literal_string \"L2OutputOracle: L2 output proposal cannot be the zero hash\"" }], "id": 86206, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8899:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86214, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8899:96:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86215, "nodeType": "ExpressionStatement", "src": "8899:96:133" }, { "condition": { "commonType": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "id": 86221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86216, "name": "_l1BlockHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86175, "src": "9010:12:133", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [{ "hexValue": "30", "id": 86219, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9034:1:133", "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": 86218, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9026:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 86217, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9026:7:133", "typeDescriptions": {} } }, "id": 86220, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9026:10:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "9010:26:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 86232, "nodeType": "IfStatement", "src": "9006:897:133", "trueBody": { "id": 86231, "nodeType": "Block", "src": "9038:865:133", "statements": [{ "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "id": 86227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [{ "id": 86224, "name": "_l1BlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86177, "src": "9754:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 86223, "name": "blockhash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -5, "src": "9744:9:133", "typeDescriptions": { "typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)" } }, "id": 86225, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9744:25:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 86226, "name": "_l1BlockHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86175, "src": "9773:12:133", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "9744:41:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a20626c6f636b206861736820646f6573206e6f74206d617463682074686520686173682061742074686520657870656374656420686569676874", "id": 86228, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9803:75:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_126a709d462b085b243904a4250a7244b58590dd3a6ba08b7c943ca19e9fb452", "typeString": "literal_string \"L2OutputOracle: block hash does not match the hash at the expected height\"" }, "value": "L2OutputOracle: block hash does not match the hash at the expected height" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_126a709d462b085b243904a4250a7244b58590dd3a6ba08b7c943ca19e9fb452", "typeString": "literal_string \"L2OutputOracle: block hash does not match the hash at the expected height\"" }], "id": 86222, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9719:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86229, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9719:173:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86230, "nodeType": "ExpressionStatement", "src": "9719:173:133" }] } }, { "eventCall": { "arguments": [{ "id": 86234, "name": "_outputRoot", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86171, "src": "9933:11:133", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 86235, "name": "nextOutputIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86382, "src": "9946:15:133", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 86236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9946:17:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 86237, "name": "_l2BlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86173, "src": "9965:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "expression": { "id": 86238, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "9981:5:133", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 86239, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "src": "9981:15:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 86233, "name": "OutputProposed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85973, "src": "9918:14:133", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint256,uint256,uint256)" } }, "id": 86240, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9918:79:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86241, "nodeType": "EmitStatement", "src": "9913:84:133" }, { "expression": { "arguments": [{ "arguments": [{ "id": 86247, "name": "_outputRoot", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86171, "src": "10087:11:133", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "arguments": [{ "expression": { "id": 86250, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "10135:5:133", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 86251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "src": "10135:15:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 86249, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10127:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint128_$", "typeString": "type(uint128)" }, "typeName": { "id": 86248, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "10127:7:133", "typeDescriptions": {} } }, "id": 86252, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10127:24:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, { "arguments": [{ "id": 86255, "name": "_l2BlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86173, "src": "10192:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 86254, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10184:7:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint128_$", "typeString": "type(uint128)" }, "typeName": { "id": 86253, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "10184:7:133", "typeDescriptions": {} } }, "id": 86256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10184:23:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint128", "typeString": "uint128" }, { "typeIdentifier": "t_uint128", "typeString": "uint128" }], "expression": { "id": 86245, "name": "Types", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104349, "src": "10036:5:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Types_$104349_$", "typeString": "type(library Types)" } }, "id": 86246, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "OutputProposal", "nodeType": "MemberAccess", "referencedDeclaration": 104307, "src": "10036:20:133", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_OutputProposal_$104307_storage_ptr_$", "typeString": "type(struct Types.OutputProposal storage pointer)" } }, "id": 86257, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "names": ["outputRoot", "timestamp", "l2BlockNumber"], "nodeType": "FunctionCall", "src": "10036:186:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_memory_ptr", "typeString": "struct Types.OutputProposal memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_struct$_OutputProposal_$104307_memory_ptr", "typeString": "struct Types.OutputProposal memory" }], "expression": { "id": 86242, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "10008:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "src": "10008:14:133", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage_ptr_$_t_struct$_OutputProposal_$104307_storage_$returns$__$bound_to$_t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage_ptr_$", "typeString": "function (struct Types.OutputProposal storage ref[] storage pointer,struct Types.OutputProposal storage ref)" } }, "id": 86258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10008:224:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86259, "nodeType": "ExpressionStatement", "src": "10008:224:133" }] }, "documentation": { "id": 86169, "nodeType": "StructuredDocumentation", "src": "7670:583:133", "text": "@notice Accepts an outputRoot and the timestamp of the corresponding L2 block.\n         The timestamp must be equal to the current value returned by `nextTimestamp()` in\n         order to be accepted. This function may only be called by the Proposer.\n @param _outputRoot    The L2 output of the checkpoint block.\n @param _l2BlockNumber The L2 block number that resulted in _outputRoot.\n @param _l1BlockHash   A block hash which must be included in the current chain.\n @param _l1BlockNumber The block number with the specified block hash." }, "functionSelector": "9aaab648", "implemented": true, "kind": "function", "modifiers": [], "name": "proposeL2Output", "nameLocation": "8267:15:133", "parameters": { "id": 86178, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86171, "mutability": "mutable", "name": "_outputRoot", "nameLocation": "8300:11:133", "nodeType": "VariableDeclaration", "scope": 86261, "src": "8292:19:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 86170, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8292:7:133", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }, { "constant": false, "id": 86173, "mutability": "mutable", "name": "_l2BlockNumber", "nameLocation": "8329:14:133", "nodeType": "VariableDeclaration", "scope": 86261, "src": "8321:22:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86172, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8321:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 86175, "mutability": "mutable", "name": "_l1BlockHash", "nameLocation": "8361:12:133", "nodeType": "VariableDeclaration", "scope": 86261, "src": "8353:20:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 86174, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8353:7:133", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }, { "constant": false, "id": 86177, "mutability": "mutable", "name": "_l1BlockNumber", "nameLocation": "8391:14:133", "nodeType": "VariableDeclaration", "scope": 86261, "src": "8383:22:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86176, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8383:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "8282:129:133" }, "returnParameters": { "id": 86179, "nodeType": "ParameterList", "parameters": [], "src": "8449:0:133" }, "scope": 86435, "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "id": 86275, "nodeType": "FunctionDefinition", "src": "10443:146:133", "nodes": [], "body": { "id": 86274, "nodeType": "Block", "src": "10540:49:133", "nodes": [], "statements": [{ "expression": { "baseExpression": { "id": 86270, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "10557:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86272, "indexExpression": { "id": 86271, "name": "_l2OutputIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86264, "src": "10567:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10557:25:133", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_storage", "typeString": "struct Types.OutputProposal storage ref" } }, "functionReturnParameters": 86269, "id": 86273, "nodeType": "Return", "src": "10550:32:133" }] }, "documentation": { "id": 86262, "nodeType": "StructuredDocumentation", "src": "10245:193:133", "text": "@notice Returns an output by index. Needed to return a struct instead of a tuple.\n @param _l2OutputIndex Index of the output to return.\n @return The output at the given index." }, "functionSelector": "a25ae557", "implemented": true, "kind": "function", "modifiers": [], "name": "getL2Output", "nameLocation": "10452:11:133", "parameters": { "id": 86265, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86264, "mutability": "mutable", "name": "_l2OutputIndex", "nameLocation": "10472:14:133", "nodeType": "VariableDeclaration", "scope": 86275, "src": "10464:22:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86263, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10464:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "10463:24:133" }, "returnParameters": { "id": 86269, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86268, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86275, "src": "10511:27:133", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_memory_ptr", "typeString": "struct Types.OutputProposal" }, "typeName": { "id": 86267, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86266, "name": "Types.OutputProposal", "nodeType": "IdentifierPath", "referencedDeclaration": 104307, "src": "10511:20:133" }, "referencedDeclaration": 104307, "src": "10511:20:133", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_storage_ptr", "typeString": "struct Types.OutputProposal" } }, "visibility": "internal" }], "src": "10510:29:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 86344, "nodeType": "FunctionDefinition", "src": "10969:896:133", "nodes": [], "body": { "id": 86343, "nodeType": "Block", "src": "11054:811:133", "nodes": [], "statements": [{ "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86284, "name": "_l2BlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86278, "src": "11166:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "id": 86285, "name": "latestBlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86403, "src": "11184:17:133", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 86286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11184:19:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11166:37:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a2063616e6e6f7420676574206f757470757420666f72206120626c6f636b207468617420686173206e6f74206265656e2070726f706f736564", "id": 86288, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11217:74:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e20eea09cda66a0de8aaee9225052cff8973e85b47dc903dda82ca1d2f5e4f1e", "typeString": "literal_string \"L2OutputOracle: cannot get output for a block that has not been proposed\"" }, "value": "L2OutputOracle: cannot get output for a block that has not been proposed" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_e20eea09cda66a0de8aaee9225052cff8973e85b47dc903dda82ca1d2f5e4f1e", "typeString": "literal_string \"L2OutputOracle: cannot get output for a block that has not been proposed\"" }], "id": 86283, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11145:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86289, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11145:156:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86290, "nodeType": "ExpressionStatement", "src": "11145:156:133" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86295, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86292, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "11379:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "11379:16:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 86294, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11398:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "11379:20:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4c324f75747075744f7261636c653a2063616e6e6f7420676574206f7574707574206173206e6f206f7574707574732068617665206265656e2070726f706f73656420796574", "id": 86296, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11401:72:133", "typeDescriptions": { "typeIdentifier": "t_stringliteral_80c3451a3ec9750ebb6fb31ae69a5869a904e947867f132ba63cfb294c03b73e", "typeString": "literal_string \"L2OutputOracle: cannot get output as no outputs have been proposed yet\"" }, "value": "L2OutputOracle: cannot get output as no outputs have been proposed yet" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_80c3451a3ec9750ebb6fb31ae69a5869a904e947867f132ba63cfb294c03b73e", "typeString": "literal_string \"L2OutputOracle: cannot get output as no outputs have been proposed yet\"" }], "id": 86291, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11371:7:133", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86297, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11371:103:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86298, "nodeType": "ExpressionStatement", "src": "11371:103:133" }, { "assignments": [86300], "declarations": [{ "constant": false, "id": 86300, "mutability": "mutable", "name": "lo", "nameLocation": "11560:2:133", "nodeType": "VariableDeclaration", "scope": 86343, "src": "11552:10:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86299, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11552:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "id": 86302, "initialValue": { "hexValue": "30", "id": 86301, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11565:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "11552:14:133" }, { "assignments": [86304], "declarations": [{ "constant": false, "id": 86304, "mutability": "mutable", "name": "hi", "nameLocation": "11584:2:133", "nodeType": "VariableDeclaration", "scope": 86343, "src": "11576:10:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86303, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11576:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "id": 86307, "initialValue": { "expression": { "id": 86305, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "11589:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "11589:16:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "11576:29:133" }, { "body": { "id": 86339, "nodeType": "Block", "src": "11631:208:133", "statements": [{ "assignments": [86312], "declarations": [{ "constant": false, "id": 86312, "mutability": "mutable", "name": "mid", "nameLocation": "11653:3:133", "nodeType": "VariableDeclaration", "scope": 86339, "src": "11645:11:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86311, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11645:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "id": 86319, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86318, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "components": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86313, "name": "lo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86300, "src": "11660:2:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 86314, "name": "hi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86304, "src": "11665:2:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11660:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "id": 86316, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "11659:9:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "hexValue": "32", "id": 86317, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11671:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "src": "11659:13:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "11645:27:133" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86325, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "baseExpression": { "id": 86320, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "11690:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86322, "indexExpression": { "id": 86321, "name": "mid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86312, "src": "11700:3:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11690:14:133", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_storage", "typeString": "struct Types.OutputProposal storage ref" } }, "id": 86323, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "l2BlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 104306, "src": "11690:28:133", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "id": 86324, "name": "_l2BlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86278, "src": "11721:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11690:45:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 86337, "nodeType": "Block", "src": "11788:41:133", "statements": [{ "expression": { "id": 86335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86333, "name": "hi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86304, "src": "11806:2:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 86334, "name": "mid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86312, "src": "11811:3:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11806:8:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 86336, "nodeType": "ExpressionStatement", "src": "11806:8:133" }] }, "id": 86338, "nodeType": "IfStatement", "src": "11686:143:133", "trueBody": { "id": 86332, "nodeType": "Block", "src": "11737:45:133", "statements": [{ "expression": { "id": 86330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86326, "name": "lo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86300, "src": "11755:2:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86327, "name": "mid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86312, "src": "11760:3:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "hexValue": "31", "id": 86328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11766:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "11760:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11755:12:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 86331, "nodeType": "ExpressionStatement", "src": "11755:12:133" }] } }] }, "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86310, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86308, "name": "lo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86300, "src": "11622:2:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "id": 86309, "name": "hi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86304, "src": "11627:2:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11622:7:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 86340, "nodeType": "WhileStatement", "src": "11615:224:133" }, { "expression": { "id": 86341, "name": "lo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86300, "src": "11856:2:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 86282, "id": 86342, "nodeType": "Return", "src": "11849:9:133" }] }, "documentation": { "id": 86276, "nodeType": "StructuredDocumentation", "src": "10595:369:133", "text": "@notice Returns the index of the L2 output that checkpoints a given L2 block number.\n         Uses a binary search to find the first output greater than or equal to the given\n         block.\n @param _l2BlockNumber L2 block number to find a checkpoint for.\n @return Index of the first checkpoint that commits to the given L2 block number." }, "functionSelector": "7f006420", "implemented": true, "kind": "function", "modifiers": [], "name": "getL2OutputIndexAfter", "nameLocation": "10978:21:133", "parameters": { "id": 86279, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86278, "mutability": "mutable", "name": "_l2BlockNumber", "nameLocation": "11008:14:133", "nodeType": "VariableDeclaration", "scope": 86344, "src": "11000:22:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86277, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11000:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "10999:24:133" }, "returnParameters": { "id": 86282, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86281, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86344, "src": "11045:7:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86280, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11045:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "11044:9:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 86360, "nodeType": "FunctionDefinition", "src": "12228:174:133", "nodes": [], "body": { "id": 86359, "nodeType": "Block", "src": "12330:72:133", "nodes": [], "statements": [{ "expression": { "baseExpression": { "id": 86353, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "12347:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86357, "indexExpression": { "arguments": [{ "id": 86355, "name": "_l2BlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86347, "src": "12379:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 86354, "name": "getL2OutputIndexAfter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86344, "src": "12357:21:133", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, "id": 86356, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12357:37:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12347:48:133", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_storage", "typeString": "struct Types.OutputProposal storage ref" } }, "functionReturnParameters": 86352, "id": 86358, "nodeType": "Return", "src": "12340:55:133" }] }, "documentation": { "id": 86345, "nodeType": "StructuredDocumentation", "src": "11871:352:133", "text": "@notice Returns the L2 output proposal that checkpoints a given L2 block number.\n         Uses a binary search to find the first output greater than or equal to the given\n         block.\n @param _l2BlockNumber L2 block number to find a checkpoint for.\n @return First checkpoint that commits to the given L2 block number." }, "functionSelector": "cf8e5cf0", "implemented": true, "kind": "function", "modifiers": [], "name": "getL2OutputAfter", "nameLocation": "12237:16:133", "parameters": { "id": 86348, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86347, "mutability": "mutable", "name": "_l2BlockNumber", "nameLocation": "12262:14:133", "nodeType": "VariableDeclaration", "scope": 86360, "src": "12254:22:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86346, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12254:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "12253:24:133" }, "returnParameters": { "id": 86352, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86351, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86360, "src": "12301:27:133", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_memory_ptr", "typeString": "struct Types.OutputProposal" }, "typeName": { "id": 86350, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86349, "name": "Types.OutputProposal", "nodeType": "IdentifierPath", "referencedDeclaration": 104307, "src": "12301:20:133" }, "referencedDeclaration": 104307, "src": "12301:20:133", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_storage_ptr", "typeString": "struct Types.OutputProposal" } }, "visibility": "internal" }], "src": "12300:29:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 86372, "nodeType": "FunctionDefinition", "src": "12608:105:133", "nodes": [], "body": { "id": 86371, "nodeType": "Block", "src": "12669:44:133", "nodes": [], "statements": [{ "expression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86369, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86366, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "12686:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86367, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "12686:16:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "hexValue": "31", "id": 86368, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12705:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "12686:20:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 86365, "id": 86370, "nodeType": "Return", "src": "12679:27:133" }] }, "documentation": { "id": 86361, "nodeType": "StructuredDocumentation", "src": "12408:195:133", "text": "@notice Returns the number of outputs that have been proposed.\n         Will revert if no outputs have been proposed yet.\n @return The number of outputs that have been proposed." }, "functionSelector": "69f16eec", "implemented": true, "kind": "function", "modifiers": [], "name": "latestOutputIndex", "nameLocation": "12617:17:133", "parameters": { "id": 86362, "nodeType": "ParameterList", "parameters": [], "src": "12634:2:133" }, "returnParameters": { "id": 86365, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86364, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86372, "src": "12660:7:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86363, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12660:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "12659:9:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 86382, "nodeType": "FunctionDefinition", "src": "12849:97:133", "nodes": [], "body": { "id": 86381, "nodeType": "Block", "src": "12906:40:133", "nodes": [], "statements": [{ "expression": { "expression": { "id": 86378, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "12923:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "12923:16:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 86377, "id": 86380, "nodeType": "Return", "src": "12916:23:133" }] }, "documentation": { "id": 86373, "nodeType": "StructuredDocumentation", "src": "12719:125:133", "text": "@notice Returns the index of the next output to be proposed.\n @return The index of the next output to be proposed." }, "functionSelector": "6abcf563", "implemented": true, "kind": "function", "modifiers": [], "name": "nextOutputIndex", "nameLocation": "12858:15:133", "parameters": { "id": 86374, "nodeType": "ParameterList", "parameters": [], "src": "12873:2:133" }, "returnParameters": { "id": 86377, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86376, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86382, "src": "12897:7:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86375, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12897:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "12896:9:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 86403, "nodeType": "FunctionDefinition", "src": "13212:174:133", "nodes": [], "body": { "id": 86402, "nodeType": "Block", "src": "13271:115:133", "nodes": [], "statements": [{ "expression": { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86388, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "13288:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "13288:16:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 86390, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13308:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "13288:21:133", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "expression": { "baseExpression": { "id": 86393, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "13334:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86398, "indexExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86394, "name": "l2Outputs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85947, "src": "13344:9:133", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_OutputProposal_$104307_storage_$dyn_storage", "typeString": "struct Types.OutputProposal storage ref[] storage ref" } }, "id": 86395, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "13344:16:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "hexValue": "31", "id": 86396, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13363:1:133", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "13344:20:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "13334:31:133", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_storage", "typeString": "struct Types.OutputProposal storage ref" } }, "id": 86399, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "l2BlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 104306, "src": "13334:45:133", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, "id": 86400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "13288:91:133", "trueExpression": { "id": 86392, "name": "startingBlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85939, "src": "13312:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 86387, "id": 86401, "nodeType": "Return", "src": "13281:98:133" }] }, "documentation": { "id": 86383, "nodeType": "StructuredDocumentation", "src": "12952:255:133", "text": "@notice Returns the block number of the latest submitted L2 output proposal.\n         If no proposals been submitted yet then this function will return the starting\n         block number.\n @return Latest submitted L2 block number." }, "functionSelector": "4599c788", "implemented": true, "kind": "function", "modifiers": [], "name": "latestBlockNumber", "nameLocation": "13221:17:133", "parameters": { "id": 86384, "nodeType": "ParameterList", "parameters": [], "src": "13238:2:133" }, "returnParameters": { "id": 86387, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86386, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86403, "src": "13262:7:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86385, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13262:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "13261:9:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 86415, "nodeType": "FunctionDefinition", "src": "13524:121:133", "nodes": [], "body": { "id": 86414, "nodeType": "Block", "src": "13581:64:133", "nodes": [], "statements": [{ "expression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86412, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [], "expression": { "argumentTypes": [], "id": 86409, "name": "latestBlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86403, "src": "13598:17:133", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, "id": 86410, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13598:19:133", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 86411, "name": "submissionInterval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85950, "src": "13620:18:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "13598:40:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 86408, "id": 86413, "nodeType": "Return", "src": "13591:47:133" }] }, "documentation": { "id": 86404, "nodeType": "StructuredDocumentation", "src": "13392:127:133", "text": "@notice Computes the block number of the next L2 block that needs to be checkpointed.\n @return Next L2 block number." }, "functionSelector": "dcec3348", "implemented": true, "kind": "function", "modifiers": [], "name": "nextBlockNumber", "nameLocation": "13533:15:133", "parameters": { "id": 86405, "nodeType": "ParameterList", "parameters": [], "src": "13548:2:133" }, "returnParameters": { "id": 86408, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86407, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86415, "src": "13572:7:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86406, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13572:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "13571:9:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 86434, "nodeType": "FunctionDefinition", "src": "13854:180:133", "nodes": [], "body": { "id": 86433, "nodeType": "Block", "src": "13936:98:133", "nodes": [], "statements": [{ "expression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86431, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86423, "name": "startingTimestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85942, "src": "13953:17:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "components": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "components": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86424, "name": "_l2BlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86418, "src": "13975:14:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "id": 86425, "name": "startingBlockNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85939, "src": "13992:19:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "13975:36:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "id": 86427, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "13974:38:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "id": 86428, "name": "l2BlockTime", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85953, "src": "14015:11:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "13974:52:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "id": 86430, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "13973:54:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "13953:74:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 86422, "id": 86432, "nodeType": "Return", "src": "13946:81:133" }] }, "documentation": { "id": 86416, "nodeType": "StructuredDocumentation", "src": "13651:198:133", "text": "@notice Returns the L2 timestamp corresponding to a given L2 block number.\n @param _l2BlockNumber The L2 block number of the target block.\n @return L2 timestamp of the given block." }, "functionSelector": "d1de856c", "implemented": true, "kind": "function", "modifiers": [], "name": "computeL2Timestamp", "nameLocation": "13863:18:133", "parameters": { "id": 86419, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86418, "mutability": "mutable", "name": "_l2BlockNumber", "nameLocation": "13890:14:133", "nodeType": "VariableDeclaration", "scope": 86434, "src": "13882:22:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86417, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13882:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "13881:24:133" }, "returnParameters": { "id": 86422, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86421, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86434, "src": "13927:7:133", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86420, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13927:7:133", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "13926:9:133" }, "scope": 86435, "stateMutability": "view", "virtual": false, "visibility": "public" }], "abstract": false, "baseContracts": [{ "baseName": { "id": 85933, "name": "Initializable", "nodeType": "IdentifierPath", "referencedDeclaration": 49678, "src": "638:13:133" }, "id": 85934, "nodeType": "InheritanceSpecifier", "src": "638:13:133" }, { "baseName": { "id": 85935, "name": "ISemver", "nodeType": "IdentifierPath", "referencedDeclaration": 109417, "src": "653:7:133" }, "id": 85936, "nodeType": "InheritanceSpecifier", "src": "653:7:133" }], "canonicalName": "L2OutputOracle", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 85932, "nodeType": "StructuredDocumentation", "src": "304:307:133", "text": "@custom:proxied\n @title L2OutputOracle\n @notice The L2OutputOracle contains an array of L2 state outputs, where each output is a\n         commitment to the state of the L2 chain. Other contracts like the OptimismPortal use\n         these outputs to verify information about the state of L2." }, "fullyImplemented": true, "linearizedBaseContracts": [86435, 109417, 49678], "name": "L2OutputOracle", "nameLocation": "620:14:133", "scope": 86436, "usedErrors": [] }], "license": "MIT" }, "id": 133 }
