{ "abi": [{ "type": "constructor", "inputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "create", "inputs": [{ "name": "_gameType", "type": "uint32", "internalType": "GameType" }, { "name": "_rootClaim", "type": "bytes32", "internalType": "Claim" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" }], "outputs": [{ "name": "proxy_", "type": "address", "internalType": "contract IDisputeGame" }], "stateMutability": "payable" }, { "type": "function", "name": "findLatestGames", "inputs": [{ "name": "_gameType", "type": "uint32", "internalType": "GameType" }, { "name": "_start", "type": "uint256", "internalType": "uint256" }, { "name": "_n", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "games_", "type": "tuple[]", "internalType": "struct IDisputeGameFactory.GameSearchResult[]", "components": [{ "name": "index", "type": "uint256", "internalType": "uint256" }, { "name": "metadata", "type": "bytes32", "internalType": "GameId" }, { "name": "timestamp", "type": "uint64", "internalType": "Timestamp" }, { "name": "rootClaim", "type": "bytes32", "internalType": "Claim" }, { "name": "extraData", "type": "bytes", "internalType": "bytes" }] }], "stateMutability": "view" }, { "type": "function", "name": "gameAtIndex", "inputs": [{ "name": "_index", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "gameType_", "type": "uint32", "internalType": "GameType" }, { "name": "timestamp_", "type": "uint64", "internalType": "Timestamp" }, { "name": "proxy_", "type": "address", "internalType": "contract IDisputeGame" }], "stateMutability": "view" }, { "type": "function", "name": "gameCount", "inputs": [], "outputs": [{ "name": "gameCount_", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "gameImpls", "inputs": [{ "name": "", "type": "uint32", "internalType": "GameType" }], "outputs": [{ "name": "", "type": "address", "internalType": "contract IDisputeGame" }], "stateMutability": "view" }, { "type": "function", "name": "games", "inputs": [{ "name": "_gameType", "type": "uint32", "internalType": "GameType" }, { "name": "_rootClaim", "type": "bytes32", "internalType": "Claim" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" }], "outputs": [{ "name": "proxy_", "type": "address", "internalType": "contract IDisputeGame" }, { "name": "timestamp_", "type": "uint64", "internalType": "Timestamp" }], "stateMutability": "view" }, { "type": "function", "name": "getGameUUID", "inputs": [{ "name": "_gameType", "type": "uint32", "internalType": "GameType" }, { "name": "_rootClaim", "type": "bytes32", "internalType": "Claim" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" }], "outputs": [{ "name": "uuid_", "type": "bytes32", "internalType": "Hash" }], "stateMutability": "pure" }, { "type": "function", "name": "initBonds", "inputs": [{ "name": "", "type": "uint32", "internalType": "GameType" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "initialize", "inputs": [{ "name": "_owner", "type": "address", "internalType": "address" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "owner", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "renounceOwnership", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setImplementation", "inputs": [{ "name": "_gameType", "type": "uint32", "internalType": "GameType" }, { "name": "_impl", "type": "address", "internalType": "contract IDisputeGame" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setInitBond", "inputs": [{ "name": "_gameType", "type": "uint32", "internalType": "GameType" }, { "name": "_initBond", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "transferOwnership", "inputs": [{ "name": "newOwner", "type": "address", "internalType": "address" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "version", "inputs": [], "outputs": [{ "name": "", "type": "string", "internalType": "string" }], "stateMutability": "view" }, { "type": "event", "name": "DisputeGameCreated", "inputs": [{ "name": "disputeProxy", "type": "address", "indexed": true, "internalType": "address" }, { "name": "gameType", "type": "uint32", "indexed": true, "internalType": "GameType" }, { "name": "rootClaim", "type": "bytes32", "indexed": true, "internalType": "Claim" }], "anonymous": false }, { "type": "event", "name": "ImplementationSet", "inputs": [{ "name": "impl", "type": "address", "indexed": true, "internalType": "address" }, { "name": "gameType", "type": "uint32", "indexed": true, "internalType": "GameType" }], "anonymous": false }, { "type": "event", "name": "InitBondUpdated", "inputs": [{ "name": "gameType", "type": "uint32", "indexed": true, "internalType": "GameType" }, { "name": "newBond", "type": "uint256", "indexed": true, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "Initialized", "inputs": [{ "name": "version", "type": "uint8", "indexed": false, "internalType": "uint8" }], "anonymous": false }, { "type": "event", "name": "OwnershipTransferred", "inputs": [{ "name": "previousOwner", "type": "address", "indexed": true, "internalType": "address" }, { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }, { "type": "error", "name": "GameAlreadyExists", "inputs": [{ "name": "uuid", "type": "bytes32", "internalType": "Hash" }] }, { "type": "error", "name": "IncorrectBondAmount", "inputs": [] }, { "type": "error", "name": "NoImplementation", "inputs": [{ "name": "gameType", "type": "uint32", "internalType": "GameType" }] }], "bytecode": { "object": "0x60806040523480156200001157600080fd5b506200001e600062000024565b62000292565b600054610100900460ff1615808015620000455750600054600160ff909116105b8062000075575062000062306200016260201b62000cdd1760201c565b15801562000075575060005460ff166001145b620000de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000102576000805461ff0019166101001790555b6200010c62000171565b6200011782620001d9565b80156200015e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054610100900460ff16620001cd5760405162461bcd60e51b815260206004820152602b60248201526000805160206200185283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000d5565b620001d76200022b565b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16620002875760405162461bcd60e51b815260206004820152602b60248201526000805160206200185283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000d5565b620001d733620001d9565b6115b080620002a26000396000f3fe6080604052600436106100e85760003560e01c80636593dc6e1161008a57806396cd97201161005957806396cd972014610313578063bb8aa1fc14610333578063c4d66de814610394578063f2fde38b146103b457600080fd5b80636593dc6e14610293578063715018a6146102c057806382ecf2f6146102d55780638da5cb5b146102e857600080fd5b8063254bd683116100c6578063254bd6831461019c5780634d1975b4146101c957806354fd4d50146101e85780635f0150cb1461023e57600080fd5b806314f6b1a3146100ed5780631b685b9e1461010f5780631e3342401461017c575b600080fd5b3480156100f957600080fd5b5061010d6101083660046110bf565b6103d4565b005b34801561011b57600080fd5b5061015261012a3660046110f6565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018857600080fd5b5061010d610197366004611111565b61045e565b3480156101a857600080fd5b506101bc6101b736600461113b565b6104aa565b60405161017391906111e8565b3480156101d557600080fd5b506068545b604051908152602001610173565b3480156101f457600080fd5b506102316040518060400160405280600581526020017f302e362e3000000000000000000000000000000000000000000000000000000081525081565b60405161017391906112a5565b34801561024a57600080fd5b5061025e6102593660046112b8565b6106ee565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835267ffffffffffffffff909116602083015201610173565b34801561029f57600080fd5b506101da6102ae3660046110f6565b60666020526000908152604090205481565b3480156102cc57600080fd5b5061010d610741565b6101526102e33660046112b8565b610755565b3480156102f457600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610152565b34801561031f57600080fd5b506101da61032e3660046112b8565b6109ef565b34801561033f57600080fd5b5061035361034e36600461133f565b610a28565b6040805163ffffffff909416845267ffffffffffffffff909216602084015273ffffffffffffffffffffffffffffffffffffffff1690820152606001610173565b3480156103a057600080fd5b5061010d6103af366004611358565b610a8a565b3480156103c057600080fd5b5061010d6103cf366004611358565b610c26565b6103dc610cf9565b63ffffffff821660008181526065602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155905190917fff513d80e2c7fa487608f70a618dfbc0cf415699dc69588c747e8c71566c88de91a35050565b610466610cf9565b63ffffffff8216600081815260666020526040808220849055518392917f74d6665c4b26d5596a5aa13d3014e0c06af4d322075a797f87b03cd4c5bc91ca91a35050565b606854606090831015806104bc575081155b6106e7575060408051600583901b8101602001909152825b8381116106e5576000606882815481106104f0576104f0611375565b600091825260209091200154905060e081901c60a082901c67ffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff831663ffffffff891683036106b6576001865101865260008173ffffffffffffffffffffffffffffffffffffffff1663609d33346040518163ffffffff1660e01b8152600401600060405180830381865afa15801561058a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105d091908101906113d3565b905060008273ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561061f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610643919061149e565b90506040518060a001604052808881526020018781526020018567ffffffffffffffff168152602001828152602001838152508860018a5161068591906114b7565b8151811061069557610695611375565b6020026020010181905250888851106106b3575050505050506106e5565b50505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191506104d49050565b505b9392505050565b60008060006106ff878787876109ef565b60009081526067602052604090205473ffffffffffffffffffffffffffffffffffffffff81169860a09190911c67ffffffffffffffff16975095505050505050565b610749610cf9565b6107536000610d7a565b565b63ffffffff841660009081526065602052604081205473ffffffffffffffffffffffffffffffffffffffff16806107c5576040517f031c6de400000000000000000000000000000000000000000000000000000000815263ffffffff871660048201526024015b60405180910390fd5b63ffffffff86166000908152606660205260409020543414610813576040517f8620aa1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108206001436114b7565b40905061088a338783888860405160200161083f9594939291906114f5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905273ffffffffffffffffffffffffffffffffffffffff841690610df1565b92508273ffffffffffffffffffffffffffffffffffffffff16638129fc1c346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108d457600080fd5b505af11580156108e8573d6000803e3d6000fd5b505050505060006108fb888888886109ef565b60008181526067602052604090205490915015610947576040517f014f6fe5000000000000000000000000000000000000000000000000000000008152600481018290526024016107bc565b60004260a01b60e08a901b178517600083815260676020526040808220839055606880546001810182559083527fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c220977530183905551919250899163ffffffff8c169173ffffffffffffffffffffffffffffffffffffffff8916917f5b565efe82411da98814f356d0e7bcb8f0219b8d970307c5afb4a6903a8b2e359190a450505050949350505050565b600084848484604051602001610a089493929190611542565b604051602081830303815290604052805190602001209050949350505050565b6000806000610a7d60688581548110610a4357610a43611375565b906000526020600020015460e081901c9160a082901c67ffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff1690565b9196909550909350915050565b600054610100900460ff1615808015610aaa5750600054600160ff909116105b80610ac45750303b158015610ac4575060005460ff166001145b610b50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107bc565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610bae57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610bb6610dff565b610bbf82610d7a565b8015610c2257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b610c2e610cf9565b73ffffffffffffffffffffffffffffffffffffffff8116610cd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107bc565b610cda81610d7a565b50565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff163314610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bc565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006106e760008484610e9e565b600054610100900460ff16610e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107bc565b610753610fe4565b600060608203516040830351602084035184518060208701018051600283016c5af43d3d93803e606057fd5bf3895289600d8a035278593da1005b363d3d373d3d3d3d610000806062363936013d738160481b1760218a03527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff603a8a035272fd6100003d81600a3d39f336602c57343d527f6062820160781b1761ff9e82106059018a03528060f01b8352606c8101604c8a038cf097505086610f6a5763301164256000526004601cfd5b905285527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08501527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa09092019190915292915050565b600054610100900460ff1661107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107bc565b61075333610d7a565b803563ffffffff8116811461109857600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610cda57600080fd5b600080604083850312156110d257600080fd5b6110db83611084565b915060208301356110eb8161109d565b809150509250929050565b60006020828403121561110857600080fd5b6106e782611084565b6000806040838503121561112457600080fd5b61112d83611084565b946020939093013593505050565b60008060006060848603121561115057600080fd5b61115984611084565b95602085013595506040909401359392505050565b60005b83811015611189578181015183820152602001611171565b83811115611198576000848401525b50505050565b600081518084526111b681602086016020860161116e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015611297578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001855281518051845287810151888501528681015167ffffffffffffffff16878501526060808201519085015260809081015160a0918501829052906112838186018361119e565b96890196945050509086019060010161120f565b509098975050505050505050565b6020815260006106e7602083018461119e565b600080600080606085870312156112ce57600080fd5b6112d785611084565b935060208501359250604085013567ffffffffffffffff808211156112fb57600080fd5b818701915087601f83011261130f57600080fd5b81358181111561131e57600080fd5b88602082850101111561133057600080fd5b95989497505060200194505050565b60006020828403121561135157600080fd5b5035919050565b60006020828403121561136a57600080fd5b81356106e78161109d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156113e557600080fd5b815167ffffffffffffffff808211156113fd57600080fd5b818401915084601f83011261141157600080fd5b815181811115611423576114236113a4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611469576114696113a4565b8160405282815287602084870101111561148257600080fd5b61149383602083016020880161116e565b979650505050505050565b6000602082840312156114b057600080fd5b5051919050565b6000828210156114f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681528460148201528360348201528183605483013760009101605401908152949350505050565b63ffffffff8516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101939250505056fea164736f6c634300080f000a496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069", "sourceMap": "989:7456:163:-:0;;;1965:74;;;;;;;;;-1:-1:-1;2010:22:163::1;2029:1;2010:10;:22::i;:::-;989:7456:::0;;2136:124;3111:19:27;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:27;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;;3220:44;3258:4;3220:29;;;;;:44;;:::i;:::-;3219:45;:66;;;;-1:-1:-1;3268:12:27;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:27;;216:2:357;3157:201:27;;;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;;3157:201:27;;;;;;;;;3368:12;:16;;-1:-1:-1;;3368:16:27;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:27;;;;;3394:65;2201:16:163::1;:14;:16::i;:::-;2227:26;2246:6:::0;2227:18:::1;:26::i;:::-;3483:14:27::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:27;;;3553:14;;-1:-1:-1;581:36:357;;3553:14:27;;569:2:357;554:18;3553:14:27;;;;;;;3479:99;3101:483;2136:124:163;:::o;1186:320:33:-;-1:-1:-1;;;;;1476:19:33;;:23;;;1186:320::o;1003:95:26:-;4910:13:27;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:27;;830:2:357;4902:69:27;;;812:21:357;869:2;849:18;;;842:30;-1:-1:-1;;;;;;;;;;;888:18:357;;;881:62;-1:-1:-1;;;959:18:357;;;952:41;1010:19;;4902:69:27;628:407:357;4902:69:27;1065:26:26::1;:24;:26::i;:::-;1003:95::o:0;2673:187::-;2765:6;;;-1:-1:-1;;;;;2781:17:26;;;-1:-1:-1;;;;;;2781:17:26;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;1104:111::-;4910:13:27;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:27;;830:2:357;4902:69:27;;;812:21:357;869:2;849:18;;;842:30;-1:-1:-1;;;;;;;;;;;888:18:357;;;881:62;-1:-1:-1;;;959:18:357;;;952:41;1010:19;;4902:69:27;628:407:357;4902:69:27;1176:32:26::1;929:10:34::0;1176:18:26::1;:32::i;628:407:357:-:0;989:7456:163;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x6080604052600436106100e85760003560e01c80636593dc6e1161008a57806396cd97201161005957806396cd972014610313578063bb8aa1fc14610333578063c4d66de814610394578063f2fde38b146103b457600080fd5b80636593dc6e14610293578063715018a6146102c057806382ecf2f6146102d55780638da5cb5b146102e857600080fd5b8063254bd683116100c6578063254bd6831461019c5780634d1975b4146101c957806354fd4d50146101e85780635f0150cb1461023e57600080fd5b806314f6b1a3146100ed5780631b685b9e1461010f5780631e3342401461017c575b600080fd5b3480156100f957600080fd5b5061010d6101083660046110bf565b6103d4565b005b34801561011b57600080fd5b5061015261012a3660046110f6565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018857600080fd5b5061010d610197366004611111565b61045e565b3480156101a857600080fd5b506101bc6101b736600461113b565b6104aa565b60405161017391906111e8565b3480156101d557600080fd5b506068545b604051908152602001610173565b3480156101f457600080fd5b506102316040518060400160405280600581526020017f302e362e3000000000000000000000000000000000000000000000000000000081525081565b60405161017391906112a5565b34801561024a57600080fd5b5061025e6102593660046112b8565b6106ee565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835267ffffffffffffffff909116602083015201610173565b34801561029f57600080fd5b506101da6102ae3660046110f6565b60666020526000908152604090205481565b3480156102cc57600080fd5b5061010d610741565b6101526102e33660046112b8565b610755565b3480156102f457600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610152565b34801561031f57600080fd5b506101da61032e3660046112b8565b6109ef565b34801561033f57600080fd5b5061035361034e36600461133f565b610a28565b6040805163ffffffff909416845267ffffffffffffffff909216602084015273ffffffffffffffffffffffffffffffffffffffff1690820152606001610173565b3480156103a057600080fd5b5061010d6103af366004611358565b610a8a565b3480156103c057600080fd5b5061010d6103cf366004611358565b610c26565b6103dc610cf9565b63ffffffff821660008181526065602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155905190917fff513d80e2c7fa487608f70a618dfbc0cf415699dc69588c747e8c71566c88de91a35050565b610466610cf9565b63ffffffff8216600081815260666020526040808220849055518392917f74d6665c4b26d5596a5aa13d3014e0c06af4d322075a797f87b03cd4c5bc91ca91a35050565b606854606090831015806104bc575081155b6106e7575060408051600583901b8101602001909152825b8381116106e5576000606882815481106104f0576104f0611375565b600091825260209091200154905060e081901c60a082901c67ffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff831663ffffffff891683036106b6576001865101865260008173ffffffffffffffffffffffffffffffffffffffff1663609d33346040518163ffffffff1660e01b8152600401600060405180830381865afa15801561058a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526105d091908101906113d3565b905060008273ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561061f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610643919061149e565b90506040518060a001604052808881526020018781526020018567ffffffffffffffff168152602001828152602001838152508860018a5161068591906114b7565b8151811061069557610695611375565b6020026020010181905250888851106106b3575050505050506106e5565b50505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191506104d49050565b505b9392505050565b60008060006106ff878787876109ef565b60009081526067602052604090205473ffffffffffffffffffffffffffffffffffffffff81169860a09190911c67ffffffffffffffff16975095505050505050565b610749610cf9565b6107536000610d7a565b565b63ffffffff841660009081526065602052604081205473ffffffffffffffffffffffffffffffffffffffff16806107c5576040517f031c6de400000000000000000000000000000000000000000000000000000000815263ffffffff871660048201526024015b60405180910390fd5b63ffffffff86166000908152606660205260409020543414610813576040517f8620aa1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108206001436114b7565b40905061088a338783888860405160200161083f9594939291906114f5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905273ffffffffffffffffffffffffffffffffffffffff841690610df1565b92508273ffffffffffffffffffffffffffffffffffffffff16638129fc1c346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108d457600080fd5b505af11580156108e8573d6000803e3d6000fd5b505050505060006108fb888888886109ef565b60008181526067602052604090205490915015610947576040517f014f6fe5000000000000000000000000000000000000000000000000000000008152600481018290526024016107bc565b60004260a01b60e08a901b178517600083815260676020526040808220839055606880546001810182559083527fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c220977530183905551919250899163ffffffff8c169173ffffffffffffffffffffffffffffffffffffffff8916917f5b565efe82411da98814f356d0e7bcb8f0219b8d970307c5afb4a6903a8b2e359190a450505050949350505050565b600084848484604051602001610a089493929190611542565b604051602081830303815290604052805190602001209050949350505050565b6000806000610a7d60688581548110610a4357610a43611375565b906000526020600020015460e081901c9160a082901c67ffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff1690565b9196909550909350915050565b600054610100900460ff1615808015610aaa5750600054600160ff909116105b80610ac45750303b158015610ac4575060005460ff166001145b610b50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107bc565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610bae57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610bb6610dff565b610bbf82610d7a565b8015610c2257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b610c2e610cf9565b73ffffffffffffffffffffffffffffffffffffffff8116610cd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107bc565b610cda81610d7a565b50565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff163314610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bc565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006106e760008484610e9e565b600054610100900460ff16610e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107bc565b610753610fe4565b600060608203516040830351602084035184518060208701018051600283016c5af43d3d93803e606057fd5bf3895289600d8a035278593da1005b363d3d373d3d3d3d610000806062363936013d738160481b1760218a03527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff603a8a035272fd6100003d81600a3d39f336602c57343d527f6062820160781b1761ff9e82106059018a03528060f01b8352606c8101604c8a038cf097505086610f6a5763301164256000526004601cfd5b905285527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08501527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa09092019190915292915050565b600054610100900460ff1661107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107bc565b61075333610d7a565b803563ffffffff8116811461109857600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610cda57600080fd5b600080604083850312156110d257600080fd5b6110db83611084565b915060208301356110eb8161109d565b809150509250929050565b60006020828403121561110857600080fd5b6106e782611084565b6000806040838503121561112457600080fd5b61112d83611084565b946020939093013593505050565b60008060006060848603121561115057600080fd5b61115984611084565b95602085013595506040909401359392505050565b60005b83811015611189578181015183820152602001611171565b83811115611198576000848401525b50505050565b600081518084526111b681602086016020860161116e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015611297578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001855281518051845287810151888501528681015167ffffffffffffffff16878501526060808201519085015260809081015160a0918501829052906112838186018361119e565b96890196945050509086019060010161120f565b509098975050505050505050565b6020815260006106e7602083018461119e565b600080600080606085870312156112ce57600080fd5b6112d785611084565b935060208501359250604085013567ffffffffffffffff808211156112fb57600080fd5b818701915087601f83011261130f57600080fd5b81358181111561131e57600080fd5b88602082850101111561133057600080fd5b95989497505060200194505050565b60006020828403121561135157600080fd5b5035919050565b60006020828403121561136a57600080fd5b81356106e78161109d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156113e557600080fd5b815167ffffffffffffffff808211156113fd57600080fd5b818401915084601f83011261141157600080fd5b815181811115611423576114236113a4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611469576114696113a4565b8160405282815287602084870101111561148257600080fd5b61149383602083016020880161116e565b979650505050505050565b6000602082840312156114b057600080fd5b5051919050565b6000828210156114f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681528460148201528360348201528183605483013760009101605401908152949350505050565b63ffffffff8516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101939250505056fea164736f6c634300080f000a", "sourceMap": "989:7456:163:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8027:190;;;;;;;;;;-1:-1:-1;8027:190:163;;;;;:::i;:::-;;:::i;:::-;;1338:50;;;;;;;;;;-1:-1:-1;1338:50:163;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1237:42:357;1225:55;;;1207:74;;1195:2;1180:18;1338:50:163;;;;;;;;8263:180;;;;;;;;;;-1:-1:-1;8263:180:163;;;;;:::i;:::-;;:::i;6052:1929::-;;;;;;;;;;-1:-1:-1;6052:1929:163;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2306:117::-;;;;;;;;;;-1:-1:-1;2393:16:163;:23;2306:117;;;4100:25:357;;;4088:2;4073:18;2306:117:163;3954:177:357;1251:40:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2469:342::-;;;;;;;;;;-1:-1:-1;2469:342:163;;;;;:::i;:::-;;:::i;:::-;;;;5437:42:357;5425:55;;;5407:74;;5529:18;5517:31;;;5512:2;5497:18;;5490:59;5380:18;2469:342:163;5179:376:357;1435:45:163;;;;;;;;;;-1:-1:-1;1435:45:163;;;;;:::i;:::-;;;;;;;;;;;;;;2071:101:26;;;;;;;;;;;;;:::i;3138:2553:163:-;;;;;;:::i;:::-;;:::i;1441:85:26:-;;;;;;;;;;-1:-1:-1;1513:6:26;;;;1441:85;;5737:269:163;;;;;;;;;;-1:-1:-1;5737:269:163;;;;;:::i;:::-;;:::i;2857:235::-;;;;;;;;;;-1:-1:-1;2857:235:163;;;;;:::i;:::-;;:::i;:::-;;;;6501:10:357;6489:23;;;6471:42;;6561:18;6549:31;;;6544:2;6529:18;;6522:59;6629:42;6617:55;6597:18;;;6590:83;6459:2;6444:18;2857:235:163;6185:494:357;2136:124:163;;;;;;;;;;-1:-1:-1;2136:124:163;;;;;:::i;:::-;;:::i;2321:198:26:-;;;;;;;;;;-1:-1:-1;2321:198:26;;;;;:::i;:::-;;:::i;8027:190:163:-;1334:13:26;:11;:13::i;:::-;8123:20:163::1;::::0;::::1;;::::0;;;:9:::1;:20;::::0;;;;;:28;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;8166:44;;8123:28;;8166:44:::1;::::0;::::1;8027:190:::0;;:::o;8263:180::-;1334:13:26;:11;:13::i;:::-;8352:20:163::1;::::0;::::1;;::::0;;;:9:::1;:20;::::0;;;;;:32;;;8399:37;8375:9;;8352:20;8399:37:::1;::::0;::::1;8263:180:::0;;:::o;6052:1929::-;6384:16;:23;6202:32;;6374:33;;;;:44;;-1:-1:-1;6411:7:163;;6374:44;6420:13;6370:63;-1:-1:-1;6690:4:163;6684:11;;6747:4;6743:13;;;6721:37;;6737:4;6721:37;6708:51;;;6891:6;6874:1101;6914:6;6909:1;:11;6874:1101;;6937:9;6949:16;6966:1;6949:19;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;1277:3:174;1273:17;;;1325:3;1321:17;;;1340:18;1317:42;1399;1386:56;;7093:13:163;;;7075:33;;7071:834;;7433:4;7424:6;7418:13;7414:24;7406:6;7399:40;7475:22;7500:5;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7475:42;;7535:15;7553:5;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7535:35;;7616:226;;;;;;;;7662:1;7616:226;;;;7695:2;7616:226;;;;7730:9;7616:226;;;;;;7772:9;7616:226;;;;7814:9;7616:226;;;7588:6;7611:1;7595:6;:13;:17;;;;:::i;:::-;7588:25;;;;;;;;:::i;:::-;;;;;;:254;;;;7881:2;7864:6;:13;:19;7860:30;;7885:5;;;;;;;;7860:30;7110:795;;7071:834;-1:-1:-1;;7947:3:163;;;;;-1:-1:-1;6874:1101:163;;-1:-1:-1;6874:1101:163;;;6052:1929;;;;;;:::o;2469:342::-;2626:19;2647:20;2683:9;2695:46;2707:9;2718:10;2730;;2695:11;:46::i;:::-;2776:19;;;;:13;:19;;;;;;1399:42:174;1386:56;;;1325:3;1321:17;;;;1340:18;1317:42;;-1:-1:-1;2751:53:163;-1:-1:-1;;;;;;2469:342:163:o;2071:101:26:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;3138:2553:163:-;3424:20;;;3299:19;3424:20;;;:9;:20;;;;;;;;;3539:67;;3579:27;;;;;8982:10:357;8970:23;;3579:27:163;;;8952:42:357;8925:18;;3579:27:163;;;;;;;;3539:67;3701:20;;;;;;;:9;:20;;;;;;3688:9;:33;3684:67;;3730:21;;;;;;;;;;;;;;3684:67;3807:18;3838:16;3853:1;3838:12;:16;:::i;:::-;3828:27;3807:48;;4890:85;4927:10;4939;4951;4963;;4910:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4890:19;;;;;:85::i;:::-;4868:108;;4986:6;:17;;;5012:9;4986:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5099:9;5111:46;5123:9;5134:10;5146;;5111:11;:46::i;:::-;5290:1;5258:19;;;:13;:19;;;;;;5099:58;;-1:-1:-1;5244:48:163;5240:84;;5301:23;;;;;;;;4100:25:357;;;4073:18;;5301:23:163;3954:177:357;5240:84:163;5364:9;5424:15;767:3:174;763:20;746:3;742:19;;;739:45;736:61;;5552:19:163;;;;:13;:19;;;;;;:24;;;5586:16;:25;;;;;;;;;;;;;;;5626:58;5364:86;;-1:-1:-1;5673:10:163;;5626:58;;;;;;;;;;5552:19;5626:58;3324:2367;;;;3138:2553;;;;;;:::o;5737:269::-;5898:10;5963:9;5974:10;5986;;5952:45;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5942:56;;;;;;5924:75;;5737:269;;;;;;:::o;2857:235::-;2941:18;2961:20;2983:19;3052:33;:16;3069:6;3052:24;;;;;;;;:::i;:::-;;;;;;;;;1277:3:174;1273:17;;;;1325:3;1321:17;;;1340:18;1317:42;;1399;1386:56;;1077:381;3052:33:163;3018:67;;;;-1:-1:-1;3018:67:163;;-1:-1:-1;2857:235:163;-1:-1:-1;;2857:235:163:o;2136:124::-;3111:19:27;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:27;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:27;1476:19:33;:23;;;3219:66:27;;-1:-1:-1;3268:12:27;;;;;:17;3219:66;3157:201;;;;;;;10469:2:357;3157:201:27;;;10451:21:357;10508:2;10488:18;;;10481:30;10547:34;10527:18;;;10520:62;10618:16;10598:18;;;10591:44;10652:19;;3157:201:27;10267:410:357;3157:201:27;3368:12;:16;;;;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;;;;;;;3394:65;2201:16:163::1;:14;:16::i;:::-;2227:26;2246:6;2227:18;:26::i;:::-;3483:14:27::0;3479:99;;;3529:5;3513:21;;;;;;3553:14;;-1:-1:-1;10834:36:357;;3553:14:27;;10822:2:357;10807:18;3553:14:27;;;;;;;3479:99;3101:483;2136:124:163;:::o;2321:198:26:-;1334:13;:11;:13::i;:::-;2409:22:::1;::::0;::::1;2401:73;;;::::0;::::1;::::0;;11083:2:357;2401:73:26::1;::::0;::::1;11065:21:357::0;11122:2;11102:18;;;11095:30;11161:34;11141:18;;;11134:62;11232:8;11212:18;;;11205:36;11258:19;;2401:73:26::1;10881:402:357::0;2401:73:26::1;2484:28;2503:8;2484:18;:28::i;:::-;2321:198:::0;:::o;1186:320:33:-;1476:19;;;:23;;;1186:320::o;1599:130:26:-;1513:6;;1662:23;1513:6;929:10:34;1662:23:26;1654:68;;;;;;;11490:2:357;1654:68:26;;;11472:21:357;;;11509:18;;;11502:30;11568:34;11548:18;;;11541:62;11620:18;;1654:68:26;11288:356:357;2673:187:26;2765:6;;;;2781:17;;;;;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;19667:152:99:-;19743:16;19782:30;19788:1;19791:14;19807:4;19782:5;:30::i;1003:95:26:-;4910:13:27;;;;;;;4902:69;;;;;;;11851:2:357;4902:69:27;;;11833:21:357;11890:2;11870:18;;;11863:30;11929:34;11909:18;;;11902:62;12000:13;11980:18;;;11973:41;12031:19;;4902:69:27;11649:407:357;4902:69:27;1065:26:26::1;:24;:26::i;19918:11162:99:-:0;20025:16;20200:4;20194;20190:15;20184:22;20251:4;20245;20241:15;20235:22;20302:4;20296;20292:15;20286:22;20345:4;20339:11;20399:10;20392:4;20386;20382:15;20378:32;20444:7;20438:14;20582:1;20570:10;20566:18;29569:28;29563:4;29556:42;29674:14;29667:4;29661;29657:15;29650:39;29877:52;29863:11;29857:4;29853:22;29850:80;29827:4;29821;29817:15;29793:151;30048:66;30041:4;30035;30031:15;30007:121;30449:40;30441:4;30428:11;30424:22;30418:4;30414:33;30411:79;30384:6;30371:11;30368:23;30362:4;30358:34;30352:4;30348:45;30141:363;30543:11;30537:4;30533:22;30524:7;30517:39;30630:4;30617:11;30613:22;30606:4;30600;30596:15;30589:5;30582:54;30570:66;;;30659:8;30649:136;;30700:10;30694:4;30687:24;30766:4;30760;30753:18;30649:136;30865:24;;30902;;30946:15;;;30939:33;30992:15;;;30985:33;31038:15;;;;31031:33;;;;19918:11162;;-1:-1:-1;;19918:11162:99:o;1104:111:26:-;4910:13:27;;;;;;;4902:69;;;;;;;11851:2:357;4902:69:27;;;11833:21:357;11890:2;11870:18;;;11863:30;11929:34;11909:18;;;11902:62;12000:13;11980:18;;;11973:41;12031:19;;4902:69:27;11649:407:357;4902:69:27;1176:32:26::1;929:10:34::0;1176:18:26::1;:32::i;14:186:357:-:0;104:20;;164:10;153:22;;143:33;;133:61;;190:1;187;180:12;133:61;14:186;;;:::o;205:168::-;305:42;298:5;294:54;287:5;284:65;274:93;;363:1;360;353:12;378:411;500:6;508;561:2;549:9;540:7;536:23;532:32;529:52;;;577:1;574;567:12;529:52;600:51;641:9;600:51;:::i;:::-;590:61;;701:2;690:9;686:18;673:32;714:45;753:5;714:45;:::i;:::-;778:5;768:15;;;378:411;;;;;:::o;794:239::-;884:6;937:2;925:9;916:7;912:23;908:32;905:52;;;953:1;950;943:12;905:52;976:51;1017:9;976:51;:::i;1292:307::-;1391:6;1399;1452:2;1440:9;1431:7;1427:23;1423:32;1420:52;;;1468:1;1465;1458:12;1420:52;1491:51;1532:9;1491:51;:::i;:::-;1481:61;1589:2;1574:18;;;;1561:32;;-1:-1:-1;;;1292:307:357:o;1604:375::-;1712:6;1720;1728;1781:2;1769:9;1760:7;1756:23;1752:32;1749:52;;;1797:1;1794;1787:12;1749:52;1820:51;1861:9;1820:51;:::i;:::-;1810:61;1918:2;1903:18;;1890:32;;-1:-1:-1;1969:2:357;1954:18;;;1941:32;;1604:375;-1:-1:-1;;;1604:375:357:o;1984:258::-;2056:1;2066:113;2080:6;2077:1;2074:13;2066:113;;;2156:11;;;2150:18;2137:11;;;2130:39;2102:2;2095:10;2066:113;;;2197:6;2194:1;2191:13;2188:48;;;2232:1;2223:6;2218:3;2214:16;2207:27;2188:48;;1984:258;;;:::o;2247:316::-;2288:3;2326:5;2320:12;2353:6;2348:3;2341:19;2369:63;2425:6;2418:4;2413:3;2409:14;2402:4;2395:5;2391:16;2369:63;:::i;:::-;2477:2;2465:15;2482:66;2461:88;2452:98;;;;2552:4;2448:109;;2247:316;-1:-1:-1;;2247:316:357:o;2568:1381::-;2782:4;2811:2;2851;2840:9;2836:18;2881:2;2870:9;2863:21;2904:6;2939;2933:13;2970:6;2962;2955:22;2996:2;2986:12;;3029:2;3018:9;3014:18;3007:25;;3091:2;3081:6;3078:1;3074:14;3063:9;3059:30;3055:39;3129:2;3121:6;3117:15;3150:1;3160:760;3174:6;3171:1;3168:13;3160:760;;;3239:22;;;3263:66;3235:95;3223:108;;3354:13;;3422:9;;3407:25;;3475:11;;;3469:18;3452:15;;;3445:43;3535:11;;;3529:18;3549;3525:43;3508:15;;;3501:68;3592:4;3639:11;;;3633:18;3616:15;;;3609:43;3675:4;3718:11;;;3712:18;3390:4;3750:15;;;3743:27;;;3712:18;3793:47;3824:15;;;3712:18;3793:47;:::i;:::-;3898:12;;;;3783:57;-1:-1:-1;;;3863:15:357;;;;3196:1;3189:9;3160:760;;;-1:-1:-1;3937:6:357;;2568:1381;-1:-1:-1;;;;;;;;2568:1381:357:o;4136:219::-;4285:2;4274:9;4267:21;4248:4;4305:44;4345:2;4334:9;4330:18;4322:6;4305:44;:::i;4360:814::-;4507:6;4515;4523;4531;4584:2;4572:9;4563:7;4559:23;4555:32;4552:52;;;4600:1;4597;4590:12;4552:52;4623:51;4664:9;4623:51;:::i;:::-;4613:61;;4721:2;4710:9;4706:18;4693:32;4683:42;;4776:2;4765:9;4761:18;4748:32;4799:18;4840:2;4832:6;4829:14;4826:34;;;4856:1;4853;4846:12;4826:34;4894:6;4883:9;4879:22;4869:32;;4939:7;4932:4;4928:2;4924:13;4920:27;4910:55;;4961:1;4958;4951:12;4910:55;5001:2;4988:16;5027:2;5019:6;5016:14;5013:34;;;5043:1;5040;5033:12;5013:34;5088:7;5083:2;5074:6;5070:2;5066:15;5062:24;5059:37;5056:57;;;5109:1;5106;5099:12;5056:57;4360:814;;;;-1:-1:-1;;5140:2:357;5132:11;;-1:-1:-1;;;4360:814:357:o;6000:180::-;6059:6;6112:2;6100:9;6091:7;6087:23;6083:32;6080:52;;;6128:1;6125;6118:12;6080:52;-1:-1:-1;6151:23:357;;6000:180;-1:-1:-1;6000:180:357:o;6684:261::-;6743:6;6796:2;6784:9;6775:7;6771:23;6767:32;6764:52;;;6812:1;6809;6802:12;6764:52;6851:9;6838:23;6870:45;6909:5;6870:45;:::i;6950:184::-;7002:77;6999:1;6992:88;7099:4;7096:1;7089:15;7123:4;7120:1;7113:15;7139:184;7191:77;7188:1;7181:88;7288:4;7285:1;7278:15;7312:4;7309:1;7302:15;7328:942;7407:6;7460:2;7448:9;7439:7;7435:23;7431:32;7428:52;;;7476:1;7473;7466:12;7428:52;7509:9;7503:16;7538:18;7579:2;7571:6;7568:14;7565:34;;;7595:1;7592;7585:12;7565:34;7633:6;7622:9;7618:22;7608:32;;7678:7;7671:4;7667:2;7663:13;7659:27;7649:55;;7700:1;7697;7690:12;7649:55;7729:2;7723:9;7751:2;7747;7744:10;7741:36;;;7757:18;;:::i;:::-;7891:2;7885:9;7953:4;7945:13;;7796:66;7941:22;;;7965:2;7937:31;7933:40;7921:53;;;7989:18;;;8009:22;;;7986:46;7983:72;;;8035:18;;:::i;:::-;8075:10;8071:2;8064:22;8110:2;8102:6;8095:18;8150:7;8145:2;8140;8136;8132:11;8128:20;8125:33;8122:53;;;8171:1;8168;8161:12;8122:53;8184:55;8236:2;8231;8223:6;8219:15;8214:2;8210;8206:11;8184:55;:::i;:::-;8258:6;7328:942;-1:-1:-1;;;;;;;7328:942:357:o;8275:212::-;8373:6;8426:2;8414:9;8405:7;8401:23;8397:32;8394:52;;;8442:1;8439;8432:12;8394:52;-1:-1:-1;8465:16:357;;8275:212;-1:-1:-1;8275:212:357:o;8492:279::-;8532:4;8560:1;8557;8554:8;8551:188;;;8595:77;8592:1;8585:88;8696:4;8693:1;8686:15;8724:4;8721:1;8714:15;8551:188;-1:-1:-1;8756:9:357;;8492:279::o;9005:585::-;9307:66;9298:6;9294:2;9290:15;9286:88;9281:3;9274:101;9405:6;9400:2;9395:3;9391:12;9384:28;9442:6;9437:2;9432:3;9428:12;9421:28;9493:6;9485;9480:2;9475:3;9471:12;9458:42;9256:3;9523:16;;9541:2;9519:25;9553:13;;;9519:25;9005:585;-1:-1:-1;;;;9005:585:357:o;9595:667::-;9878:10;9870:6;9866:23;9855:9;9848:42;9926:6;9921:2;9910:9;9906:18;9899:34;9969:2;9964;9953:9;9949:18;9942:30;10008:6;10003:2;9992:9;9988:18;9981:34;10066:6;10058;10052:3;10041:9;10037:19;10024:49;10123:1;10093:22;;;10117:3;10089:32;;;10082:43;;;;10177:2;10165:15;;;10182:66;10161:88;10146:104;10142:114;;9595:667;-1:-1:-1;;;9595:667:357:o", "linkReferences": {} }, "methodIdentifiers": { "create(uint32,bytes32,bytes)": "82ecf2f6", "findLatestGames(uint32,uint256,uint256)": "254bd683", "gameAtIndex(uint256)": "bb8aa1fc", "gameCount()": "4d1975b4", "gameImpls(uint32)": "1b685b9e", "games(uint32,bytes32,bytes)": "5f0150cb", "getGameUUID(uint32,bytes32,bytes)": "96cd9720", "initBonds(uint32)": "6593dc6e", "initialize(address)": "c4d66de8", "owner()": "8da5cb5b", "renounceOwnership()": "715018a6", "setImplementation(uint32,address)": "14f6b1a3", "setInitBond(uint32,uint256)": "1e334240", "transferOwnership(address)": "f2fde38b", "version()": "54fd4d50" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"Hash\",\"name\":\"uuid\",\"type\":\"bytes32\"}],\"name\":\"GameAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectBondAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType\",\"type\":\"uint32\"}],\"name\":\"NoImplementation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputeProxy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"GameType\",\"name\":\"gameType\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"Claim\",\"name\":\"rootClaim\",\"type\":\"bytes32\"}],\"name\":\"DisputeGameCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"impl\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"GameType\",\"name\":\"gameType\",\"type\":\"uint32\"}],\"name\":\"ImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"GameType\",\"name\":\"gameType\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newBond\",\"type\":\"uint256\"}],\"name\":\"InitBondUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"Claim\",\"name\":\"_rootClaim\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"contract IDisputeGame\",\"name\":\"proxy_\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_n\",\"type\":\"uint256\"}],\"name\":\"findLatestGames\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"GameId\",\"name\":\"metadata\",\"type\":\"bytes32\"},{\"internalType\":\"Timestamp\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"Claim\",\"name\":\"rootClaim\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct IDisputeGameFactory.GameSearchResult[]\",\"name\":\"games_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"gameAtIndex\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint32\"},{\"internalType\":\"Timestamp\",\"name\":\"timestamp_\",\"type\":\"uint64\"},{\"internalType\":\"contract IDisputeGame\",\"name\":\"proxy_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gameCount_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"gameImpls\",\"outputs\":[{\"internalType\":\"contract IDisputeGame\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"Claim\",\"name\":\"_rootClaim\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"games\",\"outputs\":[{\"internalType\":\"contract IDisputeGame\",\"name\":\"proxy_\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"timestamp_\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"Claim\",\"name\":\"_rootClaim\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"getGameUUID\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"uuid_\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"initBonds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"contract IDisputeGame\",\"name\":\"_impl\",\"type\":\"address\"}],\"name\":\"setImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_initBond\",\"type\":\"uint256\"}],\"name\":\"setInitBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"GameAlreadyExists(bytes32)\":[{\"params\":{\"uuid\":\"The UUID of the dispute game that already exists.\"}}],\"NoImplementation(uint32)\":[{\"params\":{\"gameType\":\"The unsupported game type.\"}}]},\"kind\":\"dev\",\"methods\":{\"create(uint32,bytes32,bytes)\":{\"params\":{\"_extraData\":\"Any extra data that should be provided to the created dispute game.\",\"_gameType\":\"The type of the DisputeGame - used to decide the proxy implementation.\",\"_rootClaim\":\"The root claim of the DisputeGame.\"},\"returns\":{\"proxy_\":\"The address of the created DisputeGame proxy.\"}},\"findLatestGames(uint32,uint256,uint256)\":{\"params\":{\"_gameType\":\"The type of game to find.\",\"_n\":\"The number of games to find.\",\"_start\":\"The index to start the reverse search from.\"}},\"gameAtIndex(uint256)\":{\"params\":{\"_index\":\"The index of the dispute game.\"},\"returns\":{\"gameType_\":\"The type of the DisputeGame - used to decide the proxy implementation.\",\"proxy_\":\"The clone of the `DisputeGame` created with the given parameters.         Returns `address(0)` if nonexistent.\",\"timestamp_\":\"The timestamp of the creation of the dispute game.\"}},\"gameCount()\":{\"returns\":{\"gameCount_\":\"The total number of dispute games created by this factory.\"}},\"games(uint32,bytes32,bytes)\":{\"details\":\"`++` equates to concatenation.\",\"params\":{\"_extraData\":\"Any extra data that should be provided to the created dispute game.\",\"_gameType\":\"The type of the DisputeGame - used to decide the proxy implementation\",\"_rootClaim\":\"The root claim of the DisputeGame.\"},\"returns\":{\"proxy_\":\"The clone of the `DisputeGame` created with the given parameters.         Returns `address(0)` if nonexistent.\",\"timestamp_\":\"The timestamp of the creation of the dispute game.\"}},\"getGameUUID(uint32,bytes32,bytes)\":{\"details\":\"Hashes the concatenation of `gameType . rootClaim . extraData`      without expanding memory.\",\"params\":{\"_extraData\":\"Any extra data that should be provided to the created dispute game.\",\"_gameType\":\"The type of the DisputeGame.\",\"_rootClaim\":\"The root claim of the DisputeGame.\"},\"returns\":{\"uuid_\":\"The unique identifier for the given dispute game parameters.\"}},\"initialize(address)\":{\"params\":{\"_owner\":\"The owner of the contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setImplementation(uint32,address)\":{\"details\":\"May only be called by the `owner`.\",\"params\":{\"_gameType\":\"The type of the DisputeGame.\",\"_impl\":\"The implementation contract for the given `GameType`.\"}},\"setInitBond(uint32,uint256)\":{\"details\":\"May only be called by the `owner`.\",\"params\":{\"_gameType\":\"The type of the DisputeGame.\",\"_initBond\":\"The bond (in wei) for initializing a game type.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"gameImpls\":{\"params\":{\"_gameType\":\"The type of the dispute game.\"},\"return\":\"The address of the implementation of the game type.         Will be cloned on creation of a new dispute game with the given `gameType`.\",\"returns\":{\"_0\":\"The address of the implementation of the game type.         Will be cloned on creation of a new dispute game with the given `gameType`.\"}},\"initBonds\":{\"params\":{\"_gameType\":\"The type of the dispute game.\"},\"return\":\"The required bond for initializing a dispute game of the given type.\",\"returns\":{\"_0\":\"The required bond for initializing a dispute game of the given type.\"}},\"version\":{\"custom:semver\":\"0.6.0\"}},\"title\":\"DisputeGameFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"GameAlreadyExists(bytes32)\":[{\"notice\":\"Thrown when a dispute game that already exists is attempted to be created.\"}],\"IncorrectBondAmount()\":[{\"notice\":\"Thrown when a supplied bond is not equal to the required bond amount to cover the cost of the interaction.\"}],\"NoImplementation(uint32)\":[{\"notice\":\"Thrown when a dispute game is attempted to be created with an unsupported game type.\"}]},\"events\":{\"DisputeGameCreated(address,uint32,bytes32)\":{\"notice\":\"Emitted when a new dispute game is created\"},\"ImplementationSet(address,uint32)\":{\"notice\":\"Emitted when a new game implementation added to the factory\"},\"InitBondUpdated(uint32,uint256)\":{\"notice\":\"Emitted when a game type's initialization bond is updated\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs a new DisputeGameFactory contract.\"},\"create(uint32,bytes32,bytes)\":{\"notice\":\"Creates a new DisputeGame proxy contract.\"},\"findLatestGames(uint32,uint256,uint256)\":{\"notice\":\"Finds the `_n` most recent `GameId`'s of type `_gameType` starting at `_start`. If there are less than         `_n` games of type `_gameType` starting at `_start`, then the returned array will be shorter than `_n`.\"},\"gameAtIndex(uint256)\":{\"notice\":\"`gameAtIndex` returns the dispute game contract address and its creation timestamp          at the given index. Each created dispute game increments the underlying index.\"},\"gameCount()\":{\"notice\":\"The total number of dispute games created by this factory.\"},\"gameImpls(uint32)\":{\"notice\":\"`gameImpls` is a mapping that maps `GameType`s to their respective         `IDisputeGame` implementations.\"},\"games(uint32,bytes32,bytes)\":{\"notice\":\"`games` queries an internal mapping that maps the hash of         `gameType ++ rootClaim ++ extraData` to the deployed `DisputeGame` clone.\"},\"getGameUUID(uint32,bytes32,bytes)\":{\"notice\":\"Returns a unique identifier for the given dispute game parameters.\"},\"initBonds(uint32)\":{\"notice\":\"Returns the required bonds for initializing a dispute game of the given type.\"},\"initialize(address)\":{\"notice\":\"Initializes the contract.\"},\"setImplementation(uint32,address)\":{\"notice\":\"Sets the implementation contract for a specific `GameType`.\"},\"setInitBond(uint32,uint256)\":{\"notice\":\"Sets the bond (in wei) for initializing a game type.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"A factory contract for creating `IDisputeGame` contracts. All created dispute games are stored in both a         mapping and an append only array. The timestamp of the creation time of the dispute game is packed tightly         into the storage slot with the address of the dispute game to make offchain discoverability of playable         dispute games easier.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/dispute/DisputeGameFactory.sol\":\"DisputeGameFactory\"},\"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-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/solady/src/utils/LibClone.sol\":{\"keccak256\":\"0xfd4b40a4584e736d9d0b045fbc748023804c83819f5e018635a9f447834774a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://202fc57397118355d9d573c28d36ff45892e632a12b143f4bc5e7266bfb7737e\",\"dweb:/ipfs/QmZYD6Va3nNUC4B9NHZcyvFmK59i3WnEPPpsi8N355GivN\"]},\"src/dispute/DisputeGameFactory.sol\":{\"keccak256\":\"0xc7c6b0c2a051d4a14b3833243fa2e93e5e320bb106ef3979ce77098fb9d6629f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd5cbabb1b0b41f9faf3d2329e519936ea43a1e7da1df6a9be90d2513603b09f\",\"dweb:/ipfs/QmQM5FpgogJQnbmJjdQdoxxMzczx5PBiCNbiRUQiJqHyhM\"]},\"src/dispute/interfaces/IDisputeGame.sol\":{\"keccak256\":\"0xe2611453d5cc05f8aa30dc0e5e15ee5ae29fd3eb55a2c034424250baebf12f9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://274e00fbcea3b8455bbaa042130bf1f7a5b2b769f28ad57afbf9fabfd74a757a\",\"dweb:/ipfs/QmRKQTfYdMjQYVbuZhdXts1d752eUq8RwrjqqwV5XRYLi6\"]},\"src/dispute/interfaces/IDisputeGameFactory.sol\":{\"keccak256\":\"0x204d89d38d4dc0db40fbf898d95e639ac5608810a5a5506a3d80d71177648bda\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71e5c0ff04f409f30ca4f8ebfae1592c6ca495e315b059f969d11812e6e84dbd\",\"dweb:/ipfs/QmaNKkhkJv7qHzX6bKB3LjpWBupfMPLhoATUGx1HRTLtXh\"]},\"src/dispute/interfaces/IInitializable.sol\":{\"keccak256\":\"0xbc553af6501a972850a98fc6284943f8e95a5183a7b4f64198c16fca2338c9dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1f1c422ce4a9e72f0bbdec36434206da4af3a32d38f922acab957942e994ce5\",\"dweb:/ipfs/QmNQGWBceLxx1CKSMLfwTM584q8UCgUpF4rrFe8pdbWYtj\"]},\"src/dispute/lib/LibGameId.sol\":{\"keccak256\":\"0x9a9f30500da6eb7eeaa7193515dc5e45dc479f09ae7d522a07283c0fb5f4bfa6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be113d8198d5822385de3d6ff3d7b3e8241993484aa95604ffaf38c2d33f40e0\",\"dweb:/ipfs/QmY9mHC52fqc4gAFYCGobNyuP4TqugQgs8o1kTF33t17Hc\"]},\"src/dispute/lib/LibHashing.sol\":{\"keccak256\":\"0x5a072cd028094eee55acb84ed8d08d7422b1fb46658b7e043e916781530a383b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b67e54f1318f1fd67b28b16c6861a56e27217c26a12aaea5c446e2ec53143920\",\"dweb:/ipfs/QmVLSTP3PwXzRkR3A4qV9fjZhca9v8J1EnEYuVGUsSirAq\"]},\"src/dispute/lib/LibPosition.sol\":{\"keccak256\":\"0xf7ceb26f0ac7067ff8a43f263451050eef6fba2029eafb83d3cbe35224d894a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bb403b0d707a8e2e3780a19185b918bfe907ca2d1b939ea74ae095a5cdf3b48\",\"dweb:/ipfs/QmYFzkmF8TRomp1cBEbTsKxiEnqLnX6SvSh4y3rVa84pBR\"]},\"src/dispute/lib/LibUDT.sol\":{\"keccak256\":\"0x9b61b15f5edfac1e6528aec79c1be6ac712d5f6a62140db87ed749e41a46563f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24ef4ecee91638e278886888192b7d2b1811ab99f4e90a06817a4b2651720046\",\"dweb:/ipfs/QmdisoBv1mE9jDv6jvpcbvKhdmJZMMjQmATrEYfBQQrXtZ\"]},\"src/libraries/DisputeErrors.sol\":{\"keccak256\":\"0x869bec0d79d97f2d0a00b1e70bf1e6955a2be585521e0084602e54455c0a6937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a235c6349437cd2ade72909287404e2993c1c4bd356707299239c71fa3bf780e\",\"dweb:/ipfs/QmcFSh6PWJ5sNg1CeoRyF9EnV8APWDz1kYP98v6ooGxc71\"]},\"src/libraries/DisputeTypes.sol\":{\"keccak256\":\"0xae3d053cf40b3e47669b89438524fec4eb571a78be296cc7e7ba23025b3bdf0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a2b90604718ad29d19a8f21d45a5f8c6188320781fdb7102b3fccadae549961\",\"dweb:/ipfs/QmUBTXgRFG7PvoCBJsXmgi2sZPZFPQQZTptQ91LL7tC2xQ\"]},\"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": "Hash", "name": "uuid", "type": "bytes32" }], "type": "error", "name": "GameAlreadyExists" }, { "inputs": [], "type": "error", "name": "IncorrectBondAmount" }, { "inputs": [{ "internalType": "GameType", "name": "gameType", "type": "uint32" }], "type": "error", "name": "NoImplementation" }, { "inputs": [{ "internalType": "address", "name": "disputeProxy", "type": "address", "indexed": true }, { "internalType": "GameType", "name": "gameType", "type": "uint32", "indexed": true }, { "internalType": "Claim", "name": "rootClaim", "type": "bytes32", "indexed": true }], "type": "event", "name": "DisputeGameCreated", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "impl", "type": "address", "indexed": true }, { "internalType": "GameType", "name": "gameType", "type": "uint32", "indexed": true }], "type": "event", "name": "ImplementationSet", "anonymous": false }, { "inputs": [{ "internalType": "GameType", "name": "gameType", "type": "uint32", "indexed": true }, { "internalType": "uint256", "name": "newBond", "type": "uint256", "indexed": true }], "type": "event", "name": "InitBondUpdated", "anonymous": false }, { "inputs": [{ "internalType": "uint8", "name": "version", "type": "uint8", "indexed": false }], "type": "event", "name": "Initialized", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "previousOwner", "type": "address", "indexed": true }, { "internalType": "address", "name": "newOwner", "type": "address", "indexed": true }], "type": "event", "name": "OwnershipTransferred", "anonymous": false }, { "inputs": [{ "internalType": "GameType", "name": "_gameType", "type": "uint32" }, { "internalType": "Claim", "name": "_rootClaim", "type": "bytes32" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" }], "stateMutability": "payable", "type": "function", "name": "create", "outputs": [{ "internalType": "contract IDisputeGame", "name": "proxy_", "type": "address" }] }, { "inputs": [{ "internalType": "GameType", "name": "_gameType", "type": "uint32" }, { "internalType": "uint256", "name": "_start", "type": "uint256" }, { "internalType": "uint256", "name": "_n", "type": "uint256" }], "stateMutability": "view", "type": "function", "name": "findLatestGames", "outputs": [{ "internalType": "struct IDisputeGameFactory.GameSearchResult[]", "name": "games_", "type": "tuple[]", "components": [{ "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "GameId", "name": "metadata", "type": "bytes32" }, { "internalType": "Timestamp", "name": "timestamp", "type": "uint64" }, { "internalType": "Claim", "name": "rootClaim", "type": "bytes32" }, { "internalType": "bytes", "name": "extraData", "type": "bytes" }] }] }, { "inputs": [{ "internalType": "uint256", "name": "_index", "type": "uint256" }], "stateMutability": "view", "type": "function", "name": "gameAtIndex", "outputs": [{ "internalType": "GameType", "name": "gameType_", "type": "uint32" }, { "internalType": "Timestamp", "name": "timestamp_", "type": "uint64" }, { "internalType": "contract IDisputeGame", "name": "proxy_", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "gameCount", "outputs": [{ "internalType": "uint256", "name": "gameCount_", "type": "uint256" }] }, { "inputs": [{ "internalType": "GameType", "name": "", "type": "uint32" }], "stateMutability": "view", "type": "function", "name": "gameImpls", "outputs": [{ "internalType": "contract IDisputeGame", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "GameType", "name": "_gameType", "type": "uint32" }, { "internalType": "Claim", "name": "_rootClaim", "type": "bytes32" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" }], "stateMutability": "view", "type": "function", "name": "games", "outputs": [{ "internalType": "contract IDisputeGame", "name": "proxy_", "type": "address" }, { "internalType": "Timestamp", "name": "timestamp_", "type": "uint64" }] }, { "inputs": [{ "internalType": "GameType", "name": "_gameType", "type": "uint32" }, { "internalType": "Claim", "name": "_rootClaim", "type": "bytes32" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" }], "stateMutability": "pure", "type": "function", "name": "getGameUUID", "outputs": [{ "internalType": "Hash", "name": "uuid_", "type": "bytes32" }] }, { "inputs": [{ "internalType": "GameType", "name": "", "type": "uint32" }], "stateMutability": "view", "type": "function", "name": "initBonds", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "address", "name": "_owner", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "initialize" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "owner", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "renounceOwnership" }, { "inputs": [{ "internalType": "GameType", "name": "_gameType", "type": "uint32" }, { "internalType": "contract IDisputeGame", "name": "_impl", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "setImplementation" }, { "inputs": [{ "internalType": "GameType", "name": "_gameType", "type": "uint32" }, { "internalType": "uint256", "name": "_initBond", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "setInitBond" }, { "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "transferOwnership" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "version", "outputs": [{ "internalType": "string", "name": "", "type": "string" }] }], "devdoc": { "kind": "dev", "methods": { "create(uint32,bytes32,bytes)": { "params": { "_extraData": "Any extra data that should be provided to the created dispute game.", "_gameType": "The type of the DisputeGame - used to decide the proxy implementation.", "_rootClaim": "The root claim of the DisputeGame." }, "returns": { "proxy_": "The address of the created DisputeGame proxy." } }, "findLatestGames(uint32,uint256,uint256)": { "params": { "_gameType": "The type of game to find.", "_n": "The number of games to find.", "_start": "The index to start the reverse search from." } }, "gameAtIndex(uint256)": { "params": { "_index": "The index of the dispute game." }, "returns": { "gameType_": "The type of the DisputeGame - used to decide the proxy implementation.", "proxy_": "The clone of the `DisputeGame` created with the given parameters.         Returns `address(0)` if nonexistent.", "timestamp_": "The timestamp of the creation of the dispute game." } }, "gameCount()": { "returns": { "gameCount_": "The total number of dispute games created by this factory." } }, "games(uint32,bytes32,bytes)": { "details": "`++` equates to concatenation.", "params": { "_extraData": "Any extra data that should be provided to the created dispute game.", "_gameType": "The type of the DisputeGame - used to decide the proxy implementation", "_rootClaim": "The root claim of the DisputeGame." }, "returns": { "proxy_": "The clone of the `DisputeGame` created with the given parameters.         Returns `address(0)` if nonexistent.", "timestamp_": "The timestamp of the creation of the dispute game." } }, "getGameUUID(uint32,bytes32,bytes)": { "details": "Hashes the concatenation of `gameType . rootClaim . extraData`      without expanding memory.", "params": { "_extraData": "Any extra data that should be provided to the created dispute game.", "_gameType": "The type of the DisputeGame.", "_rootClaim": "The root claim of the DisputeGame." }, "returns": { "uuid_": "The unique identifier for the given dispute game parameters." } }, "initialize(address)": { "params": { "_owner": "The owner of the contract." } }, "owner()": { "details": "Returns the address of the current owner." }, "renounceOwnership()": { "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." }, "setImplementation(uint32,address)": { "details": "May only be called by the `owner`.", "params": { "_gameType": "The type of the DisputeGame.", "_impl": "The implementation contract for the given `GameType`." } }, "setInitBond(uint32,uint256)": { "details": "May only be called by the `owner`.", "params": { "_gameType": "The type of the DisputeGame.", "_initBond": "The bond (in wei) for initializing a game type." } }, "transferOwnership(address)": { "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "constructor": { "notice": "Constructs a new DisputeGameFactory contract." }, "create(uint32,bytes32,bytes)": { "notice": "Creates a new DisputeGame proxy contract." }, "findLatestGames(uint32,uint256,uint256)": { "notice": "Finds the `_n` most recent `GameId`'s of type `_gameType` starting at `_start`. If there are less than         `_n` games of type `_gameType` starting at `_start`, then the returned array will be shorter than `_n`." }, "gameAtIndex(uint256)": { "notice": "`gameAtIndex` returns the dispute game contract address and its creation timestamp          at the given index. Each created dispute game increments the underlying index." }, "gameCount()": { "notice": "The total number of dispute games created by this factory." }, "gameImpls(uint32)": { "notice": "`gameImpls` is a mapping that maps `GameType`s to their respective         `IDisputeGame` implementations." }, "games(uint32,bytes32,bytes)": { "notice": "`games` queries an internal mapping that maps the hash of         `gameType ++ rootClaim ++ extraData` to the deployed `DisputeGame` clone." }, "getGameUUID(uint32,bytes32,bytes)": { "notice": "Returns a unique identifier for the given dispute game parameters." }, "initBonds(uint32)": { "notice": "Returns the required bonds for initializing a dispute game of the given type." }, "initialize(address)": { "notice": "Initializes the contract." }, "setImplementation(uint32,address)": { "notice": "Sets the implementation contract for a specific `GameType`." }, "setInitBond(uint32,uint256)": { "notice": "Sets the bond (in wei) for initializing a game type." }, "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/dispute/DisputeGameFactory.sol": "DisputeGameFactory" }, "evmVersion": "london", "libraries": {} }, "sources": { "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", "urls": ["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"], "license": "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { "keccak256": "0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e", "urls": ["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497", "dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"], "license": "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { "keccak256": "0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3", "urls": ["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4", "dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"], "license": "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", "urls": ["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"], "license": "MIT" }, "lib/solady/src/utils/LibClone.sol": { "keccak256": "0xfd4b40a4584e736d9d0b045fbc748023804c83819f5e018635a9f447834774a4", "urls": ["bzz-raw://202fc57397118355d9d573c28d36ff45892e632a12b143f4bc5e7266bfb7737e", "dweb:/ipfs/QmZYD6Va3nNUC4B9NHZcyvFmK59i3WnEPPpsi8N355GivN"], "license": "MIT" }, "src/dispute/DisputeGameFactory.sol": { "keccak256": "0xc7c6b0c2a051d4a14b3833243fa2e93e5e320bb106ef3979ce77098fb9d6629f", "urls": ["bzz-raw://cd5cbabb1b0b41f9faf3d2329e519936ea43a1e7da1df6a9be90d2513603b09f", "dweb:/ipfs/QmQM5FpgogJQnbmJjdQdoxxMzczx5PBiCNbiRUQiJqHyhM"], "license": "MIT" }, "src/dispute/interfaces/IDisputeGame.sol": { "keccak256": "0xe2611453d5cc05f8aa30dc0e5e15ee5ae29fd3eb55a2c034424250baebf12f9b", "urls": ["bzz-raw://274e00fbcea3b8455bbaa042130bf1f7a5b2b769f28ad57afbf9fabfd74a757a", "dweb:/ipfs/QmRKQTfYdMjQYVbuZhdXts1d752eUq8RwrjqqwV5XRYLi6"], "license": "MIT" }, "src/dispute/interfaces/IDisputeGameFactory.sol": { "keccak256": "0x204d89d38d4dc0db40fbf898d95e639ac5608810a5a5506a3d80d71177648bda", "urls": ["bzz-raw://71e5c0ff04f409f30ca4f8ebfae1592c6ca495e315b059f969d11812e6e84dbd", "dweb:/ipfs/QmaNKkhkJv7qHzX6bKB3LjpWBupfMPLhoATUGx1HRTLtXh"], "license": "MIT" }, "src/dispute/interfaces/IInitializable.sol": { "keccak256": "0xbc553af6501a972850a98fc6284943f8e95a5183a7b4f64198c16fca2338c9dc", "urls": ["bzz-raw://b1f1c422ce4a9e72f0bbdec36434206da4af3a32d38f922acab957942e994ce5", "dweb:/ipfs/QmNQGWBceLxx1CKSMLfwTM584q8UCgUpF4rrFe8pdbWYtj"], "license": "MIT" }, "src/dispute/lib/LibGameId.sol": { "keccak256": "0x9a9f30500da6eb7eeaa7193515dc5e45dc479f09ae7d522a07283c0fb5f4bfa6", "urls": ["bzz-raw://be113d8198d5822385de3d6ff3d7b3e8241993484aa95604ffaf38c2d33f40e0", "dweb:/ipfs/QmY9mHC52fqc4gAFYCGobNyuP4TqugQgs8o1kTF33t17Hc"], "license": "MIT" }, "src/dispute/lib/LibHashing.sol": { "keccak256": "0x5a072cd028094eee55acb84ed8d08d7422b1fb46658b7e043e916781530a383b", "urls": ["bzz-raw://b67e54f1318f1fd67b28b16c6861a56e27217c26a12aaea5c446e2ec53143920", "dweb:/ipfs/QmVLSTP3PwXzRkR3A4qV9fjZhca9v8J1EnEYuVGUsSirAq"], "license": "MIT" }, "src/dispute/lib/LibPosition.sol": { "keccak256": "0xf7ceb26f0ac7067ff8a43f263451050eef6fba2029eafb83d3cbe35224d894a6", "urls": ["bzz-raw://3bb403b0d707a8e2e3780a19185b918bfe907ca2d1b939ea74ae095a5cdf3b48", "dweb:/ipfs/QmYFzkmF8TRomp1cBEbTsKxiEnqLnX6SvSh4y3rVa84pBR"], "license": "MIT" }, "src/dispute/lib/LibUDT.sol": { "keccak256": "0x9b61b15f5edfac1e6528aec79c1be6ac712d5f6a62140db87ed749e41a46563f", "urls": ["bzz-raw://24ef4ecee91638e278886888192b7d2b1811ab99f4e90a06817a4b2651720046", "dweb:/ipfs/QmdisoBv1mE9jDv6jvpcbvKhdmJZMMjQmATrEYfBQQrXtZ"], "license": "MIT" }, "src/libraries/DisputeErrors.sol": { "keccak256": "0x869bec0d79d97f2d0a00b1e70bf1e6955a2be585521e0084602e54455c0a6937", "urls": ["bzz-raw://a235c6349437cd2ade72909287404e2993c1c4bd356707299239c71fa3bf780e", "dweb:/ipfs/QmcFSh6PWJ5sNg1CeoRyF9EnV8APWDz1kYP98v6ooGxc71"], "license": "MIT" }, "src/libraries/DisputeTypes.sol": { "keccak256": "0xae3d053cf40b3e47669b89438524fec4eb571a78be296cc7e7ba23025b3bdf0c", "urls": ["bzz-raw://4a2b90604718ad29d19a8f21d45a5f8c6188320781fdb7102b3fccadae549961", "dweb:/ipfs/QmUBTXgRFG7PvoCBJsXmgi2sZPZFPQQZTptQ91LL7tC2xQ"], "license": "MIT" }, "src/universal/ISemver.sol": { "keccak256": "0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44", "urls": ["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a", "dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"], "license": "MIT" } }, "version": 1 }, "storageLayout": { "storage": [{ "astId": 46970, "contract": "src/dispute/DisputeGameFactory.sol:DisputeGameFactory", "label": "_initialized", "offset": 0, "slot": "0", "type": "t_uint8" }, { "astId": 46973, "contract": "src/dispute/DisputeGameFactory.sol:DisputeGameFactory", "label": "_initializing", "offset": 1, "slot": "0", "type": "t_bool" }, { "astId": 48501, "contract": "src/dispute/DisputeGameFactory.sol:DisputeGameFactory", "label": "__gap", "offset": 0, "slot": "1", "type": "t_array(t_uint256)50_storage" }, { "astId": 46842, "contract": "src/dispute/DisputeGameFactory.sol:DisputeGameFactory", "label": "_owner", "offset": 0, "slot": "51", "type": "t_address" }, { "astId": 46962, "contract": "src/dispute/DisputeGameFactory.sol:DisputeGameFactory", "label": "__gap", "offset": 0, "slot": "52", "type": "t_array(t_uint256)49_storage" }, { "astId": 97221, "contract": "src/dispute/DisputeGameFactory.sol:DisputeGameFactory", "label": "gameImpls", "offset": 0, "slot": "101", "type": "t_mapping(t_userDefinedValueType(GameType)103271,t_contract(IDisputeGame)100327)" }, { "astId": 97227, "contract": "src/dispute/DisputeGameFactory.sol:DisputeGameFactory", "label": "initBonds", "offset": 0, "slot": "102", "type": "t_mapping(t_userDefinedValueType(GameType)103271,t_uint256)" }, { "astId": 97234, "contract": "src/dispute/DisputeGameFactory.sol:DisputeGameFactory", "label": "_disputeGames", "offset": 0, "slot": "103", "type": "t_mapping(t_userDefinedValueType(Hash)103253,t_userDefinedValueType(GameId)103265)" }, { "astId": 97239, "contract": "src/dispute/DisputeGameFactory.sol:DisputeGameFactory", "label": "_disputeGameList", "offset": 0, "slot": "104", "type": "t_array(t_userDefinedValueType(GameId)103265)dyn_storage" }], "types": { "t_address": { "encoding": "inplace", "label": "address", "numberOfBytes": "20" }, "t_array(t_uint256)49_storage": { "encoding": "inplace", "label": "uint256[49]", "numberOfBytes": "1568", "base": "t_uint256" }, "t_array(t_uint256)50_storage": { "encoding": "inplace", "label": "uint256[50]", "numberOfBytes": "1600", "base": "t_uint256" }, "t_array(t_userDefinedValueType(GameId)103265)dyn_storage": { "encoding": "dynamic_array", "label": "GameId[]", "numberOfBytes": "32", "base": "t_userDefinedValueType(GameId)103265" }, "t_bool": { "encoding": "inplace", "label": "bool", "numberOfBytes": "1" }, "t_contract(IDisputeGame)100327": { "encoding": "inplace", "label": "contract IDisputeGame", "numberOfBytes": "20" }, "t_mapping(t_userDefinedValueType(GameType)103271,t_contract(IDisputeGame)100327)": { "encoding": "mapping", "key": "t_userDefinedValueType(GameType)103271", "label": "mapping(GameType => contract IDisputeGame)", "numberOfBytes": "32", "value": "t_contract(IDisputeGame)100327" }, "t_mapping(t_userDefinedValueType(GameType)103271,t_uint256)": { "encoding": "mapping", "key": "t_userDefinedValueType(GameType)103271", "label": "mapping(GameType => uint256)", "numberOfBytes": "32", "value": "t_uint256" }, "t_mapping(t_userDefinedValueType(Hash)103253,t_userDefinedValueType(GameId)103265)": { "encoding": "mapping", "key": "t_userDefinedValueType(Hash)103253", "label": "mapping(Hash => GameId)", "numberOfBytes": "32", "value": "t_userDefinedValueType(GameId)103265" }, "t_uint256": { "encoding": "inplace", "label": "uint256", "numberOfBytes": "32" }, "t_uint8": { "encoding": "inplace", "label": "uint8", "numberOfBytes": "1" }, "t_userDefinedValueType(GameId)103265": { "encoding": "inplace", "label": "GameId", "numberOfBytes": "32" }, "t_userDefinedValueType(GameType)103271": { "encoding": "inplace", "label": "GameType", "numberOfBytes": "4" }, "t_userDefinedValueType(Hash)103253": { "encoding": "inplace", "label": "Hash", "numberOfBytes": "32" } } }, "userdoc": { "version": 1, "kind": "user", "methods": { "constructor": { "notice": "Constructs a new DisputeGameFactory contract." }, "create(uint32,bytes32,bytes)": { "notice": "Creates a new DisputeGame proxy contract." }, "findLatestGames(uint32,uint256,uint256)": { "notice": "Finds the `_n` most recent `GameId`'s of type `_gameType` starting at `_start`. If there are less than         `_n` games of type `_gameType` starting at `_start`, then the returned array will be shorter than `_n`." }, "gameAtIndex(uint256)": { "notice": "`gameAtIndex` returns the dispute game contract address and its creation timestamp          at the given index. Each created dispute game increments the underlying index." }, "gameCount()": { "notice": "The total number of dispute games created by this factory." }, "gameImpls(uint32)": { "notice": "`gameImpls` is a mapping that maps `GameType`s to their respective         `IDisputeGame` implementations." }, "games(uint32,bytes32,bytes)": { "notice": "`games` queries an internal mapping that maps the hash of         `gameType ++ rootClaim ++ extraData` to the deployed `DisputeGame` clone." }, "getGameUUID(uint32,bytes32,bytes)": { "notice": "Returns a unique identifier for the given dispute game parameters." }, "initBonds(uint32)": { "notice": "Returns the required bonds for initializing a dispute game of the given type." }, "initialize(address)": { "notice": "Initializes the contract." }, "setImplementation(uint32,address)": { "notice": "Sets the implementation contract for a specific `GameType`." }, "setInitBond(uint32,uint256)": { "notice": "Sets the bond (in wei) for initializing a game type." }, "version()": { "notice": "Semantic version." } }, "events": { "DisputeGameCreated(address,uint32,bytes32)": { "notice": "Emitted when a new dispute game is created" }, "ImplementationSet(address,uint32)": { "notice": "Emitted when a new game implementation added to the factory" }, "InitBondUpdated(uint32,uint256)": { "notice": "Emitted when a game type's initialization bond is updated" } }, "errors": { "GameAlreadyExists(bytes32)": [{ "notice": "Thrown when a dispute game that already exists is attempted to be created." }], "IncorrectBondAmount()": [{ "notice": "Thrown when a supplied bond is not equal to the required bond amount to cover the cost of the interaction." }], "NoImplementation(uint32)": [{ "notice": "Thrown when a dispute game is attempted to be created with an unsupported game type." }] }, "notice": "A factory contract for creating `IDisputeGame` contracts. All created dispute games are stored in both a         mapping and an append only array. The timestamp of the creation time of the dispute game is packed tightly         into the storage slot with the address of the dispute game to make offchain discoverability of playable         dispute games easier." }, "devdoc": { "version": 1, "kind": "dev", "methods": { "create(uint32,bytes32,bytes)": { "params": { "_extraData": "Any extra data that should be provided to the created dispute game.", "_gameType": "The type of the DisputeGame - used to decide the proxy implementation.", "_rootClaim": "The root claim of the DisputeGame." }, "returns": { "proxy_": "The address of the created DisputeGame proxy." } }, "findLatestGames(uint32,uint256,uint256)": { "params": { "_gameType": "The type of game to find.", "_n": "The number of games to find.", "_start": "The index to start the reverse search from." } }, "gameAtIndex(uint256)": { "params": { "_index": "The index of the dispute game." }, "returns": { "gameType_": "The type of the DisputeGame - used to decide the proxy implementation.", "proxy_": "The clone of the `DisputeGame` created with the given parameters.         Returns `address(0)` if nonexistent.", "timestamp_": "The timestamp of the creation of the dispute game." } }, "gameCount()": { "returns": { "gameCount_": "The total number of dispute games created by this factory." } }, "games(uint32,bytes32,bytes)": { "details": "`++` equates to concatenation.", "params": { "_extraData": "Any extra data that should be provided to the created dispute game.", "_gameType": "The type of the DisputeGame - used to decide the proxy implementation", "_rootClaim": "The root claim of the DisputeGame." }, "returns": { "proxy_": "The clone of the `DisputeGame` created with the given parameters.         Returns `address(0)` if nonexistent.", "timestamp_": "The timestamp of the creation of the dispute game." } }, "getGameUUID(uint32,bytes32,bytes)": { "details": "Hashes the concatenation of `gameType . rootClaim . extraData`      without expanding memory.", "params": { "_extraData": "Any extra data that should be provided to the created dispute game.", "_gameType": "The type of the DisputeGame.", "_rootClaim": "The root claim of the DisputeGame." }, "returns": { "uuid_": "The unique identifier for the given dispute game parameters." } }, "initialize(address)": { "params": { "_owner": "The owner of the contract." } }, "owner()": { "details": "Returns the address of the current owner." }, "renounceOwnership()": { "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." }, "setImplementation(uint32,address)": { "details": "May only be called by the `owner`.", "params": { "_gameType": "The type of the DisputeGame.", "_impl": "The implementation contract for the given `GameType`." } }, "setInitBond(uint32,uint256)": { "details": "May only be called by the `owner`.", "params": { "_gameType": "The type of the DisputeGame.", "_initBond": "The bond (in wei) for initializing a game type." } }, "transferOwnership(address)": { "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." } }, "errors": { "GameAlreadyExists(bytes32)": [{ "params": { "uuid": "The UUID of the dispute game that already exists." } }], "NoImplementation(uint32)": [{ "params": { "gameType": "The unsupported game type." } }] }, "title": "DisputeGameFactory" }, "ast": { "absolutePath": "src/dispute/DisputeGameFactory.sol", "id": 97683, "exportedSymbols": { "AlreadyInitialized": [103120], "AnchorRootNotFound": [103192], "BadAuth": [103195], "BadExtraData": [103132], "BondAmount": [103259], "BondTransferFailed": [103129], "CannotDefendRootClaim": [103135], "Claim": [103255], "ClaimAboveSplit": [103177], "ClaimAlreadyExists": [103138], "ClaimAlreadyResolved": [103174], "ClaimHash": [103257], "Clock": [103267], "ClockNotExpired": [103150], "ClockTimeExceeded": [103147], "DisputeGameFactory": [97682], "DuplicateStep": [103189], "Duration": [103263], "GameAlreadyExists": [103111], "GameDepthExceeded": [103153], "GameId": [103265], "GameNotInProgress": [103144], "GameStatus": [103277], "GameType": [103271], "GameTypes": [103317], "Hash": [103253], "IDisputeGame": [100327], "IDisputeGameFactory": [100497], "ISemver": [109417], "IncorrectBondAmount": [103123], "InvalidClaim": [103141], "InvalidClockExtension": [103183], "InvalidLocalIdent": [103168], "InvalidParent": [103156], "InvalidPrestate": [103159], "InvalidSplitDepth": [103180], "L1HeadTooOld": [103165], "LibClaim": [101086], "LibClock": [101073], "LibClone": [62767], "LibDuration": [101099], "LibGameId": [100778], "LibGameType": [101151], "LibHash": [101112], "LibHashing": [100800], "LibPosition": [101018], "LibTimestamp": [101125], "LibVMStatus": [101138], "LocalPreimageKey": [103373], "MaxDepthTooLarge": [103186], "NoCreditToClaim": [103126], "NoImplementation": [103105], "OutOfOrderResolution": [103171], "OutputRoot": [103283], "OwnableUpgradeable": [46963], "Position": [103269], "Timestamp": [103261], "UnexpectedRootClaim": [103117], "VMStatus": [103273], "VMStatuses": [103351], "ValidStep": [103162] }, "nodeType": "SourceUnit", "src": "32:8414:163", "nodes": [{ "id": 97186, "nodeType": "PragmaDirective", "src": "32:23:163", "nodes": [], "literals": ["solidity", "0.8", ".15"] }, { "id": 97188, "nodeType": "ImportDirective", "src": "57:54:163", "nodes": [], "absolutePath": "lib/solady/src/utils/LibClone.sol", "file": "@solady/utils/LibClone.sol", "nameLocation": "-1:-1:-1", "scope": 97683, "sourceUnit": 62768, "symbolAliases": [{ "foreign": { "id": 97187, "name": "LibClone", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 62767, "src": "66:8:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 97190, "nodeType": "ImportDirective", "src": "112:103:163", "nodes": [], "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol", "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", "nameLocation": "-1:-1:-1", "scope": 97683, "sourceUnit": 46964, "symbolAliases": [{ "foreign": { "id": 97189, "name": "OwnableUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46963, "src": "121:18:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 97192, "nodeType": "ImportDirective", "src": "216:52:163", "nodes": [], "absolutePath": "src/universal/ISemver.sol", "file": "src/universal/ISemver.sol", "nameLocation": "-1:-1:-1", "scope": 97683, "sourceUnit": 109418, "symbolAliases": [{ "foreign": { "id": 97191, "name": "ISemver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109417, "src": "225:7:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 97194, "nodeType": "ImportDirective", "src": "270:71:163", "nodes": [], "absolutePath": "src/dispute/interfaces/IDisputeGame.sol", "file": "src/dispute/interfaces/IDisputeGame.sol", "nameLocation": "-1:-1:-1", "scope": 97683, "sourceUnit": 100328, "symbolAliases": [{ "foreign": { "id": 97193, "name": "IDisputeGame", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100327, "src": "279:12:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 97196, "nodeType": "ImportDirective", "src": "342:85:163", "nodes": [], "absolutePath": "src/dispute/interfaces/IDisputeGameFactory.sol", "file": "src/dispute/interfaces/IDisputeGameFactory.sol", "nameLocation": "-1:-1:-1", "scope": 97683, "sourceUnit": 100498, "symbolAliases": [{ "foreign": { "id": 97195, "name": "IDisputeGameFactory", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100497, "src": "351:19:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 97198, "nodeType": "ImportDirective", "src": "429:58:163", "nodes": [], "absolutePath": "src/dispute/lib/LibGameId.sol", "file": "src/dispute/lib/LibGameId.sol", "nameLocation": "-1:-1:-1", "scope": 97683, "sourceUnit": 100779, "symbolAliases": [{ "foreign": { "id": 97197, "name": "LibGameId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100778, "src": "438:9:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 97199, "nodeType": "ImportDirective", "src": "489:40:163", "nodes": [], "absolutePath": "src/libraries/DisputeTypes.sol", "file": "src/libraries/DisputeTypes.sol", "nameLocation": "-1:-1:-1", "scope": 97683, "sourceUnit": 103374, "symbolAliases": [], "unitAlias": "" }, { "id": 97200, "nodeType": "ImportDirective", "src": "530:41:163", "nodes": [], "absolutePath": "src/libraries/DisputeErrors.sol", "file": "src/libraries/DisputeErrors.sol", "nameLocation": "-1:-1:-1", "scope": 97683, "sourceUnit": 103196, "symbolAliases": [], "unitAlias": "" }, { "id": 97682, "nodeType": "ContractDefinition", "src": "989:7456:163", "nodes": [{ "id": 97210, "nodeType": "UsingForDirective", "src": "1155:27:163", "nodes": [], "global": false, "libraryName": { "id": 97208, "name": "LibClone", "nodeType": "IdentifierPath", "referencedDeclaration": 62767, "src": "1161:8:163" }, "typeName": { "id": 97209, "name": "address", "nodeType": "ElementaryTypeName", "src": "1174:7:163", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "id": 97214, "nodeType": "VariableDeclaration", "src": "1251:40:163", "nodes": [], "baseFunctions": [109416], "constant": true, "documentation": { "id": 97211, "nodeType": "StructuredDocumentation", "src": "1188:58:163", "text": "@notice Semantic version.\n @custom:semver 0.6.0" }, "functionSelector": "54fd4d50", "mutability": "constant", "name": "version", "nameLocation": "1274:7:163", "scope": 97682, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 97212, "name": "string", "nodeType": "ElementaryTypeName", "src": "1251:6:163", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "hexValue": "302e362e30", "id": 97213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1284:7:163", "typeDescriptions": { "typeIdentifier": "t_stringliteral_98293d924c2515c22d1d357dd5a43b88356a9d20201dd01f3afa1023505a904d", "typeString": "literal_string \"0.6.0\"" }, "value": "0.6.0" }, "visibility": "public" }, { "id": 97221, "nodeType": "VariableDeclaration", "src": "1338:50:163", "nodes": [], "baseFunctions": [100423], "constant": false, "documentation": { "id": 97215, "nodeType": "StructuredDocumentation", "src": "1298:35:163", "text": "@inheritdoc IDisputeGameFactory" }, "functionSelector": "1b685b9e", "mutability": "mutable", "name": "gameImpls", "nameLocation": "1379:9:163", "scope": 97682, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_GameType_$103271_$_t_contract$_IDisputeGame_$100327_$", "typeString": "mapping(GameType => contract IDisputeGame)" }, "typeName": { "id": 97220, "keyType": { "id": 97217, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97216, "name": "GameType", "nodeType": "IdentifierPath", "referencedDeclaration": 103271, "src": "1346:8:163" }, "referencedDeclaration": 103271, "src": "1346:8:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "nodeType": "Mapping", "src": "1338:33:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_GameType_$103271_$_t_contract$_IDisputeGame_$100327_$", "typeString": "mapping(GameType => contract IDisputeGame)" }, "valueType": { "id": 97219, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97218, "name": "IDisputeGame", "nodeType": "IdentifierPath", "referencedDeclaration": 100327, "src": "1358:12:163" }, "referencedDeclaration": 100327, "src": "1358:12:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } } }, "visibility": "public" }, { "id": 97227, "nodeType": "VariableDeclaration", "src": "1435:45:163", "nodes": [], "baseFunctions": [100432], "constant": false, "documentation": { "id": 97222, "nodeType": "StructuredDocumentation", "src": "1395:35:163", "text": "@inheritdoc IDisputeGameFactory" }, "functionSelector": "6593dc6e", "mutability": "mutable", "name": "initBonds", "nameLocation": "1471:9:163", "scope": 97682, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_GameType_$103271_$_t_uint256_$", "typeString": "mapping(GameType => uint256)" }, "typeName": { "id": 97226, "keyType": { "id": 97224, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97223, "name": "GameType", "nodeType": "IdentifierPath", "referencedDeclaration": 103271, "src": "1443:8:163" }, "referencedDeclaration": 103271, "src": "1443:8:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "nodeType": "Mapping", "src": "1435:28:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_GameType_$103271_$_t_uint256_$", "typeString": "mapping(GameType => uint256)" }, "valueType": { "id": 97225, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1455:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "visibility": "public" }, { "id": 97234, "nodeType": "VariableDeclaration", "src": "1650:46:163", "nodes": [], "constant": false, "documentation": { "id": 97228, "nodeType": "StructuredDocumentation", "src": "1487:113:163", "text": "@notice Mapping of a hash of `gameType || rootClaim || extraData` to the deployed `IDisputeGame` clone (where" }, "mutability": "mutable", "name": "_disputeGames", "nameLocation": "1683:13:163", "scope": 97682, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_Hash_$103253_$_t_userDefinedValueType$_GameId_$103265_$", "typeString": "mapping(Hash => GameId)" }, "typeName": { "id": 97233, "keyType": { "id": 97230, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97229, "name": "Hash", "nodeType": "IdentifierPath", "referencedDeclaration": 103253, "src": "1658:4:163" }, "referencedDeclaration": 103253, "src": "1658:4:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "nodeType": "Mapping", "src": "1650:23:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_Hash_$103253_$_t_userDefinedValueType$_GameId_$103265_$", "typeString": "mapping(Hash => GameId)" }, "valueType": { "id": 97232, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97231, "name": "GameId", "nodeType": "IdentifierPath", "referencedDeclaration": 103265, "src": "1666:6:163" }, "referencedDeclaration": 103265, "src": "1666:6:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } } }, "visibility": "internal" }, { "id": 97239, "nodeType": "VariableDeclaration", "src": "1862:34:163", "nodes": [], "constant": false, "documentation": { "id": 97235, "nodeType": "StructuredDocumentation", "src": "1703:154:163", "text": "@notice An append-only array of disputeGames that have been created. Used by offchain game solvers to\n         efficiently track dispute games." }, "mutability": "mutable", "name": "_disputeGameList", "nameLocation": "1880:16:163", "scope": 97682, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_userDefinedValueType$_GameId_$103265_$dyn_storage", "typeString": "GameId[]" }, "typeName": { "baseType": { "id": 97237, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97236, "name": "GameId", "nodeType": "IdentifierPath", "referencedDeclaration": 103265, "src": "1862:6:163" }, "referencedDeclaration": 103265, "src": "1862:6:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, "id": 97238, "nodeType": "ArrayTypeName", "src": "1862:8:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_userDefinedValueType$_GameId_$103265_$dyn_storage_ptr", "typeString": "GameId[]" } }, "visibility": "internal" }, { "id": 97253, "nodeType": "FunctionDefinition", "src": "1965:74:163", "nodes": [], "body": { "id": 97252, "nodeType": "Block", "src": "2000:39:163", "nodes": [], "statements": [{ "expression": { "arguments": [{ "arguments": [{ "hexValue": "30", "id": 97248, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2029:1:163", "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": 97247, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2021:7:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 97246, "name": "address", "nodeType": "ElementaryTypeName", "src": "2021:7:163", "typeDescriptions": {} } }, "id": 97249, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2021:10:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 97245, "name": "initialize", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97269, "src": "2010:10:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 97250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2010:22:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97251, "nodeType": "ExpressionStatement", "src": "2010:22:163" }] }, "documentation": { "id": 97240, "nodeType": "StructuredDocumentation", "src": "1903:57:163", "text": "@notice Constructs a new DisputeGameFactory contract." }, "implemented": true, "kind": "constructor", "modifiers": [{ "arguments": [], "id": 97243, "kind": "baseConstructorSpecifier", "modifierName": { "id": 97242, "name": "OwnableUpgradeable", "nodeType": "IdentifierPath", "referencedDeclaration": 46963, "src": "1979:18:163" }, "nodeType": "ModifierInvocation", "src": "1979:20:163" }], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 97241, "nodeType": "ParameterList", "parameters": [], "src": "1976:2:163" }, "returnParameters": { "id": 97244, "nodeType": "ParameterList", "parameters": [], "src": "2000:0:163" }, "scope": 97682, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 97269, "nodeType": "FunctionDefinition", "src": "2136:124:163", "nodes": [], "body": { "id": 97268, "nodeType": "Block", "src": "2191:69:163", "nodes": [], "statements": [{ "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 97261, "name": "__Ownable_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46858, "src": "2201:14:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 97262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2201:16:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97263, "nodeType": "ExpressionStatement", "src": "2201:16:163" }, { "expression": { "arguments": [{ "id": 97265, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97256, "src": "2246:6:163", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 97264, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46957, "src": "2227:18:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 97266, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2227:26:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97267, "nodeType": "ExpressionStatement", "src": "2227:26:163" }] }, "documentation": { "id": 97254, "nodeType": "StructuredDocumentation", "src": "2045:86:163", "text": "@notice Initializes the contract.\n @param _owner The owner of the contract." }, "functionSelector": "c4d66de8", "implemented": true, "kind": "function", "modifiers": [{ "id": 97259, "kind": "modifierInvocation", "modifierName": { "id": 97258, "name": "initializer", "nodeType": "IdentifierPath", "referencedDeclaration": 47034, "src": "2179:11:163" }, "nodeType": "ModifierInvocation", "src": "2179:11:163" }], "name": "initialize", "nameLocation": "2145:10:163", "parameters": { "id": 97257, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97256, "mutability": "mutable", "name": "_owner", "nameLocation": "2164:6:163", "nodeType": "VariableDeclaration", "scope": 97269, "src": "2156:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 97255, "name": "address", "nodeType": "ElementaryTypeName", "src": "2156:7:163", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "2155:16:163" }, "returnParameters": { "id": 97260, "nodeType": "ParameterList", "parameters": [], "src": "2191:0:163" }, "scope": 97682, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 97281, "nodeType": "FunctionDefinition", "src": "2306:117:163", "nodes": [], "body": { "id": 97280, "nodeType": "Block", "src": "2370:53:163", "nodes": [], "statements": [{ "expression": { "id": 97278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 97275, "name": "gameCount_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97273, "src": "2380:10:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 97276, "name": "_disputeGameList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97239, "src": "2393:16:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_userDefinedValueType$_GameId_$103265_$dyn_storage", "typeString": "GameId[] storage ref" } }, "id": 97277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "2393:23:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2380:36:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 97279, "nodeType": "ExpressionStatement", "src": "2380:36:163" }] }, "baseFunctions": [100380], "documentation": { "id": 97270, "nodeType": "StructuredDocumentation", "src": "2266:35:163", "text": "@inheritdoc IDisputeGameFactory" }, "functionSelector": "4d1975b4", "implemented": true, "kind": "function", "modifiers": [], "name": "gameCount", "nameLocation": "2315:9:163", "parameters": { "id": 97271, "nodeType": "ParameterList", "parameters": [], "src": "2324:2:163" }, "returnParameters": { "id": 97274, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97273, "mutability": "mutable", "name": "gameCount_", "nameLocation": "2358:10:163", "nodeType": "VariableDeclaration", "scope": 97281, "src": "2350:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 97272, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2350:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "2349:20:163" }, "scope": 97682, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 97319, "nodeType": "FunctionDefinition", "src": "2469:342:163", "nodes": [], "body": { "id": 97318, "nodeType": "Block", "src": "2673:138:163", "nodes": [], "statements": [{ "assignments": [97301], "declarations": [{ "constant": false, "id": 97301, "mutability": "mutable", "name": "uuid", "nameLocation": "2688:4:163", "nodeType": "VariableDeclaration", "scope": 97318, "src": "2683:9:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" }, "typeName": { "id": 97300, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97299, "name": "Hash", "nodeType": "IdentifierPath", "referencedDeclaration": 103253, "src": "2683:4:163" }, "referencedDeclaration": 103253, "src": "2683:4:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "visibility": "internal" }], "id": 97307, "initialValue": { "arguments": [{ "id": 97303, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97285, "src": "2707:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, { "id": 97304, "name": "_rootClaim", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97288, "src": "2718:10:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" } }, { "id": 97305, "name": "_extraData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97290, "src": "2730:10:163", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }], "id": 97302, "name": "getGameUUID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97522, "src": "2695:11:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_GameType_$103271_$_t_userDefinedValueType$_Claim_$103255_$_t_bytes_calldata_ptr_$returns$_t_userDefinedValueType$_Hash_$103253_$", "typeString": "function (GameType,Claim,bytes calldata) pure returns (Hash)" } }, "id": 97306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2695:46:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "nodeType": "VariableDeclarationStatement", "src": "2683:58:163" }, { "expression": { "id": 97316, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "components": [null, { "id": 97308, "name": "timestamp_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97297, "src": "2754:10:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" } }, { "id": 97309, "name": "proxy_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97294, "src": "2766:6:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }], "id": 97310, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "2751:22:163", "typeDescriptions": { "typeIdentifier": "t_tuple$__$_t_userDefinedValueType$_Timestamp_$103261_$_t_contract$_IDisputeGame_$100327_$", "typeString": "tuple(,Timestamp,contract IDisputeGame)" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "baseExpression": { "id": 97311, "name": "_disputeGames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97234, "src": "2776:13:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_Hash_$103253_$_t_userDefinedValueType$_GameId_$103265_$", "typeString": "mapping(Hash => GameId)" } }, "id": 97313, "indexExpression": { "id": 97312, "name": "uuid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97301, "src": "2790:4:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2776:19:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, "id": 97314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "unpack", "nodeType": "MemberAccess", "referencedDeclaration": 100777, "src": "2776:26:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_GameId_$103265_$returns$_t_userDefinedValueType$_GameType_$103271_$_t_userDefinedValueType$_Timestamp_$103261_$_t_contract$_IDisputeGame_$100327_$bound_to$_t_userDefinedValueType$_GameId_$103265_$", "typeString": "function (GameId) pure returns (GameType,Timestamp,contract IDisputeGame)" } }, "id": 97315, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2776:28:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_userDefinedValueType$_GameType_$103271_$_t_userDefinedValueType$_Timestamp_$103261_$_t_contract$_IDisputeGame_$100327_$", "typeString": "tuple(GameType,Timestamp,contract IDisputeGame)" } }, "src": "2751:53:163", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97317, "nodeType": "ExpressionStatement", "src": "2751:53:163" }] }, "baseFunctions": [100398], "documentation": { "id": 97282, "nodeType": "StructuredDocumentation", "src": "2429:35:163", "text": "@inheritdoc IDisputeGameFactory" }, "functionSelector": "5f0150cb", "implemented": true, "kind": "function", "modifiers": [], "name": "games", "nameLocation": "2478:5:163", "parameters": { "id": 97291, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97285, "mutability": "mutable", "name": "_gameType", "nameLocation": "2502:9:163", "nodeType": "VariableDeclaration", "scope": 97319, "src": "2493:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, "typeName": { "id": 97284, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97283, "name": "GameType", "nodeType": "IdentifierPath", "referencedDeclaration": 103271, "src": "2493:8:163" }, "referencedDeclaration": 103271, "src": "2493:8:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "visibility": "internal" }, { "constant": false, "id": 97288, "mutability": "mutable", "name": "_rootClaim", "nameLocation": "2527:10:163", "nodeType": "VariableDeclaration", "scope": 97319, "src": "2521:16:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" }, "typeName": { "id": 97287, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97286, "name": "Claim", "nodeType": "IdentifierPath", "referencedDeclaration": 103255, "src": "2521:5:163" }, "referencedDeclaration": 103255, "src": "2521:5:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" } }, "visibility": "internal" }, { "constant": false, "id": 97290, "mutability": "mutable", "name": "_extraData", "nameLocation": "2562:10:163", "nodeType": "VariableDeclaration", "scope": 97319, "src": "2547:25:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 97289, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2547:5:163", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "src": "2483:95:163" }, "returnParameters": { "id": 97298, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97294, "mutability": "mutable", "name": "proxy_", "nameLocation": "2639:6:163", "nodeType": "VariableDeclaration", "scope": 97319, "src": "2626:19:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" }, "typeName": { "id": 97293, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97292, "name": "IDisputeGame", "nodeType": "IdentifierPath", "referencedDeclaration": 100327, "src": "2626:12:163" }, "referencedDeclaration": 100327, "src": "2626:12:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "visibility": "internal" }, { "constant": false, "id": 97297, "mutability": "mutable", "name": "timestamp_", "nameLocation": "2657:10:163", "nodeType": "VariableDeclaration", "scope": 97319, "src": "2647:20:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" }, "typeName": { "id": 97296, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97295, "name": "Timestamp", "nodeType": "IdentifierPath", "referencedDeclaration": 103261, "src": "2647:9:163" }, "referencedDeclaration": 103261, "src": "2647:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" } }, "visibility": "internal" }], "src": "2625:43:163" }, "scope": 97682, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 97346, "nodeType": "FunctionDefinition", "src": "2857:235:163", "nodes": [], "body": { "id": 97345, "nodeType": "Block", "src": "3008:84:163", "nodes": [], "statements": [{ "expression": { "id": 97343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "components": [{ "id": 97334, "name": "gameType_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97326, "src": "3019:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, { "id": 97335, "name": "timestamp_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97329, "src": "3030:10:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" } }, { "id": 97336, "name": "proxy_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97332, "src": "3042:6:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }], "id": 97337, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "3018:31:163", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_userDefinedValueType$_GameType_$103271_$_t_userDefinedValueType$_Timestamp_$103261_$_t_contract$_IDisputeGame_$100327_$", "typeString": "tuple(GameType,Timestamp,contract IDisputeGame)" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "baseExpression": { "id": 97338, "name": "_disputeGameList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97239, "src": "3052:16:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_userDefinedValueType$_GameId_$103265_$dyn_storage", "typeString": "GameId[] storage ref" } }, "id": 97340, "indexExpression": { "id": 97339, "name": "_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97322, "src": "3069:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3052:24:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, "id": 97341, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "unpack", "nodeType": "MemberAccess", "referencedDeclaration": 100777, "src": "3052:31:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_GameId_$103265_$returns$_t_userDefinedValueType$_GameType_$103271_$_t_userDefinedValueType$_Timestamp_$103261_$_t_contract$_IDisputeGame_$100327_$bound_to$_t_userDefinedValueType$_GameId_$103265_$", "typeString": "function (GameId) pure returns (GameType,Timestamp,contract IDisputeGame)" } }, "id": 97342, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3052:33:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_userDefinedValueType$_GameType_$103271_$_t_userDefinedValueType$_Timestamp_$103261_$_t_contract$_IDisputeGame_$100327_$", "typeString": "tuple(GameType,Timestamp,contract IDisputeGame)" } }, "src": "3018:67:163", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97344, "nodeType": "ExpressionStatement", "src": "3018:67:163" }] }, "baseFunctions": [100413], "documentation": { "id": 97320, "nodeType": "StructuredDocumentation", "src": "2817:35:163", "text": "@inheritdoc IDisputeGameFactory" }, "functionSelector": "bb8aa1fc", "implemented": true, "kind": "function", "modifiers": [], "name": "gameAtIndex", "nameLocation": "2866:11:163", "parameters": { "id": 97323, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97322, "mutability": "mutable", "name": "_index", "nameLocation": "2886:6:163", "nodeType": "VariableDeclaration", "scope": 97346, "src": "2878:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 97321, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2878:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "2877:16:163" }, "returnParameters": { "id": 97333, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97326, "mutability": "mutable", "name": "gameType_", "nameLocation": "2950:9:163", "nodeType": "VariableDeclaration", "scope": 97346, "src": "2941:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, "typeName": { "id": 97325, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97324, "name": "GameType", "nodeType": "IdentifierPath", "referencedDeclaration": 103271, "src": "2941:8:163" }, "referencedDeclaration": 103271, "src": "2941:8:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "visibility": "internal" }, { "constant": false, "id": 97329, "mutability": "mutable", "name": "timestamp_", "nameLocation": "2971:10:163", "nodeType": "VariableDeclaration", "scope": 97346, "src": "2961:20:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" }, "typeName": { "id": 97328, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97327, "name": "Timestamp", "nodeType": "IdentifierPath", "referencedDeclaration": 103261, "src": "2961:9:163" }, "referencedDeclaration": 103261, "src": "2961:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" } }, "visibility": "internal" }, { "constant": false, "id": 97332, "mutability": "mutable", "name": "proxy_", "nameLocation": "2996:6:163", "nodeType": "VariableDeclaration", "scope": 97346, "src": "2983:19:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" }, "typeName": { "id": 97331, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97330, "name": "IDisputeGame", "nodeType": "IdentifierPath", "referencedDeclaration": 100327, "src": "2983:12:163" }, "referencedDeclaration": 100327, "src": "2983:12:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "visibility": "internal" }], "src": "2940:63:163" }, "scope": 97682, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 97492, "nodeType": "FunctionDefinition", "src": "3138:2553:163", "nodes": [], "body": { "id": 97491, "nodeType": "Block", "src": "3324:2367:163", "nodes": [], "statements": [{ "assignments": [97363], "declarations": [{ "constant": false, "id": 97363, "mutability": "mutable", "name": "impl", "nameLocation": "3417:4:163", "nodeType": "VariableDeclaration", "scope": 97491, "src": "3404:17:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" }, "typeName": { "id": 97362, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97361, "name": "IDisputeGame", "nodeType": "IdentifierPath", "referencedDeclaration": 100327, "src": "3404:12:163" }, "referencedDeclaration": 100327, "src": "3404:12:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "visibility": "internal" }], "id": 97367, "initialValue": { "baseExpression": { "id": 97364, "name": "gameImpls", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97221, "src": "3424:9:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_GameType_$103271_$_t_contract$_IDisputeGame_$100327_$", "typeString": "mapping(GameType => contract IDisputeGame)" } }, "id": 97366, "indexExpression": { "id": 97365, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97350, "src": "3434:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3424:20:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "nodeType": "VariableDeclarationStatement", "src": "3404:40:163" }, { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 97376, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [{ "id": 97370, "name": "impl", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97363, "src": "3551:4:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" }], "id": 97369, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3543:7:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 97368, "name": "address", "nodeType": "ElementaryTypeName", "src": "3543:7:163", "typeDescriptions": {} } }, "id": 97371, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3543:13:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [{ "hexValue": "30", "id": 97374, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3568:1:163", "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": 97373, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3560:7:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 97372, "name": "address", "nodeType": "ElementaryTypeName", "src": "3560:7:163", "typeDescriptions": {} } }, "id": 97375, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3560:10:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3543:27:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 97381, "nodeType": "IfStatement", "src": "3539:67:163", "trueBody": { "errorCall": { "arguments": [{ "id": 97378, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97350, "src": "3596:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }], "id": 97377, "name": "NoImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103105, "src": "3579:16:163", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_GameType_$103271_$returns$__$", "typeString": "function (GameType) pure" } }, "id": 97379, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3579:27:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97380, "nodeType": "RevertStatement", "src": "3572:34:163" } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 97387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 97382, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3688:3:163", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 97383, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "src": "3688:9:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "baseExpression": { "id": 97384, "name": "initBonds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97227, "src": "3701:9:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_GameType_$103271_$_t_uint256_$", "typeString": "mapping(GameType => uint256)" } }, "id": 97386, "indexExpression": { "id": 97385, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97350, "src": "3711:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3701:20:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3688:33:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 97391, "nodeType": "IfStatement", "src": "3684:67:163", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 97388, "name": "IncorrectBondAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103123, "src": "3730:19:163", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 97389, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3730:21:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97390, "nodeType": "RevertStatement", "src": "3723:28:163" } }, { "assignments": [97393], "declarations": [{ "constant": false, "id": 97393, "mutability": "mutable", "name": "parentHash", "nameLocation": "3815:10:163", "nodeType": "VariableDeclaration", "scope": 97491, "src": "3807:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 97392, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3807:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }], "id": 97400, "initialValue": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 97398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 97395, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "3838:5:163", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 97396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "number", "nodeType": "MemberAccess", "src": "3838:12:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "hexValue": "31", "id": 97397, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3853:1:163", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3838:16:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 97394, "name": "blockhash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -5, "src": "3828:9:163", "typeDescriptions": { "typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (uint256) view returns (bytes32)" } }, "id": 97399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3828:27:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "3807:48:163" }, { "expression": { "id": 97418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 97401, "name": "proxy_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97359, "src": "4868:6:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [{ "arguments": [{ "arguments": [{ "expression": { "id": 97410, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4927:3:163", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 97411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "4927:10:163", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 97412, "name": "_rootClaim", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97353, "src": "4939:10:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" } }, { "id": 97413, "name": "parentHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97393, "src": "4951:10:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "id": 97414, "name": "_extraData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97355, "src": "4963:10:163", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }], "expression": { "id": 97408, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "4910:3:163", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 97409, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "4910:16:163", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 97415, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4910:64:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "expression": { "arguments": [{ "id": 97405, "name": "impl", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97363, "src": "4898:4:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" }], "id": 97404, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4890:7:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 97403, "name": "address", "nodeType": "ElementaryTypeName", "src": "4890:7:163", "typeDescriptions": {} } }, "id": 97406, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4890:13:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 97407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "clone", "nodeType": "MemberAccess", "referencedDeclaration": 62515, "src": "4890:19:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_address_$", "typeString": "function (address,bytes memory) returns (address)" } }, "id": 97416, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4890:85:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 97402, "name": "IDisputeGame", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100327, "src": "4877:12:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDisputeGame_$100327_$", "typeString": "type(contract IDisputeGame)" } }, "id": 97417, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4877:99:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "src": "4868:108:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "id": 97419, "nodeType": "ExpressionStatement", "src": "4868:108:163" }, { "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": [], "expression": { "id": 97420, "name": "proxy_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97359, "src": "4986:6:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "id": 97422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 100615, "src": "4986:17:163", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 97425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{ "expression": { "id": 97423, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5012:3:163", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 97424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "src": "5012:9:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "src": "4986:37:163", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 97426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4986:39:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97427, "nodeType": "ExpressionStatement", "src": "4986:39:163" }, { "assignments": [97430], "declarations": [{ "constant": false, "id": 97430, "mutability": "mutable", "name": "uuid", "nameLocation": "5104:4:163", "nodeType": "VariableDeclaration", "scope": 97491, "src": "5099:9:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" }, "typeName": { "id": 97429, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97428, "name": "Hash", "nodeType": "IdentifierPath", "referencedDeclaration": 103253, "src": "5099:4:163" }, "referencedDeclaration": 103253, "src": "5099:4:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "visibility": "internal" }], "id": 97436, "initialValue": { "arguments": [{ "id": 97432, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97350, "src": "5123:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, { "id": 97433, "name": "_rootClaim", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97353, "src": "5134:10:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" } }, { "id": 97434, "name": "_extraData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97355, "src": "5146:10:163", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }], "id": 97431, "name": "getGameUUID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97522, "src": "5111:11:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_GameType_$103271_$_t_userDefinedValueType$_Claim_$103255_$_t_bytes_calldata_ptr_$returns$_t_userDefinedValueType$_Hash_$103253_$", "typeString": "function (GameType,Claim,bytes calldata) pure returns (Hash)" } }, "id": 97435, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5111:46:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "nodeType": "VariableDeclarationStatement", "src": "5099:58:163" }, { "condition": { "commonType": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "id": 97447, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [{ "baseExpression": { "id": 97439, "name": "_disputeGames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97234, "src": "5258:13:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_Hash_$103253_$_t_userDefinedValueType$_GameId_$103265_$", "typeString": "mapping(Hash => GameId)" } }, "id": 97441, "indexExpression": { "id": 97440, "name": "uuid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97430, "src": "5272:4:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5258:19:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" }], "expression": { "id": 97437, "name": "GameId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103265, "src": "5244:6:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_userDefinedValueType$_GameId_$103265_$", "typeString": "type(GameId)" } }, "id": 97438, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "unwrap", "nodeType": "MemberAccess", "src": "5244:13:163", "typeDescriptions": { "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_GameId_$103265_$returns$_t_bytes32_$", "typeString": "function (GameId) pure returns (bytes32)" } }, "id": 97442, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5244:34:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [{ "hexValue": "30", "id": 97445, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5290:1:163", "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": 97444, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5282:7:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 97443, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5282:7:163", "typeDescriptions": {} } }, "id": 97446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5282:10:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "5244:48:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 97452, "nodeType": "IfStatement", "src": "5240:84:163", "trueBody": { "errorCall": { "arguments": [{ "id": 97449, "name": "uuid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97430, "src": "5319:4:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" }], "id": 97448, "name": "GameAlreadyExists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103111, "src": "5301:17:163", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_userDefinedValueType$_Hash_$103253_$returns$__$", "typeString": "function (Hash) pure" } }, "id": 97450, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5301:23:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97451, "nodeType": "RevertStatement", "src": "5294:30:163" } }, { "assignments": [97455], "declarations": [{ "constant": false, "id": 97455, "mutability": "mutable", "name": "id", "nameLocation": "5371:2:163", "nodeType": "VariableDeclaration", "scope": 97491, "src": "5364:9:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" }, "typeName": { "id": 97454, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97453, "name": "GameId", "nodeType": "IdentifierPath", "referencedDeclaration": 103265, "src": "5364:6:163" }, "referencedDeclaration": 103265, "src": "5364:6:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, "visibility": "internal" }], "id": 97469, "initialValue": { "arguments": [{ "id": 97458, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97350, "src": "5391:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, { "arguments": [{ "arguments": [{ "expression": { "id": 97463, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "5424:5:163", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 97464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "src": "5424:15:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 97462, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5417:6:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)" }, "typeName": { "id": 97461, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5417:6:163", "typeDescriptions": {} } }, "id": 97465, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5417:23:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint64", "typeString": "uint64" }], "expression": { "id": 97459, "name": "Timestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103261, "src": "5402:9:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_userDefinedValueType$_Timestamp_$103261_$", "typeString": "type(Timestamp)" } }, "id": 97460, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "wrap", "nodeType": "MemberAccess", "src": "5402:14:163", "typeDescriptions": { "typeIdentifier": "t_function_wrap_pure$_t_uint64_$returns$_t_userDefinedValueType$_Timestamp_$103261_$", "typeString": "function (uint64) pure returns (Timestamp)" } }, "id": 97466, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5402:39:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" } }, { "id": 97467, "name": "proxy_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97359, "src": "5443:6:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" }, { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" }], "expression": { "id": 97456, "name": "LibGameId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100778, "src": "5376:9:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_LibGameId_$100778_$", "typeString": "type(library LibGameId)" } }, "id": 97457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "pack", "nodeType": "MemberAccess", "referencedDeclaration": 100759, "src": "5376:14:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_GameType_$103271_$_t_userDefinedValueType$_Timestamp_$103261_$_t_contract$_IDisputeGame_$100327_$returns$_t_userDefinedValueType$_GameId_$103265_$", "typeString": "function (GameType,Timestamp,contract IDisputeGame) pure returns (GameId)" } }, "id": 97468, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5376:74:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, "nodeType": "VariableDeclarationStatement", "src": "5364:86:163" }, { "expression": { "id": 97474, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 97470, "name": "_disputeGames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97234, "src": "5552:13:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_Hash_$103253_$_t_userDefinedValueType$_GameId_$103265_$", "typeString": "mapping(Hash => GameId)" } }, "id": 97472, "indexExpression": { "id": 97471, "name": "uuid", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97430, "src": "5566:4:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5552:19:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 97473, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97455, "src": "5574:2:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, "src": "5552:24:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, "id": 97475, "nodeType": "ExpressionStatement", "src": "5552:24:163" }, { "expression": { "arguments": [{ "id": 97479, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97455, "src": "5608:2:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" }], "expression": { "id": 97476, "name": "_disputeGameList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97239, "src": "5586:16:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_userDefinedValueType$_GameId_$103265_$dyn_storage", "typeString": "GameId[] storage ref" } }, "id": 97478, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "src": "5586:21:163", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_userDefinedValueType$_GameId_$103265_$dyn_storage_ptr_$_t_userDefinedValueType$_GameId_$103265_$returns$__$bound_to$_t_array$_t_userDefinedValueType$_GameId_$103265_$dyn_storage_ptr_$", "typeString": "function (GameId[] storage pointer,GameId)" } }, "id": 97480, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5586:25:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97481, "nodeType": "ExpressionStatement", "src": "5586:25:163" }, { "eventCall": { "arguments": [{ "arguments": [{ "id": 97485, "name": "proxy_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97359, "src": "5653:6:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" }], "id": 97484, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5645:7:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 97483, "name": "address", "nodeType": "ElementaryTypeName", "src": "5645:7:163", "typeDescriptions": {} } }, "id": 97486, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5645:15:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 97487, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97350, "src": "5662:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, { "id": 97488, "name": "_rootClaim", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97353, "src": "5673:10:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" }], "id": 97482, "name": "DisputeGameCreated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100344, "src": "5626:18:163", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_userDefinedValueType$_GameType_$103271_$_t_userDefinedValueType$_Claim_$103255_$returns$__$", "typeString": "function (address,GameType,Claim)" } }, "id": 97489, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5626:58:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97490, "nodeType": "EmitStatement", "src": "5621:63:163" }] }, "baseFunctions": [100447], "documentation": { "id": 97347, "nodeType": "StructuredDocumentation", "src": "3098:35:163", "text": "@inheritdoc IDisputeGameFactory" }, "functionSelector": "82ecf2f6", "implemented": true, "kind": "function", "modifiers": [], "name": "create", "nameLocation": "3147:6:163", "parameters": { "id": 97356, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97350, "mutability": "mutable", "name": "_gameType", "nameLocation": "3172:9:163", "nodeType": "VariableDeclaration", "scope": 97492, "src": "3163:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, "typeName": { "id": 97349, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97348, "name": "GameType", "nodeType": "IdentifierPath", "referencedDeclaration": 103271, "src": "3163:8:163" }, "referencedDeclaration": 103271, "src": "3163:8:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "visibility": "internal" }, { "constant": false, "id": 97353, "mutability": "mutable", "name": "_rootClaim", "nameLocation": "3197:10:163", "nodeType": "VariableDeclaration", "scope": 97492, "src": "3191:16:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" }, "typeName": { "id": 97352, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97351, "name": "Claim", "nodeType": "IdentifierPath", "referencedDeclaration": 103255, "src": "3191:5:163" }, "referencedDeclaration": 103255, "src": "3191:5:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" } }, "visibility": "internal" }, { "constant": false, "id": 97355, "mutability": "mutable", "name": "_extraData", "nameLocation": "3232:10:163", "nodeType": "VariableDeclaration", "scope": 97492, "src": "3217:25:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 97354, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3217:5:163", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "src": "3153:95:163" }, "returnParameters": { "id": 97360, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97359, "mutability": "mutable", "name": "proxy_", "nameLocation": "3312:6:163", "nodeType": "VariableDeclaration", "scope": 97492, "src": "3299:19:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" }, "typeName": { "id": 97358, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97357, "name": "IDisputeGame", "nodeType": "IdentifierPath", "referencedDeclaration": 100327, "src": "3299:12:163" }, "referencedDeclaration": 100327, "src": "3299:12:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "visibility": "internal" }], "src": "3298:21:163" }, "scope": 97682, "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "id": 97522, "nodeType": "FunctionDefinition", "src": "5737:269:163", "nodes": [], "body": { "id": 97521, "nodeType": "Block", "src": "5914:92:163", "nodes": [], "statements": [{ "expression": { "id": 97519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 97507, "name": "uuid_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97505, "src": "5924:5:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [{ "arguments": [{ "arguments": [{ "id": 97513, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97496, "src": "5963:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, { "id": 97514, "name": "_rootClaim", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97499, "src": "5974:10:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" } }, { "id": 97515, "name": "_extraData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97501, "src": "5986:10:163", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }], "expression": { "id": 97511, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5952:3:163", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 97512, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encode", "nodeType": "MemberAccess", "src": "5952:10:163", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 97516, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5952:45:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "id": 97510, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "5942:9:163", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 97517, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5942:56:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }], "expression": { "id": 97508, "name": "Hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103253, "src": "5932:4:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_userDefinedValueType$_Hash_$103253_$", "typeString": "type(Hash)" } }, "id": 97509, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "wrap", "nodeType": "MemberAccess", "src": "5932:9:163", "typeDescriptions": { "typeIdentifier": "t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Hash_$103253_$", "typeString": "function (bytes32) pure returns (Hash)" } }, "id": 97518, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5932:67:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "src": "5924:75:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "id": 97520, "nodeType": "ExpressionStatement", "src": "5924:75:163" }] }, "baseFunctions": [100481], "documentation": { "id": 97493, "nodeType": "StructuredDocumentation", "src": "5697:35:163", "text": "@inheritdoc IDisputeGameFactory" }, "functionSelector": "96cd9720", "implemented": true, "kind": "function", "modifiers": [], "name": "getGameUUID", "nameLocation": "5746:11:163", "parameters": { "id": 97502, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97496, "mutability": "mutable", "name": "_gameType", "nameLocation": "5776:9:163", "nodeType": "VariableDeclaration", "scope": 97522, "src": "5767:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, "typeName": { "id": 97495, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97494, "name": "GameType", "nodeType": "IdentifierPath", "referencedDeclaration": 103271, "src": "5767:8:163" }, "referencedDeclaration": 103271, "src": "5767:8:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "visibility": "internal" }, { "constant": false, "id": 97499, "mutability": "mutable", "name": "_rootClaim", "nameLocation": "5801:10:163", "nodeType": "VariableDeclaration", "scope": 97522, "src": "5795:16:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" }, "typeName": { "id": 97498, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97497, "name": "Claim", "nodeType": "IdentifierPath", "referencedDeclaration": 103255, "src": "5795:5:163" }, "referencedDeclaration": 103255, "src": "5795:5:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" } }, "visibility": "internal" }, { "constant": false, "id": 97501, "mutability": "mutable", "name": "_extraData", "nameLocation": "5836:10:163", "nodeType": "VariableDeclaration", "scope": 97522, "src": "5821:25:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 97500, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5821:5:163", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "src": "5757:95:163" }, "returnParameters": { "id": 97506, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97505, "mutability": "mutable", "name": "uuid_", "nameLocation": "5903:5:163", "nodeType": "VariableDeclaration", "scope": 97522, "src": "5898:10:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" }, "typeName": { "id": 97504, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97503, "name": "Hash", "nodeType": "IdentifierPath", "referencedDeclaration": 103253, "src": "5898:4:163" }, "referencedDeclaration": 103253, "src": "5898:4:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Hash_$103253", "typeString": "Hash" } }, "visibility": "internal" }], "src": "5897:12:163" }, "scope": 97682, "stateMutability": "pure", "virtual": false, "visibility": "public" }, { "id": 97631, "nodeType": "FunctionDefinition", "src": "6052:1929:163", "nodes": [], "body": { "id": 97630, "nodeType": "Block", "src": "6240:1741:163", "nodes": [], "statements": [{ "condition": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 97544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 97540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 97537, "name": "_start", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97528, "src": "6374:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "expression": { "id": 97538, "name": "_disputeGameList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97239, "src": "6384:16:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_userDefinedValueType$_GameId_$103265_$dyn_storage", "typeString": "GameId[] storage ref" } }, "id": 97539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "6384:23:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6374:33:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 97543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 97541, "name": "_n", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97530, "src": "6411:2:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 97542, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6417:1:163", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "6411:7:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "6374:44:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 97547, "nodeType": "IfStatement", "src": "6370:63:163", "trueBody": { "expression": { "id": 97545, "name": "games_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97535, "src": "6427:6:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_GameSearchResult_$100374_memory_ptr_$dyn_memory_ptr", "typeString": "struct IDisputeGameFactory.GameSearchResult memory[] memory" } }, "functionReturnParameters": 97536, "id": 97546, "nodeType": "Return", "src": "6420:13:163" } }, { "AST": { "nodeType": "YulBlock", "src": "6660:109:163", "statements": [{ "nodeType": "YulAssignment", "src": "6674:21:163", "value": { "arguments": [{ "kind": "number", "nodeType": "YulLiteral", "src": "6690:4:163", "type": "", "value": "0x40" }], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "6684:5:163" }, "nodeType": "YulFunctionCall", "src": "6684:11:163" }, "variableNames": [{ "name": "games_", "nodeType": "YulIdentifier", "src": "6674:6:163" }] }, { "expression": { "arguments": [{ "kind": "number", "nodeType": "YulLiteral", "src": "6715:4:163", "type": "", "value": "0x40" }, { "arguments": [{ "name": "games_", "nodeType": "YulIdentifier", "src": "6725:6:163" }, { "arguments": [{ "kind": "number", "nodeType": "YulLiteral", "src": "6737:4:163", "type": "", "value": "0x20" }, { "arguments": [{ "kind": "number", "nodeType": "YulLiteral", "src": "6747:4:163", "type": "", "value": "0x05" }, { "name": "_n", "nodeType": "YulIdentifier", "src": "6753:2:163" }], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "6743:3:163" }, "nodeType": "YulFunctionCall", "src": "6743:13:163" }], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6733:3:163" }, "nodeType": "YulFunctionCall", "src": "6733:24:163" }], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6721:3:163" }, "nodeType": "YulFunctionCall", "src": "6721:37:163" }], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6708:6:163" }, "nodeType": "YulFunctionCall", "src": "6708:51:163" }, "nodeType": "YulExpressionStatement", "src": "6708:51:163" }] }, "evmVersion": "london", "externalReferences": [{ "declaration": 97530, "isOffset": false, "isSlot": false, "src": "6753:2:163", "valueSize": 1 }, { "declaration": 97535, "isOffset": false, "isSlot": false, "src": "6674:6:163", "valueSize": 1 }, { "declaration": 97535, "isOffset": false, "isSlot": false, "src": "6725:6:163", "valueSize": 1 }], "id": 97548, "nodeType": "InlineAssembly", "src": "6651:118:163" }, { "body": { "id": 97628, "nodeType": "Block", "src": "6923:1052:163", "statements": [{ "assignments": [97562], "declarations": [{ "constant": false, "id": 97562, "mutability": "mutable", "name": "id", "nameLocation": "6944:2:163", "nodeType": "VariableDeclaration", "scope": 97628, "src": "6937:9:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" }, "typeName": { "id": 97561, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97560, "name": "GameId", "nodeType": "IdentifierPath", "referencedDeclaration": 103265, "src": "6937:6:163" }, "referencedDeclaration": 103265, "src": "6937:6:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, "visibility": "internal" }], "id": 97566, "initialValue": { "baseExpression": { "id": 97563, "name": "_disputeGameList", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97239, "src": "6949:16:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_userDefinedValueType$_GameId_$103265_$dyn_storage", "typeString": "GameId[] storage ref" } }, "id": 97565, "indexExpression": { "id": 97564, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97550, "src": "6966:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6949:19:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, "nodeType": "VariableDeclarationStatement", "src": "6937:31:163" }, { "assignments": [97569, 97572, 97575], "declarations": [{ "constant": false, "id": 97569, "mutability": "mutable", "name": "gameType", "nameLocation": "6992:8:163", "nodeType": "VariableDeclaration", "scope": 97628, "src": "6983:17:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, "typeName": { "id": 97568, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97567, "name": "GameType", "nodeType": "IdentifierPath", "referencedDeclaration": 103271, "src": "6983:8:163" }, "referencedDeclaration": 103271, "src": "6983:8:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "visibility": "internal" }, { "constant": false, "id": 97572, "mutability": "mutable", "name": "timestamp", "nameLocation": "7012:9:163", "nodeType": "VariableDeclaration", "scope": 97628, "src": "7002:19:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" }, "typeName": { "id": 97571, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97570, "name": "Timestamp", "nodeType": "IdentifierPath", "referencedDeclaration": 103261, "src": "7002:9:163" }, "referencedDeclaration": 103261, "src": "7002:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" } }, "visibility": "internal" }, { "constant": false, "id": 97575, "mutability": "mutable", "name": "proxy", "nameLocation": "7036:5:163", "nodeType": "VariableDeclaration", "scope": 97628, "src": "7023:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" }, "typeName": { "id": 97574, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97573, "name": "IDisputeGame", "nodeType": "IdentifierPath", "referencedDeclaration": 100327, "src": "7023:12:163" }, "referencedDeclaration": 100327, "src": "7023:12:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "visibility": "internal" }], "id": 97579, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 97576, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97562, "src": "7045:2:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, "id": 97577, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "unpack", "nodeType": "MemberAccess", "referencedDeclaration": 100777, "src": "7045:9:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_GameId_$103265_$returns$_t_userDefinedValueType$_GameType_$103271_$_t_userDefinedValueType$_Timestamp_$103261_$_t_contract$_IDisputeGame_$100327_$bound_to$_t_userDefinedValueType$_GameId_$103265_$", "typeString": "function (GameId) pure returns (GameType,Timestamp,contract IDisputeGame)" } }, "id": 97578, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7045:11:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_userDefinedValueType$_GameType_$103271_$_t_userDefinedValueType$_Timestamp_$103261_$_t_contract$_IDisputeGame_$100327_$", "typeString": "tuple(GameType,Timestamp,contract IDisputeGame)" } }, "nodeType": "VariableDeclarationStatement", "src": "6982:74:163" }, { "condition": { "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 97586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 97580, "name": "gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97569, "src": "7075:8:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "id": 97581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "raw", "nodeType": "MemberAccess", "referencedDeclaration": 101150, "src": "7075:12:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_GameType_$103271_$returns$_t_uint32_$bound_to$_t_userDefinedValueType$_GameType_$103271_$", "typeString": "function (GameType) pure returns (uint32)" } }, "id": 97582, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7075:14:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 97583, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97526, "src": "7093:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "id": 97584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "raw", "nodeType": "MemberAccess", "referencedDeclaration": 101150, "src": "7093:13:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_GameType_$103271_$returns$_t_uint32_$bound_to$_t_userDefinedValueType$_GameType_$103271_$", "typeString": "function (GameType) pure returns (uint32)" } }, "id": 97585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7093:15:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "7075:33:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 97623, "nodeType": "IfStatement", "src": "7071:834:163", "trueBody": { "id": 97622, "nodeType": "Block", "src": "7110:795:163", "statements": [{ "AST": { "nodeType": "YulBlock", "src": "7377:80:163", "statements": [{ "expression": { "arguments": [{ "name": "games_", "nodeType": "YulIdentifier", "src": "7406:6:163" }, { "arguments": [{ "arguments": [{ "name": "games_", "nodeType": "YulIdentifier", "src": "7424:6:163" }], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "7418:5:163" }, "nodeType": "YulFunctionCall", "src": "7418:13:163" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7433:4:163", "type": "", "value": "0x01" }], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7414:3:163" }, "nodeType": "YulFunctionCall", "src": "7414:24:163" }], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7399:6:163" }, "nodeType": "YulFunctionCall", "src": "7399:40:163" }, "nodeType": "YulExpressionStatement", "src": "7399:40:163" }] }, "evmVersion": "london", "externalReferences": [{ "declaration": 97535, "isOffset": false, "isSlot": false, "src": "7406:6:163", "valueSize": 1 }, { "declaration": 97535, "isOffset": false, "isSlot": false, "src": "7424:6:163", "valueSize": 1 }], "id": 97587, "nodeType": "InlineAssembly", "src": "7368:89:163" }, { "assignments": [97589], "declarations": [{ "constant": false, "id": 97589, "mutability": "mutable", "name": "extraData", "nameLocation": "7488:9:163", "nodeType": "VariableDeclaration", "scope": 97622, "src": "7475:22:163", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 97588, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7475:5:163", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "id": 97593, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 97590, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97575, "src": "7500:5:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "id": 97591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "extraData", "nodeType": "MemberAccess", "referencedDeclaration": 100307, "src": "7500:15:163", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure external returns (bytes memory)" } }, "id": 97592, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7500:17:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", "src": "7475:42:163" }, { "assignments": [97596], "declarations": [{ "constant": false, "id": 97596, "mutability": "mutable", "name": "rootClaim", "nameLocation": "7541:9:163", "nodeType": "VariableDeclaration", "scope": 97622, "src": "7535:15:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" }, "typeName": { "id": 97595, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97594, "name": "Claim", "nodeType": "IdentifierPath", "referencedDeclaration": 103255, "src": "7535:5:163" }, "referencedDeclaration": 103255, "src": "7535:5:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" } }, "visibility": "internal" }], "id": 97600, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 97597, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97575, "src": "7553:5:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "id": 97598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "rootClaim", "nodeType": "MemberAccess", "referencedDeclaration": 100294, "src": "7553:15:163", "typeDescriptions": { "typeIdentifier": "t_function_external_pure$__$returns$_t_userDefinedValueType$_Claim_$103255_$", "typeString": "function () pure external returns (Claim)" } }, "id": 97599, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7553:17:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" } }, "nodeType": "VariableDeclarationStatement", "src": "7535:35:163" }, { "expression": { "id": 97614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 97601, "name": "games_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97535, "src": "7588:6:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_GameSearchResult_$100374_memory_ptr_$dyn_memory_ptr", "typeString": "struct IDisputeGameFactory.GameSearchResult memory[] memory" } }, "id": 97606, "indexExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 97605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 97602, "name": "games_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97535, "src": "7595:6:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_GameSearchResult_$100374_memory_ptr_$dyn_memory_ptr", "typeString": "struct IDisputeGameFactory.GameSearchResult memory[] memory" } }, "id": 97603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "7595:13:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "hexValue": "31", "id": 97604, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7611:1:163", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "7595:17:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7588:25:163", "typeDescriptions": { "typeIdentifier": "t_struct$_GameSearchResult_$100374_memory_ptr", "typeString": "struct IDisputeGameFactory.GameSearchResult memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [{ "id": 97608, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97550, "src": "7662:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 97609, "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97562, "src": "7695:2:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" } }, { "id": 97610, "name": "timestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97572, "src": "7730:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" } }, { "id": 97611, "name": "rootClaim", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97596, "src": "7772:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" } }, { "id": 97612, "name": "extraData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97589, "src": "7814:9:163", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_userDefinedValueType$_GameId_$103265", "typeString": "GameId" }, { "typeIdentifier": "t_userDefinedValueType$_Timestamp_$103261", "typeString": "Timestamp" }, { "typeIdentifier": "t_userDefinedValueType$_Claim_$103255", "typeString": "Claim" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "id": 97607, "name": "GameSearchResult", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100374, "src": "7616:16:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_GameSearchResult_$100374_storage_ptr_$", "typeString": "type(struct IDisputeGameFactory.GameSearchResult storage pointer)" } }, "id": 97613, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "names": ["index", "metadata", "timestamp", "rootClaim", "extraData"], "nodeType": "FunctionCall", "src": "7616:226:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_GameSearchResult_$100374_memory_ptr", "typeString": "struct IDisputeGameFactory.GameSearchResult memory" } }, "src": "7588:254:163", "typeDescriptions": { "typeIdentifier": "t_struct$_GameSearchResult_$100374_memory_ptr", "typeString": "struct IDisputeGameFactory.GameSearchResult memory" } }, "id": 97615, "nodeType": "ExpressionStatement", "src": "7588:254:163" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 97619, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 97616, "name": "games_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97535, "src": "7864:6:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_GameSearchResult_$100374_memory_ptr_$dyn_memory_ptr", "typeString": "struct IDisputeGameFactory.GameSearchResult memory[] memory" } }, "id": 97617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "7864:13:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "id": 97618, "name": "_n", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97530, "src": "7881:2:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7864:19:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 97621, "nodeType": "IfStatement", "src": "7860:30:163", "trueBody": { "id": 97620, "nodeType": "Break", "src": "7885:5:163" } }] } }, { "id": 97627, "nodeType": "UncheckedBlock", "src": "7919:46:163", "statements": [{ "expression": { "id": 97625, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "7947:3:163", "subExpression": { "id": 97624, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97550, "src": "7947:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 97626, "nodeType": "ExpressionStatement", "src": "7947:3:163" }] }] }, "condition": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 97559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 97555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 97553, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97550, "src": "6899:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "hexValue": "30", "id": 97554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6904:1:163", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "6899:6:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 97558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 97556, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97550, "src": "6909:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "id": 97557, "name": "_start", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97528, "src": "6914:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6909:11:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "6899:21:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 97629, "initializationExpression": { "assignments": [97550], "declarations": [{ "constant": false, "id": 97550, "mutability": "mutable", "name": "i", "nameLocation": "6887:1:163", "nodeType": "VariableDeclaration", "scope": 97629, "src": "6879:9:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 97549, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6879:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "id": 97552, "initialValue": { "id": 97551, "name": "_start", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97528, "src": "6891:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "6879:18:163" }, "nodeType": "ForStatement", "src": "6874:1101:163" }] }, "baseFunctions": [100496], "documentation": { "id": 97523, "nodeType": "StructuredDocumentation", "src": "6012:35:163", "text": "@inheritdoc IDisputeGameFactory" }, "functionSelector": "254bd683", "implemented": true, "kind": "function", "modifiers": [], "name": "findLatestGames", "nameLocation": "6061:15:163", "parameters": { "id": 97531, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97526, "mutability": "mutable", "name": "_gameType", "nameLocation": "6095:9:163", "nodeType": "VariableDeclaration", "scope": 97631, "src": "6086:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, "typeName": { "id": 97525, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97524, "name": "GameType", "nodeType": "IdentifierPath", "referencedDeclaration": 103271, "src": "6086:8:163" }, "referencedDeclaration": 103271, "src": "6086:8:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "visibility": "internal" }, { "constant": false, "id": 97528, "mutability": "mutable", "name": "_start", "nameLocation": "6122:6:163", "nodeType": "VariableDeclaration", "scope": 97631, "src": "6114:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 97527, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6114:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 97530, "mutability": "mutable", "name": "_n", "nameLocation": "6146:2:163", "nodeType": "VariableDeclaration", "scope": 97631, "src": "6138:10:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 97529, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6138:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "6076:78:163" }, "returnParameters": { "id": 97536, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97535, "mutability": "mutable", "name": "games_", "nameLocation": "6228:6:163", "nodeType": "VariableDeclaration", "scope": 97631, "src": "6202:32:163", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_GameSearchResult_$100374_memory_ptr_$dyn_memory_ptr", "typeString": "struct IDisputeGameFactory.GameSearchResult[]" }, "typeName": { "baseType": { "id": 97533, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97532, "name": "GameSearchResult", "nodeType": "IdentifierPath", "referencedDeclaration": 100374, "src": "6202:16:163" }, "referencedDeclaration": 100374, "src": "6202:16:163", "typeDescriptions": { "typeIdentifier": "t_struct$_GameSearchResult_$100374_storage_ptr", "typeString": "struct IDisputeGameFactory.GameSearchResult" } }, "id": 97534, "nodeType": "ArrayTypeName", "src": "6202:18:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_GameSearchResult_$100374_storage_$dyn_storage_ptr", "typeString": "struct IDisputeGameFactory.GameSearchResult[]" } }, "visibility": "internal" }], "src": "6201:34:163" }, "scope": 97682, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 97658, "nodeType": "FunctionDefinition", "src": "8027:190:163", "nodes": [], "body": { "id": 97657, "nodeType": "Block", "src": "8113:104:163", "nodes": [], "statements": [{ "expression": { "id": 97647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 97643, "name": "gameImpls", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97221, "src": "8123:9:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_GameType_$103271_$_t_contract$_IDisputeGame_$100327_$", "typeString": "mapping(GameType => contract IDisputeGame)" } }, "id": 97645, "indexExpression": { "id": 97644, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97635, "src": "8133:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8123:20:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 97646, "name": "_impl", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97638, "src": "8146:5:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "src": "8123:28:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "id": 97648, "nodeType": "ExpressionStatement", "src": "8123:28:163" }, { "eventCall": { "arguments": [{ "arguments": [{ "id": 97652, "name": "_impl", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97638, "src": "8192:5:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" }], "id": 97651, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8184:7:163", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 97650, "name": "address", "nodeType": "ElementaryTypeName", "src": "8184:7:163", "typeDescriptions": {} } }, "id": 97653, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8184:14:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 97654, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97635, "src": "8200:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }], "id": 97649, "name": "ImplementationSet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100352, "src": "8166:17:163", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_userDefinedValueType$_GameType_$103271_$returns$__$", "typeString": "function (address,GameType)" } }, "id": 97655, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8166:44:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97656, "nodeType": "EmitStatement", "src": "8161:49:163" }] }, "baseFunctions": [100457], "documentation": { "id": 97632, "nodeType": "StructuredDocumentation", "src": "7987:35:163", "text": "@inheritdoc IDisputeGameFactory" }, "functionSelector": "14f6b1a3", "implemented": true, "kind": "function", "modifiers": [{ "id": 97641, "kind": "modifierInvocation", "modifierName": { "id": 97640, "name": "onlyOwner", "nodeType": "IdentifierPath", "referencedDeclaration": 46877, "src": "8103:9:163" }, "nodeType": "ModifierInvocation", "src": "8103:9:163" }], "name": "setImplementation", "nameLocation": "8036:17:163", "parameters": { "id": 97639, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97635, "mutability": "mutable", "name": "_gameType", "nameLocation": "8063:9:163", "nodeType": "VariableDeclaration", "scope": 97658, "src": "8054:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, "typeName": { "id": 97634, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97633, "name": "GameType", "nodeType": "IdentifierPath", "referencedDeclaration": 103271, "src": "8054:8:163" }, "referencedDeclaration": 103271, "src": "8054:8:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "visibility": "internal" }, { "constant": false, "id": 97638, "mutability": "mutable", "name": "_impl", "nameLocation": "8087:5:163", "nodeType": "VariableDeclaration", "scope": 97658, "src": "8074:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" }, "typeName": { "id": 97637, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97636, "name": "IDisputeGame", "nodeType": "IdentifierPath", "referencedDeclaration": 100327, "src": "8074:12:163" }, "referencedDeclaration": 100327, "src": "8074:12:163", "typeDescriptions": { "typeIdentifier": "t_contract$_IDisputeGame_$100327", "typeString": "contract IDisputeGame" } }, "visibility": "internal" }], "src": "8053:40:163" }, "returnParameters": { "id": 97642, "nodeType": "ParameterList", "parameters": [], "src": "8113:0:163" }, "scope": 97682, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 97681, "nodeType": "FunctionDefinition", "src": "8263:180:163", "nodes": [], "body": { "id": 97680, "nodeType": "Block", "src": "8342:101:163", "nodes": [], "statements": [{ "expression": { "id": 97673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 97669, "name": "initBonds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97227, "src": "8352:9:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_userDefinedValueType$_GameType_$103271_$_t_uint256_$", "typeString": "mapping(GameType => uint256)" } }, "id": 97671, "indexExpression": { "id": 97670, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97662, "src": "8362:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8352:20:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 97672, "name": "_initBond", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97664, "src": "8375:9:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8352:32:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 97674, "nodeType": "ExpressionStatement", "src": "8352:32:163" }, { "eventCall": { "arguments": [{ "id": 97676, "name": "_gameType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97662, "src": "8415:9:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, { "id": 97677, "name": "_initBond", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 97664, "src": "8426:9:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 97675, "name": "InitBondUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100360, "src": "8399:15:163", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_userDefinedValueType$_GameType_$103271_$_t_uint256_$returns$__$", "typeString": "function (GameType,uint256)" } }, "id": 97678, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8399:37:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 97679, "nodeType": "EmitStatement", "src": "8394:42:163" }] }, "baseFunctions": [100466], "documentation": { "id": 97659, "nodeType": "StructuredDocumentation", "src": "8223:35:163", "text": "@inheritdoc IDisputeGameFactory" }, "functionSelector": "1e334240", "implemented": true, "kind": "function", "modifiers": [{ "id": 97667, "kind": "modifierInvocation", "modifierName": { "id": 97666, "name": "onlyOwner", "nodeType": "IdentifierPath", "referencedDeclaration": 46877, "src": "8332:9:163" }, "nodeType": "ModifierInvocation", "src": "8332:9:163" }], "name": "setInitBond", "nameLocation": "8272:11:163", "parameters": { "id": 97665, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 97662, "mutability": "mutable", "name": "_gameType", "nameLocation": "8293:9:163", "nodeType": "VariableDeclaration", "scope": 97681, "src": "8284:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" }, "typeName": { "id": 97661, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 97660, "name": "GameType", "nodeType": "IdentifierPath", "referencedDeclaration": 103271, "src": "8284:8:163" }, "referencedDeclaration": 103271, "src": "8284:8:163", "typeDescriptions": { "typeIdentifier": "t_userDefinedValueType$_GameType_$103271", "typeString": "GameType" } }, "visibility": "internal" }, { "constant": false, "id": 97664, "mutability": "mutable", "name": "_initBond", "nameLocation": "8312:9:163", "nodeType": "VariableDeclaration", "scope": 97681, "src": "8304:17:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 97663, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8304:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "8283:39:163" }, "returnParameters": { "id": 97668, "nodeType": "ParameterList", "parameters": [], "src": "8342:0:163" }, "scope": 97682, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }], "abstract": false, "baseContracts": [{ "baseName": { "id": 97202, "name": "OwnableUpgradeable", "nodeType": "IdentifierPath", "referencedDeclaration": 46963, "src": "1020:18:163" }, "id": 97203, "nodeType": "InheritanceSpecifier", "src": "1020:18:163" }, { "baseName": { "id": 97204, "name": "IDisputeGameFactory", "nodeType": "IdentifierPath", "referencedDeclaration": 100497, "src": "1040:19:163" }, "id": 97205, "nodeType": "InheritanceSpecifier", "src": "1040:19:163" }, { "baseName": { "id": 97206, "name": "ISemver", "nodeType": "IdentifierPath", "referencedDeclaration": 109417, "src": "1061:7:163" }, "id": 97207, "nodeType": "InheritanceSpecifier", "src": "1061:7:163" }], "canonicalName": "DisputeGameFactory", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 97201, "nodeType": "StructuredDocumentation", "src": "573:416:163", "text": "@title DisputeGameFactory\n @notice A factory contract for creating `IDisputeGame` contracts. All created dispute games are stored in both a\n         mapping and an append only array. The timestamp of the creation time of the dispute game is packed tightly\n         into the storage slot with the address of the dispute game to make offchain discoverability of playable\n         dispute games easier." }, "fullyImplemented": true, "linearizedBaseContracts": [97682, 109417, 100497, 46963, 48502, 47114], "name": "DisputeGameFactory", "nameLocation": "998:18:163", "scope": 97683, "usedErrors": [103105, 103111, 103123] }], "license": "MIT" }, "id": 163 }
