UNPKG

@tokamak-network/thanos-contracts

Version:
1 lines 81.7 kB
{"abi":[],"bytecode":{"object":"0x602c6032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c634300081a000a","sourceMap":"599:8922:58:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;599:8922:58;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c634300081a000a","sourceMap":"599:8922:58:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"LibPosition\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains helper functions for working with the `Position` type.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/dispute/lib/LibPosition.sol\":\"LibPosition\"},\"evmVersion\":\"cancun\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"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/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/dispute/lib/LibPosition.sol\":{\"keccak256\":\"0x7c5f19f8f54f06de2ce1c6cdcc5c7af65ac405130a4066cdaf146ca315818241\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06905e5ede94784e32748ad60557cb0b0829089d65430518e7042b80d2f64e2d\",\"dweb:/ipfs/QmeGKMmnFnow2VrRvTSPavCrToqQ3qDpEaR1tVoK6Hzg8K\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"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/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/dispute/lib/LibPosition.sol":"LibPosition"},"evmVersion":"cancun","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/dispute/lib/LibPosition.sol":{"keccak256":"0x7c5f19f8f54f06de2ce1c6cdcc5c7af65ac405130a4066cdaf146ca315818241","urls":["bzz-raw://06905e5ede94784e32748ad60557cb0b0829089d65430518e7042b80d2f64e2d","dweb:/ipfs/QmeGKMmnFnow2VrRvTSPavCrToqQ3qDpEaR1tVoK6Hzg8K"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user","notice":"This library contains helper functions for working with the `Position` type."},"devdoc":{"version":1,"kind":"dev","title":"LibPosition"},"ast":{"absolutePath":"src/dispute/lib/LibPosition.sol","id":54627,"exportedSymbols":{"LibPosition":[54626],"Position":[54413]},"nodeType":"SourceUnit","src":"32:9490:58","nodes":[{"id":54407,"nodeType":"PragmaDirective","src":"32:24:58","nodes":[],"literals":["solidity","^","0.8",".15"]},{"id":54411,"nodeType":"UsingForDirective","src":"58:38:58","nodes":[],"global":true,"libraryName":{"id":54408,"name":"LibPosition","nameLocations":["64:11:58"],"nodeType":"IdentifierPath","referencedDeclaration":54626,"src":"64:11:58"},"typeName":{"id":54410,"nodeType":"UserDefinedTypeName","pathNode":{"id":54409,"name":"Position","nameLocations":["80:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"80:8:58"},"referencedDeclaration":54413,"src":"80:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}}},{"id":54413,"nodeType":"UserDefinedValueTypeDefinition","src":"460:25:58","nodes":[],"canonicalName":"Position","name":"Position","nameLocation":"465:8:58","underlyingType":{"id":54412,"name":"uint128","nodeType":"ElementaryTypeName","src":"477:7:58","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}},{"id":54626,"nodeType":"ContractDefinition","src":"599:8922:58","nodes":[{"id":54418,"nodeType":"VariableDeclaration","src":"811:49:58","nodes":[],"constant":true,"documentation":{"id":54415,"nodeType":"StructuredDocumentation","src":"625:181:58","text":"@notice the `MAX_POSITION_BITLEN` is the number of bits that the `Position` type, and the implementation of\n its behavior within this library, can safely support."},"mutability":"constant","name":"MAX_POSITION_BITLEN","nameLocation":"835:19:58","scope":54626,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":54416,"name":"uint8","nodeType":"ElementaryTypeName","src":"811:5:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"313236","id":54417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"857:3:58","typeDescriptions":{"typeIdentifier":"t_rational_126_by_1","typeString":"int_const 126"},"value":"126"},"visibility":"internal"},{"id":54431,"nodeType":"FunctionDefinition","src":"1116:241:58","nodes":[],"body":{"id":54430,"nodeType":"Block","src":"1210:147:58","nodes":[],"statements":[{"AST":{"nativeSrc":"1229:122:58","nodeType":"YulBlock","src":"1229:122:58","statements":[{"nativeSrc":"1294:47:58","nodeType":"YulAssignment","src":"1294:47:58","value":{"arguments":[{"arguments":[{"name":"_depth","nativeSrc":"1315:6:58","nodeType":"YulIdentifier","src":"1315:6:58"},{"kind":"number","nativeSrc":"1323:1:58","nodeType":"YulLiteral","src":"1323:1:58","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1311:3:58","nodeType":"YulIdentifier","src":"1311:3:58"},"nativeSrc":"1311:14:58","nodeType":"YulFunctionCall","src":"1311:14:58"},{"name":"_indexAtDepth","nativeSrc":"1327:13:58","nodeType":"YulIdentifier","src":"1327:13:58"}],"functionName":{"name":"add","nativeSrc":"1307:3:58","nodeType":"YulIdentifier","src":"1307:3:58"},"nativeSrc":"1307:34:58","nodeType":"YulFunctionCall","src":"1307:34:58"},"variableNames":[{"name":"position_","nativeSrc":"1294:9:58","nodeType":"YulIdentifier","src":"1294:9:58"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":54421,"isOffset":false,"isSlot":false,"src":"1315:6:58","valueSize":1},{"declaration":54423,"isOffset":false,"isSlot":false,"src":"1327:13:58","valueSize":1},{"declaration":54427,"isOffset":false,"isSlot":false,"src":"1294:9:58","valueSize":1}],"id":54429,"nodeType":"InlineAssembly","src":"1220:131:58"}]},"documentation":{"id":54419,"nodeType":"StructuredDocumentation","src":"867:244:58","text":"@notice Computes a generalized index (2^{depth} + indexAtDepth).\n @param _depth The depth of the position.\n @param _indexAtDepth The index at the depth of the position.\n @return position_ The computed generalized index."},"implemented":true,"kind":"function","modifiers":[],"name":"wrap","nameLocation":"1125:4:58","parameters":{"id":54424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54421,"mutability":"mutable","name":"_depth","nameLocation":"1136:6:58","nodeType":"VariableDeclaration","scope":54431,"src":"1130:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":54420,"name":"uint8","nodeType":"ElementaryTypeName","src":"1130:5:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":54423,"mutability":"mutable","name":"_indexAtDepth","nameLocation":"1152:13:58","nodeType":"VariableDeclaration","scope":54431,"src":"1144:21:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54422,"name":"uint128","nodeType":"ElementaryTypeName","src":"1144:7:58","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1129:37:58"},"returnParameters":{"id":54428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54427,"mutability":"mutable","name":"position_","nameLocation":"1199:9:58","nodeType":"VariableDeclaration","scope":54431,"src":"1190:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54426,"nodeType":"UserDefinedTypeName","pathNode":{"id":54425,"name":"Position","nameLocations":["1190:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"1190:8:58"},"referencedDeclaration":54413,"src":"1190:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"}],"src":"1189:20:58"},"scope":54626,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":54442,"nodeType":"FunctionDefinition","src":"1628:1076:58","nodes":[],"body":{"id":54441,"nodeType":"Block","src":"1700:1004:58","nodes":[],"statements":[{"AST":{"nativeSrc":"1811:887:58","nodeType":"YulBlock","src":"1811:887:58","statements":[{"nativeSrc":"1825:76:58","nodeType":"YulAssignment","src":"1825:76:58","value":{"arguments":[{"name":"depth_","nativeSrc":"1838:6:58","nodeType":"YulIdentifier","src":"1838:6:58"},{"arguments":[{"kind":"number","nativeSrc":"1850:1:58","nodeType":"YulLiteral","src":"1850:1:58","type":"","value":"6"},{"arguments":[{"kind":"number","nativeSrc":"1856:18:58","nodeType":"YulLiteral","src":"1856:18:58","type":"","value":"0xffffffffffffffff"},{"arguments":[{"name":"depth_","nativeSrc":"1880:6:58","nodeType":"YulIdentifier","src":"1880:6:58"},{"name":"_position","nativeSrc":"1888:9:58","nodeType":"YulIdentifier","src":"1888:9:58"}],"functionName":{"name":"shr","nativeSrc":"1876:3:58","nodeType":"YulIdentifier","src":"1876:3:58"},"nativeSrc":"1876:22:58","nodeType":"YulFunctionCall","src":"1876:22:58"}],"functionName":{"name":"lt","nativeSrc":"1853:2:58","nodeType":"YulIdentifier","src":"1853:2:58"},"nativeSrc":"1853:46:58","nodeType":"YulFunctionCall","src":"1853:46:58"}],"functionName":{"name":"shl","nativeSrc":"1846:3:58","nodeType":"YulIdentifier","src":"1846:3:58"},"nativeSrc":"1846:54:58","nodeType":"YulFunctionCall","src":"1846:54:58"}],"functionName":{"name":"or","nativeSrc":"1835:2:58","nodeType":"YulIdentifier","src":"1835:2:58"},"nativeSrc":"1835:66:58","nodeType":"YulFunctionCall","src":"1835:66:58"},"variableNames":[{"name":"depth_","nativeSrc":"1825:6:58","nodeType":"YulIdentifier","src":"1825:6:58"}]},{"nativeSrc":"1914:68:58","nodeType":"YulAssignment","src":"1914:68:58","value":{"arguments":[{"name":"depth_","nativeSrc":"1927:6:58","nodeType":"YulIdentifier","src":"1927:6:58"},{"arguments":[{"kind":"number","nativeSrc":"1939:1:58","nodeType":"YulLiteral","src":"1939:1:58","type":"","value":"5"},{"arguments":[{"kind":"number","nativeSrc":"1945:10:58","nodeType":"YulLiteral","src":"1945:10:58","type":"","value":"0xffffffff"},{"arguments":[{"name":"depth_","nativeSrc":"1961:6:58","nodeType":"YulIdentifier","src":"1961:6:58"},{"name":"_position","nativeSrc":"1969:9:58","nodeType":"YulIdentifier","src":"1969:9:58"}],"functionName":{"name":"shr","nativeSrc":"1957:3:58","nodeType":"YulIdentifier","src":"1957:3:58"},"nativeSrc":"1957:22:58","nodeType":"YulFunctionCall","src":"1957:22:58"}],"functionName":{"name":"lt","nativeSrc":"1942:2:58","nodeType":"YulIdentifier","src":"1942:2:58"},"nativeSrc":"1942:38:58","nodeType":"YulFunctionCall","src":"1942:38:58"}],"functionName":{"name":"shl","nativeSrc":"1935:3:58","nodeType":"YulIdentifier","src":"1935:3:58"},"nativeSrc":"1935:46:58","nodeType":"YulFunctionCall","src":"1935:46:58"}],"functionName":{"name":"or","nativeSrc":"1924:2:58","nodeType":"YulIdentifier","src":"1924:2:58"},"nativeSrc":"1924:58:58","nodeType":"YulFunctionCall","src":"1924:58:58"},"variableNames":[{"name":"depth_","nativeSrc":"1914:6:58","nodeType":"YulIdentifier","src":"1914:6:58"}]},{"nativeSrc":"2062:35:58","nodeType":"YulAssignment","src":"2062:35:58","value":{"arguments":[{"name":"depth_","nativeSrc":"2079:6:58","nodeType":"YulIdentifier","src":"2079:6:58"},{"name":"_position","nativeSrc":"2087:9:58","nodeType":"YulIdentifier","src":"2087:9:58"}],"functionName":{"name":"shr","nativeSrc":"2075:3:58","nodeType":"YulIdentifier","src":"2075:3:58"},"nativeSrc":"2075:22:58","nodeType":"YulFunctionCall","src":"2075:22:58"},"variableNames":[{"name":"_position","nativeSrc":"2062:9:58","nodeType":"YulIdentifier","src":"2062:9:58"}]},{"nativeSrc":"2110:45:58","nodeType":"YulAssignment","src":"2110:45:58","value":{"arguments":[{"name":"_position","nativeSrc":"2126:9:58","nodeType":"YulIdentifier","src":"2126:9:58"},{"arguments":[{"kind":"number","nativeSrc":"2141:1:58","nodeType":"YulLiteral","src":"2141:1:58","type":"","value":"1"},{"name":"_position","nativeSrc":"2144:9:58","nodeType":"YulIdentifier","src":"2144:9:58"}],"functionName":{"name":"shr","nativeSrc":"2137:3:58","nodeType":"YulIdentifier","src":"2137:3:58"},"nativeSrc":"2137:17:58","nodeType":"YulFunctionCall","src":"2137:17:58"}],"functionName":{"name":"or","nativeSrc":"2123:2:58","nodeType":"YulIdentifier","src":"2123:2:58"},"nativeSrc":"2123:32:58","nodeType":"YulFunctionCall","src":"2123:32:58"},"variableNames":[{"name":"_position","nativeSrc":"2110:9:58","nodeType":"YulIdentifier","src":"2110:9:58"}]},{"nativeSrc":"2168:45:58","nodeType":"YulAssignment","src":"2168:45:58","value":{"arguments":[{"name":"_position","nativeSrc":"2184:9:58","nodeType":"YulIdentifier","src":"2184:9:58"},{"arguments":[{"kind":"number","nativeSrc":"2199:1:58","nodeType":"YulLiteral","src":"2199:1:58","type":"","value":"2"},{"name":"_position","nativeSrc":"2202:9:58","nodeType":"YulIdentifier","src":"2202:9:58"}],"functionName":{"name":"shr","nativeSrc":"2195:3:58","nodeType":"YulIdentifier","src":"2195:3:58"},"nativeSrc":"2195:17:58","nodeType":"YulFunctionCall","src":"2195:17:58"}],"functionName":{"name":"or","nativeSrc":"2181:2:58","nodeType":"YulIdentifier","src":"2181:2:58"},"nativeSrc":"2181:32:58","nodeType":"YulFunctionCall","src":"2181:32:58"},"variableNames":[{"name":"_position","nativeSrc":"2168:9:58","nodeType":"YulIdentifier","src":"2168:9:58"}]},{"nativeSrc":"2226:45:58","nodeType":"YulAssignment","src":"2226:45:58","value":{"arguments":[{"name":"_position","nativeSrc":"2242:9:58","nodeType":"YulIdentifier","src":"2242:9:58"},{"arguments":[{"kind":"number","nativeSrc":"2257:1:58","nodeType":"YulLiteral","src":"2257:1:58","type":"","value":"4"},{"name":"_position","nativeSrc":"2260:9:58","nodeType":"YulIdentifier","src":"2260:9:58"}],"functionName":{"name":"shr","nativeSrc":"2253:3:58","nodeType":"YulIdentifier","src":"2253:3:58"},"nativeSrc":"2253:17:58","nodeType":"YulFunctionCall","src":"2253:17:58"}],"functionName":{"name":"or","nativeSrc":"2239:2:58","nodeType":"YulIdentifier","src":"2239:2:58"},"nativeSrc":"2239:32:58","nodeType":"YulFunctionCall","src":"2239:32:58"},"variableNames":[{"name":"_position","nativeSrc":"2226:9:58","nodeType":"YulIdentifier","src":"2226:9:58"}]},{"nativeSrc":"2284:45:58","nodeType":"YulAssignment","src":"2284:45:58","value":{"arguments":[{"name":"_position","nativeSrc":"2300:9:58","nodeType":"YulIdentifier","src":"2300:9:58"},{"arguments":[{"kind":"number","nativeSrc":"2315:1:58","nodeType":"YulLiteral","src":"2315:1:58","type":"","value":"8"},{"name":"_position","nativeSrc":"2318:9:58","nodeType":"YulIdentifier","src":"2318:9:58"}],"functionName":{"name":"shr","nativeSrc":"2311:3:58","nodeType":"YulIdentifier","src":"2311:3:58"},"nativeSrc":"2311:17:58","nodeType":"YulFunctionCall","src":"2311:17:58"}],"functionName":{"name":"or","nativeSrc":"2297:2:58","nodeType":"YulIdentifier","src":"2297:2:58"},"nativeSrc":"2297:32:58","nodeType":"YulFunctionCall","src":"2297:32:58"},"variableNames":[{"name":"_position","nativeSrc":"2284:9:58","nodeType":"YulIdentifier","src":"2284:9:58"}]},{"nativeSrc":"2342:46:58","nodeType":"YulAssignment","src":"2342:46:58","value":{"arguments":[{"name":"_position","nativeSrc":"2358:9:58","nodeType":"YulIdentifier","src":"2358:9:58"},{"arguments":[{"kind":"number","nativeSrc":"2373:2:58","nodeType":"YulLiteral","src":"2373:2:58","type":"","value":"16"},{"name":"_position","nativeSrc":"2377:9:58","nodeType":"YulIdentifier","src":"2377:9:58"}],"functionName":{"name":"shr","nativeSrc":"2369:3:58","nodeType":"YulIdentifier","src":"2369:3:58"},"nativeSrc":"2369:18:58","nodeType":"YulFunctionCall","src":"2369:18:58"}],"functionName":{"name":"or","nativeSrc":"2355:2:58","nodeType":"YulIdentifier","src":"2355:2:58"},"nativeSrc":"2355:33:58","nodeType":"YulFunctionCall","src":"2355:33:58"},"variableNames":[{"name":"_position","nativeSrc":"2342:9:58","nodeType":"YulIdentifier","src":"2342:9:58"}]},{"nativeSrc":"2402:286:58","nodeType":"YulAssignment","src":"2402:286:58","value":{"arguments":[{"name":"depth_","nativeSrc":"2452:6:58","nodeType":"YulIdentifier","src":"2452:6:58"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2514:3:58","nodeType":"YulLiteral","src":"2514:3:58","type":"","value":"251"},{"arguments":[{"name":"_position","nativeSrc":"2523:9:58","nodeType":"YulIdentifier","src":"2523:9:58"},{"arguments":[{"kind":"number","nativeSrc":"2538:3:58","nodeType":"YulLiteral","src":"2538:3:58","type":"","value":"224"},{"kind":"number","nativeSrc":"2543:10:58","nodeType":"YulLiteral","src":"2543:10:58","type":"","value":"0x07c4acdd"}],"functionName":{"name":"shl","nativeSrc":"2534:3:58","nodeType":"YulIdentifier","src":"2534:3:58"},"nativeSrc":"2534:20:58","nodeType":"YulFunctionCall","src":"2534:20:58"}],"functionName":{"name":"mul","nativeSrc":"2519:3:58","nodeType":"YulIdentifier","src":"2519:3:58"},"nativeSrc":"2519:36:58","nodeType":"YulFunctionCall","src":"2519:36:58"}],"functionName":{"name":"shr","nativeSrc":"2510:3:58","nodeType":"YulIdentifier","src":"2510:3:58"},"nativeSrc":"2510:46:58","nodeType":"YulFunctionCall","src":"2510:46:58"},{"kind":"number","nativeSrc":"2582:66:58","nodeType":"YulLiteral","src":"2582:66:58","type":"","value":"0x0009010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f"}],"functionName":{"name":"byte","nativeSrc":"2480:4:58","nodeType":"YulIdentifier","src":"2480:4:58"},"nativeSrc":"2480:190:58","nodeType":"YulFunctionCall","src":"2480:190:58"}],"functionName":{"name":"or","nativeSrc":"2428:2:58","nodeType":"YulIdentifier","src":"2428:2:58"},"nativeSrc":"2428:260:58","nodeType":"YulFunctionCall","src":"2428:260:58"},"variableNames":[{"name":"depth_","nativeSrc":"2402:6:58","nodeType":"YulIdentifier","src":"2402:6:58"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":54435,"isOffset":false,"isSlot":false,"src":"1888:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"1969:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2062:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2087:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2110:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2126:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2144:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2168:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2184:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2202:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2226:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2242:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2260:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2284:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2300:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2318:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2342:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2358:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2377:9:58","valueSize":1},{"declaration":54435,"isOffset":false,"isSlot":false,"src":"2523:9:58","valueSize":1},{"declaration":54438,"isOffset":false,"isSlot":false,"src":"1825:6:58","valueSize":1},{"declaration":54438,"isOffset":false,"isSlot":false,"src":"1838:6:58","valueSize":1},{"declaration":54438,"isOffset":false,"isSlot":false,"src":"1880:6:58","valueSize":1},{"declaration":54438,"isOffset":false,"isSlot":false,"src":"1914:6:58","valueSize":1},{"declaration":54438,"isOffset":false,"isSlot":false,"src":"1927:6:58","valueSize":1},{"declaration":54438,"isOffset":false,"isSlot":false,"src":"1961:6:58","valueSize":1},{"declaration":54438,"isOffset":false,"isSlot":false,"src":"2079:6:58","valueSize":1},{"declaration":54438,"isOffset":false,"isSlot":false,"src":"2402:6:58","valueSize":1},{"declaration":54438,"isOffset":false,"isSlot":false,"src":"2452:6:58","valueSize":1}],"id":54440,"nodeType":"InlineAssembly","src":"1802:896:58"}]},"documentation":{"id":54432,"nodeType":"StructuredDocumentation","src":"1363:260:58","text":"@notice Pulls the `depth` out of a `Position` type.\n @param _position The generalized index to get the `depth` of.\n @return depth_ The `depth` of the `position` gindex.\n @custom:attribution Solady <https://github.com/Vectorized/Solady>"},"implemented":true,"kind":"function","modifiers":[],"name":"depth","nameLocation":"1637:5:58","parameters":{"id":54436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54435,"mutability":"mutable","name":"_position","nameLocation":"1652:9:58","nodeType":"VariableDeclaration","scope":54442,"src":"1643:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54434,"nodeType":"UserDefinedTypeName","pathNode":{"id":54433,"name":"Position","nameLocations":["1643:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"1643:8:58"},"referencedDeclaration":54413,"src":"1643:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"}],"src":"1642:20:58"},"returnParameters":{"id":54439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54438,"mutability":"mutable","name":"depth_","nameLocation":"1692:6:58","nodeType":"VariableDeclaration","scope":54442,"src":"1686:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":54437,"name":"uint8","nodeType":"ElementaryTypeName","src":"1686:5:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1685:14:58"},"scope":54626,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":54459,"nodeType":"FunctionDefinition","src":"3171:363:58","nodes":[],"body":{"id":54458,"nodeType":"Block","src":"3259:275:58","nodes":[],"statements":[{"assignments":[54452],"declarations":[{"constant":false,"id":54452,"mutability":"mutable","name":"msb","nameLocation":"3419:3:58","nodeType":"VariableDeclaration","scope":54458,"src":"3411:11:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54451,"name":"uint256","nodeType":"ElementaryTypeName","src":"3411:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54456,"initialValue":{"arguments":[{"id":54454,"name":"_position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54446,"src":"3431:9:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}],"id":54453,"name":"depth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54442,"src":"3425:5:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Position_$54413_$returns$_t_uint8_$","typeString":"function (Position) pure returns (uint8)"}},"id":54455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3425:16:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"3411:30:58"},{"AST":{"nativeSrc":"3460:68:58","nodeType":"YulBlock","src":"3460:68:58","statements":[{"nativeSrc":"3474:44:58","nodeType":"YulAssignment","src":"3474:44:58","value":{"arguments":[{"name":"_position","nativeSrc":"3495:9:58","nodeType":"YulIdentifier","src":"3495:9:58"},{"arguments":[{"name":"msb","nativeSrc":"3510:3:58","nodeType":"YulIdentifier","src":"3510:3:58"},{"kind":"number","nativeSrc":"3515:1:58","nodeType":"YulLiteral","src":"3515:1:58","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3506:3:58","nodeType":"YulIdentifier","src":"3506:3:58"},"nativeSrc":"3506:11:58","nodeType":"YulFunctionCall","src":"3506:11:58"}],"functionName":{"name":"sub","nativeSrc":"3491:3:58","nodeType":"YulIdentifier","src":"3491:3:58"},"nativeSrc":"3491:27:58","nodeType":"YulFunctionCall","src":"3491:27:58"},"variableNames":[{"name":"indexAtDepth_","nativeSrc":"3474:13:58","nodeType":"YulIdentifier","src":"3474:13:58"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":54446,"isOffset":false,"isSlot":false,"src":"3495:9:58","valueSize":1},{"declaration":54449,"isOffset":false,"isSlot":false,"src":"3474:13:58","valueSize":1},{"declaration":54452,"isOffset":false,"isSlot":false,"src":"3510:3:58","valueSize":1}],"id":54457,"nodeType":"InlineAssembly","src":"3451:77:58"}]},"documentation":{"id":54443,"nodeType":"StructuredDocumentation","src":"2710:456:58","text":"@notice Pulls the `indexAtDepth` out of a `Position` type.\n The `indexAtDepth` is the left/right index of a position at a specific depth within\n the binary tree, starting from index 0. For example, at gindex 2, the `depth` = 1\n and the `indexAtDepth` = 0.\n @param _position The generalized index to get the `indexAtDepth` of.\n @return indexAtDepth_ The `indexAtDepth` of the `position` gindex."},"implemented":true,"kind":"function","modifiers":[],"name":"indexAtDepth","nameLocation":"3180:12:58","parameters":{"id":54447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54446,"mutability":"mutable","name":"_position","nameLocation":"3202:9:58","nodeType":"VariableDeclaration","scope":54459,"src":"3193:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54445,"nodeType":"UserDefinedTypeName","pathNode":{"id":54444,"name":"Position","nameLocations":["3193:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"3193:8:58"},"referencedDeclaration":54413,"src":"3193:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"}],"src":"3192:20:58"},"returnParameters":{"id":54450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54449,"mutability":"mutable","name":"indexAtDepth_","nameLocation":"3244:13:58","nodeType":"VariableDeclaration","scope":54459,"src":"3236:21:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54448,"name":"uint128","nodeType":"ElementaryTypeName","src":"3236:7:58","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3235:23:58"},"scope":54626,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":54471,"nodeType":"FunctionDefinition","src":"3720:148:58","nodes":[],"body":{"id":54470,"nodeType":"Block","src":"3793:75:58","nodes":[],"statements":[{"AST":{"nativeSrc":"3812:50:58","nodeType":"YulBlock","src":"3812:50:58","statements":[{"nativeSrc":"3826:26:58","nodeType":"YulAssignment","src":"3826:26:58","value":{"arguments":[{"kind":"number","nativeSrc":"3839:1:58","nodeType":"YulLiteral","src":"3839:1:58","type":"","value":"1"},{"name":"_position","nativeSrc":"3842:9:58","nodeType":"YulIdentifier","src":"3842:9:58"}],"functionName":{"name":"shl","nativeSrc":"3835:3:58","nodeType":"YulIdentifier","src":"3835:3:58"},"nativeSrc":"3835:17:58","nodeType":"YulFunctionCall","src":"3835:17:58"},"variableNames":[{"name":"left_","nativeSrc":"3826:5:58","nodeType":"YulIdentifier","src":"3826:5:58"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":54463,"isOffset":false,"isSlot":false,"src":"3842:9:58","valueSize":1},{"declaration":54467,"isOffset":false,"isSlot":false,"src":"3826:5:58","valueSize":1}],"id":54469,"nodeType":"InlineAssembly","src":"3803:59:58"}]},"documentation":{"id":54460,"nodeType":"StructuredDocumentation","src":"3540:175:58","text":"@notice Get the left child of `_position`.\n @param _position The position to get the left position of.\n @return left_ The position to the left of `position`."},"implemented":true,"kind":"function","modifiers":[],"name":"left","nameLocation":"3729:4:58","parameters":{"id":54464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54463,"mutability":"mutable","name":"_position","nameLocation":"3743:9:58","nodeType":"VariableDeclaration","scope":54471,"src":"3734:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54462,"nodeType":"UserDefinedTypeName","pathNode":{"id":54461,"name":"Position","nameLocations":["3734:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"3734:8:58"},"referencedDeclaration":54413,"src":"3734:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"}],"src":"3733:20:58"},"returnParameters":{"id":54468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54467,"mutability":"mutable","name":"left_","nameLocation":"3786:5:58","nodeType":"VariableDeclaration","scope":54471,"src":"3777:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54466,"nodeType":"UserDefinedTypeName","pathNode":{"id":54465,"name":"Position","nameLocations":["3777:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"3777:8:58"},"referencedDeclaration":54413,"src":"3777:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"}],"src":"3776:16:58"},"scope":54626,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":54483,"nodeType":"FunctionDefinition","src":"4057:158:58","nodes":[],"body":{"id":54482,"nodeType":"Block","src":"4132:83:58","nodes":[],"statements":[{"AST":{"nativeSrc":"4151:58:58","nodeType":"YulBlock","src":"4151:58:58","statements":[{"nativeSrc":"4165:34:58","nodeType":"YulAssignment","src":"4165:34:58","value":{"arguments":[{"kind":"number","nativeSrc":"4178:1:58","nodeType":"YulLiteral","src":"4178:1:58","type":"","value":"1"},{"arguments":[{"kind":"number","nativeSrc":"4185:1:58","nodeType":"YulLiteral","src":"4185:1:58","type":"","value":"1"},{"name":"_position","nativeSrc":"4188:9:58","nodeType":"YulIdentifier","src":"4188:9:58"}],"functionName":{"name":"shl","nativeSrc":"4181:3:58","nodeType":"YulIdentifier","src":"4181:3:58"},"nativeSrc":"4181:17:58","nodeType":"YulFunctionCall","src":"4181:17:58"}],"functionName":{"name":"or","nativeSrc":"4175:2:58","nodeType":"YulIdentifier","src":"4175:2:58"},"nativeSrc":"4175:24:58","nodeType":"YulFunctionCall","src":"4175:24:58"},"variableNames":[{"name":"right_","nativeSrc":"4165:6:58","nodeType":"YulIdentifier","src":"4165:6:58"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":54475,"isOffset":false,"isSlot":false,"src":"4188:9:58","valueSize":1},{"declaration":54479,"isOffset":false,"isSlot":false,"src":"4165:6:58","valueSize":1}],"id":54481,"nodeType":"InlineAssembly","src":"4142:67:58"}]},"documentation":{"id":54472,"nodeType":"StructuredDocumentation","src":"3874:178:58","text":"@notice Get the right child of `_position`\n @param _position The position to get the right position of.\n @return right_ The position to the right of `position`."},"implemented":true,"kind":"function","modifiers":[],"name":"right","nameLocation":"4066:5:58","parameters":{"id":54476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54475,"mutability":"mutable","name":"_position","nameLocation":"4081:9:58","nodeType":"VariableDeclaration","scope":54483,"src":"4072:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54474,"nodeType":"UserDefinedTypeName","pathNode":{"id":54473,"name":"Position","nameLocations":["4072:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"4072:8:58"},"referencedDeclaration":54413,"src":"4072:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"}],"src":"4071:20:58"},"returnParameters":{"id":54480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54479,"mutability":"mutable","name":"right_","nameLocation":"4124:6:58","nodeType":"VariableDeclaration","scope":54483,"src":"4115:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54478,"nodeType":"UserDefinedTypeName","pathNode":{"id":54477,"name":"Position","nameLocations":["4115:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"4115:8:58"},"referencedDeclaration":54413,"src":"4115:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"}],"src":"4114:17:58"},"scope":54626,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":54495,"nodeType":"FunctionDefinition","src":"4405:154:58","nodes":[],"body":{"id":54494,"nodeType":"Block","src":"4482:77:58","nodes":[],"statements":[{"AST":{"nativeSrc":"4501:52:58","nodeType":"YulBlock","src":"4501:52:58","statements":[{"nativeSrc":"4515:28:58","nodeType":"YulAssignment","src":"4515:28:58","value":{"arguments":[{"kind":"number","nativeSrc":"4530:1:58","nodeType":"YulLiteral","src":"4530:1:58","type":"","value":"1"},{"name":"_position","nativeSrc":"4533:9:58","nodeType":"YulIdentifier","src":"4533:9:58"}],"functionName":{"name":"shr","nativeSrc":"4526:3:58","nodeType":"YulIdentifier","src":"4526:3:58"},"nativeSrc":"4526:17:58","nodeType":"YulFunctionCall","src":"4526:17:58"},"variableNames":[{"name":"parent_","nativeSrc":"4515:7:58","nodeType":"YulIdentifier","src":"4515:7:58"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":54487,"isOffset":false,"isSlot":false,"src":"4533:9:58","valueSize":1},{"declaration":54491,"isOffset":false,"isSlot":false,"src":"4515:7:58","valueSize":1}],"id":54493,"nodeType":"InlineAssembly","src":"4492:61:58"}]},"documentation":{"id":54484,"nodeType":"StructuredDocumentation","src":"4221:179:58","text":"@notice Get the parent position of `_position`.\n @param _position The position to get the parent position of.\n @return parent_ The parent position of `position`."},"implemented":true,"kind":"function","modifiers":[],"name":"parent","nameLocation":"4414:6:58","parameters":{"id":54488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54487,"mutability":"mutable","name":"_position","nameLocation":"4430:9:58","nodeType":"VariableDeclaration","scope":54495,"src":"4421:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54486,"nodeType":"UserDefinedTypeName","pathNode":{"id":54485,"name":"Position","nameLocations":["4421:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"4421:8:58"},"referencedDeclaration":54413,"src":"4421:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"}],"src":"4420:20:58"},"returnParameters":{"id":54492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54491,"mutability":"mutable","name":"parent_","nameLocation":"4473:7:58","nodeType":"VariableDeclaration","scope":54495,"src":"4464:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54490,"nodeType":"UserDefinedTypeName","pathNode":{"id":54489,"name":"Position","nameLocations":["4464:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"4464:8:58"},"referencedDeclaration":54413,"src":"4464:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"}],"src":"4463:18:58"},"scope":54626,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":54515,"nodeType":"FunctionDefinition","src":"4980:313:58","nodes":[],"body":{"id":54514,"nodeType":"Block","src":"5084:209:58","nodes":[],"statements":[{"assignments":[54508],"declarations":[{"constant":false,"id":54508,"mutability":"mutable","name":"msb","nameLocation":"5102:3:58","nodeType":"VariableDeclaration","scope":54514,"src":"5094:11:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54507,"name":"uint256","nodeType":"ElementaryTypeName","src":"5094:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54512,"initialValue":{"arguments":[{"id":54510,"name":"_position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54499,"src":"5114:9:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}],"id":54509,"name":"depth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54442,"src":"5108:5:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Position_$54413_$returns$_t_uint8_$","typeString":"function (Position) pure returns (uint8)"}},"id":54511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5108:16:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5094:30:58"},{"AST":{"nativeSrc":"5143:144:58","nodeType":"YulBlock","src":"5143:144:58","statements":[{"nativeSrc":"5157:36:58","nodeType":"YulVariableDeclaration","src":"5157:36:58","value":{"arguments":[{"name":"_maxDepth","nativeSrc":"5178:9:58","nodeType":"YulIdentifier","src":"5178:9:58"},{"name":"msb","nativeSrc":"5189:3:58","nodeType":"YulIdentifier","src":"5189:3:58"}],"functionName":{"name":"sub","nativeSrc":"5174:3:58","nodeType":"YulIdentifier","src":"5174:3:58"},"nativeSrc":"5174:19:58","nodeType":"YulFunctionCall","src":"5174:19:58"},"variables":[{"name":"remaining","nativeSrc":"5161:9:58","nodeType":"YulTypedName","src":"5161:9:58","type":""}]},{"nativeSrc":"5206:71:58","nodeType":"YulAssignment","src":"5206:71:58","value":{"arguments":[{"arguments":[{"name":"remaining","nativeSrc":"5228:9:58","nodeType":"YulIdentifier","src":"5228:9:58"},{"name":"_position","nativeSrc":"5239:9:58","nodeType":"YulIdentifier","src":"5239:9:58"}],"functionName":{"name":"shl","nativeSrc":"5224:3:58","nodeType":"YulIdentifier","src":"5224:3:58"},"nativeSrc":"5224:25:58","nodeType":"YulFunctionCall","src":"5224:25:58"},{"arguments":[{"arguments":[{"name":"remaining","nativeSrc":"5259:9:58","nodeType":"YulIdentifier","src":"5259:9:58"},{"kind":"number","nativeSrc":"5270:1:58","nodeType":"YulLiteral","src":"5270:1:58","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5255:3:58","nodeType":"YulIdentifier","src":"5255:3:58"},"nativeSrc":"5255:17:58","nodeType":"YulFunctionCall","src":"5255:17:58"},{"kind":"number","nativeSrc":"5274:1:58","nodeType":"YulLiteral","src":"5274:1:58","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5251:3:58","nodeType":"YulIdentifier","src":"5251:3:58"},"nativeSrc":"5251:25:58","nodeType":"YulFunctionCall","src":"5251:25:58"}],"functionName":{"name":"or","nativeSrc":"5221:2:58","nodeType":"YulIdentifier","src":"5221:2:58"},"nativeSrc":"5221:56:58","nodeType":"YulFunctionCall","src":"5221:56:58"},"variableNames":[{"name":"rightIndex_","nativeSrc":"5206:11:58","nodeType":"YulIdentifier","src":"5206:11:58"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":54501,"isOffset":false,"isSlot":false,"src":"5178:9:58","valueSize":1},{"declaration":54499,"isOffset":false,"isSlot":false,"src":"5239:9:58","valueSize":1},{"declaration":54508,"isOffset":false,"isSlot":false,"src":"5189:3:58","valueSize":1},{"declaration":54505,"isOffset":false,"isSlot":false,"src":"5206:11:58","valueSize":1}],"id":54513,"nodeType":"InlineAssembly","src":"5134:153:58"}]},"documentation":{"id":54496,"nodeType":"StructuredDocumentation","src":"4565:410:58","text":"@notice Get the deepest, right most gindex relative to the `position`. This is equivalent to\n calling `right` on a position until the maximum depth is reached.\n @param _position The position to get the relative deepest, right most gindex of.\n @param _maxDepth The maximum depth of the game.\n @return rightIndex_ The deepest, right most gindex relative to the `position`."},"implemented":true,"kind":"function","modifiers":[],"name":"rightIndex","nameLocation":"4989:10:58","parameters":{"id":54502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54499,"mutability":"mutable","name":"_position","nameLocation":"5009:9:58","nodeType":"VariableDeclaration","scope":54515,"src":"5000:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54498,"nodeType":"UserDefinedTypeName","pathNode":{"id":54497,"name":"Position","nameLocations":["5000:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"5000:8:58"},"referencedDeclaration":54413,"src":"5000:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"},{"constant":false,"id":54501,"mutability":"mutable","name":"_maxDepth","nameLocation":"5028:9:58","nodeType":"VariableDeclaration","scope":54515,"src":"5020:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54500,"name":"uint256","nodeType":"ElementaryTypeName","src":"5020:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4999:39:58"},"returnParameters":{"id":54506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54505,"mutability":"mutable","name":"rightIndex_","nameLocation":"5071:11:58","nodeType":"VariableDeclaration","scope":54515,"src":"5062:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"},"typeName":{"id":54504,"nodeType":"UserDefinedTypeName","pathNode":{"id":54503,"name":"Position","nameLocations":["5062:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":54413,"src":"5062:8:58"},"referencedDeclaration":54413,"src":"5062:8:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}},"visibility":"internal"}],"src":"5061:22:58"},"scope":54626,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":54534,"nodeType":"FunctionDefinition","src":"5741:336:58","nodes":[],"body":{"id":54533,"nodeType":"Block","src":"5844:233:58","nodes":[],"statements":[{"assignments":[54527],"declarations":[{"constant":false,"id":54527,"mutability":"mutable","name":"msb","nameLocation":"5862:3:58","nodeType":"VariableDeclaration","scope":54533,"src":"5854:11:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54526,"name":"uint256","nodeType":"ElementaryTypeName","src":"5854:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54531,"initialValue":{"arguments":[{"id":54529,"name":"_position","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54519,"src":"5874:9:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Position_$54413","typeString":"Position"}],"id":54528,"name":"depth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54442,"src":"5868:5:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Position_$54413_$returns$_t_uint8_$","typeString":"function (Position) pure returns (uint8)"}},"id":54530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5868:16:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5854:30:58"},{"AST":{"nativeSrc":"5903:168:58","nodeType":"YulBlock","src":"5903:168:58","statements":[{"nativeSrc":"5917:36:58","nodeType":"YulVariableDeclaration","src":"5917:36:58","value":{"arguments":[{"name":"_maxDepth","nativeSrc":"5938:9:58","nodeType":"YulIdentifier","src":"5938:9:58"},{"name":"msb","nativeSrc":"5949:3:58","nodeType":"YulIdentifier","src":"5949:3:58"}],"functionName":{"name":"sub","nativeSrc":"5934:3:58","nodeType":"YulIdentifier","src":"5934:3:58"},"nativeSrc":"5934:19:58","nodeType":"YulFunctionCall","src":"5934:19:58"},"variables":[{"name":"remaining","nativeSrc":"5921:9:58","nodeType":"YulTypedName","src":"5921:9:58","type":""}]},{"nativeSrc":"5966:95:58","nodeType":"YulAssignment","src":"5966:95:58","value":{"arguments":[{"arguments":[{"arguments":[{"name":"remaining","nativeSrc":"5992:9:58","nodeType":"YulIdentifier","src":"5992:9:58"},{"name":"_position","nativeSrc":"6003:9:58","nodeType":"YulIdentifier","src":"6003:9:58"}],"functionName":{"name":"shl","nativeSrc":"5988:3:58","nodeType":"YulIdentifier","src":"5988:3:58"},"nativeSrc":"5988:25:58","nodeType":"YulFunctionCall",