diff --git a/README.md b/README.md index dccf094..5947917 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,14 @@ Create a digital passport for your physical items. ![100 Percent Coverage](./images/100coverage.png) +## Static Analysis! + +[Slither Report](./contract/Slither-Report.md) + +## Fuzzing! + +![Echidna Fuzzing Results](./images/echidna.png) + ## Description A dApp that allows users to create a digital passport for physical items and make the information associated with these items easily accessible. diff --git a/contract/crytic-export/combined_solc.json b/contract/crytic-export/combined_solc.json new file mode 100644 index 0000000..053dfee --- /dev/null +++ b/contract/crytic-export/combined_solc.json @@ -0,0 +1 @@ +{"sources": {"/Users/fabian/Code/ItemBlocks/contract/echidna/PropertyTest.sol": {"AST": {"absolutePath": "echidna/PropertyTest.sol", "exportedSymbols": {"Context": [1699], "ERC165": [2278], "ERC721": [1669], "IERC165": [2290], "IERC721": [1953], "IERC721Errors": [1789], "IERC721Metadata": [1999], "IERC721Receiver": [1971], "ItemBlocks": [512], "ItemBlocksPropertyTest": [143], "Ownable": [660], "Strings": [2254]}, "id": 144, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "^", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "32:24:0"}, {"absolutePath": "src/ItemBlocks.sol", "file": "../src/ItemBlocks.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 144, "sourceUnit": 513, "src": "58:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 4, "name": "ItemBlocks", "nameLocations": ["335:10:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 512, "src": "335:10:0"}, "id": 5, "nodeType": "InheritanceSpecifier", "src": "335:10:0"}], "canonicalName": "ItemBlocksPropertyTest", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 3, "nodeType": "StructuredDocumentation", "src": "91:208:0", "text": " @title \n @author \n @notice \n \n @dev There are some specific addresses in Echidna:\n0x30000 calls the constructor.\n0x10000, 0x20000, and 0x30000 randomly call other functions."}, "fullyImplemented": true, "id": 143, "linearizedBaseContracts": [143, 512, 660, 1669, 1789, 1999, 1953, 2278, 2290, 1699], "name": "ItemBlocksPropertyTest", "nameLocation": "309:22:0", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 8, "mutability": "mutable", "name": "testTokenId", "nameLocation": "360:11:0", "nodeType": "VariableDeclaration", "scope": 143, "src": "352:23:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 6, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "352:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "30", "id": 7, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "374:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "visibility": "internal"}, {"body": {"id": 28, "nodeType": "Block", "src": "425:127:0", "statements": [{"expression": {"id": 26, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 17, "name": "testTokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, "src": "435:11:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"hexValue": "37", "id": 19, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "464:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_7_by_1", "typeString": "int_const 7"}, "value": "7"}, {"hexValue": "546573744974656d4e616d65", "id": 20, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "467:14:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2a5125965fd5ce869e51298d78d4a3618c8e91d9ca2a2f42ffd0b0860f5d7057", "typeString": "literal_string \"TestItemName\""}, "value": "TestItemName"}, {"hexValue": "546573744974656d44657363", "id": 21, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "483:14:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_be336d1cebfa7239021ae2b47479fbb82594aa761e8124a7a8db1918bb6f6ffb", "typeString": "literal_string \"TestItemDesc\""}, "value": "TestItemDesc"}, {"hexValue": "546573744974656d46616d696c79", "id": 22, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "499:16:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_54e852a5109e433bb40d5b833138d086816cbd85ea225981a3bcd9d3fc6cd6c8", "typeString": "literal_string \"TestItemFamily\""}, "value": "TestItemFamily"}, {"hexValue": "546573744974656d55726c", "id": 23, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "517:13:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_5f77a2c2c0fcf33e4e32a41da48d545bfb7126321980b5f641a0b5ed960fde81", "typeString": "literal_string \"TestItemUrl\""}, "value": "TestItemUrl"}, {"hexValue": "546573744974656d496d67", "id": 24, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "531:13:0", "typeDescriptions": {"typeIdentifier": "t_stringliteral_adbe0e195cf19fd317e2ddb727e3ea6df398aad02f57dc106b1f77b160f857cd", "typeString": "literal_string \"TestItemImg\""}, "value": "TestItemImg"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_7_by_1", "typeString": "int_const 7"}, {"typeIdentifier": "t_stringliteral_2a5125965fd5ce869e51298d78d4a3618c8e91d9ca2a2f42ffd0b0860f5d7057", "typeString": "literal_string \"TestItemName\""}, {"typeIdentifier": "t_stringliteral_be336d1cebfa7239021ae2b47479fbb82594aa761e8124a7a8db1918bb6f6ffb", "typeString": "literal_string \"TestItemDesc\""}, {"typeIdentifier": "t_stringliteral_54e852a5109e433bb40d5b833138d086816cbd85ea225981a3bcd9d3fc6cd6c8", "typeString": "literal_string \"TestItemFamily\""}, {"typeIdentifier": "t_stringliteral_5f77a2c2c0fcf33e4e32a41da48d545bfb7126321980b5f641a0b5ed960fde81", "typeString": "literal_string \"TestItemUrl\""}, {"typeIdentifier": "t_stringliteral_adbe0e195cf19fd317e2ddb727e3ea6df398aad02f57dc106b1f77b160f857cd", "typeString": "literal_string \"TestItemImg\""}], "id": 18, "name": "createPassport", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 266, "src": "449:14:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,string memory,string memory,string memory,string memory,string memory) returns (uint256)"}}, "id": 25, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "449:96:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "435:110:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 27, "nodeType": "ExpressionStatement", "src": "435:110:0"}]}, "id": 29, "implemented": true, "kind": "constructor", "modifiers": [{"arguments": [{"arguments": [{"hexValue": "30783330303030", "id": 13, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "415:7:0", "typeDescriptions": {"typeIdentifier": "t_rational_196608_by_1", "typeString": "int_const 196608"}, "value": "0x30000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_196608_by_1", "typeString": "int_const 196608"}], "id": 12, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "407:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 11, "name": "address", "nodeType": "ElementaryTypeName", "src": "407:7:0", "typeDescriptions": {}}}, "id": 14, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "407:16:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "id": 15, "kind": "baseConstructorSpecifier", "modifierName": {"id": 10, "name": "ItemBlocks", "nameLocations": ["396:10:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 512, "src": "396:10:0"}, "nodeType": "ModifierInvocation", "src": "396:28:0"}], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 9, "nodeType": "ParameterList", "parameters": [], "src": "393:2:0"}, "returnParameters": {"id": 16, "nodeType": "ParameterList", "parameters": [], "src": "425:0:0"}, "scope": 143, "src": "382:170:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 43, "nodeType": "Block", "src": "661:58:0", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 41, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 35, "name": "testTokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, "src": "686:11:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 34, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 802, "src": "678:7:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 36, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "678:20:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 39, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "710:1:0", "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": 38, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "702:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 37, "name": "address", "nodeType": "ElementaryTypeName", "src": "702:7:0", "typeDescriptions": {}}}, "id": 40, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "702:10:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "678:34:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 33, "id": 42, "nodeType": "Return", "src": "671:41:0"}]}, "functionSelector": "90203d63", "id": 44, "implemented": true, "kind": "function", "modifiers": [], "name": "echidna_owner_not_zero", "nameLocation": "609:22:0", "nodeType": "FunctionDefinition", "parameters": {"id": 30, "nodeType": "ParameterList", "parameters": [], "src": "631:2:0"}, "returnParameters": {"id": 33, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 32, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 44, "src": "655:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 31, "name": "bool", "nodeType": "ElementaryTypeName", "src": "655:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "654:6:0"}, "scope": 143, "src": "600:119:0", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 60, "nodeType": "Block", "src": "853:63:0", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 58, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"baseExpression": {"id": 49, "name": "allItemOwners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 172, "src": "870:13:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(uint256 => address[] storage ref)"}}, "id": 51, "indexExpression": {"hexValue": "37", "id": 50, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "884:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_7_by_1", "typeString": "int_const 7"}, "value": "7"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "870:16:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref"}}, "id": 53, "indexExpression": {"hexValue": "30", "id": 52, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "887:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "870:19:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30783330303030", "id": 56, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "901:7:0", "typeDescriptions": {"typeIdentifier": "t_rational_196608_by_1", "typeString": "int_const 196608"}, "value": "0x30000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_196608_by_1", "typeString": "int_const 196608"}], "id": 55, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "893:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 54, "name": "address", "nodeType": "ElementaryTypeName", "src": "893:7:0", "typeDescriptions": {}}}, "id": 57, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "893:16:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "870:39:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 48, "id": 59, "nodeType": "Return", "src": "863:46:0"}]}, "functionSelector": "b6890f72", "id": 61, "implemented": true, "kind": "function", "modifiers": [], "name": "echidna_set_creator", "nameLocation": "805:19:0", "nodeType": "FunctionDefinition", "parameters": {"id": 45, "nodeType": "ParameterList", "parameters": [], "src": "824:2:0"}, "returnParameters": {"id": 48, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 47, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 61, "src": "848:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 46, "name": "bool", "nodeType": "ElementaryTypeName", "src": "848:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "847:6:0"}, "scope": 143, "src": "796:120:0", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 76, "nodeType": "Block", "src": "1030:66:0", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 74, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 66, "name": "createdItems", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 177, "src": "1047:12:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", "typeString": "mapping(address => uint256[] storage ref)"}}, "id": 71, "indexExpression": {"arguments": [{"hexValue": "30783330303030", "id": 69, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1068:7:0", "typeDescriptions": {"typeIdentifier": "t_rational_196608_by_1", "typeString": "int_const 196608"}, "value": "0x30000"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_196608_by_1", "typeString": "int_const 196608"}], "id": 68, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1060:7:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 67, "name": "address", "nodeType": "ElementaryTypeName", "src": "1060:7:0", "typeDescriptions": {}}}, "id": 70, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1060:16:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1047:30:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}}, "id": 72, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1078:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "1047:37:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"hexValue": "31", "id": 73, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1088:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1047:42:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 65, "id": 75, "nodeType": "Return", "src": "1040:49:0"}]}, "functionSelector": "e4dfd6b9", "id": 77, "implemented": true, "kind": "function", "modifiers": [], "name": "echidna_create_more", "nameLocation": "981:19:0", "nodeType": "FunctionDefinition", "parameters": {"id": 62, "nodeType": "ParameterList", "parameters": [], "src": "1000:2:0"}, "returnParameters": {"id": 65, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 64, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 77, "src": "1024:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 63, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1024:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1023:6:0"}, "scope": 143, "src": "972:124:0", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 104, "nodeType": "Block", "src": "1270:162:0", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 87, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 82, "name": "allItemOwners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 172, "src": "1284:13:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(uint256 => address[] storage ref)"}}, "id": 84, "indexExpression": {"hexValue": "37", "id": 83, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1298:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_7_by_1", "typeString": "int_const 7"}, "value": "7"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1284:16:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref"}}, "id": 85, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1301:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "1284:23:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 86, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1310:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1284:27:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 102, "nodeType": "Block", "src": "1390:36:0", "statements": [{"expression": {"hexValue": "74727565", "id": 100, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1411:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 81, "id": 101, "nodeType": "Return", "src": "1404:11:0"}]}, "id": 103, "nodeType": "IfStatement", "src": "1280:146:0", "trueBody": {"id": 99, "nodeType": "Block", "src": "1313:71:0", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 97, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"expression": {"baseExpression": {"id": 90, "name": "itemPassports", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "1340:13:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Passport_$162_storage_$", "typeString": "mapping(uint256 => struct ItemBlocks.Passport storage ref)"}}, "id": 92, "indexExpression": {"hexValue": "37", "id": 91, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1354:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_7_by_1", "typeString": "int_const 7"}, "value": "7"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1340:16:0", "typeDescriptions": {"typeIdentifier": "t_struct$_Passport_$162_storage", "typeString": "struct ItemBlocks.Passport storage ref"}}, "id": 93, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1357:4:0", "memberName": "name", "nodeType": "MemberAccess", "referencedDeclaration": 153, "src": "1340:21:0", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}], "id": 89, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1334:5:0", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 88, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1334:5:0", "typeDescriptions": {}}}, "id": 94, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1334:28:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes storage pointer"}}, "id": 95, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1363:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "1334:35:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 96, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1372:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1334:39:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 81, "id": 98, "nodeType": "Return", "src": "1327:46:0"}]}}]}, "functionSelector": "d03aef63", "id": 105, "implemented": true, "kind": "function", "modifiers": [], "name": "echidna_need_to_create_history_and_passport", "nameLocation": "1197:43:0", "nodeType": "FunctionDefinition", "parameters": {"id": 78, "nodeType": "ParameterList", "parameters": [], "src": "1240:2:0"}, "returnParameters": {"id": 81, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 80, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 105, "src": "1264:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 79, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1264:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1263:6:0"}, "scope": 143, "src": "1188:244:0", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 141, "nodeType": "Block", "src": "1581:212:0", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 110, "name": "allItemOwners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 172, "src": "1595:13:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(uint256 => address[] storage ref)"}}, "id": 112, "indexExpression": {"hexValue": "31", "id": 111, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1609:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1595:16:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref"}}, "id": 113, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1612:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "1595:23:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1621:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1595:27:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 139, "nodeType": "Block", "src": "1751:36:0", "statements": [{"expression": {"hexValue": "74727565", "id": 137, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1772:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "functionReturnParameters": 109, "id": 138, "nodeType": "Return", "src": "1765:11:0"}]}, "id": 140, "nodeType": "IfStatement", "src": "1591:196:0", "trueBody": {"id": 136, "nodeType": "Block", "src": "1624:121:0", "statements": [{"assignments": [120], "declarations": [{"constant": false, "id": 120, "mutability": "mutable", "name": "test", "nameLocation": "1655:4:0", "nodeType": "VariableDeclaration", "scope": 136, "src": "1638:21:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 118, "name": "address", "nodeType": "ElementaryTypeName", "src": "1638:7:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 119, "nodeType": "ArrayTypeName", "src": "1638:9:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "id": 124, "initialValue": {"baseExpression": {"id": 121, "name": "allItemOwners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 172, "src": "1662:13:0", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(uint256 => address[] storage ref)"}}, "id": 123, "indexExpression": {"hexValue": "31", "id": 122, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1676:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1662:16:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref"}}, "nodeType": "VariableDeclarationStatement", "src": "1638:40:0"}, {"expression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"baseExpression": {"id": 125, "name": "test", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "1699:4:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 130, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 126, "name": "test", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, "src": "1704:4:0", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory"}}, "id": 127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1709:6:0", "memberName": "length", "nodeType": "MemberAccess", "src": "1704:11:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1718:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1704:15:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1699:21:0", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "31", "id": 132, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1732:1:0", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}], "id": 131, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 802, "src": "1724:7:0", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 133, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1724:10:0", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1699:35:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 109, "id": 135, "nodeType": "Return", "src": "1692:42:0"}]}}]}, "functionSelector": "b317b8ee", "id": 142, "implemented": true, "kind": "function", "modifiers": [], "name": "echidna_owner_is_last_entry_allItemOwners", "nameLocation": "1510:41:0", "nodeType": "FunctionDefinition", "parameters": {"id": 106, "nodeType": "ParameterList", "parameters": [], "src": "1551:2:0"}, "returnParameters": {"id": 109, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 108, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 142, "src": "1575:4:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 107, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1575:4:0", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1574:6:0"}, "scope": 143, "src": "1501:292:0", "stateMutability": "view", "virtual": false, "visibility": "public"}], "scope": 144, "src": "300:1496:0", "usedErrors": [526, 531, 1747, 1752, 1761, 1766, 1771, 1778, 1783, 1788], "usedEvents": [199, 537, 1852, 1861, 1870]}], "src": "32:1764:0"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/access/Ownable.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", "exportedSymbols": {"Context": [1699], "Ownable": [660]}, "id": 661, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 514, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "102:24:1"}, {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol", "file": "../utils/Context.sol", "id": 516, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 661, "sourceUnit": 1700, "src": "128:45:1", "symbolAliases": [{"foreign": {"id": 515, "name": "Context", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "136:7:1", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 518, "name": "Context", "nameLocations": ["692:7:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "692:7:1"}, "id": 519, "nodeType": "InheritanceSpecifier", "src": "692:7:1"}], "canonicalName": "Ownable", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 517, "nodeType": "StructuredDocumentation", "src": "175:487:1", "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."}, "fullyImplemented": true, "id": 660, "linearizedBaseContracts": [660, 1699], "name": "Ownable", "nameLocation": "681:7:1", "nodeType": "ContractDefinition", "nodes": [{"constant": false, "id": 521, "mutability": "mutable", "name": "_owner", "nameLocation": "722:6:1", "nodeType": "VariableDeclaration", "scope": 660, "src": "706:22:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 520, "name": "address", "nodeType": "ElementaryTypeName", "src": "706:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "private"}, {"documentation": {"id": 522, "nodeType": "StructuredDocumentation", "src": "735:85:1", "text": " @dev The caller account is not authorized to perform an operation."}, "errorSelector": "118cdaa7", "id": 526, "name": "OwnableUnauthorizedAccount", "nameLocation": "831:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 525, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 524, "mutability": "mutable", "name": "account", "nameLocation": "866:7:1", "nodeType": "VariableDeclaration", "scope": 526, "src": "858:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 523, "name": "address", "nodeType": "ElementaryTypeName", "src": "858:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "857:17:1"}, "src": "825:50:1"}, {"documentation": {"id": 527, "nodeType": "StructuredDocumentation", "src": "881:82:1", "text": " @dev The owner is not a valid owner account. (eg. `address(0)`)"}, "errorSelector": "1e4fbdf7", "id": 531, "name": "OwnableInvalidOwner", "nameLocation": "974:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 530, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 529, "mutability": "mutable", "name": "owner", "nameLocation": "1002:5:1", "nodeType": "VariableDeclaration", "scope": 531, "src": "994:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 528, "name": "address", "nodeType": "ElementaryTypeName", "src": "994:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "993:15:1"}, "src": "968:41:1"}, {"anonymous": false, "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "id": 537, "name": "OwnershipTransferred", "nameLocation": "1021:20:1", "nodeType": "EventDefinition", "parameters": {"id": 536, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 533, "indexed": true, "mutability": "mutable", "name": "previousOwner", "nameLocation": "1058:13:1", "nodeType": "VariableDeclaration", "scope": 537, "src": "1042:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 532, "name": "address", "nodeType": "ElementaryTypeName", "src": "1042:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 535, "indexed": true, "mutability": "mutable", "name": "newOwner", "nameLocation": "1089:8:1", "nodeType": "VariableDeclaration", "scope": 537, "src": "1073:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 534, "name": "address", "nodeType": "ElementaryTypeName", "src": "1073:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1041:57:1"}, "src": "1015:84:1"}, {"body": {"id": 562, "nodeType": "Block", "src": "1259:153:1", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 543, "name": "initialOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 540, "src": "1273:12:1", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 546, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1297:1:1", "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": 545, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1289:7:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 544, "name": "address", "nodeType": "ElementaryTypeName", "src": "1289:7:1", "typeDescriptions": {}}}, "id": 547, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1289:10:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1273:26:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 557, "nodeType": "IfStatement", "src": "1269:95:1", "trueBody": {"id": 556, "nodeType": "Block", "src": "1301:63:1", "statements": [{"errorCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 552, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1350:1:1", "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": 551, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1342:7:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 550, "name": "address", "nodeType": "ElementaryTypeName", "src": "1342:7:1", "typeDescriptions": {}}}, "id": 553, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1342:10:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 549, "name": "OwnableInvalidOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "1322:19:1", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 554, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1322:31:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 555, "nodeType": "RevertStatement", "src": "1315:38:1"}]}}, {"expression": {"arguments": [{"id": 559, "name": "initialOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 540, "src": "1392:12:1", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 558, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 659, "src": "1373:18:1", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 560, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1373:32:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 561, "nodeType": "ExpressionStatement", "src": "1373:32:1"}]}, "documentation": {"id": 538, "nodeType": "StructuredDocumentation", "src": "1105:115:1", "text": " @dev Initializes the contract setting the address provided by the deployer as the initial owner."}, "id": 563, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 541, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 540, "mutability": "mutable", "name": "initialOwner", "nameLocation": "1245:12:1", "nodeType": "VariableDeclaration", "scope": 563, "src": "1237:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 539, "name": "address", "nodeType": "ElementaryTypeName", "src": "1237:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1236:22:1"}, "returnParameters": {"id": 542, "nodeType": "ParameterList", "parameters": [], "src": "1259:0:1"}, "scope": 660, "src": "1225:187:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 570, "nodeType": "Block", "src": "1521:41:1", "statements": [{"expression": {"arguments": [], "expression": {"argumentTypes": [], "id": 566, "name": "_checkOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 597, "src": "1531:11:1", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view"}}, "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1531:13:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 568, "nodeType": "ExpressionStatement", "src": "1531:13:1"}, {"id": 569, "nodeType": "PlaceholderStatement", "src": "1554:1:1"}]}, "documentation": {"id": 564, "nodeType": "StructuredDocumentation", "src": "1418:77:1", "text": " @dev Throws if called by any account other than the owner."}, "id": 571, "name": "onlyOwner", "nameLocation": "1509:9:1", "nodeType": "ModifierDefinition", "parameters": {"id": 565, "nodeType": "ParameterList", "parameters": [], "src": "1518:2:1"}, "src": "1500:62:1", "virtual": false, "visibility": "internal"}, {"body": {"id": 579, "nodeType": "Block", "src": "1693:30:1", "statements": [{"expression": {"id": 577, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 521, "src": "1710:6:1", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 576, "id": 578, "nodeType": "Return", "src": "1703:13:1"}]}, "documentation": {"id": 572, "nodeType": "StructuredDocumentation", "src": "1568:65:1", "text": " @dev Returns the address of the current owner."}, "functionSelector": "8da5cb5b", "id": 580, "implemented": true, "kind": "function", "modifiers": [], "name": "owner", "nameLocation": "1647:5:1", "nodeType": "FunctionDefinition", "parameters": {"id": 573, "nodeType": "ParameterList", "parameters": [], "src": "1652:2:1"}, "returnParameters": {"id": 576, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 575, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 580, "src": "1684:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 574, "name": "address", "nodeType": "ElementaryTypeName", "src": "1684:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1683:9:1"}, "scope": 660, "src": "1638:85:1", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 596, "nodeType": "Block", "src": "1841:117:1", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 584, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 580, "src": "1855:5:1", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1855:7:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [], "expression": {"argumentTypes": [], "id": 586, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1681, "src": "1866:10:1", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1866:12:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1855:23:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 595, "nodeType": "IfStatement", "src": "1851:101:1", "trueBody": {"id": 594, "nodeType": "Block", "src": "1880:72:1", "statements": [{"errorCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 590, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1681, "src": "1928:10:1", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:12:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 589, "name": "OwnableUnauthorizedAccount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 526, "src": "1901:26:1", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 592, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1901:40:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 593, "nodeType": "RevertStatement", "src": "1894:47:1"}]}}]}, "documentation": {"id": 581, "nodeType": "StructuredDocumentation", "src": "1729:62:1", "text": " @dev Throws if the sender is not the owner."}, "id": 597, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOwner", "nameLocation": "1805:11:1", "nodeType": "FunctionDefinition", "parameters": {"id": 582, "nodeType": "ParameterList", "parameters": [], "src": "1816:2:1"}, "returnParameters": {"id": 583, "nodeType": "ParameterList", "parameters": [], "src": "1841:0:1"}, "scope": 660, "src": "1796:162:1", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 610, "nodeType": "Block", "src": "2347:47:1", "statements": [{"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 606, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2384:1:1", "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": 605, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2376:7:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 604, "name": "address", "nodeType": "ElementaryTypeName", "src": "2376:7:1", "typeDescriptions": {}}}, "id": 607, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2376:10:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 603, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 659, "src": "2357:18:1", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2357:30:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 609, "nodeType": "ExpressionStatement", "src": "2357:30:1"}]}, "documentation": {"id": 598, "nodeType": "StructuredDocumentation", "src": "1964:324:1", "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."}, "functionSelector": "715018a6", "id": 611, "implemented": true, "kind": "function", "modifiers": [{"id": 601, "kind": "modifierInvocation", "modifierName": {"id": 600, "name": "onlyOwner", "nameLocations": ["2337:9:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 571, "src": "2337:9:1"}, "nodeType": "ModifierInvocation", "src": "2337:9:1"}], "name": "renounceOwnership", "nameLocation": "2302:17:1", "nodeType": "FunctionDefinition", "parameters": {"id": 599, "nodeType": "ParameterList", "parameters": [], "src": "2319:2:1"}, "returnParameters": {"id": 602, "nodeType": "ParameterList", "parameters": [], "src": "2347:0:1"}, "scope": 660, "src": "2293:101:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 638, "nodeType": "Block", "src": "2613:145:1", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 619, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 614, "src": "2627:8:1", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 622, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2647:1:1", "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": 621, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2639:7:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 620, "name": "address", "nodeType": "ElementaryTypeName", "src": "2639:7:1", "typeDescriptions": {}}}, "id": 623, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2639:10:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2627:22:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 633, "nodeType": "IfStatement", "src": "2623:91:1", "trueBody": {"id": 632, "nodeType": "Block", "src": "2651:63:1", "statements": [{"errorCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 628, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2700:1:1", "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": 627, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2692:7:1", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 626, "name": "address", "nodeType": "ElementaryTypeName", "src": "2692:7:1", "typeDescriptions": {}}}, "id": 629, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2692:10:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 625, "name": "OwnableInvalidOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "2672:19:1", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 630, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2672:31:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 631, "nodeType": "RevertStatement", "src": "2665:38:1"}]}}, {"expression": {"arguments": [{"id": 635, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 614, "src": "2742:8:1", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 634, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 659, "src": "2723:18:1", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)"}}, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2723:28:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 637, "nodeType": "ExpressionStatement", "src": "2723:28:1"}]}, "documentation": {"id": 612, "nodeType": "StructuredDocumentation", "src": "2400:138:1", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."}, "functionSelector": "f2fde38b", "id": 639, "implemented": true, "kind": "function", "modifiers": [{"id": 617, "kind": "modifierInvocation", "modifierName": {"id": 616, "name": "onlyOwner", "nameLocations": ["2603:9:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 571, "src": "2603:9:1"}, "nodeType": "ModifierInvocation", "src": "2603:9:1"}], "name": "transferOwnership", "nameLocation": "2552:17:1", "nodeType": "FunctionDefinition", "parameters": {"id": 615, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 614, "mutability": "mutable", "name": "newOwner", "nameLocation": "2578:8:1", "nodeType": "VariableDeclaration", "scope": 639, "src": "2570:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 613, "name": "address", "nodeType": "ElementaryTypeName", "src": "2570:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2569:18:1"}, "returnParameters": {"id": 618, "nodeType": "ParameterList", "parameters": [], "src": "2613:0:1"}, "scope": 660, "src": "2543:215:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 658, "nodeType": "Block", "src": "2975:124:1", "statements": [{"assignments": [646], "declarations": [{"constant": false, "id": 646, "mutability": "mutable", "name": "oldOwner", "nameLocation": "2993:8:1", "nodeType": "VariableDeclaration", "scope": 658, "src": "2985:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 645, "name": "address", "nodeType": "ElementaryTypeName", "src": "2985:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 648, "initialValue": {"id": 647, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 521, "src": "3004:6:1", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "2985:25:1"}, {"expression": {"id": 651, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 649, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 521, "src": "3020:6:1", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 650, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 642, "src": "3029:8:1", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "3020:17:1", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 652, "nodeType": "ExpressionStatement", "src": "3020:17:1"}, {"eventCall": {"arguments": [{"id": 654, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 646, "src": "3073:8:1", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 655, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 642, "src": "3083:8:1", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 653, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "3052:20:1", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)"}}, "id": 656, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3052:40:1", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 657, "nodeType": "EmitStatement", "src": "3047:45:1"}]}, "documentation": {"id": 640, "nodeType": "StructuredDocumentation", "src": "2764:143:1", "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."}, "id": 659, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOwnership", "nameLocation": "2921:18:1", "nodeType": "FunctionDefinition", "parameters": {"id": 643, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 642, "mutability": "mutable", "name": "newOwner", "nameLocation": "2948:8:1", "nodeType": "VariableDeclaration", "scope": 659, "src": "2940:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 641, "name": "address", "nodeType": "ElementaryTypeName", "src": "2940:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2939:18:1"}, "returnParameters": {"id": 644, "nodeType": "ParameterList", "parameters": [], "src": "2975:0:1"}, "scope": 660, "src": "2912:187:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}], "scope": 661, "src": "663:2438:1", "usedErrors": [526, 531], "usedEvents": [537]}], "src": "102:3000:1"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol", "exportedSymbols": {"IERC1155Errors": [1836], "IERC20Errors": [1741], "IERC721Errors": [1789]}, "id": 1837, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1701, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "112:24:2"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20Errors", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1702, "nodeType": "StructuredDocumentation", "src": "138:139:2", "text": " @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."}, "fullyImplemented": true, "id": 1741, "linearizedBaseContracts": [1741], "name": "IERC20Errors", "nameLocation": "288:12:2", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1703, "nodeType": "StructuredDocumentation", "src": "307:309:2", "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."}, "errorSelector": "e450d38c", "id": 1711, "name": "ERC20InsufficientBalance", "nameLocation": "627:24:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1710, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1705, "mutability": "mutable", "name": "sender", "nameLocation": "660:6:2", "nodeType": "VariableDeclaration", "scope": 1711, "src": "652:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1704, "name": "address", "nodeType": "ElementaryTypeName", "src": "652:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1707, "mutability": "mutable", "name": "balance", "nameLocation": "676:7:2", "nodeType": "VariableDeclaration", "scope": 1711, "src": "668:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1706, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "668:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1709, "mutability": "mutable", "name": "needed", "nameLocation": "693:6:2", "nodeType": "VariableDeclaration", "scope": 1711, "src": "685:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1708, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "685:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "651:49:2"}, "src": "621:80:2"}, {"documentation": {"id": 1712, "nodeType": "StructuredDocumentation", "src": "707:152:2", "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."}, "errorSelector": "96c6fd1e", "id": 1716, "name": "ERC20InvalidSender", "nameLocation": "870:18:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1715, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1714, "mutability": "mutable", "name": "sender", "nameLocation": "897:6:2", "nodeType": "VariableDeclaration", "scope": 1716, "src": "889:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1713, "name": "address", "nodeType": "ElementaryTypeName", "src": "889:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "888:16:2"}, "src": "864:41:2"}, {"documentation": {"id": 1717, "nodeType": "StructuredDocumentation", "src": "911:159:2", "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."}, "errorSelector": "ec442f05", "id": 1721, "name": "ERC20InvalidReceiver", "nameLocation": "1081:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1720, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1719, "mutability": "mutable", "name": "receiver", "nameLocation": "1110:8:2", "nodeType": "VariableDeclaration", "scope": 1721, "src": "1102:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1718, "name": "address", "nodeType": "ElementaryTypeName", "src": "1102:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1101:18:2"}, "src": "1075:45:2"}, {"documentation": {"id": 1722, "nodeType": "StructuredDocumentation", "src": "1126:345:2", "text": " @dev Indicates a failure with the `spender`\u2019s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."}, "errorSelector": "fb8f41b2", "id": 1730, "name": "ERC20InsufficientAllowance", "nameLocation": "1482:26:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1729, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1724, "mutability": "mutable", "name": "spender", "nameLocation": "1517:7:2", "nodeType": "VariableDeclaration", "scope": 1730, "src": "1509:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1723, "name": "address", "nodeType": "ElementaryTypeName", "src": "1509:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1726, "mutability": "mutable", "name": "allowance", "nameLocation": "1534:9:2", "nodeType": "VariableDeclaration", "scope": 1730, "src": "1526:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1725, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1526:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1728, "mutability": "mutable", "name": "needed", "nameLocation": "1553:6:2", "nodeType": "VariableDeclaration", "scope": 1730, "src": "1545:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1727, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1545:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1508:52:2"}, "src": "1476:85:2"}, {"documentation": {"id": 1731, "nodeType": "StructuredDocumentation", "src": "1567:174:2", "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."}, "errorSelector": "e602df05", "id": 1735, "name": "ERC20InvalidApprover", "nameLocation": "1752:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1734, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1733, "mutability": "mutable", "name": "approver", "nameLocation": "1781:8:2", "nodeType": "VariableDeclaration", "scope": 1735, "src": "1773:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1732, "name": "address", "nodeType": "ElementaryTypeName", "src": "1773:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1772:18:2"}, "src": "1746:45:2"}, {"documentation": {"id": 1736, "nodeType": "StructuredDocumentation", "src": "1797:195:2", "text": " @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."}, "errorSelector": "94280d62", "id": 1740, "name": "ERC20InvalidSpender", "nameLocation": "2003:19:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1739, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1738, "mutability": "mutable", "name": "spender", "nameLocation": "2031:7:2", "nodeType": "VariableDeclaration", "scope": 1740, "src": "2023:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1737, "name": "address", "nodeType": "ElementaryTypeName", "src": "2023:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2022:17:2"}, "src": "1997:43:2"}], "scope": 1837, "src": "278:1764:2", "usedErrors": [1711, 1716, 1721, 1730, 1735, 1740], "usedEvents": []}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC721Errors", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1742, "nodeType": "StructuredDocumentation", "src": "2044:141:2", "text": " @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."}, "fullyImplemented": true, "id": 1789, "linearizedBaseContracts": [1789], "name": "IERC721Errors", "nameLocation": "2196:13:2", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1743, "nodeType": "StructuredDocumentation", "src": "2216:219:2", "text": " @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."}, "errorSelector": "89c62b64", "id": 1747, "name": "ERC721InvalidOwner", "nameLocation": "2446:18:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1746, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1745, "mutability": "mutable", "name": "owner", "nameLocation": "2473:5:2", "nodeType": "VariableDeclaration", "scope": 1747, "src": "2465:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1744, "name": "address", "nodeType": "ElementaryTypeName", "src": "2465:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2464:15:2"}, "src": "2440:40:2"}, {"documentation": {"id": 1748, "nodeType": "StructuredDocumentation", "src": "2486:132:2", "text": " @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."}, "errorSelector": "7e273289", "id": 1752, "name": "ERC721NonexistentToken", "nameLocation": "2629:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1751, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1750, "mutability": "mutable", "name": "tokenId", "nameLocation": "2660:7:2", "nodeType": "VariableDeclaration", "scope": 1752, "src": "2652:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1749, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2652:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2651:17:2"}, "src": "2623:46:2"}, {"documentation": {"id": 1753, "nodeType": "StructuredDocumentation", "src": "2675:289:2", "text": " @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."}, "errorSelector": "64283d7b", "id": 1761, "name": "ERC721IncorrectOwner", "nameLocation": "2975:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1760, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1755, "mutability": "mutable", "name": "sender", "nameLocation": "3004:6:2", "nodeType": "VariableDeclaration", "scope": 1761, "src": "2996:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1754, "name": "address", "nodeType": "ElementaryTypeName", "src": "2996:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1757, "mutability": "mutable", "name": "tokenId", "nameLocation": "3020:7:2", "nodeType": "VariableDeclaration", "scope": 1761, "src": "3012:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1756, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3012:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1759, "mutability": "mutable", "name": "owner", "nameLocation": "3037:5:2", "nodeType": "VariableDeclaration", "scope": 1761, "src": "3029:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1758, "name": "address", "nodeType": "ElementaryTypeName", "src": "3029:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2995:48:2"}, "src": "2969:75:2"}, {"documentation": {"id": 1762, "nodeType": "StructuredDocumentation", "src": "3050:152:2", "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."}, "errorSelector": "73c6ac6e", "id": 1766, "name": "ERC721InvalidSender", "nameLocation": "3213:19:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1765, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1764, "mutability": "mutable", "name": "sender", "nameLocation": "3241:6:2", "nodeType": "VariableDeclaration", "scope": 1766, "src": "3233:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1763, "name": "address", "nodeType": "ElementaryTypeName", "src": "3233:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3232:16:2"}, "src": "3207:42:2"}, {"documentation": {"id": 1767, "nodeType": "StructuredDocumentation", "src": "3255:159:2", "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."}, "errorSelector": "64a0ae92", "id": 1771, "name": "ERC721InvalidReceiver", "nameLocation": "3425:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1770, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1769, "mutability": "mutable", "name": "receiver", "nameLocation": "3455:8:2", "nodeType": "VariableDeclaration", "scope": 1771, "src": "3447:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1768, "name": "address", "nodeType": "ElementaryTypeName", "src": "3447:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3446:18:2"}, "src": "3419:46:2"}, {"documentation": {"id": 1772, "nodeType": "StructuredDocumentation", "src": "3471:247:2", "text": " @dev Indicates a failure with the `operator`\u2019s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."}, "errorSelector": "177e802f", "id": 1778, "name": "ERC721InsufficientApproval", "nameLocation": "3729:26:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1777, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1774, "mutability": "mutable", "name": "operator", "nameLocation": "3764:8:2", "nodeType": "VariableDeclaration", "scope": 1778, "src": "3756:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1773, "name": "address", "nodeType": "ElementaryTypeName", "src": "3756:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1776, "mutability": "mutable", "name": "tokenId", "nameLocation": "3782:7:2", "nodeType": "VariableDeclaration", "scope": 1778, "src": "3774:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1775, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3774:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3755:35:2"}, "src": "3723:68:2"}, {"documentation": {"id": 1779, "nodeType": "StructuredDocumentation", "src": "3797:174:2", "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."}, "errorSelector": "a9fbf51f", "id": 1783, "name": "ERC721InvalidApprover", "nameLocation": "3982:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1782, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1781, "mutability": "mutable", "name": "approver", "nameLocation": "4012:8:2", "nodeType": "VariableDeclaration", "scope": 1783, "src": "4004:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1780, "name": "address", "nodeType": "ElementaryTypeName", "src": "4004:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4003:18:2"}, "src": "3976:46:2"}, {"documentation": {"id": 1784, "nodeType": "StructuredDocumentation", "src": "4028:197:2", "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."}, "errorSelector": "5b08ba18", "id": 1788, "name": "ERC721InvalidOperator", "nameLocation": "4236:21:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1787, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1786, "mutability": "mutable", "name": "operator", "nameLocation": "4266:8:2", "nodeType": "VariableDeclaration", "scope": 1788, "src": "4258:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1785, "name": "address", "nodeType": "ElementaryTypeName", "src": "4258:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4257:18:2"}, "src": "4230:46:2"}], "scope": 1837, "src": "2186:2092:2", "usedErrors": [1747, 1752, 1761, 1766, 1771, 1778, 1783, 1788], "usedEvents": []}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC1155Errors", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1790, "nodeType": "StructuredDocumentation", "src": "4280:143:2", "text": " @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."}, "fullyImplemented": true, "id": 1836, "linearizedBaseContracts": [1836], "name": "IERC1155Errors", "nameLocation": "4434:14:2", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1791, "nodeType": "StructuredDocumentation", "src": "4455:361:2", "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."}, "errorSelector": "03dee4c5", "id": 1801, "name": "ERC1155InsufficientBalance", "nameLocation": "4827:26:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1800, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1793, "mutability": "mutable", "name": "sender", "nameLocation": "4862:6:2", "nodeType": "VariableDeclaration", "scope": 1801, "src": "4854:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1792, "name": "address", "nodeType": "ElementaryTypeName", "src": "4854:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1795, "mutability": "mutable", "name": "balance", "nameLocation": "4878:7:2", "nodeType": "VariableDeclaration", "scope": 1801, "src": "4870:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1794, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4870:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1797, "mutability": "mutable", "name": "needed", "nameLocation": "4895:6:2", "nodeType": "VariableDeclaration", "scope": 1801, "src": "4887:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1796, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4887:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1799, "mutability": "mutable", "name": "tokenId", "nameLocation": "4911:7:2", "nodeType": "VariableDeclaration", "scope": 1801, "src": "4903:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1798, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4903:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4853:66:2"}, "src": "4821:99:2"}, {"documentation": {"id": 1802, "nodeType": "StructuredDocumentation", "src": "4926:152:2", "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."}, "errorSelector": "01a83514", "id": 1806, "name": "ERC1155InvalidSender", "nameLocation": "5089:20:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1805, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1804, "mutability": "mutable", "name": "sender", "nameLocation": "5118:6:2", "nodeType": "VariableDeclaration", "scope": 1806, "src": "5110:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1803, "name": "address", "nodeType": "ElementaryTypeName", "src": "5110:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "5109:16:2"}, "src": "5083:43:2"}, {"documentation": {"id": 1807, "nodeType": "StructuredDocumentation", "src": "5132:159:2", "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."}, "errorSelector": "57f447ce", "id": 1811, "name": "ERC1155InvalidReceiver", "nameLocation": "5302:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1810, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1809, "mutability": "mutable", "name": "receiver", "nameLocation": "5333:8:2", "nodeType": "VariableDeclaration", "scope": 1811, "src": "5325:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1808, "name": "address", "nodeType": "ElementaryTypeName", "src": "5325:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "5324:18:2"}, "src": "5296:47:2"}, {"documentation": {"id": 1812, "nodeType": "StructuredDocumentation", "src": "5349:256:2", "text": " @dev Indicates a failure with the `operator`\u2019s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."}, "errorSelector": "e237d922", "id": 1818, "name": "ERC1155MissingApprovalForAll", "nameLocation": "5616:28:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1817, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1814, "mutability": "mutable", "name": "operator", "nameLocation": "5653:8:2", "nodeType": "VariableDeclaration", "scope": 1818, "src": "5645:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1813, "name": "address", "nodeType": "ElementaryTypeName", "src": "5645:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1816, "mutability": "mutable", "name": "owner", "nameLocation": "5671:5:2", "nodeType": "VariableDeclaration", "scope": 1818, "src": "5663:13:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1815, "name": "address", "nodeType": "ElementaryTypeName", "src": "5663:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "5644:33:2"}, "src": "5610:68:2"}, {"documentation": {"id": 1819, "nodeType": "StructuredDocumentation", "src": "5684:174:2", "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."}, "errorSelector": "3e31884e", "id": 1823, "name": "ERC1155InvalidApprover", "nameLocation": "5869:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1822, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1821, "mutability": "mutable", "name": "approver", "nameLocation": "5900:8:2", "nodeType": "VariableDeclaration", "scope": 1823, "src": "5892:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1820, "name": "address", "nodeType": "ElementaryTypeName", "src": "5892:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "5891:18:2"}, "src": "5863:47:2"}, {"documentation": {"id": 1824, "nodeType": "StructuredDocumentation", "src": "5916:197:2", "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."}, "errorSelector": "ced3e100", "id": 1828, "name": "ERC1155InvalidOperator", "nameLocation": "6124:22:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1827, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1826, "mutability": "mutable", "name": "operator", "nameLocation": "6155:8:2", "nodeType": "VariableDeclaration", "scope": 1828, "src": "6147:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1825, "name": "address", "nodeType": "ElementaryTypeName", "src": "6147:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "6146:18:2"}, "src": "6118:47:2"}, {"documentation": {"id": 1829, "nodeType": "StructuredDocumentation", "src": "6171:280:2", "text": " @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"}, "errorSelector": "5b059991", "id": 1835, "name": "ERC1155InvalidArrayLength", "nameLocation": "6462:25:2", "nodeType": "ErrorDefinition", "parameters": {"id": 1834, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1831, "mutability": "mutable", "name": "idsLength", "nameLocation": "6496:9:2", "nodeType": "VariableDeclaration", "scope": 1835, "src": "6488:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1830, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6488:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1833, "mutability": "mutable", "name": "valuesLength", "nameLocation": "6515:12:2", "nodeType": "VariableDeclaration", "scope": 1835, "src": "6507:20:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1832, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6507:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6487:41:2"}, "src": "6456:73:2"}], "scope": 1837, "src": "4424:2107:2", "usedErrors": [1801, 1806, 1811, 1818, 1823, 1828, 1835], "usedEvents": []}], "src": "112:6420:2"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol", "exportedSymbols": {"Context": [1699], "ERC165": [2278], "ERC721": [1669], "IERC165": [2290], "IERC721": [1953], "IERC721Errors": [1789], "IERC721Metadata": [1999], "IERC721Receiver": [1971], "Strings": [2254]}, "id": 1670, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 662, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "107:24:3"}, {"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol", "file": "./IERC721.sol", "id": 664, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1670, "sourceUnit": 1954, "src": "133:38:3", "symbolAliases": [{"foreign": {"id": 663, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1953, "src": "141:7:3", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol", "file": "./IERC721Receiver.sol", "id": 666, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1670, "sourceUnit": 1972, "src": "172:54:3", "symbolAliases": [{"foreign": {"id": 665, "name": "IERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1971, "src": "180:15:3", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol", "file": "./extensions/IERC721Metadata.sol", "id": 668, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1670, "sourceUnit": 2000, "src": "227:65:3", "symbolAliases": [{"foreign": {"id": 667, "name": "IERC721Metadata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1999, "src": "235:15:3", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol", "file": "../../utils/Context.sol", "id": 670, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1670, "sourceUnit": 1700, "src": "293:48:3", "symbolAliases": [{"foreign": {"id": 669, "name": "Context", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1699, "src": "301:7:3", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/Strings.sol", "file": "../../utils/Strings.sol", "id": 672, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1670, "sourceUnit": 2255, "src": "342:48:3", "symbolAliases": [{"foreign": {"id": 671, "name": "Strings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2254, "src": "350:7:3", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol", "file": "../../utils/introspection/ERC165.sol", "id": 675, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1670, "sourceUnit": 2279, "src": "391:69:3", "symbolAliases": [{"foreign": {"id": 673, "name": "IERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2290, "src": "399:7:3", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}, {"foreign": {"id": 674, "name": "ERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2278, "src": "408:6:3", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol", "file": "../../interfaces/draft-IERC6093.sol", "id": 677, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1670, "sourceUnit": 1837, "src": "461:66:3", "symbolAliases": [{"foreign": {"id": 676, "name": "IERC721Errors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1789, "src": "469:13:3", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 679, "name": "Context", "nameLocations": ["804:7:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1699, "src": "804:7:3"}, "id": 680, "nodeType": "InheritanceSpecifier", "src": "804:7:3"}, {"baseName": {"id": 681, "name": "ERC165", "nameLocations": ["813:6:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2278, "src": "813:6:3"}, "id": 682, "nodeType": "InheritanceSpecifier", "src": "813:6:3"}, {"baseName": {"id": 683, "name": "IERC721", "nameLocations": ["821:7:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1953, "src": "821:7:3"}, "id": 684, "nodeType": "InheritanceSpecifier", "src": "821:7:3"}, {"baseName": {"id": 685, "name": "IERC721Metadata", "nameLocations": ["830:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1999, "src": "830:15:3"}, "id": 686, "nodeType": "InheritanceSpecifier", "src": "830:15:3"}, {"baseName": {"id": 687, "name": "IERC721Errors", "nameLocations": ["847:13:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 1789, "src": "847:13:3"}, "id": 688, "nodeType": "InheritanceSpecifier", "src": "847:13:3"}], "canonicalName": "ERC721", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 678, "nodeType": "StructuredDocumentation", "src": "529:246:3", "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."}, "fullyImplemented": true, "id": 1669, "linearizedBaseContracts": [1669, 1789, 1999, 1953, 2278, 2290, 1699], "name": "ERC721", "nameLocation": "794:6:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 691, "libraryName": {"id": 689, "name": "Strings", "nameLocations": ["873:7:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2254, "src": "873:7:3"}, "nodeType": "UsingForDirective", "src": "867:26:3", "typeName": {"id": 690, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "885:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"constant": false, "id": 693, "mutability": "mutable", "name": "_name", "nameLocation": "932:5:3", "nodeType": "VariableDeclaration", "scope": 1669, "src": "917:20:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 692, "name": "string", "nodeType": "ElementaryTypeName", "src": "917:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 695, "mutability": "mutable", "name": "_symbol", "nameLocation": "979:7:3", "nodeType": "VariableDeclaration", "scope": 1669, "src": "964:22:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string"}, "typeName": {"id": 694, "name": "string", "nodeType": "ElementaryTypeName", "src": "964:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "private"}, {"constant": false, "id": 699, "mutability": "mutable", "name": "_owners", "nameLocation": "1037:7:3", "nodeType": "VariableDeclaration", "scope": 1669, "src": "993:51:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "typeName": {"id": 698, "keyName": "tokenId", "keyNameLocation": "1009:7:3", "keyType": {"id": 696, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1001:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "993:35:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 697, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "private"}, {"constant": false, "id": 703, "mutability": "mutable", "name": "_balances", "nameLocation": "1093:9:3", "nodeType": "VariableDeclaration", "scope": 1669, "src": "1051:51:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "typeName": {"id": 702, "keyName": "owner", "keyNameLocation": "1067:5:3", "keyType": {"id": 700, "name": "address", "nodeType": "ElementaryTypeName", "src": "1059:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1051:33:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 701, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1076:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, "visibility": "private"}, {"constant": false, "id": 707, "mutability": "mutable", "name": "_tokenApprovals", "nameLocation": "1153:15:3", "nodeType": "VariableDeclaration", "scope": 1669, "src": "1109:59:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "typeName": {"id": 706, "keyName": "tokenId", "keyNameLocation": "1125:7:3", "keyType": {"id": 704, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1117:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "1109:35:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 705, "name": "address", "nodeType": "ElementaryTypeName", "src": "1136:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "private"}, {"constant": false, "id": 713, "mutability": "mutable", "name": "_operatorApprovals", "nameLocation": "1243:18:3", "nodeType": "VariableDeclaration", "scope": 1669, "src": "1175:86:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "typeName": {"id": 712, "keyName": "owner", "keyNameLocation": "1191:5:3", "keyType": {"id": 708, "name": "address", "nodeType": "ElementaryTypeName", "src": "1183:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1175:59:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 711, "keyName": "operator", "keyNameLocation": "1216:8:3", "keyType": {"id": 709, "name": "address", "nodeType": "ElementaryTypeName", "src": "1208:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "1200:33:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 710, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1228:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}}}, "visibility": "private"}, {"body": {"id": 729, "nodeType": "Block", "src": "1437:57:3", "statements": [{"expression": {"id": 723, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 721, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 693, "src": "1447:5:3", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 722, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 716, "src": "1455:5:3", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1447:13:3", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 724, "nodeType": "ExpressionStatement", "src": "1447:13:3"}, {"expression": {"id": 727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 725, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 695, "src": "1470:7:3", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 726, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 718, "src": "1480:7:3", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "src": "1470:17:3", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "id": 728, "nodeType": "ExpressionStatement", "src": "1470:17:3"}]}, "documentation": {"id": 714, "nodeType": "StructuredDocumentation", "src": "1268:108:3", "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."}, "id": 730, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 719, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 716, "mutability": "mutable", "name": "name_", "nameLocation": "1407:5:3", "nodeType": "VariableDeclaration", "scope": 730, "src": "1393:19:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 715, "name": "string", "nodeType": "ElementaryTypeName", "src": "1393:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 718, "mutability": "mutable", "name": "symbol_", "nameLocation": "1428:7:3", "nodeType": "VariableDeclaration", "scope": 730, "src": "1414:21:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 717, "name": "string", "nodeType": "ElementaryTypeName", "src": "1414:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1392:44:3"}, "returnParameters": {"id": 720, "nodeType": "ParameterList", "parameters": [], "src": "1437:0:3"}, "scope": 1669, "src": "1381:113:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"baseFunctions": [2277, 2289], "body": {"id": 760, "nodeType": "Block", "src": "1669:192:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 741, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 733, "src": "1698:11:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 743, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1953, "src": "1718:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721_$1953_$", "typeString": "type(contract IERC721)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721_$1953_$", "typeString": "type(contract IERC721)"}], "id": 742, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1713:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 744, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1713:13:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$1953", "typeString": "type(contract IERC721)"}}, "id": 745, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1727:11:3", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1713:25:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "1698:40:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 752, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 747, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 733, "src": "1754:11:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 749, "name": "IERC721Metadata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1999, "src": "1774:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1999_$", "typeString": "type(contract IERC721Metadata)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1999_$", "typeString": "type(contract IERC721Metadata)"}], "id": 748, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1769:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 750, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1769:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$1999", "typeString": "type(contract IERC721Metadata)"}}, "id": 751, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1791:11:3", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1769:33:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "1754:48:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1698:104:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 756, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 733, "src": "1842:11:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes4", "typeString": "bytes4"}], "expression": {"id": 754, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1818:5:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_super$_ERC721_$1669_$", "typeString": "type(contract super ERC721)"}}, "id": 755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1824:17:3", "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 2277, "src": "1818:23:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)"}}, "id": 757, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1818:36:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "1698:156:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 740, "id": 759, "nodeType": "Return", "src": "1679:175:3"}]}, "documentation": {"id": 731, "nodeType": "StructuredDocumentation", "src": "1500:56:3", "text": " @dev See {IERC165-supportsInterface}."}, "functionSelector": "01ffc9a7", "id": 761, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1570:17:3", "nodeType": "FunctionDefinition", "overrides": {"id": 737, "nodeType": "OverrideSpecifier", "overrides": [{"id": 735, "name": "ERC165", "nameLocations": ["1637:6:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2278, "src": "1637:6:3"}, {"id": 736, "name": "IERC165", "nameLocations": ["1645:7:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 2290, "src": "1645:7:3"}], "src": "1628:25:3"}, "parameters": {"id": 734, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 733, "mutability": "mutable", "name": "interfaceId", "nameLocation": "1595:11:3", "nodeType": "VariableDeclaration", "scope": 761, "src": "1588:18:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 732, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1588:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "1587:20:3"}, "returnParameters": {"id": 740, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 739, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 761, "src": "1663:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 738, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1663:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1662:6:3"}, "scope": 1669, "src": "1561:300:3", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1878], "body": {"id": 788, "nodeType": "Block", "src": "1992:136:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 769, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "2006:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 772, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2023:1:3", "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": 771, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2015:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 770, "name": "address", "nodeType": "ElementaryTypeName", "src": "2015:7:3", "typeDescriptions": {}}}, "id": 773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2015:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2006:19:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 783, "nodeType": "IfStatement", "src": "2002:87:3", "trueBody": {"id": 782, "nodeType": "Block", "src": "2027:62:3", "statements": [{"errorCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 778, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2075:1:3", "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": 777, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2067:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 776, "name": "address", "nodeType": "ElementaryTypeName", "src": "2067:7:3", "typeDescriptions": {}}}, "id": 779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2067:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 775, "name": "ERC721InvalidOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1747, "src": "2048:18:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2048:30:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 781, "nodeType": "RevertStatement", "src": "2041:37:3"}]}}, {"expression": {"baseExpression": {"id": 784, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 703, "src": "2105:9:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 786, "indexExpression": {"id": 785, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 764, "src": "2115:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2105:16:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 768, "id": 787, "nodeType": "Return", "src": "2098:23:3"}]}, "documentation": {"id": 762, "nodeType": "StructuredDocumentation", "src": "1867:48:3", "text": " @dev See {IERC721-balanceOf}."}, "functionSelector": "70a08231", "id": 789, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "1929:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 765, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 764, "mutability": "mutable", "name": "owner", "nameLocation": "1947:5:3", "nodeType": "VariableDeclaration", "scope": 789, "src": "1939:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 763, "name": "address", "nodeType": "ElementaryTypeName", "src": "1939:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1938:15:3"}, "returnParameters": {"id": 768, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 767, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 789, "src": "1983:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 766, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1983:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1982:9:3"}, "scope": 1669, "src": "1920:208:3", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1886], "body": {"id": 801, "nodeType": "Block", "src": "2257:46:3", "statements": [{"expression": {"arguments": [{"id": 798, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "2288:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 797, "name": "_requireOwned", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1604, "src": "2274:13:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 799, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2274:22:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 796, "id": 800, "nodeType": "Return", "src": "2267:29:3"}]}, "documentation": {"id": 790, "nodeType": "StructuredDocumentation", "src": "2134:46:3", "text": " @dev See {IERC721-ownerOf}."}, "functionSelector": "6352211e", "id": 802, "implemented": true, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "2194:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 793, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 792, "mutability": "mutable", "name": "tokenId", "nameLocation": "2210:7:3", "nodeType": "VariableDeclaration", "scope": 802, "src": "2202:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 791, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2202:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2201:17:3"}, "returnParameters": {"id": 796, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 795, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 802, "src": "2248:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 794, "name": "address", "nodeType": "ElementaryTypeName", "src": "2248:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2247:9:3"}, "scope": 1669, "src": "2185:118:3", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1984], "body": {"id": 810, "nodeType": "Block", "src": "2425:29:3", "statements": [{"expression": {"id": 808, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 693, "src": "2442:5:3", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 807, "id": 809, "nodeType": "Return", "src": "2435:12:3"}]}, "documentation": {"id": 803, "nodeType": "StructuredDocumentation", "src": "2309:51:3", "text": " @dev See {IERC721Metadata-name}."}, "functionSelector": "06fdde03", "id": 811, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "2374:4:3", "nodeType": "FunctionDefinition", "parameters": {"id": 804, "nodeType": "ParameterList", "parameters": [], "src": "2378:2:3"}, "returnParameters": {"id": 807, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 806, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 811, "src": "2410:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 805, "name": "string", "nodeType": "ElementaryTypeName", "src": "2410:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2409:15:3"}, "scope": 1669, "src": "2365:89:3", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1990], "body": {"id": 819, "nodeType": "Block", "src": "2580:31:3", "statements": [{"expression": {"id": 817, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 695, "src": "2597:7:3", "typeDescriptions": {"typeIdentifier": "t_string_storage", "typeString": "string storage ref"}}, "functionReturnParameters": 816, "id": 818, "nodeType": "Return", "src": "2590:14:3"}]}, "documentation": {"id": 812, "nodeType": "StructuredDocumentation", "src": "2460:53:3", "text": " @dev See {IERC721Metadata-symbol}."}, "functionSelector": "95d89b41", "id": 820, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "2527:6:3", "nodeType": "FunctionDefinition", "parameters": {"id": 813, "nodeType": "ParameterList", "parameters": [], "src": "2533:2:3"}, "returnParameters": {"id": 816, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 815, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 820, "src": "2565:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 814, "name": "string", "nodeType": "ElementaryTypeName", "src": "2565:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2564:15:3"}, "scope": 1669, "src": "2518:93:3", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1998], "body": {"id": 855, "nodeType": "Block", "src": "2756:176:3", "statements": [{"expression": {"arguments": [{"id": 829, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 823, "src": "2780:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 828, "name": "_requireOwned", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1604, "src": "2766:13:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 830, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2766:22:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 831, "nodeType": "ExpressionStatement", "src": "2766:22:3"}, {"assignments": [833], "declarations": [{"constant": false, "id": 833, "mutability": "mutable", "name": "baseURI", "nameLocation": "2813:7:3", "nodeType": "VariableDeclaration", "scope": 855, "src": "2799:21:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 832, "name": "string", "nodeType": "ElementaryTypeName", "src": "2799:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 836, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "id": 834, "name": "_baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 865, "src": "2823:8:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view returns (string memory)"}}, "id": 835, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2823:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2799:34:3"}, {"expression": {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 839, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "2856:7:3", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 838, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2850:5:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 837, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2850:5:3", "typeDescriptions": {}}}, "id": 840, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2850:14:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 841, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2865:6:3", "memberName": "length", "nodeType": "MemberAccess", "src": "2850:21:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 842, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2874:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2850:25:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"hexValue": "", "id": 852, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2923:2:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}, "id": 853, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "2850:75:3", "trueExpression": {"arguments": [{"id": 847, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 833, "src": "2892:7:3", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 848, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 823, "src": "2901:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 849, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2909:8:3", "memberName": "toString", "nodeType": "MemberAccess", "referencedDeclaration": 2067, "src": "2901:16:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (string memory)"}}, "id": 850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2901:18:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 845, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2878:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 844, "name": "string", "nodeType": "ElementaryTypeName", "src": "2878:6:3", "typeDescriptions": {}}}, "id": 846, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2885:6:3", "memberName": "concat", "nodeType": "MemberAccess", "src": "2878:13:3", "typeDescriptions": {"typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)"}}, "id": 851, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2878:42:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 827, "id": 854, "nodeType": "Return", "src": "2843:82:3"}]}, "documentation": {"id": 821, "nodeType": "StructuredDocumentation", "src": "2617:55:3", "text": " @dev See {IERC721Metadata-tokenURI}."}, "functionSelector": "c87b56dd", "id": 856, "implemented": true, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "2686:8:3", "nodeType": "FunctionDefinition", "parameters": {"id": 824, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 823, "mutability": "mutable", "name": "tokenId", "nameLocation": "2703:7:3", "nodeType": "VariableDeclaration", "scope": 856, "src": "2695:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 822, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2695:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2694:17:3"}, "returnParameters": {"id": 827, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 826, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 856, "src": "2741:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 825, "name": "string", "nodeType": "ElementaryTypeName", "src": "2741:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2740:15:3"}, "scope": 1669, "src": "2677:255:3", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"body": {"id": 864, "nodeType": "Block", "src": "3240:26:3", "statements": [{"expression": {"hexValue": "", "id": 862, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3257:2:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}, "functionReturnParameters": 861, "id": 863, "nodeType": "Return", "src": "3250:9:3"}]}, "documentation": {"id": 857, "nodeType": "StructuredDocumentation", "src": "2938:231:3", "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."}, "id": 865, "implemented": true, "kind": "function", "modifiers": [], "name": "_baseURI", "nameLocation": "3183:8:3", "nodeType": "FunctionDefinition", "parameters": {"id": 858, "nodeType": "ParameterList", "parameters": [], "src": "3191:2:3"}, "returnParameters": {"id": 861, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 860, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 865, "src": "3225:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 859, "name": "string", "nodeType": "ElementaryTypeName", "src": "3225:6:3", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "3224:15:3"}, "scope": 1669, "src": "3174:92:3", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"baseFunctions": [1926], "body": {"id": 880, "nodeType": "Block", "src": "3384:52:3", "statements": [{"expression": {"arguments": [{"id": 874, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "3403:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 875, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 870, "src": "3407:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 876, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1681, "src": "3416:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 877, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3416:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 873, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [1472, 1538], "referencedDeclaration": 1472, "src": "3394:8:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (address,uint256,address)"}}, "id": 878, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3394:35:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 879, "nodeType": "ExpressionStatement", "src": "3394:35:3"}]}, "documentation": {"id": 866, "nodeType": "StructuredDocumentation", "src": "3272:46:3", "text": " @dev See {IERC721-approve}."}, "functionSelector": "095ea7b3", "id": 881, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "3332:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 871, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 868, "mutability": "mutable", "name": "to", "nameLocation": "3348:2:3", "nodeType": "VariableDeclaration", "scope": 881, "src": "3340:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 867, "name": "address", "nodeType": "ElementaryTypeName", "src": "3340:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 870, "mutability": "mutable", "name": "tokenId", "nameLocation": "3360:7:3", "nodeType": "VariableDeclaration", "scope": 881, "src": "3352:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 869, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3352:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3339:29:3"}, "returnParameters": {"id": 872, "nodeType": "ParameterList", "parameters": [], "src": "3384:0:3"}, "scope": 1669, "src": "3323:113:3", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [1942], "body": {"id": 897, "nodeType": "Block", "src": "3573:78:3", "statements": [{"expression": {"arguments": [{"id": 890, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 884, "src": "3597:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 889, "name": "_requireOwned", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1604, "src": "3583:13:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 891, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3583:22:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 892, "nodeType": "ExpressionStatement", "src": "3583:22:3"}, {"expression": {"arguments": [{"id": 894, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 884, "src": "3636:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 893, "name": "_getApproved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1047, "src": "3623:12:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 895, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3623:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 888, "id": 896, "nodeType": "Return", "src": "3616:28:3"}]}, "documentation": {"id": 882, "nodeType": "StructuredDocumentation", "src": "3442:50:3", "text": " @dev See {IERC721-getApproved}."}, "functionSelector": "081812fc", "id": 898, "implemented": true, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "3506:11:3", "nodeType": "FunctionDefinition", "parameters": {"id": 885, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 884, "mutability": "mutable", "name": "tokenId", "nameLocation": "3526:7:3", "nodeType": "VariableDeclaration", "scope": 898, "src": "3518:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 883, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3518:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3517:17:3"}, "returnParameters": {"id": 888, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 887, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 898, "src": "3564:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 886, "name": "address", "nodeType": "ElementaryTypeName", "src": "3564:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3563:9:3"}, "scope": 1669, "src": "3497:154:3", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1934], "body": {"id": 913, "nodeType": "Block", "src": "3793:69:3", "statements": [{"expression": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 907, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1681, "src": "3822:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 908, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3822:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 909, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 901, "src": "3836:8:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 910, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 903, "src": "3846:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 906, "name": "_setApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1575, "src": "3803:18:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)"}}, "id": 911, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3803:52:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 912, "nodeType": "ExpressionStatement", "src": "3803:52:3"}]}, "documentation": {"id": 899, "nodeType": "StructuredDocumentation", "src": "3657:56:3", "text": " @dev See {IERC721-setApprovalForAll}."}, "functionSelector": "a22cb465", "id": 914, "implemented": true, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "3727:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 904, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 901, "mutability": "mutable", "name": "operator", "nameLocation": "3753:8:3", "nodeType": "VariableDeclaration", "scope": 914, "src": "3745:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 900, "name": "address", "nodeType": "ElementaryTypeName", "src": "3745:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 903, "mutability": "mutable", "name": "approved", "nameLocation": "3768:8:3", "nodeType": "VariableDeclaration", "scope": 914, "src": "3763:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 902, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3763:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "3744:33:3"}, "returnParameters": {"id": 905, "nodeType": "ParameterList", "parameters": [], "src": "3793:0:3"}, "scope": 1669, "src": "3718:144:3", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [1952], "body": {"id": 930, "nodeType": "Block", "src": "4022:59:3", "statements": [{"expression": {"baseExpression": {"baseExpression": {"id": 924, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 713, "src": "4039:18:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 926, "indexExpression": {"id": 925, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 917, "src": "4058:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4039:25:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 928, "indexExpression": {"id": 927, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 919, "src": "4065:8:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4039:35:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 923, "id": 929, "nodeType": "Return", "src": "4032:42:3"}]}, "documentation": {"id": 915, "nodeType": "StructuredDocumentation", "src": "3868:55:3", "text": " @dev See {IERC721-isApprovedForAll}."}, "functionSelector": "e985e9c5", "id": 931, "implemented": true, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "3937:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 920, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 917, "mutability": "mutable", "name": "owner", "nameLocation": "3962:5:3", "nodeType": "VariableDeclaration", "scope": 931, "src": "3954:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 916, "name": "address", "nodeType": "ElementaryTypeName", "src": "3954:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 919, "mutability": "mutable", "name": "operator", "nameLocation": "3977:8:3", "nodeType": "VariableDeclaration", "scope": 931, "src": "3969:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 918, "name": "address", "nodeType": "ElementaryTypeName", "src": "3969:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "3953:33:3"}, "returnParameters": {"id": 923, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 922, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 931, "src": "4016:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 921, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4016:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4015:6:3"}, "scope": 1669, "src": "3928:153:3", "stateMutability": "view", "virtual": true, "visibility": "public"}, {"baseFunctions": [1918], "body": {"id": 976, "nodeType": "Block", "src": "4223:498:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 941, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 936, "src": "4237:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 944, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4251:1:3", "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": 943, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4243:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 942, "name": "address", "nodeType": "ElementaryTypeName", "src": "4243:7:3", "typeDescriptions": {}}}, "id": 945, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4243:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4237:16:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 955, "nodeType": "IfStatement", "src": "4233:87:3", "trueBody": {"id": 954, "nodeType": "Block", "src": "4255:65:3", "statements": [{"errorCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 950, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4306:1:3", "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": 949, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4298:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 948, "name": "address", "nodeType": "ElementaryTypeName", "src": "4298:7:3", "typeDescriptions": {}}}, "id": 951, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4298:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 947, "name": "ERC721InvalidReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1771, "src": "4276:21:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 952, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4276:33:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 953, "nodeType": "RevertStatement", "src": "4269:40:3"}]}}, {"assignments": [957], "declarations": [{"constant": false, "id": 957, "mutability": "mutable", "name": "previousOwner", "nameLocation": "4546:13:3", "nodeType": "VariableDeclaration", "scope": 976, "src": "4538:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 956, "name": "address", "nodeType": "ElementaryTypeName", "src": "4538:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 964, "initialValue": {"arguments": [{"id": 959, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 936, "src": "4570:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 960, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 938, "src": "4574:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [], "expression": {"argumentTypes": [], "id": 961, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1681, "src": "4583:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 962, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4583:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 958, "name": "_update", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1226, "src": "4562:7:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", "typeString": "function (address,uint256,address) returns (address)"}}, "id": 963, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4562:34:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "4538:58:3"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 965, "name": "previousOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 957, "src": "4610:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 966, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "4627:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4610:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 975, "nodeType": "IfStatement", "src": "4606:109:3", "trueBody": {"id": 974, "nodeType": "Block", "src": "4633:82:3", "statements": [{"errorCall": {"arguments": [{"id": 969, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "4675:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 970, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 938, "src": "4681:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 971, "name": "previousOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 957, "src": "4690:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 968, "name": "ERC721IncorrectOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1761, "src": "4654:20:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (address,uint256,address) pure"}}, "id": 972, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4654:50:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 973, "nodeType": "RevertStatement", "src": "4647:57:3"}]}}]}, "documentation": {"id": 932, "nodeType": "StructuredDocumentation", "src": "4087:51:3", "text": " @dev See {IERC721-transferFrom}."}, "functionSelector": "23b872dd", "id": 977, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "4152:12:3", "nodeType": "FunctionDefinition", "parameters": {"id": 939, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 934, "mutability": "mutable", "name": "from", "nameLocation": "4173:4:3", "nodeType": "VariableDeclaration", "scope": 977, "src": "4165:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 933, "name": "address", "nodeType": "ElementaryTypeName", "src": "4165:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 936, "mutability": "mutable", "name": "to", "nameLocation": "4187:2:3", "nodeType": "VariableDeclaration", "scope": 977, "src": "4179:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 935, "name": "address", "nodeType": "ElementaryTypeName", "src": "4179:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 938, "mutability": "mutable", "name": "tokenId", "nameLocation": "4199:7:3", "nodeType": "VariableDeclaration", "scope": 977, "src": "4191:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 937, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4191:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4164:43:3"}, "returnParameters": {"id": 940, "nodeType": "ParameterList", "parameters": [], "src": "4223:0:3"}, "scope": 1669, "src": "4143:578:3", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"baseFunctions": [1908], "body": {"id": 994, "nodeType": "Block", "src": "4863:56:3", "statements": [{"expression": {"arguments": [{"id": 988, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 980, "src": "4890:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 989, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 982, "src": "4896:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 990, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 984, "src": "4900:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "", "id": 991, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4909:2:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "id": 987, "name": "safeTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [995, 1021], "referencedDeclaration": 1021, "src": "4873:16:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 992, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4873:39:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 993, "nodeType": "ExpressionStatement", "src": "4873:39:3"}]}, "documentation": {"id": 978, "nodeType": "StructuredDocumentation", "src": "4727:55:3", "text": " @dev See {IERC721-safeTransferFrom}."}, "functionSelector": "42842e0e", "id": 995, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "4796:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 985, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 980, "mutability": "mutable", "name": "from", "nameLocation": "4821:4:3", "nodeType": "VariableDeclaration", "scope": 995, "src": "4813:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 979, "name": "address", "nodeType": "ElementaryTypeName", "src": "4813:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 982, "mutability": "mutable", "name": "to", "nameLocation": "4835:2:3", "nodeType": "VariableDeclaration", "scope": 995, "src": "4827:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 981, "name": "address", "nodeType": "ElementaryTypeName", "src": "4827:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 984, "mutability": "mutable", "name": "tokenId", "nameLocation": "4847:7:3", "nodeType": "VariableDeclaration", "scope": 995, "src": "4839:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 983, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4839:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4812:43:3"}, "returnParameters": {"id": 986, "nodeType": "ParameterList", "parameters": [], "src": "4863:0:3"}, "scope": 1669, "src": "4787:132:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"baseFunctions": [1898], "body": {"id": 1020, "nodeType": "Block", "src": "5088:105:3", "statements": [{"expression": {"arguments": [{"id": 1008, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 998, "src": "5111:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1009, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1000, "src": "5117:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1010, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "5121:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1007, "name": "transferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 977, "src": "5098:12:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1011, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5098:31:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1012, "nodeType": "ExpressionStatement", "src": "5098:31:3"}, {"expression": {"arguments": [{"id": 1014, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 998, "src": "5162:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1015, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1000, "src": "5168:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1016, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "5172:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1017, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1004, "src": "5181:4:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1013, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1668, "src": "5139:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 1018, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5139:47:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1019, "nodeType": "ExpressionStatement", "src": "5139:47:3"}]}, "documentation": {"id": 996, "nodeType": "StructuredDocumentation", "src": "4925:55:3", "text": " @dev See {IERC721-safeTransferFrom}."}, "functionSelector": "b88d4fde", "id": 1021, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "4994:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1005, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 998, "mutability": "mutable", "name": "from", "nameLocation": "5019:4:3", "nodeType": "VariableDeclaration", "scope": 1021, "src": "5011:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 997, "name": "address", "nodeType": "ElementaryTypeName", "src": "5011:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1000, "mutability": "mutable", "name": "to", "nameLocation": "5033:2:3", "nodeType": "VariableDeclaration", "scope": 1021, "src": "5025:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 999, "name": "address", "nodeType": "ElementaryTypeName", "src": "5025:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1002, "mutability": "mutable", "name": "tokenId", "nameLocation": "5045:7:3", "nodeType": "VariableDeclaration", "scope": 1021, "src": "5037:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1001, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5037:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1004, "mutability": "mutable", "name": "data", "nameLocation": "5067:4:3", "nodeType": "VariableDeclaration", "scope": 1021, "src": "5054:17:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1003, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5054:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "5010:62:3"}, "returnParameters": {"id": 1006, "nodeType": "ParameterList", "parameters": [], "src": "5088:0:3"}, "scope": 1669, "src": "4985:208:3", "stateMutability": "nonpayable", "virtual": true, "visibility": "public"}, {"body": {"id": 1033, "nodeType": "Block", "src": "5782:40:3", "statements": [{"expression": {"baseExpression": {"id": 1029, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "5799:7:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1031, "indexExpression": {"id": 1030, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1024, "src": "5807:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5799:16:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 1028, "id": 1032, "nodeType": "Return", "src": "5792:23:3"}]}, "documentation": {"id": 1022, "nodeType": "StructuredDocumentation", "src": "5199:503:3", "text": " @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."}, "id": 1034, "implemented": true, "kind": "function", "modifiers": [], "name": "_ownerOf", "nameLocation": "5716:8:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1025, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1024, "mutability": "mutable", "name": "tokenId", "nameLocation": "5733:7:3", "nodeType": "VariableDeclaration", "scope": 1034, "src": "5725:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1023, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5725:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5724:17:3"}, "returnParameters": {"id": 1028, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1027, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1034, "src": "5773:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1026, "name": "address", "nodeType": "ElementaryTypeName", "src": "5773:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "5772:9:3"}, "scope": 1669, "src": "5707:115:3", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1046, "nodeType": "Block", "src": "6017:48:3", "statements": [{"expression": {"baseExpression": {"id": 1042, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 707, "src": "6034:15:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1044, "indexExpression": {"id": 1043, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1037, "src": "6050:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6034:24:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 1041, "id": 1045, "nodeType": "Return", "src": "6027:31:3"}]}, "documentation": {"id": 1035, "nodeType": "StructuredDocumentation", "src": "5828:105:3", "text": " @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."}, "id": 1047, "implemented": true, "kind": "function", "modifiers": [], "name": "_getApproved", "nameLocation": "5947:12:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1038, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1037, "mutability": "mutable", "name": "tokenId", "nameLocation": "5968:7:3", "nodeType": "VariableDeclaration", "scope": 1047, "src": "5960:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1036, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5960:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5959:17:3"}, "returnParameters": {"id": 1041, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1040, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1047, "src": "6008:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1039, "name": "address", "nodeType": "ElementaryTypeName", "src": "6008:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "6007:9:3"}, "scope": 1669, "src": "5938:127:3", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1082, "nodeType": "Block", "src": "6485:163:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1064, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1059, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1052, "src": "6514:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1062, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6533:1:3", "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": 1061, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6525:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1060, "name": "address", "nodeType": "ElementaryTypeName", "src": "6525:7:3", "typeDescriptions": {}}}, "id": 1063, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6525:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "6514:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1065, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1050, "src": "6552:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1066, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1052, "src": "6561:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "6552:16:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"arguments": [{"id": 1069, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1050, "src": "6589:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1070, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1052, "src": "6596:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1068, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "6572:16:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)"}}, "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6572:32:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6552:52:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 1074, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1054, "src": "6621:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1073, "name": "_getApproved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1047, "src": "6608:12:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1075, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6608:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"id": 1076, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1052, "src": "6633:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "6608:32:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6552:88:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 1079, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "6551:90:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "6514:127:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 1058, "id": 1081, "nodeType": "Return", "src": "6495:146:3"}]}, "documentation": {"id": 1048, "nodeType": "StructuredDocumentation", "src": "6071:300:3", "text": " @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."}, "id": 1083, "implemented": true, "kind": "function", "modifiers": [], "name": "_isAuthorized", "nameLocation": "6385:13:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1055, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1050, "mutability": "mutable", "name": "owner", "nameLocation": "6407:5:3", "nodeType": "VariableDeclaration", "scope": 1083, "src": "6399:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1049, "name": "address", "nodeType": "ElementaryTypeName", "src": "6399:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1052, "mutability": "mutable", "name": "spender", "nameLocation": "6422:7:3", "nodeType": "VariableDeclaration", "scope": 1083, "src": "6414:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1051, "name": "address", "nodeType": "ElementaryTypeName", "src": "6414:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1054, "mutability": "mutable", "name": "tokenId", "nameLocation": "6439:7:3", "nodeType": "VariableDeclaration", "scope": 1083, "src": "6431:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1053, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6431:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "6398:49:3"}, "returnParameters": {"id": 1058, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1057, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1083, "src": "6479:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1056, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6479:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "6478:6:3"}, "scope": 1669, "src": "6376:272:3", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1119, "nodeType": "Block", "src": "7179:271:3", "statements": [{"condition": {"id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "7193:39:3", "subExpression": {"arguments": [{"id": 1094, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "7208:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1095, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "7215:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1096, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "7224:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1093, "name": "_isAuthorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1083, "src": "7194:13:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) view returns (bool)"}}, "id": 1097, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7194:38:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1118, "nodeType": "IfStatement", "src": "7189:255:3", "trueBody": {"id": 1117, "nodeType": "Block", "src": "7234:210:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1104, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1099, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "7252:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1102, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7269:1:3", "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": 1101, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7261:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1100, "name": "address", "nodeType": "ElementaryTypeName", "src": "7261:7:3", "typeDescriptions": {}}}, "id": 1103, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7261:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "7252:19:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1115, "nodeType": "Block", "src": "7350:84:3", "statements": [{"errorCall": {"arguments": [{"id": 1111, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1088, "src": "7402:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1112, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "7411:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1110, "name": "ERC721InsufficientApproval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1778, "src": "7375:26:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) pure"}}, "id": 1113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7375:44:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1114, "nodeType": "RevertStatement", "src": "7368:51:3"}]}, "id": 1116, "nodeType": "IfStatement", "src": "7248:186:3", "trueBody": {"id": 1109, "nodeType": "Block", "src": "7273:71:3", "statements": [{"errorCall": {"arguments": [{"id": 1106, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1090, "src": "7321:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1105, "name": "ERC721NonexistentToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1752, "src": "7298:22:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure"}}, "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7298:31:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1108, "nodeType": "RevertStatement", "src": "7291:38:3"}]}}]}}]}, "documentation": {"id": 1084, "nodeType": "StructuredDocumentation", "src": "6654:423:3", "text": " @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if `spender` does not have approval from the provided `owner` for the given token or for all its assets\n the `spender` for the specific `tokenId`.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."}, "id": 1120, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkAuthorized", "nameLocation": "7091:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1091, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1086, "mutability": "mutable", "name": "owner", "nameLocation": "7116:5:3", "nodeType": "VariableDeclaration", "scope": 1120, "src": "7108:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1085, "name": "address", "nodeType": "ElementaryTypeName", "src": "7108:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1088, "mutability": "mutable", "name": "spender", "nameLocation": "7131:7:3", "nodeType": "VariableDeclaration", "scope": 1120, "src": "7123:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1087, "name": "address", "nodeType": "ElementaryTypeName", "src": "7123:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1090, "mutability": "mutable", "name": "tokenId", "nameLocation": "7148:7:3", "nodeType": "VariableDeclaration", "scope": 1120, "src": "7140:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1089, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7140:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "7107:49:3"}, "returnParameters": {"id": 1092, "nodeType": "ParameterList", "parameters": [], "src": "7179:0:3"}, "scope": 1669, "src": "7082:368:3", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1135, "nodeType": "Block", "src": "8167:78:3", "statements": [{"id": 1134, "nodeType": "UncheckedBlock", "src": "8177:62:3", "statements": [{"expression": {"id": 1132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1128, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 703, "src": "8201:9:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 1130, "indexExpression": {"id": 1129, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1123, "src": "8211:7:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8201:18:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 1131, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1125, "src": "8223:5:3", "typeDescriptions": {"typeIdentifier": "t_uint128", "typeString": "uint128"}}, "src": "8201:27:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1133, "nodeType": "ExpressionStatement", "src": "8201:27:3"}]}]}, "documentation": {"id": 1121, "nodeType": "StructuredDocumentation", "src": "7456:631:3", "text": " @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."}, "id": 1136, "implemented": true, "kind": "function", "modifiers": [], "name": "_increaseBalance", "nameLocation": "8101:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1126, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1123, "mutability": "mutable", "name": "account", "nameLocation": "8126:7:3", "nodeType": "VariableDeclaration", "scope": 1136, "src": "8118:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1122, "name": "address", "nodeType": "ElementaryTypeName", "src": "8118:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1125, "mutability": "mutable", "name": "value", "nameLocation": "8143:5:3", "nodeType": "VariableDeclaration", "scope": 1136, "src": "8135:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint128", "typeString": "uint128"}, "typeName": {"id": 1124, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "8135:7:3", "typeDescriptions": {"typeIdentifier": "t_uint128", "typeString": "uint128"}}, "visibility": "internal"}], "src": "8117:32:3"}, "returnParameters": {"id": 1127, "nodeType": "ParameterList", "parameters": [], "src": "8167:0:3"}, "scope": 1669, "src": "8092:153:3", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1225, "nodeType": "Block", "src": "8933:700:3", "statements": [{"assignments": [1149], "declarations": [{"constant": false, "id": 1149, "mutability": "mutable", "name": "from", "nameLocation": "8951:4:3", "nodeType": "VariableDeclaration", "scope": 1225, "src": "8943:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1148, "name": "address", "nodeType": "ElementaryTypeName", "src": "8943:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1153, "initialValue": {"arguments": [{"id": 1151, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "8967:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1150, "name": "_ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "8958:8:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1152, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8958:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "8943:32:3"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1154, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1143, "src": "9035:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1157, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9051:1:3", "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": 1156, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9043:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1155, "name": "address", "nodeType": "ElementaryTypeName", "src": "9043:7:3", "typeDescriptions": {}}}, "id": 1158, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9043:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9035:18:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1167, "nodeType": "IfStatement", "src": "9031:86:3", "trueBody": {"id": 1166, "nodeType": "Block", "src": "9055:62:3", "statements": [{"expression": {"arguments": [{"id": 1161, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "9086:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1162, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1143, "src": "9092:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1163, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "9098:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1160, "name": "_checkAuthorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1120, "src": "9069:16:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256) view"}}, "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9069:37:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1165, "nodeType": "ExpressionStatement", "src": "9069:37:3"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1168, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "9161:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1171, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9177:1:3", "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": 1170, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9169:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1169, "name": "address", "nodeType": "ElementaryTypeName", "src": "9169:7:3", "typeDescriptions": {}}}, "id": 1172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9169:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9161:18:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1195, "nodeType": "IfStatement", "src": "9157:256:3", "trueBody": {"id": 1194, "nodeType": "Block", "src": "9181:232:3", "statements": [{"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1177, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9294:1:3", "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": 1176, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9286:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1175, "name": "address", "nodeType": "ElementaryTypeName", "src": "9286:7:3", "typeDescriptions": {}}}, "id": 1178, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9286:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1179, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "9298:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [{"hexValue": "30", "id": 1182, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9315:1:3", "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": 1181, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9307:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1180, "name": "address", "nodeType": "ElementaryTypeName", "src": "9307:7:3", "typeDescriptions": {}}}, "id": 1183, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9307:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"hexValue": "66616c7365", "id": 1184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "9319:5:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1174, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [1472, 1538], "referencedDeclaration": 1538, "src": "9277:8:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,uint256,address,bool)"}}, "id": 1185, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9277:48:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1186, "nodeType": "ExpressionStatement", "src": "9277:48:3"}, {"id": 1193, "nodeType": "UncheckedBlock", "src": "9340:63:3", "statements": [{"expression": {"id": 1191, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1187, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 703, "src": "9368:9:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 1189, "indexExpression": {"id": 1188, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "9378:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9368:15:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"hexValue": "31", "id": 1190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9387:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9368:20:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1192, "nodeType": "ExpressionStatement", "src": "9368:20:3"}]}]}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1196, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1139, "src": "9427:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9441:1:3", "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": 1198, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9433:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1197, "name": "address", "nodeType": "ElementaryTypeName", "src": "9433:7:3", "typeDescriptions": {}}}, "id": 1200, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9433:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9427:16:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1210, "nodeType": "IfStatement", "src": "9423:107:3", "trueBody": {"id": 1209, "nodeType": "Block", "src": "9445:85:3", "statements": [{"id": 1208, "nodeType": "UncheckedBlock", "src": "9459:61:3", "statements": [{"expression": {"id": 1206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1202, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 703, "src": "9487:9:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)"}}, "id": 1204, "indexExpression": {"id": 1203, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1139, "src": "9497:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9487:13:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1205, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9504:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9487:18:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1207, "nodeType": "ExpressionStatement", "src": "9487:18:3"}]}]}}, {"expression": {"id": 1215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1211, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "9540:7:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1213, "indexExpression": {"id": 1212, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "9548:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9540:16:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1214, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1139, "src": "9559:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "9540:21:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1216, "nodeType": "ExpressionStatement", "src": "9540:21:3"}, {"eventCall": {"arguments": [{"id": 1218, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "9586:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1219, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1139, "src": "9592:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1220, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1141, "src": "9596:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1217, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1852, "src": "9577:8:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1221, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9577:27:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1222, "nodeType": "EmitStatement", "src": "9572:32:3"}, {"expression": {"id": 1223, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "9622:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 1147, "id": 1224, "nodeType": "Return", "src": "9615:11:3"}]}, "documentation": {"id": 1137, "nodeType": "StructuredDocumentation", "src": "8251:582:3", "text": " @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."}, "id": 1226, "implemented": true, "kind": "function", "modifiers": [], "name": "_update", "nameLocation": "8847:7:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1144, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1139, "mutability": "mutable", "name": "to", "nameLocation": "8863:2:3", "nodeType": "VariableDeclaration", "scope": 1226, "src": "8855:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1138, "name": "address", "nodeType": "ElementaryTypeName", "src": "8855:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1141, "mutability": "mutable", "name": "tokenId", "nameLocation": "8875:7:3", "nodeType": "VariableDeclaration", "scope": 1226, "src": "8867:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1140, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8867:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1143, "mutability": "mutable", "name": "auth", "nameLocation": "8892:4:3", "nodeType": "VariableDeclaration", "scope": 1226, "src": "8884:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1142, "name": "address", "nodeType": "ElementaryTypeName", "src": "8884:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "8854:43:3"}, "returnParameters": {"id": 1147, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1146, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1226, "src": "8924:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1145, "name": "address", "nodeType": "ElementaryTypeName", "src": "8924:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "8923:9:3"}, "scope": 1669, "src": "8838:795:3", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1275, "nodeType": "Block", "src": "10008:274:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1239, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1234, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1229, "src": "10022:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1237, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10036:1:3", "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": 1236, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10028:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1235, "name": "address", "nodeType": "ElementaryTypeName", "src": "10028:7:3", "typeDescriptions": {}}}, "id": 1238, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10028:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10022:16:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1248, "nodeType": "IfStatement", "src": "10018:87:3", "trueBody": {"id": 1247, "nodeType": "Block", "src": "10040:65:3", "statements": [{"errorCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10091:1:3", "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": 1242, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10083:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1241, "name": "address", "nodeType": "ElementaryTypeName", "src": "10083:7:3", "typeDescriptions": {}}}, "id": 1244, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10083:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1240, "name": "ERC721InvalidReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1771, "src": "10061:21:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10061:33:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1246, "nodeType": "RevertStatement", "src": "10054:40:3"}]}}, {"assignments": [1250], "declarations": [{"constant": false, "id": 1250, "mutability": "mutable", "name": "previousOwner", "nameLocation": "10122:13:3", "nodeType": "VariableDeclaration", "scope": 1275, "src": "10114:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1249, "name": "address", "nodeType": "ElementaryTypeName", "src": "10114:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1259, "initialValue": {"arguments": [{"id": 1252, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1229, "src": "10146:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1253, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1231, "src": "10150:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [{"hexValue": "30", "id": 1256, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10167:1:3", "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": 1255, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10159:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1254, "name": "address", "nodeType": "ElementaryTypeName", "src": "10159:7:3", "typeDescriptions": {}}}, "id": 1257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10159:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1251, "name": "_update", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1226, "src": "10138:7:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", "typeString": "function (address,uint256,address) returns (address)"}}, "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10138:32:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "10114:56:3"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1260, "name": "previousOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1250, "src": "10184:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10209:1:3", "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": 1262, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10201:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1261, "name": "address", "nodeType": "ElementaryTypeName", "src": "10201:7:3", "typeDescriptions": {}}}, "id": 1264, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10201:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "10184:27:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1274, "nodeType": "IfStatement", "src": "10180:96:3", "trueBody": {"id": 1273, "nodeType": "Block", "src": "10213:63:3", "statements": [{"errorCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1269, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10262:1:3", "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": 1268, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10254:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1267, "name": "address", "nodeType": "ElementaryTypeName", "src": "10254:7:3", "typeDescriptions": {}}}, "id": 1270, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10254:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1266, "name": "ERC721InvalidSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1766, "src": "10234:19:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 1271, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10234:31:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1272, "nodeType": "RevertStatement", "src": "10227:38:3"}]}}]}, "documentation": {"id": 1227, "nodeType": "StructuredDocumentation", "src": "9639:311:3", "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."}, "id": 1276, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nameLocation": "9964:5:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1232, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1229, "mutability": "mutable", "name": "to", "nameLocation": "9978:2:3", "nodeType": "VariableDeclaration", "scope": 1276, "src": "9970:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1228, "name": "address", "nodeType": "ElementaryTypeName", "src": "9970:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1231, "mutability": "mutable", "name": "tokenId", "nameLocation": "9990:7:3", "nodeType": "VariableDeclaration", "scope": 1276, "src": "9982:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1230, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9982:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "9969:29:3"}, "returnParameters": {"id": 1233, "nodeType": "ParameterList", "parameters": [], "src": "10008:0:3"}, "scope": 1669, "src": "9955:327:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1290, "nodeType": "Block", "src": "10690:43:3", "statements": [{"expression": {"arguments": [{"id": 1285, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1279, "src": "10710:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1286, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1281, "src": "10714:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "", "id": 1287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10723:2:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "id": 1284, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [1291, 1317], "referencedDeclaration": 1317, "src": "10700:9:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,uint256,bytes memory)"}}, "id": 1288, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10700:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1289, "nodeType": "ExpressionStatement", "src": "10700:26:3"}]}, "documentation": {"id": 1277, "nodeType": "StructuredDocumentation", "src": "10288:340:3", "text": " @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "id": 1291, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "10642:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1282, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1279, "mutability": "mutable", "name": "to", "nameLocation": "10660:2:3", "nodeType": "VariableDeclaration", "scope": 1291, "src": "10652:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1278, "name": "address", "nodeType": "ElementaryTypeName", "src": "10652:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1281, "mutability": "mutable", "name": "tokenId", "nameLocation": "10672:7:3", "nodeType": "VariableDeclaration", "scope": 1291, "src": "10664:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1280, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10664:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10651:29:3"}, "returnParameters": {"id": 1283, "nodeType": "ParameterList", "parameters": [], "src": "10690:0:3"}, "scope": 1669, "src": "10633:100:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1316, "nodeType": "Block", "src": "11038:98:3", "statements": [{"expression": {"arguments": [{"id": 1302, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1294, "src": "11054:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1303, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1296, "src": "11058:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1301, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1276, "src": "11048:5:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11048:18:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1305, "nodeType": "ExpressionStatement", "src": "11048:18:3"}, {"expression": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1309, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11107:1:3", "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": 1308, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11099:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1307, "name": "address", "nodeType": "ElementaryTypeName", "src": "11099:7:3", "typeDescriptions": {}}}, "id": 1310, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11099:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1311, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1294, "src": "11111:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1312, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1296, "src": "11115:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1313, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1298, "src": "11124:4:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1306, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1668, "src": "11076:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 1314, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11076:53:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1315, "nodeType": "ExpressionStatement", "src": "11076:53:3"}]}, "documentation": {"id": 1292, "nodeType": "StructuredDocumentation", "src": "10739:210:3", "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."}, "id": 1317, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "10963:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1299, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1294, "mutability": "mutable", "name": "to", "nameLocation": "10981:2:3", "nodeType": "VariableDeclaration", "scope": 1317, "src": "10973:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1293, "name": "address", "nodeType": "ElementaryTypeName", "src": "10973:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1296, "mutability": "mutable", "name": "tokenId", "nameLocation": "10993:7:3", "nodeType": "VariableDeclaration", "scope": 1317, "src": "10985:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1295, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10985:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1298, "mutability": "mutable", "name": "data", "nameLocation": "11015:4:3", "nodeType": "VariableDeclaration", "scope": 1317, "src": "11002:17:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1297, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "11002:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "10972:48:3"}, "returnParameters": {"id": 1300, "nodeType": "ParameterList", "parameters": [], "src": "11038:0:3"}, "scope": 1669, "src": "10954:182:3", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1349, "nodeType": "Block", "src": "11503:186:3", "statements": [{"assignments": [1324], "declarations": [{"constant": false, "id": 1324, "mutability": "mutable", "name": "previousOwner", "nameLocation": "11521:13:3", "nodeType": "VariableDeclaration", "scope": 1349, "src": "11513:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1323, "name": "address", "nodeType": "ElementaryTypeName", "src": "11513:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1336, "initialValue": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1328, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11553:1:3", "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": 1327, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11545:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1326, "name": "address", "nodeType": "ElementaryTypeName", "src": "11545:7:3", "typeDescriptions": {}}}, "id": 1329, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11545:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1330, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1320, "src": "11557:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [{"hexValue": "30", "id": 1333, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11574:1:3", "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": 1332, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11566:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1331, "name": "address", "nodeType": "ElementaryTypeName", "src": "11566:7:3", "typeDescriptions": {}}}, "id": 1334, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11566:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1325, "name": "_update", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1226, "src": "11537:7:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", "typeString": "function (address,uint256,address) returns (address)"}}, "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11537:40:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "11513:64:3"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1337, "name": "previousOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1324, "src": "11591:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1340, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11616:1:3", "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": 1339, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11608:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1338, "name": "address", "nodeType": "ElementaryTypeName", "src": "11608:7:3", "typeDescriptions": {}}}, "id": 1341, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11608:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "11591:27:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1348, "nodeType": "IfStatement", "src": "11587:96:3", "trueBody": {"id": 1347, "nodeType": "Block", "src": "11620:63:3", "statements": [{"errorCall": {"arguments": [{"id": 1344, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1320, "src": "11664:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1343, "name": "ERC721NonexistentToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1752, "src": "11641:22:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure"}}, "id": 1345, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11641:31:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1346, "nodeType": "RevertStatement", "src": "11634:38:3"}]}}]}, "documentation": {"id": 1318, "nodeType": "StructuredDocumentation", "src": "11142:315:3", "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."}, "id": 1350, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "11471:5:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1321, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1320, "mutability": "mutable", "name": "tokenId", "nameLocation": "11485:7:3", "nodeType": "VariableDeclaration", "scope": 1350, "src": "11477:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1319, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11477:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "11476:17:3"}, "returnParameters": {"id": 1322, "nodeType": "ParameterList", "parameters": [], "src": "11503:0:3"}, "scope": 1669, "src": "11462:227:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1409, "nodeType": "Block", "src": "12084:389:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1365, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1360, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1355, "src": "12098:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1363, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12112:1:3", "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": 1362, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "12104:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1361, "name": "address", "nodeType": "ElementaryTypeName", "src": "12104:7:3", "typeDescriptions": {}}}, "id": 1364, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12104:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "12098:16:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1374, "nodeType": "IfStatement", "src": "12094:87:3", "trueBody": {"id": 1373, "nodeType": "Block", "src": "12116:65:3", "statements": [{"errorCall": {"arguments": [{"arguments": [{"hexValue": "30", "id": 1369, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12167:1:3", "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": 1368, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "12159:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1367, "name": "address", "nodeType": "ElementaryTypeName", "src": "12159:7:3", "typeDescriptions": {}}}, "id": 1370, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12159:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1366, "name": "ERC721InvalidReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1771, "src": "12137:21:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 1371, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12137:33:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1372, "nodeType": "RevertStatement", "src": "12130:40:3"}]}}, {"assignments": [1376], "declarations": [{"constant": false, "id": 1376, "mutability": "mutable", "name": "previousOwner", "nameLocation": "12198:13:3", "nodeType": "VariableDeclaration", "scope": 1409, "src": "12190:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1375, "name": "address", "nodeType": "ElementaryTypeName", "src": "12190:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1385, "initialValue": {"arguments": [{"id": 1378, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1355, "src": "12222:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1379, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1357, "src": "12226:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"arguments": [{"hexValue": "30", "id": 1382, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12243:1:3", "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": 1381, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "12235:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1380, "name": "address", "nodeType": "ElementaryTypeName", "src": "12235:7:3", "typeDescriptions": {}}}, "id": 1383, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12235:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1377, "name": "_update", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1226, "src": "12214:7:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", "typeString": "function (address,uint256,address) returns (address)"}}, "id": 1384, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12214:32:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "12190:56:3"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1386, "name": "previousOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1376, "src": "12260:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1389, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12285:1:3", "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": 1388, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "12277:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1387, "name": "address", "nodeType": "ElementaryTypeName", "src": "12277:7:3", "typeDescriptions": {}}}, "id": 1390, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12277:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "12260:27:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1399, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1397, "name": "previousOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1376, "src": "12362:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 1398, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1353, "src": "12379:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "12362:21:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1407, "nodeType": "IfStatement", "src": "12358:109:3", "trueBody": {"id": 1406, "nodeType": "Block", "src": "12385:82:3", "statements": [{"errorCall": {"arguments": [{"id": 1401, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1353, "src": "12427:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1402, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1357, "src": "12433:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1403, "name": "previousOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1376, "src": "12442:13:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1400, "name": "ERC721IncorrectOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1761, "src": "12406:20:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (address,uint256,address) pure"}}, "id": 1404, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12406:50:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1405, "nodeType": "RevertStatement", "src": "12399:57:3"}]}}, "id": 1408, "nodeType": "IfStatement", "src": "12256:211:3", "trueBody": {"id": 1396, "nodeType": "Block", "src": "12289:63:3", "statements": [{"errorCall": {"arguments": [{"id": 1393, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1357, "src": "12333:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1392, "name": "ERC721NonexistentToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1752, "src": "12310:22:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure"}}, "id": 1394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12310:31:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1395, "nodeType": "RevertStatement", "src": "12303:38:3"}]}}]}, "documentation": {"id": 1351, "nodeType": "StructuredDocumentation", "src": "11695:313:3", "text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."}, "id": 1410, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nameLocation": "12022:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1358, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1353, "mutability": "mutable", "name": "from", "nameLocation": "12040:4:3", "nodeType": "VariableDeclaration", "scope": 1410, "src": "12032:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1352, "name": "address", "nodeType": "ElementaryTypeName", "src": "12032:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1355, "mutability": "mutable", "name": "to", "nameLocation": "12054:2:3", "nodeType": "VariableDeclaration", "scope": 1410, "src": "12046:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1354, "name": "address", "nodeType": "ElementaryTypeName", "src": "12046:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1357, "mutability": "mutable", "name": "tokenId", "nameLocation": "12066:7:3", "nodeType": "VariableDeclaration", "scope": 1410, "src": "12058:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1356, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12058:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "12031:43:3"}, "returnParameters": {"id": 1359, "nodeType": "ParameterList", "parameters": [], "src": "12084:0:3"}, "scope": 1669, "src": "12013:460:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1427, "nodeType": "Block", "src": "13481:53:3", "statements": [{"expression": {"arguments": [{"id": 1421, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1413, "src": "13505:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1422, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1415, "src": "13511:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1423, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1417, "src": "13515:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"hexValue": "", "id": 1424, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "13524:2:3", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}], "id": 1420, "name": "_safeTransfer", "nodeType": "Identifier", "overloadedDeclarations": [1428, 1454], "referencedDeclaration": 1454, "src": "13491:13:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 1425, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13491:36:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1426, "nodeType": "ExpressionStatement", "src": "13491:36:3"}]}, "documentation": {"id": 1411, "nodeType": "StructuredDocumentation", "src": "12479:922:3", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."}, "id": 1428, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeTransfer", "nameLocation": "13415:13:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1418, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1413, "mutability": "mutable", "name": "from", "nameLocation": "13437:4:3", "nodeType": "VariableDeclaration", "scope": 1428, "src": "13429:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1412, "name": "address", "nodeType": "ElementaryTypeName", "src": "13429:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1415, "mutability": "mutable", "name": "to", "nameLocation": "13451:2:3", "nodeType": "VariableDeclaration", "scope": 1428, "src": "13443:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1414, "name": "address", "nodeType": "ElementaryTypeName", "src": "13443:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1417, "mutability": "mutable", "name": "tokenId", "nameLocation": "13463:7:3", "nodeType": "VariableDeclaration", "scope": 1428, "src": "13455:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1416, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13455:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "13428:43:3"}, "returnParameters": {"id": 1419, "nodeType": "ParameterList", "parameters": [], "src": "13481:0:3"}, "scope": 1669, "src": "13406:128:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1453, "nodeType": "Block", "src": "13873:102:3", "statements": [{"expression": {"arguments": [{"id": 1441, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1431, "src": "13893:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1442, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1433, "src": "13899:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1443, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1435, "src": "13903:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1440, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1410, "src": "13883:9:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1444, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13883:28:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1445, "nodeType": "ExpressionStatement", "src": "13883:28:3"}, {"expression": {"arguments": [{"id": 1447, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1431, "src": "13944:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1448, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1433, "src": "13950:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1449, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1435, "src": "13954:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1450, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1437, "src": "13963:4:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 1446, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1668, "src": "13921:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)"}}, "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13921:47:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1452, "nodeType": "ExpressionStatement", "src": "13921:47:3"}]}, "documentation": {"id": 1429, "nodeType": "StructuredDocumentation", "src": "13540:226:3", "text": " @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."}, "id": 1454, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeTransfer", "nameLocation": "13780:13:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1438, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1431, "mutability": "mutable", "name": "from", "nameLocation": "13802:4:3", "nodeType": "VariableDeclaration", "scope": 1454, "src": "13794:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1430, "name": "address", "nodeType": "ElementaryTypeName", "src": "13794:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1433, "mutability": "mutable", "name": "to", "nameLocation": "13816:2:3", "nodeType": "VariableDeclaration", "scope": 1454, "src": "13808:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1432, "name": "address", "nodeType": "ElementaryTypeName", "src": "13808:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1435, "mutability": "mutable", "name": "tokenId", "nameLocation": "13828:7:3", "nodeType": "VariableDeclaration", "scope": 1454, "src": "13820:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1434, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13820:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1437, "mutability": "mutable", "name": "data", "nameLocation": "13850:4:3", "nodeType": "VariableDeclaration", "scope": 1454, "src": "13837:17:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1436, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "13837:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "13793:62:3"}, "returnParameters": {"id": 1439, "nodeType": "ParameterList", "parameters": [], "src": "13873:0:3"}, "scope": 1669, "src": "13771:204:3", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1471, "nodeType": "Block", "src": "14488:50:3", "statements": [{"expression": {"arguments": [{"id": 1465, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1457, "src": "14507:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1466, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1459, "src": "14511:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1467, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1461, "src": "14520:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"hexValue": "74727565", "id": 1468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "14526:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1464, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [1472, 1538], "referencedDeclaration": 1538, "src": "14498:8:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,uint256,address,bool)"}}, "id": 1469, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14498:33:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1470, "nodeType": "ExpressionStatement", "src": "14498:33:3"}]}, "documentation": {"id": 1455, "nodeType": "StructuredDocumentation", "src": "13981:432:3", "text": " @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."}, "id": 1472, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nameLocation": "14427:8:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1462, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1457, "mutability": "mutable", "name": "to", "nameLocation": "14444:2:3", "nodeType": "VariableDeclaration", "scope": 1472, "src": "14436:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1456, "name": "address", "nodeType": "ElementaryTypeName", "src": "14436:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1459, "mutability": "mutable", "name": "tokenId", "nameLocation": "14456:7:3", "nodeType": "VariableDeclaration", "scope": 1472, "src": "14448:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1458, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14448:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1461, "mutability": "mutable", "name": "auth", "nameLocation": "14473:4:3", "nodeType": "VariableDeclaration", "scope": 1472, "src": "14465:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1460, "name": "address", "nodeType": "ElementaryTypeName", "src": "14465:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "14435:43:3"}, "returnParameters": {"id": 1463, "nodeType": "ParameterList", "parameters": [], "src": "14488:0:3"}, "scope": 1669, "src": "14418:120:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1537, "nodeType": "Block", "src": "14814:568:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1484, "name": "emitEvent", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1481, "src": "14880:9:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1485, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1479, "src": "14893:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1488, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14909:1:3", "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": 1487, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "14901:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1486, "name": "address", "nodeType": "ElementaryTypeName", "src": "14901:7:3", "typeDescriptions": {}}}, "id": 1489, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14901:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "14893:18:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "14880:31:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1530, "nodeType": "IfStatement", "src": "14876:460:3", "trueBody": {"id": 1529, "nodeType": "Block", "src": "14913:423:3", "statements": [{"assignments": [1493], "declarations": [{"constant": false, "id": 1493, "mutability": "mutable", "name": "owner", "nameLocation": "14935:5:3", "nodeType": "VariableDeclaration", "scope": 1529, "src": "14927:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1492, "name": "address", "nodeType": "ElementaryTypeName", "src": "14927:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1497, "initialValue": {"arguments": [{"id": 1495, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1477, "src": "14957:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1494, "name": "_requireOwned", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1604, "src": "14943:13:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1496, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14943:22:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "14927:38:3"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 1507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1498, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1479, "src": "15093:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1501, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15109:1:3", "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": 1500, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "15101:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1499, "name": "address", "nodeType": "ElementaryTypeName", "src": "15101:7:3", "typeDescriptions": {}}}, "id": 1502, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15101:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "15093:18:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1506, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1504, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, "src": "15115:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 1505, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1479, "src": "15124:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "15115:13:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "15093:35:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"id": 1512, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "15132:30:3", "subExpression": {"arguments": [{"id": 1509, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, "src": "15150:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1510, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1479, "src": "15157:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 1508, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "15133:16:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)"}}, "id": 1511, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15133:29:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "15093:69:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1519, "nodeType": "IfStatement", "src": "15089:142:3", "trueBody": {"id": 1518, "nodeType": "Block", "src": "15164:67:3", "statements": [{"errorCall": {"arguments": [{"id": 1515, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1479, "src": "15211:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1514, "name": "ERC721InvalidApprover", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1783, "src": "15189:21:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 1516, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15189:27:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1517, "nodeType": "RevertStatement", "src": "15182:34:3"}]}}, {"condition": {"id": 1520, "name": "emitEvent", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1481, "src": "15249:9:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1528, "nodeType": "IfStatement", "src": "15245:81:3", "trueBody": {"id": 1527, "nodeType": "Block", "src": "15260:66:3", "statements": [{"eventCall": {"arguments": [{"id": 1522, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1493, "src": "15292:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1523, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1475, "src": "15299:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1524, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1477, "src": "15303:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1521, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1861, "src": "15283:8:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 1525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15283:28:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1526, "nodeType": "EmitStatement", "src": "15278:33:3"}]}}]}}, {"expression": {"id": 1535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 1531, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 707, "src": "15346:15:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)"}}, "id": 1533, "indexExpression": {"id": 1532, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1477, "src": "15362:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "15346:24:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1534, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1475, "src": "15373:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "15346:29:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1536, "nodeType": "ExpressionStatement", "src": "15346:29:3"}]}, "documentation": {"id": 1473, "nodeType": "StructuredDocumentation", "src": "14544:171:3", "text": " @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."}, "id": 1538, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nameLocation": "14729:8:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1482, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1475, "mutability": "mutable", "name": "to", "nameLocation": "14746:2:3", "nodeType": "VariableDeclaration", "scope": 1538, "src": "14738:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1474, "name": "address", "nodeType": "ElementaryTypeName", "src": "14738:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1477, "mutability": "mutable", "name": "tokenId", "nameLocation": "14758:7:3", "nodeType": "VariableDeclaration", "scope": 1538, "src": "14750:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1476, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14750:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1479, "mutability": "mutable", "name": "auth", "nameLocation": "14775:4:3", "nodeType": "VariableDeclaration", "scope": 1538, "src": "14767:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1478, "name": "address", "nodeType": "ElementaryTypeName", "src": "14767:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1481, "mutability": "mutable", "name": "emitEvent", "nameLocation": "14786:9:3", "nodeType": "VariableDeclaration", "scope": 1538, "src": "14781:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1480, "name": "bool", "nodeType": "ElementaryTypeName", "src": "14781:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "14737:59:3"}, "returnParameters": {"id": 1483, "nodeType": "ParameterList", "parameters": [], "src": "14814:0:3"}, "scope": 1669, "src": "14720:662:3", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1574, "nodeType": "Block", "src": "15684:219:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1548, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1543, "src": "15698:8:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1551, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15718:1:3", "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": 1550, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "15710:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1549, "name": "address", "nodeType": "ElementaryTypeName", "src": "15710:7:3", "typeDescriptions": {}}}, "id": 1552, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15710:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "15698:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1559, "nodeType": "IfStatement", "src": "15694:91:3", "trueBody": {"id": 1558, "nodeType": "Block", "src": "15722:63:3", "statements": [{"errorCall": {"arguments": [{"id": 1555, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1543, "src": "15765:8:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1554, "name": "ERC721InvalidOperator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1788, "src": "15743:21:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 1556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15743:31:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1557, "nodeType": "RevertStatement", "src": "15736:38:3"}]}}, {"expression": {"id": 1566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"baseExpression": {"id": 1560, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 713, "src": "15794:18:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))"}}, "id": 1563, "indexExpression": {"id": 1561, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1541, "src": "15813:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15794:25:3", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)"}}, "id": 1564, "indexExpression": {"id": 1562, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1543, "src": "15820:8:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "15794:35:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 1565, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1545, "src": "15832:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "15794:46:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1567, "nodeType": "ExpressionStatement", "src": "15794:46:3"}, {"eventCall": {"arguments": [{"id": 1569, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1541, "src": "15870:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1570, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1543, "src": "15877:8:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1571, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1545, "src": "15887:8:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 1568, "name": "ApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1870, "src": "15855:14:3", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)"}}, "id": 1572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15855:41:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1573, "nodeType": "EmitStatement", "src": "15850:46:3"}]}, "documentation": {"id": 1539, "nodeType": "StructuredDocumentation", "src": "15388:198:3", "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."}, "id": 1575, "implemented": true, "kind": "function", "modifiers": [], "name": "_setApprovalForAll", "nameLocation": "15600:18:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1546, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1541, "mutability": "mutable", "name": "owner", "nameLocation": "15627:5:3", "nodeType": "VariableDeclaration", "scope": 1575, "src": "15619:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1540, "name": "address", "nodeType": "ElementaryTypeName", "src": "15619:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1543, "mutability": "mutable", "name": "operator", "nameLocation": "15642:8:3", "nodeType": "VariableDeclaration", "scope": 1575, "src": "15634:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1542, "name": "address", "nodeType": "ElementaryTypeName", "src": "15634:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1545, "mutability": "mutable", "name": "approved", "nameLocation": "15657:8:3", "nodeType": "VariableDeclaration", "scope": 1575, "src": "15652:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1544, "name": "bool", "nodeType": "ElementaryTypeName", "src": "15652:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "15618:48:3"}, "returnParameters": {"id": 1547, "nodeType": "ParameterList", "parameters": [], "src": "15684:0:3"}, "scope": 1669, "src": "15591:312:3", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal"}, {"body": {"id": 1603, "nodeType": "Block", "src": "16210:169:3", "statements": [{"assignments": [1584], "declarations": [{"constant": false, "id": 1584, "mutability": "mutable", "name": "owner", "nameLocation": "16228:5:3", "nodeType": "VariableDeclaration", "scope": 1603, "src": "16220:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1583, "name": "address", "nodeType": "ElementaryTypeName", "src": "16220:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "id": 1588, "initialValue": {"arguments": [{"id": 1586, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "16245:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1585, "name": "_ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "16236:8:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 1587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "16236:17:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "VariableDeclarationStatement", "src": "16220:33:3"}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1589, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1584, "src": "16267:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 1592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "16284:1:3", "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": 1591, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "16276:7:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 1590, "name": "address", "nodeType": "ElementaryTypeName", "src": "16276:7:3", "typeDescriptions": {}}}, "id": 1593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "16276:10:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "16267:19:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1600, "nodeType": "IfStatement", "src": "16263:88:3", "trueBody": {"id": 1599, "nodeType": "Block", "src": "16288:63:3", "statements": [{"errorCall": {"arguments": [{"id": 1596, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "16332:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 1595, "name": "ERC721NonexistentToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1752, "src": "16309:22:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure"}}, "id": 1597, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "16309:31:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1598, "nodeType": "RevertStatement", "src": "16302:38:3"}]}}, {"expression": {"id": 1601, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1584, "src": "16367:5:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 1582, "id": 1602, "nodeType": "Return", "src": "16360:12:3"}]}, "documentation": {"id": 1576, "nodeType": "StructuredDocumentation", "src": "15909:224:3", "text": " @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."}, "id": 1604, "implemented": true, "kind": "function", "modifiers": [], "name": "_requireOwned", "nameLocation": "16147:13:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1579, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1578, "mutability": "mutable", "name": "tokenId", "nameLocation": "16169:7:3", "nodeType": "VariableDeclaration", "scope": 1604, "src": "16161:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1577, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16161:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "16160:17:3"}, "returnParameters": {"id": 1582, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1581, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1604, "src": "16201:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1580, "name": "address", "nodeType": "ElementaryTypeName", "src": "16201:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "16200:9:3"}, "scope": 1669, "src": "16138:241:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1667, "nodeType": "Block", "src": "17020:680:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"expression": {"id": 1616, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1609, "src": "17034:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 1617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "17037:4:3", "memberName": "code", "nodeType": "MemberAccess", "src": "17034:7:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 1618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "17042:6:3", "memberName": "length", "nodeType": "MemberAccess", "src": "17034:14:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1619, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17051:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "17034:18:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1666, "nodeType": "IfStatement", "src": "17030:664:3", "trueBody": {"id": 1665, "nodeType": "Block", "src": "17054:640:3", "statements": [{"clauses": [{"block": {"id": 1645, "nodeType": "Block", "src": "17168:162:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 1638, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1634, "name": "retval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1632, "src": "17190:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"expression": {"expression": {"id": 1635, "name": "IERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1971, "src": "17200:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1971_$", "typeString": "type(contract IERC721Receiver)"}}, "id": 1636, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "17216:16:3", "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1970, "src": "17200:32:3", "typeDescriptions": {"typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", "typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}}, "id": 1637, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "17233:8:3", "memberName": "selector", "nodeType": "MemberAccess", "src": "17200:41:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "17190:51:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 1644, "nodeType": "IfStatement", "src": "17186:130:3", "trueBody": {"id": 1643, "nodeType": "Block", "src": "17243:73:3", "statements": [{"errorCall": {"arguments": [{"id": 1640, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1609, "src": "17294:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1639, "name": "ERC721InvalidReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1771, "src": "17272:21:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 1641, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17272:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1642, "nodeType": "RevertStatement", "src": "17265:32:3"}]}}]}, "errorName": "", "id": 1646, "nodeType": "TryCatchClause", "parameters": {"id": 1633, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1632, "mutability": "mutable", "name": "retval", "nameLocation": "17160:6:3", "nodeType": "VariableDeclaration", "scope": 1646, "src": "17153:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 1631, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "17153:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "17152:15:3"}, "src": "17144:186:3"}, {"block": {"id": 1662, "nodeType": "Block", "src": "17359:325:3", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1653, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 1650, "name": "reason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1648, "src": "17381:6:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 1651, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "17388:6:3", "memberName": "length", "nodeType": "MemberAccess", "src": "17381:13:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 1652, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "17398:1:3", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "17381:18:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"id": 1660, "nodeType": "Block", "src": "17480:190:3", "statements": [{"AST": {"nativeSrc": "17566:86:3", "nodeType": "YulBlock", "src": "17566:86:3", "statements": [{"expression": {"arguments": [{"arguments": [{"kind": "number", "nativeSrc": "17603:2:3", "nodeType": "YulLiteral", "src": "17603:2:3", "type": "", "value": "32"}, {"name": "reason", "nativeSrc": "17607:6:3", "nodeType": "YulIdentifier", "src": "17607:6:3"}], "functionName": {"name": "add", "nativeSrc": "17599:3:3", "nodeType": "YulIdentifier", "src": "17599:3:3"}, "nativeSrc": "17599:15:3", "nodeType": "YulFunctionCall", "src": "17599:15:3"}, {"arguments": [{"name": "reason", "nativeSrc": "17622:6:3", "nodeType": "YulIdentifier", "src": "17622:6:3"}], "functionName": {"name": "mload", "nativeSrc": "17616:5:3", "nodeType": "YulIdentifier", "src": "17616:5:3"}, "nativeSrc": "17616:13:3", "nodeType": "YulFunctionCall", "src": "17616:13:3"}], "functionName": {"name": "revert", "nativeSrc": "17592:6:3", "nodeType": "YulIdentifier", "src": "17592:6:3"}, "nativeSrc": "17592:38:3", "nodeType": "YulFunctionCall", "src": "17592:38:3"}, "nativeSrc": "17592:38:3", "nodeType": "YulExpressionStatement", "src": "17592:38:3"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "shanghai", "externalReferences": [{"declaration": 1648, "isOffset": false, "isSlot": false, "src": "17607:6:3", "valueSize": 1}, {"declaration": 1648, "isOffset": false, "isSlot": false, "src": "17622:6:3", "valueSize": 1}], "id": 1659, "nodeType": "InlineAssembly", "src": "17557:95:3"}]}, "id": 1661, "nodeType": "IfStatement", "src": "17377:293:3", "trueBody": {"id": 1658, "nodeType": "Block", "src": "17401:73:3", "statements": [{"errorCall": {"arguments": [{"id": 1655, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1609, "src": "17452:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1654, "name": "ERC721InvalidReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1771, "src": "17430:21:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure"}}, "id": 1656, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17430:25:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1657, "nodeType": "RevertStatement", "src": "17423:32:3"}]}}]}, "errorName": "", "id": 1663, "nodeType": "TryCatchClause", "parameters": {"id": 1649, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1648, "mutability": "mutable", "name": "reason", "nameLocation": "17351:6:3", "nodeType": "VariableDeclaration", "scope": 1663, "src": "17338:19:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1647, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "17338:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "17337:21:3"}, "src": "17331:353:3"}], "externalCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "id": 1625, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1681, "src": "17109:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)"}}, "id": 1626, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17109:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1627, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1607, "src": "17123:4:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 1628, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1611, "src": "17129:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 1629, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1613, "src": "17138:4:3", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "expression": {"arguments": [{"id": 1622, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1609, "src": "17088:2:3", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 1621, "name": "IERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1971, "src": "17072:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1971_$", "typeString": "type(contract IERC721Receiver)"}}, "id": 1623, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17072:19:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_contract$_IERC721Receiver_$1971", "typeString": "contract IERC721Receiver"}}, "id": 1624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "17092:16:3", "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1970, "src": "17072:36:3", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"}}, "id": 1630, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "17072:71:3", "tryCall": true, "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "id": 1664, "nodeType": "TryStatement", "src": "17068:616:3"}]}}]}, "documentation": {"id": 1605, "nodeType": "StructuredDocumentation", "src": "16385:528:3", "text": " @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target address. This will revert if the\n recipient doesn't accept the token transfer. The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call"}, "id": 1668, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOnERC721Received", "nameLocation": "16927:22:3", "nodeType": "FunctionDefinition", "parameters": {"id": 1614, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1607, "mutability": "mutable", "name": "from", "nameLocation": "16958:4:3", "nodeType": "VariableDeclaration", "scope": 1668, "src": "16950:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1606, "name": "address", "nodeType": "ElementaryTypeName", "src": "16950:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1609, "mutability": "mutable", "name": "to", "nameLocation": "16972:2:3", "nodeType": "VariableDeclaration", "scope": 1668, "src": "16964:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1608, "name": "address", "nodeType": "ElementaryTypeName", "src": "16964:7:3", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1611, "mutability": "mutable", "name": "tokenId", "nameLocation": "16984:7:3", "nodeType": "VariableDeclaration", "scope": 1668, "src": "16976:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1610, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "16976:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1613, "mutability": "mutable", "name": "data", "nameLocation": "17006:4:3", "nodeType": "VariableDeclaration", "scope": 1668, "src": "16993:17:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 1612, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "16993:5:3", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "16949:62:3"}, "returnParameters": {"id": 1615, "nodeType": "ParameterList", "parameters": [], "src": "17020:0:3"}, "scope": 1669, "src": "16918:782:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "private"}], "scope": 1670, "src": "776:16926:3", "usedErrors": [1747, 1752, 1761, 1766, 1771, 1778, 1783, 1788], "usedEvents": [1852, 1861, 1870]}], "src": "107:17596:3"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol", "exportedSymbols": {"IERC165": [2290], "IERC721": [1953]}, "id": 1954, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1838, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "108:24:4"}, {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", "file": "../../utils/introspection/IERC165.sol", "id": 1840, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 1954, "sourceUnit": 2291, "src": "134:62:4", "symbolAliases": [{"foreign": {"id": 1839, "name": "IERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2290, "src": "142:7:4", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1842, "name": "IERC165", "nameLocations": ["287:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 2290, "src": "287:7:4"}, "id": 1843, "nodeType": "InheritanceSpecifier", "src": "287:7:4"}], "canonicalName": "IERC721", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1841, "nodeType": "StructuredDocumentation", "src": "198:67:4", "text": " @dev Required interface of an ERC721 compliant contract."}, "fullyImplemented": false, "id": 1953, "linearizedBaseContracts": [1953, 2290], "name": "IERC721", "nameLocation": "276:7:4", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1844, "nodeType": "StructuredDocumentation", "src": "301:88:4", "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1852, "name": "Transfer", "nameLocation": "400:8:4", "nodeType": "EventDefinition", "parameters": {"id": 1851, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1846, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "425:4:4", "nodeType": "VariableDeclaration", "scope": 1852, "src": "409:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1845, "name": "address", "nodeType": "ElementaryTypeName", "src": "409:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1848, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "447:2:4", "nodeType": "VariableDeclaration", "scope": 1852, "src": "431:18:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1847, "name": "address", "nodeType": "ElementaryTypeName", "src": "431:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1850, "indexed": true, "mutability": "mutable", "name": "tokenId", "nameLocation": "467:7:4", "nodeType": "VariableDeclaration", "scope": 1852, "src": "451:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1849, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "451:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "408:67:4"}, "src": "394:82:4"}, {"anonymous": false, "documentation": {"id": 1853, "nodeType": "StructuredDocumentation", "src": "482:94:4", "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1861, "name": "Approval", "nameLocation": "587:8:4", "nodeType": "EventDefinition", "parameters": {"id": 1860, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1855, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "612:5:4", "nodeType": "VariableDeclaration", "scope": 1861, "src": "596:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1854, "name": "address", "nodeType": "ElementaryTypeName", "src": "596:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1857, "indexed": true, "mutability": "mutable", "name": "approved", "nameLocation": "635:8:4", "nodeType": "VariableDeclaration", "scope": 1861, "src": "619:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1856, "name": "address", "nodeType": "ElementaryTypeName", "src": "619:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1859, "indexed": true, "mutability": "mutable", "name": "tokenId", "nameLocation": "661:7:4", "nodeType": "VariableDeclaration", "scope": 1861, "src": "645:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1858, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "645:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "595:74:4"}, "src": "581:89:4"}, {"anonymous": false, "documentation": {"id": 1862, "nodeType": "StructuredDocumentation", "src": "676:117:4", "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."}, "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", "id": 1870, "name": "ApprovalForAll", "nameLocation": "804:14:4", "nodeType": "EventDefinition", "parameters": {"id": 1869, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1864, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "835:5:4", "nodeType": "VariableDeclaration", "scope": 1870, "src": "819:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1863, "name": "address", "nodeType": "ElementaryTypeName", "src": "819:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1866, "indexed": true, "mutability": "mutable", "name": "operator", "nameLocation": "858:8:4", "nodeType": "VariableDeclaration", "scope": 1870, "src": "842:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1865, "name": "address", "nodeType": "ElementaryTypeName", "src": "842:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1868, "indexed": false, "mutability": "mutable", "name": "approved", "nameLocation": "873:8:4", "nodeType": "VariableDeclaration", "scope": 1870, "src": "868:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1867, "name": "bool", "nodeType": "ElementaryTypeName", "src": "868:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "818:64:4"}, "src": "798:85:4"}, {"documentation": {"id": 1871, "nodeType": "StructuredDocumentation", "src": "889:76:4", "text": " @dev Returns the number of tokens in ``owner``'s account."}, "functionSelector": "70a08231", "id": 1878, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "979:9:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1874, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1873, "mutability": "mutable", "name": "owner", "nameLocation": "997:5:4", "nodeType": "VariableDeclaration", "scope": 1878, "src": "989:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1872, "name": "address", "nodeType": "ElementaryTypeName", "src": "989:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "988:15:4"}, "returnParameters": {"id": 1877, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1876, "mutability": "mutable", "name": "balance", "nameLocation": "1035:7:4", "nodeType": "VariableDeclaration", "scope": 1878, "src": "1027:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1875, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1027:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1026:17:4"}, "scope": 1953, "src": "970:74:4", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1879, "nodeType": "StructuredDocumentation", "src": "1050:131:4", "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."}, "functionSelector": "6352211e", "id": 1886, "implemented": false, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "1195:7:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1882, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1881, "mutability": "mutable", "name": "tokenId", "nameLocation": "1211:7:4", "nodeType": "VariableDeclaration", "scope": 1886, "src": "1203:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1880, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1203:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1202:17:4"}, "returnParameters": {"id": 1885, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1884, "mutability": "mutable", "name": "owner", "nameLocation": "1251:5:4", "nodeType": "VariableDeclaration", "scope": 1886, "src": "1243:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1883, "name": "address", "nodeType": "ElementaryTypeName", "src": "1243:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1242:15:4"}, "scope": 1953, "src": "1186:72:4", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1887, "nodeType": "StructuredDocumentation", "src": "1264:565:4", "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."}, "functionSelector": "b88d4fde", "id": 1898, "implemented": false, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "1843:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1896, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1889, "mutability": "mutable", "name": "from", "nameLocation": "1868:4:4", "nodeType": "VariableDeclaration", "scope": 1898, "src": "1860:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1888, "name": "address", "nodeType": "ElementaryTypeName", "src": "1860:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1891, "mutability": "mutable", "name": "to", "nameLocation": "1882:2:4", "nodeType": "VariableDeclaration", "scope": 1898, "src": "1874:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1890, "name": "address", "nodeType": "ElementaryTypeName", "src": "1874:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1893, "mutability": "mutable", "name": "tokenId", "nameLocation": "1894:7:4", "nodeType": "VariableDeclaration", "scope": 1898, "src": "1886:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1892, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1886:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1895, "mutability": "mutable", "name": "data", "nameLocation": "1918:4:4", "nodeType": "VariableDeclaration", "scope": 1898, "src": "1903:19:4", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1894, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1903:5:4", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "1859:64:4"}, "returnParameters": {"id": 1897, "nodeType": "ParameterList", "parameters": [], "src": "1932:0:4"}, "scope": 1953, "src": "1834:99:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1899, "nodeType": "StructuredDocumentation", "src": "1939:705:4", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event."}, "functionSelector": "42842e0e", "id": 1908, "implemented": false, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "2658:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1906, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1901, "mutability": "mutable", "name": "from", "nameLocation": "2683:4:4", "nodeType": "VariableDeclaration", "scope": 1908, "src": "2675:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1900, "name": "address", "nodeType": "ElementaryTypeName", "src": "2675:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1903, "mutability": "mutable", "name": "to", "nameLocation": "2697:2:4", "nodeType": "VariableDeclaration", "scope": 1908, "src": "2689:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1902, "name": "address", "nodeType": "ElementaryTypeName", "src": "2689:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1905, "mutability": "mutable", "name": "tokenId", "nameLocation": "2709:7:4", "nodeType": "VariableDeclaration", "scope": 1908, "src": "2701:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1904, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2701:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2674:43:4"}, "returnParameters": {"id": 1907, "nodeType": "ParameterList", "parameters": [], "src": "2726:0:4"}, "scope": 1953, "src": "2649:78:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1909, "nodeType": "StructuredDocumentation", "src": "2733:732:4", "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1918, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "3479:12:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1916, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1911, "mutability": "mutable", "name": "from", "nameLocation": "3500:4:4", "nodeType": "VariableDeclaration", "scope": 1918, "src": "3492:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1910, "name": "address", "nodeType": "ElementaryTypeName", "src": "3492:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1913, "mutability": "mutable", "name": "to", "nameLocation": "3514:2:4", "nodeType": "VariableDeclaration", "scope": 1918, "src": "3506:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1912, "name": "address", "nodeType": "ElementaryTypeName", "src": "3506:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1915, "mutability": "mutable", "name": "tokenId", "nameLocation": "3526:7:4", "nodeType": "VariableDeclaration", "scope": 1918, "src": "3518:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1914, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3518:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3491:43:4"}, "returnParameters": {"id": 1917, "nodeType": "ParameterList", "parameters": [], "src": "3543:0:4"}, "scope": 1953, "src": "3470:74:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1919, "nodeType": "StructuredDocumentation", "src": "3550:452:4", "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1926, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "4016:7:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1924, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1921, "mutability": "mutable", "name": "to", "nameLocation": "4032:2:4", "nodeType": "VariableDeclaration", "scope": 1926, "src": "4024:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1920, "name": "address", "nodeType": "ElementaryTypeName", "src": "4024:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1923, "mutability": "mutable", "name": "tokenId", "nameLocation": "4044:7:4", "nodeType": "VariableDeclaration", "scope": 1926, "src": "4036:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1922, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4036:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4023:29:4"}, "returnParameters": {"id": 1925, "nodeType": "ParameterList", "parameters": [], "src": "4061:0:4"}, "scope": 1953, "src": "4007:55:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1927, "nodeType": "StructuredDocumentation", "src": "4068:315:4", "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."}, "functionSelector": "a22cb465", "id": 1934, "implemented": false, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "4397:17:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1932, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1929, "mutability": "mutable", "name": "operator", "nameLocation": "4423:8:4", "nodeType": "VariableDeclaration", "scope": 1934, "src": "4415:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1928, "name": "address", "nodeType": "ElementaryTypeName", "src": "4415:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1931, "mutability": "mutable", "name": "approved", "nameLocation": "4438:8:4", "nodeType": "VariableDeclaration", "scope": 1934, "src": "4433:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1930, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4433:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4414:33:4"}, "returnParameters": {"id": 1933, "nodeType": "ParameterList", "parameters": [], "src": "4456:0:4"}, "scope": 1953, "src": "4388:69:4", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1935, "nodeType": "StructuredDocumentation", "src": "4463:139:4", "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."}, "functionSelector": "081812fc", "id": 1942, "implemented": false, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "4616:11:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1938, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1937, "mutability": "mutable", "name": "tokenId", "nameLocation": "4636:7:4", "nodeType": "VariableDeclaration", "scope": 1942, "src": "4628:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1936, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4628:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4627:17:4"}, "returnParameters": {"id": 1941, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1940, "mutability": "mutable", "name": "operator", "nameLocation": "4676:8:4", "nodeType": "VariableDeclaration", "scope": 1942, "src": "4668:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1939, "name": "address", "nodeType": "ElementaryTypeName", "src": "4668:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4667:18:4"}, "scope": 1953, "src": "4607:79:4", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1943, "nodeType": "StructuredDocumentation", "src": "4692:138:4", "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"}, "functionSelector": "e985e9c5", "id": 1952, "implemented": false, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "4844:16:4", "nodeType": "FunctionDefinition", "parameters": {"id": 1948, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1945, "mutability": "mutable", "name": "owner", "nameLocation": "4869:5:4", "nodeType": "VariableDeclaration", "scope": 1952, "src": "4861:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1944, "name": "address", "nodeType": "ElementaryTypeName", "src": "4861:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1947, "mutability": "mutable", "name": "operator", "nameLocation": "4884:8:4", "nodeType": "VariableDeclaration", "scope": 1952, "src": "4876:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1946, "name": "address", "nodeType": "ElementaryTypeName", "src": "4876:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4860:33:4"}, "returnParameters": {"id": 1951, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1950, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1952, "src": "4917:4:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1949, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4917:4:4", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "4916:6:4"}, "scope": 1953, "src": "4835:88:4", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 1954, "src": "266:4659:4", "usedErrors": [], "usedEvents": [1852, 1861, 1870]}], "src": "108:4818:4"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol", "exportedSymbols": {"IERC721Receiver": [1971]}, "id": 1972, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1955, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "116:24:5"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC721Receiver", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1956, "nodeType": "StructuredDocumentation", "src": "142:152:5", "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."}, "fullyImplemented": false, "id": 1971, "linearizedBaseContracts": [1971], "name": "IERC721Receiver", "nameLocation": "305:15:5", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1957, "nodeType": "StructuredDocumentation", "src": "327:500:5", "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}, "functionSelector": "150b7a02", "id": 1970, "implemented": false, "kind": "function", "modifiers": [], "name": "onERC721Received", "nameLocation": "841:16:5", "nodeType": "FunctionDefinition", "parameters": {"id": 1966, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1959, "mutability": "mutable", "name": "operator", "nameLocation": "875:8:5", "nodeType": "VariableDeclaration", "scope": 1970, "src": "867:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1958, "name": "address", "nodeType": "ElementaryTypeName", "src": "867:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1961, "mutability": "mutable", "name": "from", "nameLocation": "901:4:5", "nodeType": "VariableDeclaration", "scope": 1970, "src": "893:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1960, "name": "address", "nodeType": "ElementaryTypeName", "src": "893:7:5", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1963, "mutability": "mutable", "name": "tokenId", "nameLocation": "923:7:5", "nodeType": "VariableDeclaration", "scope": 1970, "src": "915:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1962, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "915:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 1965, "mutability": "mutable", "name": "data", "nameLocation": "955:4:5", "nodeType": "VariableDeclaration", "scope": 1970, "src": "940:19:5", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1964, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "940:5:5", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "857:108:5"}, "returnParameters": {"id": 1969, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1968, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1970, "src": "984:6:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 1967, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "984:6:5", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "983:8:5"}, "scope": 1971, "src": "832:160:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1972, "src": "295:699:5", "usedErrors": [], "usedEvents": []}], "src": "116:879:5"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol", "exportedSymbols": {"IERC721": [1953], "IERC721Metadata": [1999]}, "id": 2000, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1973, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "127:24:6"}, {"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol", "file": "../IERC721.sol", "id": 1975, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2000, "sourceUnit": 1954, "src": "153:39:6", "symbolAliases": [{"foreign": {"id": 1974, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1953, "src": "161:7:6", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 1977, "name": "IERC721", "nameLocations": ["357:7:6"], "nodeType": "IdentifierPath", "referencedDeclaration": 1953, "src": "357:7:6"}, "id": 1978, "nodeType": "InheritanceSpecifier", "src": "357:7:6"}], "canonicalName": "IERC721Metadata", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1976, "nodeType": "StructuredDocumentation", "src": "194:133:6", "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"}, "fullyImplemented": false, "id": 1999, "linearizedBaseContracts": [1999, 1953, 2290], "name": "IERC721Metadata", "nameLocation": "338:15:6", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 1979, "nodeType": "StructuredDocumentation", "src": "371:58:6", "text": " @dev Returns the token collection name."}, "functionSelector": "06fdde03", "id": 1984, "implemented": false, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "443:4:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1980, "nodeType": "ParameterList", "parameters": [], "src": "447:2:6"}, "returnParameters": {"id": 1983, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1982, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1984, "src": "473:13:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1981, "name": "string", "nodeType": "ElementaryTypeName", "src": "473:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "472:15:6"}, "scope": 1999, "src": "434:54:6", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1985, "nodeType": "StructuredDocumentation", "src": "494:60:6", "text": " @dev Returns the token collection symbol."}, "functionSelector": "95d89b41", "id": 1990, "implemented": false, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "568:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1986, "nodeType": "ParameterList", "parameters": [], "src": "574:2:6"}, "returnParameters": {"id": 1989, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1988, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1990, "src": "600:13:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1987, "name": "string", "nodeType": "ElementaryTypeName", "src": "600:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "599:15:6"}, "scope": 1999, "src": "559:56:6", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1991, "nodeType": "StructuredDocumentation", "src": "621:90:6", "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."}, "functionSelector": "c87b56dd", "id": 1998, "implemented": false, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "725:8:6", "nodeType": "FunctionDefinition", "parameters": {"id": 1994, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1993, "mutability": "mutable", "name": "tokenId", "nameLocation": "742:7:6", "nodeType": "VariableDeclaration", "scope": 1998, "src": "734:15:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1992, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "734:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "733:17:6"}, "returnParameters": {"id": 1997, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1996, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1998, "src": "774:13:6", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 1995, "name": "string", "nodeType": "ElementaryTypeName", "src": "774:6:6", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "773:15:6"}, "scope": 1999, "src": "716:73:6", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 2000, "src": "328:463:6", "usedErrors": [], "usedEvents": [1852, 1861, 1870]}], "src": "127:665:6"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/Context.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol", "exportedSymbols": {"Context": [1699]}, "id": 1700, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1671, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "101:24:7"}, {"abstract": true, "baseContracts": [], "canonicalName": "Context", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 1672, "nodeType": "StructuredDocumentation", "src": "127:496:7", "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."}, "fullyImplemented": true, "id": 1699, "linearizedBaseContracts": [1699], "name": "Context", "nameLocation": "642:7:7", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 1680, "nodeType": "Block", "src": "718:34:7", "statements": [{"expression": {"expression": {"id": 1677, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "735:3:7", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1678, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "739:6:7", "memberName": "sender", "nodeType": "MemberAccess", "src": "735:10:7", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "functionReturnParameters": 1676, "id": 1679, "nodeType": "Return", "src": "728:17:7"}]}, "id": 1681, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgSender", "nameLocation": "665:10:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1673, "nodeType": "ParameterList", "parameters": [], "src": "675:2:7"}, "returnParameters": {"id": 1676, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1675, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1681, "src": "709:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1674, "name": "address", "nodeType": "ElementaryTypeName", "src": "709:7:7", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "708:9:7"}, "scope": 1699, "src": "656:96:7", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1689, "nodeType": "Block", "src": "825:32:7", "statements": [{"expression": {"expression": {"id": 1686, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "842:3:7", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 1687, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "846:4:7", "memberName": "data", "nodeType": "MemberAccess", "src": "842:8:7", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata"}}, "functionReturnParameters": 1685, "id": 1688, "nodeType": "Return", "src": "835:15:7"}]}, "id": 1690, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgData", "nameLocation": "767:8:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1682, "nodeType": "ParameterList", "parameters": [], "src": "775:2:7"}, "returnParameters": {"id": 1685, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1684, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1690, "src": "809:14:7", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": {"typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes"}, "typeName": {"id": 1683, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "809:5:7", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "src": "808:16:7"}, "scope": 1699, "src": "758:99:7", "stateMutability": "view", "virtual": true, "visibility": "internal"}, {"body": {"id": 1697, "nodeType": "Block", "src": "935:25:7", "statements": [{"expression": {"hexValue": "30", "id": 1695, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "952:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "functionReturnParameters": 1694, "id": 1696, "nodeType": "Return", "src": "945:8:7"}]}, "id": 1698, "implemented": true, "kind": "function", "modifiers": [], "name": "_contextSuffixLength", "nameLocation": "872:20:7", "nodeType": "FunctionDefinition", "parameters": {"id": 1691, "nodeType": "ParameterList", "parameters": [], "src": "892:2:7"}, "returnParameters": {"id": 1694, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1693, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1698, "src": "926:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1692, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "926:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "925:9:7"}, "scope": 1699, "src": "863:97:7", "stateMutability": "view", "virtual": true, "visibility": "internal"}], "scope": 1700, "src": "624:338:7", "usedErrors": [], "usedEvents": []}], "src": "101:862:7"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/Strings.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/Strings.sol", "exportedSymbols": {"Math": [3344], "SignedMath": [3449], "Strings": [2254]}, "id": 2255, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2001, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "101:24:8"}, {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/Math.sol", "file": "./math/Math.sol", "id": 2003, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2255, "sourceUnit": 3345, "src": "127:37:8", "symbolAliases": [{"foreign": {"id": 2002, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3344, "src": "135:4:8", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol", "file": "./math/SignedMath.sol", "id": 2005, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2255, "sourceUnit": 3450, "src": "165:49:8", "symbolAliases": [{"foreign": {"id": 2004, "name": "SignedMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3449, "src": "173:10:8", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "Strings", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2006, "nodeType": "StructuredDocumentation", "src": "216:34:8", "text": " @dev String operations."}, "fullyImplemented": true, "id": 2254, "linearizedBaseContracts": [2254], "name": "Strings", "nameLocation": "259:7:8", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 2009, "mutability": "constant", "name": "HEX_DIGITS", "nameLocation": "298:10:8", "nodeType": "VariableDeclaration", "scope": 2254, "src": "273:56:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}, "typeName": {"id": 2007, "name": "bytes16", "nodeType": "ElementaryTypeName", "src": "273:7:8", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}}, "value": {"hexValue": "30313233343536373839616263646566", "id": 2008, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "311:18:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f", "typeString": "literal_string \"0123456789abcdef\""}, "value": "0123456789abcdef"}, "visibility": "private"}, {"constant": true, "id": 2012, "mutability": "constant", "name": "ADDRESS_LENGTH", "nameLocation": "358:14:8", "nodeType": "VariableDeclaration", "scope": 2254, "src": "335:42:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "typeName": {"id": 2010, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "335:5:8", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "value": {"hexValue": "3230", "id": 2011, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "375:2:8", "typeDescriptions": {"typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20"}, "value": "20"}, "visibility": "private"}, {"documentation": {"id": 2013, "nodeType": "StructuredDocumentation", "src": "384:81:8", "text": " @dev The `value` string doesn't fit in the specified `length`."}, "errorSelector": "e22e27eb", "id": 2019, "name": "StringsInsufficientHexLength", "nameLocation": "476:28:8", "nodeType": "ErrorDefinition", "parameters": {"id": 2018, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2015, "mutability": "mutable", "name": "value", "nameLocation": "513:5:8", "nodeType": "VariableDeclaration", "scope": 2019, "src": "505:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2014, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "505:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2017, "mutability": "mutable", "name": "length", "nameLocation": "528:6:8", "nodeType": "VariableDeclaration", "scope": 2019, "src": "520:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2016, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "520:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "504:31:8"}, "src": "470:66:8"}, {"body": {"id": 2066, "nodeType": "Block", "src": "708:627:8", "statements": [{"id": 2065, "nodeType": "UncheckedBlock", "src": "718:611:8", "statements": [{"assignments": [2028], "declarations": [{"constant": false, "id": 2028, "mutability": "mutable", "name": "length", "nameLocation": "750:6:8", "nodeType": "VariableDeclaration", "scope": 2065, "src": "742:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2027, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "742:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2035, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2031, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "770:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 2029, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3344, "src": "759:4:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_Math_$3344_$", "typeString": "type(library Math)"}}, "id": 2030, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "764:5:8", "memberName": "log10", "nodeType": "MemberAccess", "referencedDeclaration": 3164, "src": "759:10:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 2032, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:17:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 2033, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "779:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "759:21:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "742:38:8"}, {"assignments": [2037], "declarations": [{"constant": false, "id": 2037, "mutability": "mutable", "name": "buffer", "nameLocation": "808:6:8", "nodeType": "VariableDeclaration", "scope": 2065, "src": "794:20:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2036, "name": "string", "nodeType": "ElementaryTypeName", "src": "794:6:8", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "id": 2042, "initialValue": {"arguments": [{"id": 2040, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2028, "src": "828:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2039, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "817:10:8", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure returns (string memory)"}, "typeName": {"id": 2038, "name": "string", "nodeType": "ElementaryTypeName", "src": "821:6:8", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}}, "id": 2041, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "817:18:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "nodeType": "VariableDeclarationStatement", "src": "794:41:8"}, {"assignments": [2044], "declarations": [{"constant": false, "id": 2044, "mutability": "mutable", "name": "ptr", "nameLocation": "857:3:8", "nodeType": "VariableDeclaration", "scope": 2065, "src": "849:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2043, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "849:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2045, "nodeType": "VariableDeclarationStatement", "src": "849:11:8"}, {"AST": {"nativeSrc": "930:67:8", "nodeType": "YulBlock", "src": "930:67:8", "statements": [{"nativeSrc": "948:35:8", "nodeType": "YulAssignment", "src": "948:35:8", "value": {"arguments": [{"name": "buffer", "nativeSrc": "959:6:8", "nodeType": "YulIdentifier", "src": "959:6:8"}, {"arguments": [{"kind": "number", "nativeSrc": "971:2:8", "nodeType": "YulLiteral", "src": "971:2:8", "type": "", "value": "32"}, {"name": "length", "nativeSrc": "975:6:8", "nodeType": "YulIdentifier", "src": "975:6:8"}], "functionName": {"name": "add", "nativeSrc": "967:3:8", "nodeType": "YulIdentifier", "src": "967:3:8"}, "nativeSrc": "967:15:8", "nodeType": "YulFunctionCall", "src": "967:15:8"}], "functionName": {"name": "add", "nativeSrc": "955:3:8", "nodeType": "YulIdentifier", "src": "955:3:8"}, "nativeSrc": "955:28:8", "nodeType": "YulFunctionCall", "src": "955:28:8"}, "variableNames": [{"name": "ptr", "nativeSrc": "948:3:8", "nodeType": "YulIdentifier", "src": "948:3:8"}]}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "shanghai", "externalReferences": [{"declaration": 2037, "isOffset": false, "isSlot": false, "src": "959:6:8", "valueSize": 1}, {"declaration": 2028, "isOffset": false, "isSlot": false, "src": "975:6:8", "valueSize": 1}, {"declaration": 2044, "isOffset": false, "isSlot": false, "src": "948:3:8", "valueSize": 1}], "id": 2046, "nodeType": "InlineAssembly", "src": "921:76:8"}, {"body": {"id": 2061, "nodeType": "Block", "src": "1023:269:8", "statements": [{"expression": {"id": 2049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": false, "src": "1041:5:8", "subExpression": {"id": 2048, "name": "ptr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2044, "src": "1041:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2050, "nodeType": "ExpressionStatement", "src": "1041:5:8"}, {"AST": {"nativeSrc": "1124:86:8", "nodeType": "YulBlock", "src": "1124:86:8", "statements": [{"expression": {"arguments": [{"name": "ptr", "nativeSrc": "1154:3:8", "nodeType": "YulIdentifier", "src": "1154:3:8"}, {"arguments": [{"arguments": [{"name": "value", "nativeSrc": "1168:5:8", "nodeType": "YulIdentifier", "src": "1168:5:8"}, {"kind": "number", "nativeSrc": "1175:2:8", "nodeType": "YulLiteral", "src": "1175:2:8", "type": "", "value": "10"}], "functionName": {"name": "mod", "nativeSrc": "1164:3:8", "nodeType": "YulIdentifier", "src": "1164:3:8"}, "nativeSrc": "1164:14:8", "nodeType": "YulFunctionCall", "src": "1164:14:8"}, {"name": "HEX_DIGITS", "nativeSrc": "1180:10:8", "nodeType": "YulIdentifier", "src": "1180:10:8"}], "functionName": {"name": "byte", "nativeSrc": "1159:4:8", "nodeType": "YulIdentifier", "src": "1159:4:8"}, "nativeSrc": "1159:32:8", "nodeType": "YulFunctionCall", "src": "1159:32:8"}], "functionName": {"name": "mstore8", "nativeSrc": "1146:7:8", "nodeType": "YulIdentifier", "src": "1146:7:8"}, "nativeSrc": "1146:46:8", "nodeType": "YulFunctionCall", "src": "1146:46:8"}, "nativeSrc": "1146:46:8", "nodeType": "YulExpressionStatement", "src": "1146:46:8"}]}, "documentation": "@solidity memory-safe-assembly", "evmVersion": "shanghai", "externalReferences": [{"declaration": 2009, "isOffset": false, "isSlot": false, "src": "1180:10:8", "valueSize": 1}, {"declaration": 2044, "isOffset": false, "isSlot": false, "src": "1154:3:8", "valueSize": 1}, {"declaration": 2022, "isOffset": false, "isSlot": false, "src": "1168:5:8", "valueSize": 1}], "id": 2051, "nodeType": "InlineAssembly", "src": "1115:95:8"}, {"expression": {"id": 2054, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2052, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "1227:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"hexValue": "3130", "id": 2053, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1236:2:8", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "1227:11:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2055, "nodeType": "ExpressionStatement", "src": "1227:11:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2058, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2056, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "1260:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2057, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1269:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1260:10:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2060, "nodeType": "IfStatement", "src": "1256:21:8", "trueBody": {"id": 2059, "nodeType": "Break", "src": "1272:5:8"}}]}, "condition": {"hexValue": "74727565", "id": 2047, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1017:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, "id": 2062, "nodeType": "WhileStatement", "src": "1010:282:8"}, {"expression": {"id": 2063, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2037, "src": "1312:6:8", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2026, "id": 2064, "nodeType": "Return", "src": "1305:13:8"}]}]}, "documentation": {"id": 2020, "nodeType": "StructuredDocumentation", "src": "542:90:8", "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."}, "id": 2067, "implemented": true, "kind": "function", "modifiers": [], "name": "toString", "nameLocation": "646:8:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2023, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2022, "mutability": "mutable", "name": "value", "nameLocation": "663:5:8", "nodeType": "VariableDeclaration", "scope": 2067, "src": "655:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2021, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "655:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "654:15:8"}, "returnParameters": {"id": 2026, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2025, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2067, "src": "693:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2024, "name": "string", "nodeType": "ElementaryTypeName", "src": "693:6:8", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "692:15:8"}, "scope": 2254, "src": "637:698:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2092, "nodeType": "Block", "src": "1511:92:8", "statements": [{"expression": {"arguments": [{"condition": {"commonType": {"typeIdentifier": "t_int256", "typeString": "int256"}, "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2078, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2070, "src": "1542:5:8", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"hexValue": "30", "id": 2079, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1550:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1542:9:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"hexValue": "", "id": 2082, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1560:2:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\""}, "value": ""}, "id": 2083, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1542:20:8", "trueExpression": {"hexValue": "2d", "id": 2081, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1554:3:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561", "typeString": "literal_string \"-\""}, "value": "-"}, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"arguments": [{"arguments": [{"id": 2087, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2070, "src": "1588:5:8", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_int256", "typeString": "int256"}], "expression": {"id": 2085, "name": "SignedMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3449, "src": "1573:10:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SignedMath_$3449_$", "typeString": "type(library SignedMath)"}}, "id": 2086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1584:3:8", "memberName": "abs", "nodeType": "MemberAccess", "referencedDeclaration": 3448, "src": "1573:14:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$", "typeString": "function (int256) pure returns (uint256)"}}, "id": 2088, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1573:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2084, "name": "toString", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2067, "src": "1564:8:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256) pure returns (string memory)"}}, "id": 2089, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1564:31:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "expression": {"id": 2076, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1528:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 2075, "name": "string", "nodeType": "ElementaryTypeName", "src": "1528:6:8", "typeDescriptions": {}}}, "id": 2077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1535:6:8", "memberName": "concat", "nodeType": "MemberAccess", "src": "1528:13:8", "typeDescriptions": {"typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", "typeString": "function () pure returns (string memory)"}}, "id": 2090, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1528:68:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2074, "id": 2091, "nodeType": "Return", "src": "1521:75:8"}]}, "documentation": {"id": 2068, "nodeType": "StructuredDocumentation", "src": "1341:89:8", "text": " @dev Converts a `int256` to its ASCII `string` decimal representation."}, "id": 2093, "implemented": true, "kind": "function", "modifiers": [], "name": "toStringSigned", "nameLocation": "1444:14:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2071, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2070, "mutability": "mutable", "name": "value", "nameLocation": "1466:5:8", "nodeType": "VariableDeclaration", "scope": 2093, "src": "1459:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 2069, "name": "int256", "nodeType": "ElementaryTypeName", "src": "1459:6:8", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}], "src": "1458:14:8"}, "returnParameters": {"id": 2074, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2073, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2093, "src": "1496:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2072, "name": "string", "nodeType": "ElementaryTypeName", "src": "1496:6:8", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1495:15:8"}, "scope": 2254, "src": "1435:168:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2112, "nodeType": "Block", "src": "1782:100:8", "statements": [{"id": 2111, "nodeType": "UncheckedBlock", "src": "1792:84:8", "statements": [{"expression": {"arguments": [{"id": 2102, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2096, "src": "1835:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2108, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2105, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2096, "src": "1854:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 2103, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3344, "src": "1842:4:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_Math_$3344_$", "typeString": "type(library Math)"}}, "id": 2104, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1847:6:8", "memberName": "log256", "nodeType": "MemberAccess", "referencedDeclaration": 3286, "src": "1842:11:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 2106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1842:18:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 2107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1863:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1842:22:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2101, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [2113, 2196, 2216], "referencedDeclaration": 2196, "src": "1823:11:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)"}}, "id": 2109, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1823:42:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2100, "id": 2110, "nodeType": "Return", "src": "1816:49:8"}]}]}, "documentation": {"id": 2094, "nodeType": "StructuredDocumentation", "src": "1609:94:8", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."}, "id": 2113, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "1717:11:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2097, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2096, "mutability": "mutable", "name": "value", "nameLocation": "1737:5:8", "nodeType": "VariableDeclaration", "scope": 2113, "src": "1729:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2095, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1729:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1728:15:8"}, "returnParameters": {"id": 2100, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2099, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2113, "src": "1767:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2098, "name": "string", "nodeType": "ElementaryTypeName", "src": "1767:6:8", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1766:15:8"}, "scope": 2254, "src": "1708:174:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2195, "nodeType": "Block", "src": "2095:435:8", "statements": [{"assignments": [2124], "declarations": [{"constant": false, "id": 2124, "mutability": "mutable", "name": "localValue", "nameLocation": "2113:10:8", "nodeType": "VariableDeclaration", "scope": 2195, "src": "2105:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2123, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2126, "initialValue": {"id": 2125, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2116, "src": "2126:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2105:26:8"}, {"assignments": [2128], "declarations": [{"constant": false, "id": 2128, "mutability": "mutable", "name": "buffer", "nameLocation": "2154:6:8", "nodeType": "VariableDeclaration", "scope": 2195, "src": "2141:19:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes"}, "typeName": {"id": 2127, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2141:5:8", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}, "visibility": "internal"}], "id": 2137, "initialValue": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2135, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2131, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2173:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2132, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2118, "src": "2177:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2173:10:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "32", "id": 2134, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2186:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "2173:14:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2130, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "2163:9:8", "typeDescriptions": {"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)"}, "typeName": {"id": 2129, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2167:5:8", "typeDescriptions": {"typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes"}}}, "id": 2136, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2163:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "nodeType": "VariableDeclarationStatement", "src": "2141:47:8"}, {"expression": {"id": 2142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2138, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2128, "src": "2198:6:8", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2140, "indexExpression": {"hexValue": "30", "id": 2139, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2205:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2198:9:8", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 2141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2210:3:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\""}, "value": "0"}, "src": "2198:15:8", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 2143, "nodeType": "ExpressionStatement", "src": "2198:15:8"}, {"expression": {"id": 2148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2144, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2128, "src": "2223:6:8", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2146, "indexExpression": {"hexValue": "31", "id": 2145, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2230:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2223:9:8", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "78", "id": 2147, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2235:3:8", "typeDescriptions": {"typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83", "typeString": "literal_string \"x\""}, "value": "x"}, "src": "2223:15:8", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 2149, "nodeType": "ExpressionStatement", "src": "2223:15:8"}, {"body": {"id": 2178, "nodeType": "Block", "src": "2293:95:8", "statements": [{"expression": {"id": 2172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 2164, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2128, "src": "2307:6:8", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2166, "indexExpression": {"id": 2165, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2151, "src": "2314:1:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2307:9:8", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"baseExpression": {"id": 2167, "name": "HEX_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2009, "src": "2319:10:8", "typeDescriptions": {"typeIdentifier": "t_bytes16", "typeString": "bytes16"}}, "id": 2171, "indexExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2170, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2168, "name": "localValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2124, "src": "2330:10:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"hexValue": "307866", "id": 2169, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2343:3:8", "typeDescriptions": {"typeIdentifier": "t_rational_15_by_1", "typeString": "int_const 15"}, "value": "0xf"}, "src": "2330:16:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2319:28:8", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "src": "2307:40:8", "typeDescriptions": {"typeIdentifier": "t_bytes1", "typeString": "bytes1"}}, "id": 2173, "nodeType": "ExpressionStatement", "src": "2307:40:8"}, {"expression": {"id": 2176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2174, "name": "localValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2124, "src": "2361:10:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "34", "id": 2175, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2376:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "2361:16:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2177, "nodeType": "ExpressionStatement", "src": "2361:16:8"}]}, "condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2158, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2151, "src": "2281:1:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "31", "id": 2159, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2285:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2281:5:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2179, "initializationExpression": {"assignments": [2151], "declarations": [{"constant": false, "id": 2151, "mutability": "mutable", "name": "i", "nameLocation": "2261:1:8", "nodeType": "VariableDeclaration", "scope": 2179, "src": "2253:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2150, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2253:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2157, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2152, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2265:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2153, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2118, "src": "2269:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2265:10:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 2155, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2278:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "2265:14:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "2253:26:8"}, "isSimpleCounterLoop": false, "loopExpression": {"expression": {"id": 2162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "--", "prefix": true, "src": "2288:3:8", "subExpression": {"id": 2161, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2151, "src": "2290:1:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2163, "nodeType": "ExpressionStatement", "src": "2288:3:8"}, "nodeType": "ForStatement", "src": "2248:140:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2180, "name": "localValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2124, "src": "2401:10:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"hexValue": "30", "id": 2181, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2415:1:8", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2401:15:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2189, "nodeType": "IfStatement", "src": "2397:96:8", "trueBody": {"id": 2188, "nodeType": "Block", "src": "2418:75:8", "statements": [{"errorCall": {"arguments": [{"id": 2184, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2116, "src": "2468:5:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 2185, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2118, "src": "2475:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2183, "name": "StringsInsufficientHexLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2019, "src": "2439:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256) pure"}}, "id": 2186, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2439:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2187, "nodeType": "RevertStatement", "src": "2432:50:8"}]}}, {"expression": {"arguments": [{"id": 2192, "name": "buffer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2128, "src": "2516:6:8", "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2191, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2509:6:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 2190, "name": "string", "nodeType": "ElementaryTypeName", "src": "2509:6:8", "typeDescriptions": {}}}, "id": 2193, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2509:14:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2122, "id": 2194, "nodeType": "Return", "src": "2502:21:8"}]}, "documentation": {"id": 2114, "nodeType": "StructuredDocumentation", "src": "1888:112:8", "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."}, "id": 2196, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "2014:11:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2119, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2116, "mutability": "mutable", "name": "value", "nameLocation": "2034:5:8", "nodeType": "VariableDeclaration", "scope": 2196, "src": "2026:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2115, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2026:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2118, "mutability": "mutable", "name": "length", "nameLocation": "2049:6:8", "nodeType": "VariableDeclaration", "scope": 2196, "src": "2041:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2117, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2041:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2025:31:8"}, "returnParameters": {"id": 2122, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2121, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2196, "src": "2080:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2120, "name": "string", "nodeType": "ElementaryTypeName", "src": "2080:6:8", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2079:15:8"}, "scope": 2254, "src": "2005:525:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2215, "nodeType": "Block", "src": "2762:75:8", "statements": [{"expression": {"arguments": [{"arguments": [{"arguments": [{"id": 2209, "name": "addr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2199, "src": "2807:4:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 2208, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2799:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)"}, "typeName": {"id": 2207, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "2799:7:8", "typeDescriptions": {}}}, "id": 2210, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2799:13:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint160", "typeString": "uint160"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint160", "typeString": "uint160"}], "id": 2206, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2791:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 2205, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2791:7:8", "typeDescriptions": {}}}, "id": 2211, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2791:22:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 2212, "name": "ADDRESS_LENGTH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2012, "src": "2815:14:8", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint8", "typeString": "uint8"}], "id": 2204, "name": "toHexString", "nodeType": "Identifier", "overloadedDeclarations": [2113, 2196, 2216], "referencedDeclaration": 2196, "src": "2779:11:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", "typeString": "function (uint256,uint256) pure returns (string memory)"}}, "id": 2213, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2779:51:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, "functionReturnParameters": 2203, "id": 2214, "nodeType": "Return", "src": "2772:58:8"}]}, "documentation": {"id": 2197, "nodeType": "StructuredDocumentation", "src": "2536:148:8", "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."}, "id": 2216, "implemented": true, "kind": "function", "modifiers": [], "name": "toHexString", "nameLocation": "2698:11:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2200, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2199, "mutability": "mutable", "name": "addr", "nameLocation": "2718:4:8", "nodeType": "VariableDeclaration", "scope": 2216, "src": "2710:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 2198, "name": "address", "nodeType": "ElementaryTypeName", "src": "2710:7:8", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2709:14:8"}, "returnParameters": {"id": 2203, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2202, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2216, "src": "2747:13:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2201, "name": "string", "nodeType": "ElementaryTypeName", "src": "2747:6:8", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2746:15:8"}, "scope": 2254, "src": "2689:148:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2252, "nodeType": "Block", "src": "2992:104:8", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2236, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"arguments": [{"id": 2228, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2219, "src": "3015:1:8", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2227, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3009:5:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 2226, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3009:5:8", "typeDescriptions": {}}}, "id": 2229, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3009:8:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3018:6:8", "memberName": "length", "nodeType": "MemberAccess", "src": "3009:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 2233, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2221, "src": "3034:1:8", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2232, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3028:5:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 2231, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3028:5:8", "typeDescriptions": {}}}, "id": 2234, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3028:8:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}, "id": 2235, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3037:6:8", "memberName": "length", "nodeType": "MemberAccess", "src": "3028:15:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3009:34:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}, "id": 2249, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"id": 2240, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2219, "src": "3063:1:8", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2239, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3057:5:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 2238, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3057:5:8", "typeDescriptions": {}}}, "id": 2241, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3057:8:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2237, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "3047:9:8", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2242, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3047:19:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"arguments": [{"id": 2246, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2221, "src": "3086:1:8", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 2245, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3080:5:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)"}, "typeName": {"id": 2244, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3080:5:8", "typeDescriptions": {}}}, "id": 2247, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3080:8:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 2243, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "3070:9:8", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 2248, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3070:19:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "src": "3047:42:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "3009:80:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2225, "id": 2251, "nodeType": "Return", "src": "3002:87:8"}]}, "documentation": {"id": 2217, "nodeType": "StructuredDocumentation", "src": "2843:66:8", "text": " @dev Returns true if the two strings are equal."}, "id": 2253, "implemented": true, "kind": "function", "modifiers": [], "name": "equal", "nameLocation": "2923:5:8", "nodeType": "FunctionDefinition", "parameters": {"id": 2222, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2219, "mutability": "mutable", "name": "a", "nameLocation": "2943:1:8", "nodeType": "VariableDeclaration", "scope": 2253, "src": "2929:15:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2218, "name": "string", "nodeType": "ElementaryTypeName", "src": "2929:6:8", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 2221, "mutability": "mutable", "name": "b", "nameLocation": "2960:1:8", "nodeType": "VariableDeclaration", "scope": 2253, "src": "2946:15:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 2220, "name": "string", "nodeType": "ElementaryTypeName", "src": "2946:6:8", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "2928:34:8"}, "returnParameters": {"id": 2225, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2224, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2253, "src": "2986:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2223, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2986:4:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2985:6:8"}, "scope": 2254, "src": "2914:182:8", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 2255, "src": "251:2847:8", "usedErrors": [2019], "usedEvents": []}], "src": "101:2998:8"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol", "exportedSymbols": {"ERC165": [2278], "IERC165": [2290]}, "id": 2279, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2256, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "114:24:9"}, {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", "file": "./IERC165.sol", "id": 2258, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 2279, "sourceUnit": 2291, "src": "140:38:9", "symbolAliases": [{"foreign": {"id": 2257, "name": "IERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2290, "src": "148:7:9", "typeDescriptions": {}}, "nameLocation": "-1:-1:-1"}], "unitAlias": ""}, {"abstract": true, "baseContracts": [{"baseName": {"id": 2260, "name": "IERC165", "nameLocations": ["687:7:9"], "nodeType": "IdentifierPath", "referencedDeclaration": 2290, "src": "687:7:9"}, "id": 2261, "nodeType": "InheritanceSpecifier", "src": "687:7:9"}], "canonicalName": "ERC165", "contractDependencies": [], "contractKind": "contract", "documentation": {"id": 2259, "nodeType": "StructuredDocumentation", "src": "180:478:9", "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"}, "fullyImplemented": true, "id": 2278, "linearizedBaseContracts": [2278, 2290], "name": "ERC165", "nameLocation": "677:6:9", "nodeType": "ContractDefinition", "nodes": [{"baseFunctions": [2289], "body": {"id": 2276, "nodeType": "Block", "src": "844:64:9", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "id": 2274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2269, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2264, "src": "861:11:9", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"expression": {"arguments": [{"id": 2271, "name": "IERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2290, "src": "881:7:9", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_IERC165_$2290_$", "typeString": "type(contract IERC165)"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_contract$_IERC165_$2290_$", "typeString": "type(contract IERC165)"}], "id": 2270, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "876:4:9", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2272, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "876:13:9", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$2290", "typeString": "type(contract IERC165)"}}, "id": 2273, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "890:11:9", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "876:25:9", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "src": "861:40:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 2268, "id": 2275, "nodeType": "Return", "src": "854:47:9"}]}, "documentation": {"id": 2262, "nodeType": "StructuredDocumentation", "src": "701:56:9", "text": " @dev See {IERC165-supportsInterface}."}, "functionSelector": "01ffc9a7", "id": 2277, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "771:17:9", "nodeType": "FunctionDefinition", "parameters": {"id": 2265, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2264, "mutability": "mutable", "name": "interfaceId", "nameLocation": "796:11:9", "nodeType": "VariableDeclaration", "scope": 2277, "src": "789:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2263, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "789:6:9", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "788:20:9"}, "returnParameters": {"id": 2268, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2267, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2277, "src": "838:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2266, "name": "bool", "nodeType": "ElementaryTypeName", "src": "838:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "837:6:9"}, "scope": 2278, "src": "762:146:9", "stateMutability": "view", "virtual": true, "visibility": "public"}], "scope": 2279, "src": "659:251:9", "usedErrors": [], "usedEvents": []}], "src": "114:797:9"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", "exportedSymbols": {"IERC165": [2290]}, "id": 2291, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2280, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "115:24:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC165", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 2281, "nodeType": "StructuredDocumentation", "src": "141:279:10", "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."}, "fullyImplemented": false, "id": 2290, "linearizedBaseContracts": [2290], "name": "IERC165", "nameLocation": "431:7:10", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 2282, "nodeType": "StructuredDocumentation", "src": "445:340:10", "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."}, "functionSelector": "01ffc9a7", "id": 2289, "implemented": false, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "799:17:10", "nodeType": "FunctionDefinition", "parameters": {"id": 2285, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2284, "mutability": "mutable", "name": "interfaceId", "nameLocation": "824:11:10", "nodeType": "VariableDeclaration", "scope": 2289, "src": "817:18:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}, "typeName": {"id": 2283, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "817:6:10", "typeDescriptions": {"typeIdentifier": "t_bytes4", "typeString": "bytes4"}}, "visibility": "internal"}], "src": "816:20:10"}, "returnParameters": {"id": 2288, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2287, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2289, "src": "860:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2286, "name": "bool", "nodeType": "ElementaryTypeName", "src": "860:4:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "859:6:10"}, "scope": 2290, "src": "790:76:10", "stateMutability": "view", "virtual": false, "visibility": "external"}], "scope": 2291, "src": "421:447:10", "usedErrors": [], "usedEvents": []}], "src": "115:754:10"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/math/Math.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/Math.sol", "exportedSymbols": {"Math": [3344]}, "id": 3345, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 2292, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "103:24:11"}, {"abstract": false, "baseContracts": [], "canonicalName": "Math", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 2293, "nodeType": "StructuredDocumentation", "src": "129:73:11", "text": " @dev Standard math utilities missing in the Solidity language."}, "fullyImplemented": true, "id": 3344, "linearizedBaseContracts": [3344], "name": "Math", "nameLocation": "211:4:11", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 2294, "nodeType": "StructuredDocumentation", "src": "222:50:11", "text": " @dev Muldiv operation overflow."}, "errorSelector": "227bc153", "id": 2296, "name": "MathOverflowedMulDiv", "nameLocation": "283:20:11", "nodeType": "ErrorDefinition", "parameters": {"id": 2295, "nodeType": "ParameterList", "parameters": [], "src": "303:2:11"}, "src": "277:29:11"}, {"canonicalName": "Math.Rounding", "id": 2301, "members": [{"id": 2297, "name": "Floor", "nameLocation": "336:5:11", "nodeType": "EnumValue", "src": "336:5:11"}, {"id": 2298, "name": "Ceil", "nameLocation": "379:4:11", "nodeType": "EnumValue", "src": "379:4:11"}, {"id": 2299, "name": "Trunc", "nameLocation": "421:5:11", "nodeType": "EnumValue", "src": "421:5:11"}, {"id": 2300, "name": "Expand", "nameLocation": "451:6:11", "nodeType": "EnumValue", "src": "451:6:11"}], "name": "Rounding", "nameLocation": "317:8:11", "nodeType": "EnumDefinition", "src": "312:169:11"}, {"body": {"id": 2332, "nodeType": "Block", "src": "661:140:11", "statements": [{"id": 2331, "nodeType": "UncheckedBlock", "src": "671:124:11", "statements": [{"assignments": [2314], "declarations": [{"constant": false, "id": 2314, "mutability": "mutable", "name": "c", "nameLocation": "703:1:11", "nodeType": "VariableDeclaration", "scope": 2331, "src": "695:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2313, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "695:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2318, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2317, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2315, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2304, "src": "707:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"id": 2316, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2306, "src": "711:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "707:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "695:17:11"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2319, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2314, "src": "730:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 2320, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2304, "src": "734:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "730:5:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2326, "nodeType": "IfStatement", "src": "726:28:11", "trueBody": {"expression": {"components": [{"hexValue": "66616c7365", "id": 2322, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "745:5:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"hexValue": "30", "id": 2323, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "752:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "id": 2324, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "744:10:11", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", "typeString": "tuple(bool,int_const 0)"}}, "functionReturnParameters": 2312, "id": 2325, "nodeType": "Return", "src": "737:17:11"}}, {"expression": {"components": [{"hexValue": "74727565", "id": 2327, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "776:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"id": 2328, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2314, "src": "782:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2329, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "775:9:11", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", "typeString": "tuple(bool,uint256)"}}, "functionReturnParameters": 2312, "id": 2330, "nodeType": "Return", "src": "768:16:11"}]}]}, "documentation": {"id": 2302, "nodeType": "StructuredDocumentation", "src": "487:93:11", "text": " @dev Returns the addition of two unsigned integers, with an overflow flag."}, "id": 2333, "implemented": true, "kind": "function", "modifiers": [], "name": "tryAdd", "nameLocation": "594:6:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2307, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2304, "mutability": "mutable", "name": "a", "nameLocation": "609:1:11", "nodeType": "VariableDeclaration", "scope": 2333, "src": "601:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2303, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "601:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2306, "mutability": "mutable", "name": "b", "nameLocation": "620:1:11", "nodeType": "VariableDeclaration", "scope": 2333, "src": "612:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2305, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "612:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "600:22:11"}, "returnParameters": {"id": 2312, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2309, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2333, "src": "646:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2308, "name": "bool", "nodeType": "ElementaryTypeName", "src": "646:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2311, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2333, "src": "652:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2310, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "652:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "645:15:11"}, "scope": 3344, "src": "585:216:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2360, "nodeType": "Block", "src": "984:113:11", "statements": [{"id": 2359, "nodeType": "UncheckedBlock", "src": "994:97:11", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2347, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2345, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2338, "src": "1022:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 2346, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2336, "src": "1026:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1022:5:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2352, "nodeType": "IfStatement", "src": "1018:28:11", "trueBody": {"expression": {"components": [{"hexValue": "66616c7365", "id": 2348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1037:5:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"hexValue": "30", "id": 2349, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1044:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "id": 2350, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1036:10:11", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", "typeString": "tuple(bool,int_const 0)"}}, "functionReturnParameters": 2344, "id": 2351, "nodeType": "Return", "src": "1029:17:11"}}, {"expression": {"components": [{"hexValue": "74727565", "id": 2353, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1068:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2354, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2336, "src": "1074:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 2355, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2338, "src": "1078:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1074:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2357, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1067:13:11", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", "typeString": "tuple(bool,uint256)"}}, "functionReturnParameters": 2344, "id": 2358, "nodeType": "Return", "src": "1060:20:11"}]}]}, "documentation": {"id": 2334, "nodeType": "StructuredDocumentation", "src": "807:96:11", "text": " @dev Returns the subtraction of two unsigned integers, with an overflow flag."}, "id": 2361, "implemented": true, "kind": "function", "modifiers": [], "name": "trySub", "nameLocation": "917:6:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2339, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2336, "mutability": "mutable", "name": "a", "nameLocation": "932:1:11", "nodeType": "VariableDeclaration", "scope": 2361, "src": "924:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2335, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "924:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2338, "mutability": "mutable", "name": "b", "nameLocation": "943:1:11", "nodeType": "VariableDeclaration", "scope": 2361, "src": "935:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2337, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "935:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "923:22:11"}, "returnParameters": {"id": 2344, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2341, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2361, "src": "969:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2340, "name": "bool", "nodeType": "ElementaryTypeName", "src": "969:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2343, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2361, "src": "975:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2342, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "975:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "968:15:11"}, "scope": 3344, "src": "908:189:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2402, "nodeType": "Block", "src": "1283:417:11", "statements": [{"id": 2401, "nodeType": "UncheckedBlock", "src": "1293:401:11", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2373, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2364, "src": "1551:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2374, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1556:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1551:6:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2380, "nodeType": "IfStatement", "src": "1547:28:11", "trueBody": {"expression": {"components": [{"hexValue": "74727565", "id": 2376, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1567:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"hexValue": "30", "id": 2377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1573:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "id": 2378, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1566:9:11", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", "typeString": "tuple(bool,int_const 0)"}}, "functionReturnParameters": 2372, "id": 2379, "nodeType": "Return", "src": "1559:16:11"}}, {"assignments": [2382], "declarations": [{"constant": false, "id": 2382, "mutability": "mutable", "name": "c", "nameLocation": "1597:1:11", "nodeType": "VariableDeclaration", "scope": 2401, "src": "1589:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2381, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1589:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2386, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2383, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2364, "src": "1601:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2384, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2366, "src": "1605:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1601:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1589:17:11"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2387, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2382, "src": "1624:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2388, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2364, "src": "1628:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1624:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"id": 2390, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2366, "src": "1633:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1624:10:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2396, "nodeType": "IfStatement", "src": "1620:33:11", "trueBody": {"expression": {"components": [{"hexValue": "66616c7365", "id": 2392, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1644:5:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"hexValue": "30", "id": 2393, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1651:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "id": 2394, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1643:10:11", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", "typeString": "tuple(bool,int_const 0)"}}, "functionReturnParameters": 2372, "id": 2395, "nodeType": "Return", "src": "1636:17:11"}}, {"expression": {"components": [{"hexValue": "74727565", "id": 2397, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1675:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"id": 2398, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2382, "src": "1681:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2399, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1674:9:11", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", "typeString": "tuple(bool,uint256)"}}, "functionReturnParameters": 2372, "id": 2400, "nodeType": "Return", "src": "1667:16:11"}]}]}, "documentation": {"id": 2362, "nodeType": "StructuredDocumentation", "src": "1103:99:11", "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag."}, "id": 2403, "implemented": true, "kind": "function", "modifiers": [], "name": "tryMul", "nameLocation": "1216:6:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2367, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2364, "mutability": "mutable", "name": "a", "nameLocation": "1231:1:11", "nodeType": "VariableDeclaration", "scope": 2403, "src": "1223:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2363, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2366, "mutability": "mutable", "name": "b", "nameLocation": "1242:1:11", "nodeType": "VariableDeclaration", "scope": 2403, "src": "1234:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2365, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1234:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1222:22:11"}, "returnParameters": {"id": 2372, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2369, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2403, "src": "1268:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2368, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1268:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2371, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2403, "src": "1274:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2370, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1274:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1267:15:11"}, "scope": 3344, "src": "1207:493:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2430, "nodeType": "Block", "src": "1887:114:11", "statements": [{"id": 2429, "nodeType": "UncheckedBlock", "src": "1897:98:11", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2415, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2408, "src": "1925:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2416, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1930:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1925:6:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2422, "nodeType": "IfStatement", "src": "1921:29:11", "trueBody": {"expression": {"components": [{"hexValue": "66616c7365", "id": 2418, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1941:5:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"hexValue": "30", "id": 2419, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1948:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "id": 2420, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1940:10:11", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", "typeString": "tuple(bool,int_const 0)"}}, "functionReturnParameters": 2414, "id": 2421, "nodeType": "Return", "src": "1933:17:11"}}, {"expression": {"components": [{"hexValue": "74727565", "id": 2423, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1972:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2424, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2406, "src": "1978:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2425, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2408, "src": "1982:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1978:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2427, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1971:13:11", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", "typeString": "tuple(bool,uint256)"}}, "functionReturnParameters": 2414, "id": 2428, "nodeType": "Return", "src": "1964:20:11"}]}]}, "documentation": {"id": 2404, "nodeType": "StructuredDocumentation", "src": "1706:100:11", "text": " @dev Returns the division of two unsigned integers, with a division by zero flag."}, "id": 2431, "implemented": true, "kind": "function", "modifiers": [], "name": "tryDiv", "nameLocation": "1820:6:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2409, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2406, "mutability": "mutable", "name": "a", "nameLocation": "1835:1:11", "nodeType": "VariableDeclaration", "scope": 2431, "src": "1827:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2405, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1827:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2408, "mutability": "mutable", "name": "b", "nameLocation": "1846:1:11", "nodeType": "VariableDeclaration", "scope": 2431, "src": "1838:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2407, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1838:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1826:22:11"}, "returnParameters": {"id": 2414, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2411, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2431, "src": "1872:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2410, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1872:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2413, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2431, "src": "1878:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2412, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1878:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1871:15:11"}, "scope": 3344, "src": "1811:190:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2458, "nodeType": "Block", "src": "2198:114:11", "statements": [{"id": 2457, "nodeType": "UncheckedBlock", "src": "2208:98:11", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2443, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2436, "src": "2236:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2444, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2241:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2236:6:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2450, "nodeType": "IfStatement", "src": "2232:29:11", "trueBody": {"expression": {"components": [{"hexValue": "66616c7365", "id": 2446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2252:5:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, {"hexValue": "30", "id": 2447, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2259:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}], "id": 2448, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2251:10:11", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", "typeString": "tuple(bool,int_const 0)"}}, "functionReturnParameters": 2442, "id": 2449, "nodeType": "Return", "src": "2244:17:11"}}, {"expression": {"components": [{"hexValue": "74727565", "id": 2451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2283:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "true"}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2454, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2452, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2434, "src": "2289:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 2453, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2436, "src": "2293:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2289:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2455, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2282:13:11", "typeDescriptions": {"typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", "typeString": "tuple(bool,uint256)"}}, "functionReturnParameters": 2442, "id": 2456, "nodeType": "Return", "src": "2275:20:11"}]}]}, "documentation": {"id": 2432, "nodeType": "StructuredDocumentation", "src": "2007:110:11", "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."}, "id": 2459, "implemented": true, "kind": "function", "modifiers": [], "name": "tryMod", "nameLocation": "2131:6:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2437, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2434, "mutability": "mutable", "name": "a", "nameLocation": "2146:1:11", "nodeType": "VariableDeclaration", "scope": 2459, "src": "2138:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2138:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2436, "mutability": "mutable", "name": "b", "nameLocation": "2157:1:11", "nodeType": "VariableDeclaration", "scope": 2459, "src": "2149:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2435, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2149:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2137:22:11"}, "returnParameters": {"id": 2442, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2439, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2459, "src": "2183:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 2438, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2183:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 2441, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2459, "src": "2189:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2440, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2189:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2182:15:11"}, "scope": 3344, "src": "2122:190:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2476, "nodeType": "Block", "src": "2449:37:11", "statements": [{"expression": {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2471, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2469, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2462, "src": "2466:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 2470, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2464, "src": "2470:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2466:5:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"id": 2473, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2464, "src": "2478:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2474, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "2466:13:11", "trueExpression": {"id": 2472, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2462, "src": "2474:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2468, "id": 2475, "nodeType": "Return", "src": "2459:20:11"}]}, "documentation": {"id": 2460, "nodeType": "StructuredDocumentation", "src": "2318:59:11", "text": " @dev Returns the largest of two numbers."}, "id": 2477, "implemented": true, "kind": "function", "modifiers": [], "name": "max", "nameLocation": "2391:3:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2465, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2462, "mutability": "mutable", "name": "a", "nameLocation": "2403:1:11", "nodeType": "VariableDeclaration", "scope": 2477, "src": "2395:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2461, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2395:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2464, "mutability": "mutable", "name": "b", "nameLocation": "2414:1:11", "nodeType": "VariableDeclaration", "scope": 2477, "src": "2406:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2463, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2406:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2394:22:11"}, "returnParameters": {"id": 2468, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2467, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2477, "src": "2440:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2466, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2440:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2439:9:11"}, "scope": 3344, "src": "2382:104:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2494, "nodeType": "Block", "src": "2624:37:11", "statements": [{"expression": {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2487, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2480, "src": "2641:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 2488, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2482, "src": "2645:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2641:5:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"id": 2491, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2482, "src": "2653:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "2641:13:11", "trueExpression": {"id": 2490, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2480, "src": "2649:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2486, "id": 2493, "nodeType": "Return", "src": "2634:20:11"}]}, "documentation": {"id": 2478, "nodeType": "StructuredDocumentation", "src": "2492:60:11", "text": " @dev Returns the smallest of two numbers."}, "id": 2495, "implemented": true, "kind": "function", "modifiers": [], "name": "min", "nameLocation": "2566:3:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2483, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2480, "mutability": "mutable", "name": "a", "nameLocation": "2578:1:11", "nodeType": "VariableDeclaration", "scope": 2495, "src": "2570:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2479, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2570:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2482, "mutability": "mutable", "name": "b", "nameLocation": "2589:1:11", "nodeType": "VariableDeclaration", "scope": 2495, "src": "2581:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2481, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2581:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2569:22:11"}, "returnParameters": {"id": 2486, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2485, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2495, "src": "2615:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2484, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2615:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2614:9:11"}, "scope": 3344, "src": "2557:104:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2517, "nodeType": "Block", "src": "2845:82:11", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2505, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "2900:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"id": 2506, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2500, "src": "2904:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2900:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2508, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2899:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2514, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2511, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2509, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2498, "src": "2910:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "^", "rightExpression": {"id": 2510, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2500, "src": "2914:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2910:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2512, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2909:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "32", "id": 2513, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2919:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "2909:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "2899:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2504, "id": 2516, "nodeType": "Return", "src": "2892:28:11"}]}, "documentation": {"id": 2496, "nodeType": "StructuredDocumentation", "src": "2667:102:11", "text": " @dev Returns the average of two numbers. The result is rounded towards\n zero."}, "id": 2518, "implemented": true, "kind": "function", "modifiers": [], "name": "average", "nameLocation": "2783:7:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2501, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2498, "mutability": "mutable", "name": "a", "nameLocation": "2799:1:11", "nodeType": "VariableDeclaration", "scope": 2518, "src": "2791:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2497, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2791:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2500, "mutability": "mutable", "name": "b", "nameLocation": "2810:1:11", "nodeType": "VariableDeclaration", "scope": 2518, "src": "2802:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2499, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2802:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2790:22:11"}, "returnParameters": {"id": 2504, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2503, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2518, "src": "2836:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2502, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2836:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2835:9:11"}, "scope": 3344, "src": "2774:153:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2551, "nodeType": "Block", "src": "3219:260:11", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2530, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2528, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2523, "src": "3233:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2529, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3238:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3233:6:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2536, "nodeType": "IfStatement", "src": "3229:127:11", "trueBody": {"id": 2535, "nodeType": "Block", "src": "3241:115:11", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2533, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2531, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "3340:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2532, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2523, "src": "3344:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3340:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2527, "id": 2534, "nodeType": "Return", "src": "3333:12:11"}]}}, {"expression": {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2539, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2537, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "3444:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3449:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "3444:6:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2541, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2521, "src": "3458:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 2542, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3462:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3458:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2544, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3457:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2545, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2523, "src": "3467:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "3457:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"hexValue": "31", "id": 2547, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3471:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "3457:15:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2549, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "3444:28:11", "trueExpression": {"hexValue": "30", "id": 2540, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3453:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2527, "id": 2550, "nodeType": "Return", "src": "3437:35:11"}]}, "documentation": {"id": 2519, "nodeType": "StructuredDocumentation", "src": "2933:210:11", "text": " @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."}, "id": 2552, "implemented": true, "kind": "function", "modifiers": [], "name": "ceilDiv", "nameLocation": "3157:7:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2524, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2521, "mutability": "mutable", "name": "a", "nameLocation": "3173:1:11", "nodeType": "VariableDeclaration", "scope": 2552, "src": "3165:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2520, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3165:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2523, "mutability": "mutable", "name": "b", "nameLocation": "3184:1:11", "nodeType": "VariableDeclaration", "scope": 2552, "src": "3176:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2522, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3176:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3164:22:11"}, "returnParameters": {"id": 2527, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2526, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2552, "src": "3210:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2525, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3210:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3209:9:11"}, "scope": 3344, "src": "3148:331:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2677, "nodeType": "Block", "src": "3901:4018:11", "statements": [{"id": 2676, "nodeType": "UncheckedBlock", "src": "3911:4002:11", "statements": [{"assignments": [2565], "declarations": [{"constant": false, "id": 2565, "mutability": "mutable", "name": "prod0", "nameLocation": "4240:5:11", "nodeType": "VariableDeclaration", "scope": 2676, "src": "4232:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2564, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4232:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2569, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2566, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2555, "src": "4248:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2567, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2557, "src": "4252:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4248:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "4232:21:11"}, {"assignments": [2571], "declarations": [{"constant": false, "id": 2571, "mutability": "mutable", "name": "prod1", "nameLocation": "4320:5:11", "nodeType": "VariableDeclaration", "scope": 2676, "src": "4312:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2570, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4312:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2572, "nodeType": "VariableDeclarationStatement", "src": "4312:13:11"}, {"AST": {"nativeSrc": "4392:122:11", "nodeType": "YulBlock", "src": "4392:122:11", "statements": [{"nativeSrc": "4410:30:11", "nodeType": "YulVariableDeclaration", "src": "4410:30:11", "value": {"arguments": [{"name": "x", "nativeSrc": "4427:1:11", "nodeType": "YulIdentifier", "src": "4427:1:11"}, {"name": "y", "nativeSrc": "4430:1:11", "nodeType": "YulIdentifier", "src": "4430:1:11"}, {"arguments": [{"kind": "number", "nativeSrc": "4437:1:11", "nodeType": "YulLiteral", "src": "4437:1:11", "type": "", "value": "0"}], "functionName": {"name": "not", "nativeSrc": "4433:3:11", "nodeType": "YulIdentifier", "src": "4433:3:11"}, "nativeSrc": "4433:6:11", "nodeType": "YulFunctionCall", "src": "4433:6:11"}], "functionName": {"name": "mulmod", "nativeSrc": "4420:6:11", "nodeType": "YulIdentifier", "src": "4420:6:11"}, "nativeSrc": "4420:20:11", "nodeType": "YulFunctionCall", "src": "4420:20:11"}, "variables": [{"name": "mm", "nativeSrc": "4414:2:11", "nodeType": "YulTypedName", "src": "4414:2:11", "type": ""}]}, {"nativeSrc": "4457:43:11", "nodeType": "YulAssignment", "src": "4457:43:11", "value": {"arguments": [{"arguments": [{"name": "mm", "nativeSrc": "4474:2:11", "nodeType": "YulIdentifier", "src": "4474:2:11"}, {"name": "prod0", "nativeSrc": "4478:5:11", "nodeType": "YulIdentifier", "src": "4478:5:11"}], "functionName": {"name": "sub", "nativeSrc": "4470:3:11", "nodeType": "YulIdentifier", "src": "4470:3:11"}, "nativeSrc": "4470:14:11", "nodeType": "YulFunctionCall", "src": "4470:14:11"}, {"arguments": [{"name": "mm", "nativeSrc": "4489:2:11", "nodeType": "YulIdentifier", "src": "4489:2:11"}, {"name": "prod0", "nativeSrc": "4493:5:11", "nodeType": "YulIdentifier", "src": "4493:5:11"}], "functionName": {"name": "lt", "nativeSrc": "4486:2:11", "nodeType": "YulIdentifier", "src": "4486:2:11"}, "nativeSrc": "4486:13:11", "nodeType": "YulFunctionCall", "src": "4486:13:11"}], "functionName": {"name": "sub", "nativeSrc": "4466:3:11", "nodeType": "YulIdentifier", "src": "4466:3:11"}, "nativeSrc": "4466:34:11", "nodeType": "YulFunctionCall", "src": "4466:34:11"}, "variableNames": [{"name": "prod1", "nativeSrc": "4457:5:11", "nodeType": "YulIdentifier", "src": "4457:5:11"}]}]}, "evmVersion": "shanghai", "externalReferences": [{"declaration": 2565, "isOffset": false, "isSlot": false, "src": "4478:5:11", "valueSize": 1}, {"declaration": 2565, "isOffset": false, "isSlot": false, "src": "4493:5:11", "valueSize": 1}, {"declaration": 2571, "isOffset": false, "isSlot": false, "src": "4457:5:11", "valueSize": 1}, {"declaration": 2555, "isOffset": false, "isSlot": false, "src": "4427:1:11", "valueSize": 1}, {"declaration": 2557, "isOffset": false, "isSlot": false, "src": "4430:1:11", "valueSize": 1}], "id": 2573, "nodeType": "InlineAssembly", "src": "4383:131:11"}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2574, "name": "prod1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2571, "src": "4595:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2575, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4604:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "4595:10:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2582, "nodeType": "IfStatement", "src": "4591:368:11", "trueBody": {"id": 2581, "nodeType": "Block", "src": "4607:352:11", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2577, "name": "prod0", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "4925:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2578, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2559, "src": "4933:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "4925:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2563, "id": 2580, "nodeType": "Return", "src": "4918:26:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2585, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2583, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2559, "src": "5065:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"id": 2584, "name": "prod1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2571, "src": "5080:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5065:20:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2590, "nodeType": "IfStatement", "src": "5061:88:11", "trueBody": {"id": 2589, "nodeType": "Block", "src": "5087:62:11", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 2586, "name": "MathOverflowedMulDiv", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2296, "src": "5112:20:11", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 2587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5112:22:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 2588, "nodeType": "RevertStatement", "src": "5105:29:11"}]}}, {"assignments": [2592], "declarations": [{"constant": false, "id": 2592, "mutability": "mutable", "name": "remainder", "nameLocation": "5412:9:11", "nodeType": "VariableDeclaration", "scope": 2676, "src": "5404:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2591, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5404:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2593, "nodeType": "VariableDeclarationStatement", "src": "5404:17:11"}, {"AST": {"nativeSrc": "5444:291:11", "nodeType": "YulBlock", "src": "5444:291:11", "statements": [{"nativeSrc": "5513:38:11", "nodeType": "YulAssignment", "src": "5513:38:11", "value": {"arguments": [{"name": "x", "nativeSrc": "5533:1:11", "nodeType": "YulIdentifier", "src": "5533:1:11"}, {"name": "y", "nativeSrc": "5536:1:11", "nodeType": "YulIdentifier", "src": "5536:1:11"}, {"name": "denominator", "nativeSrc": "5539:11:11", "nodeType": "YulIdentifier", "src": "5539:11:11"}], "functionName": {"name": "mulmod", "nativeSrc": "5526:6:11", "nodeType": "YulIdentifier", "src": "5526:6:11"}, "nativeSrc": "5526:25:11", "nodeType": "YulFunctionCall", "src": "5526:25:11"}, "variableNames": [{"name": "remainder", "nativeSrc": "5513:9:11", "nodeType": "YulIdentifier", "src": "5513:9:11"}]}, {"nativeSrc": "5633:41:11", "nodeType": "YulAssignment", "src": "5633:41:11", "value": {"arguments": [{"name": "prod1", "nativeSrc": "5646:5:11", "nodeType": "YulIdentifier", "src": "5646:5:11"}, {"arguments": [{"name": "remainder", "nativeSrc": "5656:9:11", "nodeType": "YulIdentifier", "src": "5656:9:11"}, {"name": "prod0", "nativeSrc": "5667:5:11", "nodeType": "YulIdentifier", "src": "5667:5:11"}], "functionName": {"name": "gt", "nativeSrc": "5653:2:11", "nodeType": "YulIdentifier", "src": "5653:2:11"}, "nativeSrc": "5653:20:11", "nodeType": "YulFunctionCall", "src": "5653:20:11"}], "functionName": {"name": "sub", "nativeSrc": "5642:3:11", "nodeType": "YulIdentifier", "src": "5642:3:11"}, "nativeSrc": "5642:32:11", "nodeType": "YulFunctionCall", "src": "5642:32:11"}, "variableNames": [{"name": "prod1", "nativeSrc": "5633:5:11", "nodeType": "YulIdentifier", "src": "5633:5:11"}]}, {"nativeSrc": "5691:30:11", "nodeType": "YulAssignment", "src": "5691:30:11", "value": {"arguments": [{"name": "prod0", "nativeSrc": "5704:5:11", "nodeType": "YulIdentifier", "src": "5704:5:11"}, {"name": "remainder", "nativeSrc": "5711:9:11", "nodeType": "YulIdentifier", "src": "5711:9:11"}], "functionName": {"name": "sub", "nativeSrc": "5700:3:11", "nodeType": "YulIdentifier", "src": "5700:3:11"}, "nativeSrc": "5700:21:11", "nodeType": "YulFunctionCall", "src": "5700:21:11"}, "variableNames": [{"name": "prod0", "nativeSrc": "5691:5:11", "nodeType": "YulIdentifier", "src": "5691:5:11"}]}]}, "evmVersion": "shanghai", "externalReferences": [{"declaration": 2559, "isOffset": false, "isSlot": false, "src": "5539:11:11", "valueSize": 1}, {"declaration": 2565, "isOffset": false, "isSlot": false, "src": "5667:5:11", "valueSize": 1}, {"declaration": 2565, "isOffset": false, "isSlot": false, "src": "5691:5:11", "valueSize": 1}, {"declaration": 2565, "isOffset": false, "isSlot": false, "src": "5704:5:11", "valueSize": 1}, {"declaration": 2571, "isOffset": false, "isSlot": false, "src": "5633:5:11", "valueSize": 1}, {"declaration": 2571, "isOffset": false, "isSlot": false, "src": "5646:5:11", "valueSize": 1}, {"declaration": 2592, "isOffset": false, "isSlot": false, "src": "5513:9:11", "valueSize": 1}, {"declaration": 2592, "isOffset": false, "isSlot": false, "src": "5656:9:11", "valueSize": 1}, {"declaration": 2592, "isOffset": false, "isSlot": false, "src": "5711:9:11", "valueSize": 1}, {"declaration": 2555, "isOffset": false, "isSlot": false, "src": "5533:1:11", "valueSize": 1}, {"declaration": 2557, "isOffset": false, "isSlot": false, "src": "5536:1:11", "valueSize": 1}], "id": 2594, "nodeType": "InlineAssembly", "src": "5435:300:11"}, {"assignments": [2596], "declarations": [{"constant": false, "id": 2596, "mutability": "mutable", "name": "twos", "nameLocation": "5947:4:11", "nodeType": "VariableDeclaration", "scope": 2676, "src": "5939:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2595, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5939:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2603, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2597, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2559, "src": "5954:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2600, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "30", "id": 2598, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5969:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 2599, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2559, "src": "5973:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5969:15:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2601, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "5968:17:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "5954:31:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "5939:46:11"}, {"AST": {"nativeSrc": "6008:362:11", "nodeType": "YulBlock", "src": "6008:362:11", "statements": [{"nativeSrc": "6073:37:11", "nodeType": "YulAssignment", "src": "6073:37:11", "value": {"arguments": [{"name": "denominator", "nativeSrc": "6092:11:11", "nodeType": "YulIdentifier", "src": "6092:11:11"}, {"name": "twos", "nativeSrc": "6105:4:11", "nodeType": "YulIdentifier", "src": "6105:4:11"}], "functionName": {"name": "div", "nativeSrc": "6088:3:11", "nodeType": "YulIdentifier", "src": "6088:3:11"}, "nativeSrc": "6088:22:11", "nodeType": "YulFunctionCall", "src": "6088:22:11"}, "variableNames": [{"name": "denominator", "nativeSrc": "6073:11:11", "nodeType": "YulIdentifier", "src": "6073:11:11"}]}, {"nativeSrc": "6177:25:11", "nodeType": "YulAssignment", "src": "6177:25:11", "value": {"arguments": [{"name": "prod0", "nativeSrc": "6190:5:11", "nodeType": "YulIdentifier", "src": "6190:5:11"}, {"name": "twos", "nativeSrc": "6197:4:11", "nodeType": "YulIdentifier", "src": "6197:4:11"}], "functionName": {"name": "div", "nativeSrc": "6186:3:11", "nodeType": "YulIdentifier", "src": "6186:3:11"}, "nativeSrc": "6186:16:11", "nodeType": "YulFunctionCall", "src": "6186:16:11"}, "variableNames": [{"name": "prod0", "nativeSrc": "6177:5:11", "nodeType": "YulIdentifier", "src": "6177:5:11"}]}, {"nativeSrc": "6317:39:11", "nodeType": "YulAssignment", "src": "6317:39:11", "value": {"arguments": [{"arguments": [{"arguments": [{"kind": "number", "nativeSrc": "6337:1:11", "nodeType": "YulLiteral", "src": "6337:1:11", "type": "", "value": "0"}, {"name": "twos", "nativeSrc": "6340:4:11", "nodeType": "YulIdentifier", "src": "6340:4:11"}], "functionName": {"name": "sub", "nativeSrc": "6333:3:11", "nodeType": "YulIdentifier", "src": "6333:3:11"}, "nativeSrc": "6333:12:11", "nodeType": "YulFunctionCall", "src": "6333:12:11"}, {"name": "twos", "nativeSrc": "6347:4:11", "nodeType": "YulIdentifier", "src": "6347:4:11"}], "functionName": {"name": "div", "nativeSrc": "6329:3:11", "nodeType": "YulIdentifier", "src": "6329:3:11"}, "nativeSrc": "6329:23:11", "nodeType": "YulFunctionCall", "src": "6329:23:11"}, {"kind": "number", "nativeSrc": "6354:1:11", "nodeType": "YulLiteral", "src": "6354:1:11", "type": "", "value": "1"}], "functionName": {"name": "add", "nativeSrc": "6325:3:11", "nodeType": "YulIdentifier", "src": "6325:3:11"}, "nativeSrc": "6325:31:11", "nodeType": "YulFunctionCall", "src": "6325:31:11"}, "variableNames": [{"name": "twos", "nativeSrc": "6317:4:11", "nodeType": "YulIdentifier", "src": "6317:4:11"}]}]}, "evmVersion": "shanghai", "externalReferences": [{"declaration": 2559, "isOffset": false, "isSlot": false, "src": "6073:11:11", "valueSize": 1}, {"declaration": 2559, "isOffset": false, "isSlot": false, "src": "6092:11:11", "valueSize": 1}, {"declaration": 2565, "isOffset": false, "isSlot": false, "src": "6177:5:11", "valueSize": 1}, {"declaration": 2565, "isOffset": false, "isSlot": false, "src": "6190:5:11", "valueSize": 1}, {"declaration": 2596, "isOffset": false, "isSlot": false, "src": "6105:4:11", "valueSize": 1}, {"declaration": 2596, "isOffset": false, "isSlot": false, "src": "6197:4:11", "valueSize": 1}, {"declaration": 2596, "isOffset": false, "isSlot": false, "src": "6317:4:11", "valueSize": 1}, {"declaration": 2596, "isOffset": false, "isSlot": false, "src": "6340:4:11", "valueSize": 1}, {"declaration": 2596, "isOffset": false, "isSlot": false, "src": "6347:4:11", "valueSize": 1}], "id": 2604, "nodeType": "InlineAssembly", "src": "5999:371:11"}, {"expression": {"id": 2609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2605, "name": "prod0", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "6436:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "|=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2606, "name": "prod1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2571, "src": "6445:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2607, "name": "twos", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2596, "src": "6453:4:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6445:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6436:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2610, "nodeType": "ExpressionStatement", "src": "6436:21:11"}, {"assignments": [2612], "declarations": [{"constant": false, "id": 2612, "mutability": "mutable", "name": "inverse", "nameLocation": "6783:7:11", "nodeType": "VariableDeclaration", "scope": 2676, "src": "6775:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2611, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6775:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2619, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "33", "id": 2613, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6794:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3"}, "value": "3"}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2614, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2559, "src": "6798:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "6794:15:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2616, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "6793:17:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "^", "rightExpression": {"hexValue": "32", "id": 2617, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6813:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "6793:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "6775:39:11"}, {"expression": {"id": 2626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2620, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7031:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "*=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2625, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2621, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7042:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2622, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2559, "src": "7046:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2623, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7060:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7046:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7042:25:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7031:36:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2627, "nodeType": "ExpressionStatement", "src": "7031:36:11"}, {"expression": {"id": 2634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2628, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7100:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "*=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2629, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7111:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2632, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2630, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2559, "src": "7115:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2631, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7129:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7115:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7111:25:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7100:36:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2635, "nodeType": "ExpressionStatement", "src": "7100:36:11"}, {"expression": {"id": 2642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2636, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7170:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "*=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2637, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7181:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2638, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2559, "src": "7185:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2639, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7199:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7185:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7181:25:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7170:36:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2643, "nodeType": "ExpressionStatement", "src": "7170:36:11"}, {"expression": {"id": 2650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2644, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7240:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "*=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2645, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7251:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2646, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2559, "src": "7255:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2647, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7269:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7255:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7251:25:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7240:36:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2651, "nodeType": "ExpressionStatement", "src": "7240:36:11"}, {"expression": {"id": 2658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2652, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7310:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "*=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2653, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7321:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2654, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2559, "src": "7325:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2655, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7339:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7325:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7321:25:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7310:36:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2659, "nodeType": "ExpressionStatement", "src": "7310:36:11"}, {"expression": {"id": 2666, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2660, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7381:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "*=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2665, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 2661, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7392:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2664, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2662, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2559, "src": "7396:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2663, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7410:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7396:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7392:25:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7381:36:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2667, "nodeType": "ExpressionStatement", "src": "7381:36:11"}, {"expression": {"id": 2672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2668, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2562, "src": "7851:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2671, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2669, "name": "prod0", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2565, "src": "7860:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2670, "name": "inverse", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2612, "src": "7868:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7860:15:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "7851:24:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2673, "nodeType": "ExpressionStatement", "src": "7851:24:11"}, {"expression": {"id": 2674, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2562, "src": "7896:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2563, "id": 2675, "nodeType": "Return", "src": "7889:13:11"}]}]}, "documentation": {"id": 2553, "nodeType": "StructuredDocumentation", "src": "3485:313:11", "text": " @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."}, "id": 2678, "implemented": true, "kind": "function", "modifiers": [], "name": "mulDiv", "nameLocation": "3812:6:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2560, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2555, "mutability": "mutable", "name": "x", "nameLocation": "3827:1:11", "nodeType": "VariableDeclaration", "scope": 2678, "src": "3819:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2554, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3819:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2557, "mutability": "mutable", "name": "y", "nameLocation": "3838:1:11", "nodeType": "VariableDeclaration", "scope": 2678, "src": "3830:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2556, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3830:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2559, "mutability": "mutable", "name": "denominator", "nameLocation": "3849:11:11", "nodeType": "VariableDeclaration", "scope": 2678, "src": "3841:19:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2558, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3841:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3818:43:11"}, "returnParameters": {"id": 2563, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2562, "mutability": "mutable", "name": "result", "nameLocation": "3893:6:11", "nodeType": "VariableDeclaration", "scope": 2678, "src": "3885:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2561, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3885:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3884:16:11"}, "scope": 3344, "src": "3803:4116:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2720, "nodeType": "Block", "src": "8161:192:11", "statements": [{"assignments": [2694], "declarations": [{"constant": false, "id": 2694, "mutability": "mutable", "name": "result", "nameLocation": "8179:6:11", "nodeType": "VariableDeclaration", "scope": 2720, "src": "8171:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2693, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8171:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2700, "initialValue": {"arguments": [{"id": 2696, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2681, "src": "8195:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 2697, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2683, "src": "8198:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 2698, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2685, "src": "8201:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2695, "name": "mulDiv", "nodeType": "Identifier", "overloadedDeclarations": [2678, 2721], "referencedDeclaration": 2678, "src": "8188:6:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 2699, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8188:25:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "8171:42:11"}, {"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2702, "name": "rounding", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2688, "src": "8244:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}], "id": 2701, "name": "unsignedRoundsUp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3343, "src": "8227:16:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$2301_$returns$_t_bool_$", "typeString": "function (enum Math.Rounding) pure returns (bool)"}}, "id": 2703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8227:26:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2710, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2705, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2681, "src": "8264:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 2706, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2683, "src": "8267:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 2707, "name": "denominator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2685, "src": "8270:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2704, "name": "mulmod", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -16, "src": "8257:6:11", "typeDescriptions": {"typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"}}, "id": 2708, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8257:25:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2709, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8285:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "8257:29:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "8227:59:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2717, "nodeType": "IfStatement", "src": "8223:101:11", "trueBody": {"id": 2716, "nodeType": "Block", "src": "8288:36:11", "statements": [{"expression": {"id": 2714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2712, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2694, "src": "8302:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2713, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8312:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "8302:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2715, "nodeType": "ExpressionStatement", "src": "8302:11:11"}]}}, {"expression": {"id": 2718, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2694, "src": "8340:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2692, "id": 2719, "nodeType": "Return", "src": "8333:13:11"}]}, "documentation": {"id": 2679, "nodeType": "StructuredDocumentation", "src": "7925:121:11", "text": " @notice Calculates x * y / denominator with full precision, following the selected rounding direction."}, "id": 2721, "implemented": true, "kind": "function", "modifiers": [], "name": "mulDiv", "nameLocation": "8060:6:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2689, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2681, "mutability": "mutable", "name": "x", "nameLocation": "8075:1:11", "nodeType": "VariableDeclaration", "scope": 2721, "src": "8067:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8067:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2683, "mutability": "mutable", "name": "y", "nameLocation": "8086:1:11", "nodeType": "VariableDeclaration", "scope": 2721, "src": "8078:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2682, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8078:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2685, "mutability": "mutable", "name": "denominator", "nameLocation": "8097:11:11", "nodeType": "VariableDeclaration", "scope": 2721, "src": "8089:19:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2684, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8089:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2688, "mutability": "mutable", "name": "rounding", "nameLocation": "8119:8:11", "nodeType": "VariableDeclaration", "scope": 2721, "src": "8110:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}, "typeName": {"id": 2687, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2686, "name": "Rounding", "nameLocations": ["8110:8:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2301, "src": "8110:8:11"}, "referencedDeclaration": 2301, "src": "8110:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}, "visibility": "internal"}], "src": "8066:62:11"}, "returnParameters": {"id": 2692, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2691, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2721, "src": "8152:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2690, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8152:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "8151:9:11"}, "scope": 3344, "src": "8051:302:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2832, "nodeType": "Block", "src": "8644:1585:11", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2729, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2724, "src": "8658:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 2730, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8663:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "8658:6:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2735, "nodeType": "IfStatement", "src": "8654:45:11", "trueBody": {"id": 2734, "nodeType": "Block", "src": "8666:33:11", "statements": [{"expression": {"hexValue": "30", "id": 2732, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8687:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "functionReturnParameters": 2728, "id": 2733, "nodeType": "Return", "src": "8680:8:11"}]}}, {"assignments": [2737], "declarations": [{"constant": false, "id": 2737, "mutability": "mutable", "name": "result", "nameLocation": "9386:6:11", "nodeType": "VariableDeclaration", "scope": 2832, "src": "9378:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2736, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9378:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2746, "initialValue": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2745, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "31", "id": 2738, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9395:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "nodeType": "BinaryOperation", "operator": "<<", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2743, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2740, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2724, "src": "9406:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2739, "name": "log2", "nodeType": "Identifier", "overloadedDeclarations": [3000, 3035], "referencedDeclaration": 3000, "src": "9401:4:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 2741, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9401:7:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "31", "id": 2742, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9412:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9401:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2744, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "9400:14:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9395:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "9378:36:11"}, {"id": 2831, "nodeType": "UncheckedBlock", "src": "9815:408:11", "statements": [{"expression": {"id": 2756, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2747, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "9839:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2755, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2752, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2748, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "9849:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2751, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2749, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2724, "src": "9858:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2750, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "9862:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9858:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9849:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2753, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "9848:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "31", "id": 2754, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9873:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9848:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9839:35:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2757, "nodeType": "ExpressionStatement", "src": "9839:35:11"}, {"expression": {"id": 2767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2758, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "9888:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2763, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2759, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "9898:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2762, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2760, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2724, "src": "9907:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2761, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "9911:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9907:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9898:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2764, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "9897:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "31", "id": 2765, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9922:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9897:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9888:35:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2768, "nodeType": "ExpressionStatement", "src": "9888:35:11"}, {"expression": {"id": 2778, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2769, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "9937:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2777, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2770, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "9947:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2773, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2771, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2724, "src": "9956:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2772, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "9960:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9956:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9947:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2775, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "9946:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "31", "id": 2776, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9971:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9946:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9937:35:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2779, "nodeType": "ExpressionStatement", "src": "9937:35:11"}, {"expression": {"id": 2789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2780, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "9986:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2788, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2781, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "9996:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2782, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2724, "src": "10005:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2783, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10009:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10005:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9996:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2786, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "9995:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "31", "id": 2787, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10020:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "9995:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "9986:35:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2790, "nodeType": "ExpressionStatement", "src": "9986:35:11"}, {"expression": {"id": 2800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2791, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10035:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2799, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2796, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2792, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10045:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2793, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2724, "src": "10054:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2794, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10058:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10054:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10045:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2797, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10044:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "31", "id": 2798, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10069:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "10044:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10035:35:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2801, "nodeType": "ExpressionStatement", "src": "10035:35:11"}, {"expression": {"id": 2811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2802, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10084:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2810, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2803, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10094:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2806, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2804, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2724, "src": "10103:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2805, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10107:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10103:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10094:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2808, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10093:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "31", "id": 2809, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10118:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "10093:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10084:35:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2812, "nodeType": "ExpressionStatement", "src": "10084:35:11"}, {"expression": {"id": 2822, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2813, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10133:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2818, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2814, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10143:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2815, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2724, "src": "10152:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2816, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10156:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10152:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10143:19:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 2819, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10142:21:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "31", "id": 2820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10167:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "10142:26:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10133:35:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2823, "nodeType": "ExpressionStatement", "src": "10133:35:11"}, {"expression": {"arguments": [{"id": 2825, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10193:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2826, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2724, "src": "10201:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 2827, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2737, "src": "10205:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10201:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2824, "name": "min", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2495, "src": "10189:3:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)"}}, "id": 2829, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10189:23:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2728, "id": 2830, "nodeType": "Return", "src": "10182:30:11"}]}]}, "documentation": {"id": 2722, "nodeType": "StructuredDocumentation", "src": "8359:223:11", "text": " @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."}, "id": 2833, "implemented": true, "kind": "function", "modifiers": [], "name": "sqrt", "nameLocation": "8596:4:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2725, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2724, "mutability": "mutable", "name": "a", "nameLocation": "8609:1:11", "nodeType": "VariableDeclaration", "scope": 2833, "src": "8601:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2723, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8601:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "8600:11:11"}, "returnParameters": {"id": 2728, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2727, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2833, "src": "8635:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2726, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8635:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "8634:9:11"}, "scope": 3344, "src": "8587:1642:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2867, "nodeType": "Block", "src": "10405:164:11", "statements": [{"id": 2866, "nodeType": "UncheckedBlock", "src": "10415:148:11", "statements": [{"assignments": [2845], "declarations": [{"constant": false, "id": 2845, "mutability": "mutable", "name": "result", "nameLocation": "10447:6:11", "nodeType": "VariableDeclaration", "scope": 2866, "src": "10439:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2844, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10439:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2849, "initialValue": {"arguments": [{"id": 2847, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2836, "src": "10461:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 2846, "name": "sqrt", "nodeType": "Identifier", "overloadedDeclarations": [2833, 2868], "referencedDeclaration": 2833, "src": "10456:4:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 2848, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10456:7:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "10439:24:11"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2850, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2845, "src": "10484:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"components": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 2859, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 2852, "name": "rounding", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2839, "src": "10511:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}], "id": 2851, "name": "unsignedRoundsUp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3343, "src": "10494:16:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$2301_$returns$_t_bool_$", "typeString": "function (enum Math.Rounding) pure returns (bool)"}}, "id": 2853, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10494:26:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2856, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2854, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2845, "src": "10524:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 2855, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2845, "src": "10533:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10524:15:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 2857, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2836, "src": "10542:1:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "10524:19:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "10494:49:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"hexValue": "30", "id": 2861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10550:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "id": 2862, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "10494:57:11", "trueExpression": {"hexValue": "31", "id": 2860, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10546:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "id": 2863, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "10493:59:11", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "10484:68:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2843, "id": 2865, "nodeType": "Return", "src": "10477:75:11"}]}]}, "documentation": {"id": 2834, "nodeType": "StructuredDocumentation", "src": "10235:89:11", "text": " @notice Calculates sqrt(a), following the selected rounding direction."}, "id": 2868, "implemented": true, "kind": "function", "modifiers": [], "name": "sqrt", "nameLocation": "10338:4:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2840, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2836, "mutability": "mutable", "name": "a", "nameLocation": "10351:1:11", "nodeType": "VariableDeclaration", "scope": 2868, "src": "10343:9:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2835, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10343:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 2839, "mutability": "mutable", "name": "rounding", "nameLocation": "10363:8:11", "nodeType": "VariableDeclaration", "scope": 2868, "src": "10354:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}, "typeName": {"id": 2838, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 2837, "name": "Rounding", "nameLocations": ["10354:8:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2301, "src": "10354:8:11"}, "referencedDeclaration": 2301, "src": "10354:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}, "visibility": "internal"}], "src": "10342:30:11"}, "returnParameters": {"id": 2843, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2842, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2868, "src": "10396:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2841, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10396:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10395:9:11"}, "scope": 3344, "src": "10329:240:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 2999, "nodeType": "Block", "src": "10760:922:11", "statements": [{"assignments": [2877], "declarations": [{"constant": false, "id": 2877, "mutability": "mutable", "name": "result", "nameLocation": "10778:6:11", "nodeType": "VariableDeclaration", "scope": 2999, "src": "10770:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2876, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10770:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 2879, "initialValue": {"hexValue": "30", "id": 2878, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10787:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "10770:18:11"}, {"id": 2996, "nodeType": "UncheckedBlock", "src": "10798:855:11", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2884, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2882, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2880, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "10826:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "313238", "id": 2881, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10835:3:11", "typeDescriptions": {"typeIdentifier": "t_rational_128_by_1", "typeString": "int_const 128"}, "value": "128"}, "src": "10826:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2883, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10841:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "10826:16:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2894, "nodeType": "IfStatement", "src": "10822:99:11", "trueBody": {"id": 2893, "nodeType": "Block", "src": "10844:77:11", "statements": [{"expression": {"id": 2887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2885, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "10862:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "313238", "id": 2886, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10872:3:11", "typeDescriptions": {"typeIdentifier": "t_rational_128_by_1", "typeString": "int_const 128"}, "value": "128"}, "src": "10862:13:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2888, "nodeType": "ExpressionStatement", "src": "10862:13:11"}, {"expression": {"id": 2891, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2889, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "10893:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "313238", "id": 2890, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10903:3:11", "typeDescriptions": {"typeIdentifier": "t_rational_128_by_1", "typeString": "int_const 128"}, "value": "128"}, "src": "10893:13:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2892, "nodeType": "ExpressionStatement", "src": "10893:13:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2897, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2895, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "10938:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "3634", "id": 2896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10947:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "10938:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2898, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10952:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "10938:15:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2909, "nodeType": "IfStatement", "src": "10934:96:11", "trueBody": {"id": 2908, "nodeType": "Block", "src": "10955:75:11", "statements": [{"expression": {"id": 2902, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2900, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "10973:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "3634", "id": 2901, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10983:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "10973:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2903, "nodeType": "ExpressionStatement", "src": "10973:12:11"}, {"expression": {"id": 2906, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2904, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "11003:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "3634", "id": 2905, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11013:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "11003:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2907, "nodeType": "ExpressionStatement", "src": "11003:12:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2912, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2910, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "11047:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "3332", "id": 2911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11056:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "11047:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11061:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "11047:15:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2924, "nodeType": "IfStatement", "src": "11043:96:11", "trueBody": {"id": 2923, "nodeType": "Block", "src": "11064:75:11", "statements": [{"expression": {"id": 2917, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2915, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "11082:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "3332", "id": 2916, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11092:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "11082:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2918, "nodeType": "ExpressionStatement", "src": "11082:12:11"}, {"expression": {"id": 2921, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2919, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "11112:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "3332", "id": 2920, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11122:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "11112:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2922, "nodeType": "ExpressionStatement", "src": "11112:12:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2929, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2927, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2925, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "11156:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "3136", "id": 2926, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11165:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16"}, "value": "16"}, "src": "11156:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11170:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "11156:15:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2939, "nodeType": "IfStatement", "src": "11152:96:11", "trueBody": {"id": 2938, "nodeType": "Block", "src": "11173:75:11", "statements": [{"expression": {"id": 2932, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2930, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "11191:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "3136", "id": 2931, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11201:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16"}, "value": "16"}, "src": "11191:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2933, "nodeType": "ExpressionStatement", "src": "11191:12:11"}, {"expression": {"id": 2936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2934, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "11221:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "3136", "id": 2935, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11231:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16"}, "value": "16"}, "src": "11221:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2937, "nodeType": "ExpressionStatement", "src": "11221:12:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2940, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "11265:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "38", "id": 2941, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11274:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "11265:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2943, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11278:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "11265:14:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2954, "nodeType": "IfStatement", "src": "11261:93:11", "trueBody": {"id": 2953, "nodeType": "Block", "src": "11281:73:11", "statements": [{"expression": {"id": 2947, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2945, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "11299:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "38", "id": 2946, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11309:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "11299:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2948, "nodeType": "ExpressionStatement", "src": "11299:11:11"}, {"expression": {"id": 2951, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2949, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "11328:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "38", "id": 2950, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11338:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "11328:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2952, "nodeType": "ExpressionStatement", "src": "11328:11:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2959, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2957, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2955, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "11371:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "34", "id": 2956, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11380:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "11371:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2958, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11384:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "11371:14:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2969, "nodeType": "IfStatement", "src": "11367:93:11", "trueBody": {"id": 2968, "nodeType": "Block", "src": "11387:73:11", "statements": [{"expression": {"id": 2962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2960, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "11405:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "34", "id": 2961, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11415:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "11405:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2963, "nodeType": "ExpressionStatement", "src": "11405:11:11"}, {"expression": {"id": 2966, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2964, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "11434:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "34", "id": 2965, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11444:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "11434:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2967, "nodeType": "ExpressionStatement", "src": "11434:11:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2972, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2970, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "11477:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "32", "id": 2971, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11486:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "11477:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2973, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11490:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "11477:14:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2984, "nodeType": "IfStatement", "src": "11473:93:11", "trueBody": {"id": 2983, "nodeType": "Block", "src": "11493:73:11", "statements": [{"expression": {"id": 2977, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2975, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "11511:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "32", "id": 2976, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11521:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "11511:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2978, "nodeType": "ExpressionStatement", "src": "11511:11:11"}, {"expression": {"id": 2981, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2979, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "11540:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "32", "id": 2980, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11550:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "11540:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2982, "nodeType": "ExpressionStatement", "src": "11540:11:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2989, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 2987, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 2985, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2871, "src": "11583:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "31", "id": 2986, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11592:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "11583:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 2988, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11596:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "11583:14:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 2995, "nodeType": "IfStatement", "src": "11579:64:11", "trueBody": {"id": 2994, "nodeType": "Block", "src": "11599:44:11", "statements": [{"expression": {"id": 2992, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 2990, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "11617:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 2991, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "11627:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "11617:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 2993, "nodeType": "ExpressionStatement", "src": "11617:11:11"}]}}]}, {"expression": {"id": 2997, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2877, "src": "11669:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 2875, "id": 2998, "nodeType": "Return", "src": "11662:13:11"}]}, "documentation": {"id": 2869, "nodeType": "StructuredDocumentation", "src": "10575:119:11", "text": " @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."}, "id": 3000, "implemented": true, "kind": "function", "modifiers": [], "name": "log2", "nameLocation": "10708:4:11", "nodeType": "FunctionDefinition", "parameters": {"id": 2872, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2871, "mutability": "mutable", "name": "value", "nameLocation": "10721:5:11", "nodeType": "VariableDeclaration", "scope": 3000, "src": "10713:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2870, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10713:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10712:15:11"}, "returnParameters": {"id": 2875, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 2874, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3000, "src": "10751:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 2873, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10751:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "10750:9:11"}, "scope": 3344, "src": "10699:983:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3034, "nodeType": "Block", "src": "11915:168:11", "statements": [{"id": 3033, "nodeType": "UncheckedBlock", "src": "11925:152:11", "statements": [{"assignments": [3012], "declarations": [{"constant": false, "id": 3012, "mutability": "mutable", "name": "result", "nameLocation": "11957:6:11", "nodeType": "VariableDeclaration", "scope": 3033, "src": "11949:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3011, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11949:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3016, "initialValue": {"arguments": [{"id": 3014, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3003, "src": "11971:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3013, "name": "log2", "nodeType": "Identifier", "overloadedDeclarations": [3000, 3035], "referencedDeclaration": 3000, "src": "11966:4:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 3015, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11966:11:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "11949:28:11"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3017, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3012, "src": "11998:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"components": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 3026, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 3019, "name": "rounding", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3006, "src": "12025:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}], "id": 3018, "name": "unsignedRoundsUp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3343, "src": "12008:16:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$2301_$returns$_t_bool_$", "typeString": "function (enum Math.Rounding) pure returns (bool)"}}, "id": 3020, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "12008:26:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3023, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "31", "id": 3021, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12038:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "nodeType": "BinaryOperation", "operator": "<<", "rightExpression": {"id": 3022, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3012, "src": "12043:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12038:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 3024, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3003, "src": "12052:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "12038:19:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "12008:49:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"hexValue": "30", "id": 3028, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12064:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "id": 3029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "12008:57:11", "trueExpression": {"hexValue": "31", "id": 3027, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12060:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "id": 3030, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "12007:59:11", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "11998:68:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 3010, "id": 3032, "nodeType": "Return", "src": "11991:75:11"}]}]}, "documentation": {"id": 3001, "nodeType": "StructuredDocumentation", "src": "11688:142:11", "text": " @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."}, "id": 3035, "implemented": true, "kind": "function", "modifiers": [], "name": "log2", "nameLocation": "11844:4:11", "nodeType": "FunctionDefinition", "parameters": {"id": 3007, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3003, "mutability": "mutable", "name": "value", "nameLocation": "11857:5:11", "nodeType": "VariableDeclaration", "scope": 3035, "src": "11849:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3002, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11849:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 3006, "mutability": "mutable", "name": "rounding", "nameLocation": "11873:8:11", "nodeType": "VariableDeclaration", "scope": 3035, "src": "11864:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}, "typeName": {"id": 3005, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3004, "name": "Rounding", "nameLocations": ["11864:8:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2301, "src": "11864:8:11"}, "referencedDeclaration": 2301, "src": "11864:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}, "visibility": "internal"}], "src": "11848:34:11"}, "returnParameters": {"id": 3010, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3009, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3035, "src": "11906:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3008, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11906:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "11905:9:11"}, "scope": 3344, "src": "11835:248:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3163, "nodeType": "Block", "src": "12276:854:11", "statements": [{"assignments": [3044], "declarations": [{"constant": false, "id": 3044, "mutability": "mutable", "name": "result", "nameLocation": "12294:6:11", "nodeType": "VariableDeclaration", "scope": 3163, "src": "12286:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3043, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12286:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3046, "initialValue": {"hexValue": "30", "id": 3045, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12303:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "12286:18:11"}, {"id": 3160, "nodeType": "UncheckedBlock", "src": "12314:787:11", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3051, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3047, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12342:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"commonType": {"typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", "typeString": "int_const 1000...(57 digits omitted)...0000"}, "id": 3050, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3048, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12351:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 3049, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12357:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "12351:8:11", "typeDescriptions": {"typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", "typeString": "int_const 1000...(57 digits omitted)...0000"}}, "src": "12342:17:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3063, "nodeType": "IfStatement", "src": "12338:103:11", "trueBody": {"id": 3062, "nodeType": "Block", "src": "12361:80:11", "statements": [{"expression": {"id": 3056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3052, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12379:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", "typeString": "int_const 1000...(57 digits omitted)...0000"}, "id": 3055, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3053, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12388:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 3054, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12394:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "12388:8:11", "typeDescriptions": {"typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", "typeString": "int_const 1000...(57 digits omitted)...0000"}}, "src": "12379:17:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3057, "nodeType": "ExpressionStatement", "src": "12379:17:11"}, {"expression": {"id": 3060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3058, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "12414:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "3634", "id": 3059, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12424:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "12414:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3061, "nodeType": "ExpressionStatement", "src": "12414:12:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3064, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12458:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"commonType": {"typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", "typeString": "int_const 1000...(25 digits omitted)...0000"}, "id": 3067, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3065, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12467:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3332", "id": 3066, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12473:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "12467:8:11", "typeDescriptions": {"typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", "typeString": "int_const 1000...(25 digits omitted)...0000"}}, "src": "12458:17:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3080, "nodeType": "IfStatement", "src": "12454:103:11", "trueBody": {"id": 3079, "nodeType": "Block", "src": "12477:80:11", "statements": [{"expression": {"id": 3073, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3069, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12495:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", "typeString": "int_const 1000...(25 digits omitted)...0000"}, "id": 3072, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3070, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12504:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3332", "id": 3071, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12510:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "12504:8:11", "typeDescriptions": {"typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", "typeString": "int_const 1000...(25 digits omitted)...0000"}}, "src": "12495:17:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3074, "nodeType": "ExpressionStatement", "src": "12495:17:11"}, {"expression": {"id": 3077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3075, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "12530:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "3332", "id": 3076, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12540:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "12530:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3078, "nodeType": "ExpressionStatement", "src": "12530:12:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3081, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12574:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"commonType": {"typeIdentifier": "t_rational_10000000000000000_by_1", "typeString": "int_const 10000000000000000"}, "id": 3084, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3082, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12583:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3136", "id": 3083, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12589:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16"}, "value": "16"}, "src": "12583:8:11", "typeDescriptions": {"typeIdentifier": "t_rational_10000000000000000_by_1", "typeString": "int_const 10000000000000000"}}, "src": "12574:17:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3097, "nodeType": "IfStatement", "src": "12570:103:11", "trueBody": {"id": 3096, "nodeType": "Block", "src": "12593:80:11", "statements": [{"expression": {"id": 3090, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3086, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12611:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000000000000_by_1", "typeString": "int_const 10000000000000000"}, "id": 3089, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12620:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3136", "id": 3088, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12626:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16"}, "value": "16"}, "src": "12620:8:11", "typeDescriptions": {"typeIdentifier": "t_rational_10000000000000000_by_1", "typeString": "int_const 10000000000000000"}}, "src": "12611:17:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3091, "nodeType": "ExpressionStatement", "src": "12611:17:11"}, {"expression": {"id": 3094, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3092, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "12646:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "3136", "id": 3093, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12656:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16"}, "value": "16"}, "src": "12646:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3095, "nodeType": "ExpressionStatement", "src": "12646:12:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3098, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12690:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"commonType": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "id": 3101, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3099, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12699:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "38", "id": 3100, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12705:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "12699:7:11", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}}, "src": "12690:16:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3114, "nodeType": "IfStatement", "src": "12686:100:11", "trueBody": {"id": 3113, "nodeType": "Block", "src": "12708:78:11", "statements": [{"expression": {"id": 3107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3103, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12726:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "id": 3106, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12735:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "38", "id": 3105, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12741:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "12735:7:11", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}}, "src": "12726:16:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3108, "nodeType": "ExpressionStatement", "src": "12726:16:11"}, {"expression": {"id": 3111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3109, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "12760:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "38", "id": 3110, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12770:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "12760:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3112, "nodeType": "ExpressionStatement", "src": "12760:11:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3115, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12803:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"commonType": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "id": 3118, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3116, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12812:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "34", "id": 3117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12818:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "12812:7:11", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}}, "src": "12803:16:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3131, "nodeType": "IfStatement", "src": "12799:100:11", "trueBody": {"id": 3130, "nodeType": "Block", "src": "12821:78:11", "statements": [{"expression": {"id": 3124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3120, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12839:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}, "id": 3123, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12848:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "34", "id": 3122, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12854:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "12848:7:11", "typeDescriptions": {"typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000"}}, "src": "12839:16:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3125, "nodeType": "ExpressionStatement", "src": "12839:16:11"}, {"expression": {"id": 3128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3126, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "12873:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "34", "id": 3127, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12883:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "12873:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3129, "nodeType": "ExpressionStatement", "src": "12873:11:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3132, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12916:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"commonType": {"typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100"}, "id": 3135, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3133, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12925:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "32", "id": 3134, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12931:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "12925:7:11", "typeDescriptions": {"typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100"}}, "src": "12916:16:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3148, "nodeType": "IfStatement", "src": "12912:100:11", "trueBody": {"id": 3147, "nodeType": "Block", "src": "12934:78:11", "statements": [{"expression": {"id": 3141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3137, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "12952:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "/=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100"}, "id": 3140, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3138, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12961:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "32", "id": 3139, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12967:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "12961:7:11", "typeDescriptions": {"typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100"}}, "src": "12952:16:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3142, "nodeType": "ExpressionStatement", "src": "12952:16:11"}, {"expression": {"id": 3145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3143, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "12986:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "32", "id": 3144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12996:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "12986:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3146, "nodeType": "ExpressionStatement", "src": "12986:11:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3149, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3038, "src": "13029:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"commonType": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "id": 3152, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3150, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13038:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "31", "id": 3151, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13044:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "13038:7:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}}, "src": "13029:16:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3159, "nodeType": "IfStatement", "src": "13025:66:11", "trueBody": {"id": 3158, "nodeType": "Block", "src": "13047:44:11", "statements": [{"expression": {"id": 3156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3154, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "13065:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 3155, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13075:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "13065:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3157, "nodeType": "ExpressionStatement", "src": "13065:11:11"}]}}]}, {"expression": {"id": 3161, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3044, "src": "13117:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 3042, "id": 3162, "nodeType": "Return", "src": "13110:13:11"}]}, "documentation": {"id": 3036, "nodeType": "StructuredDocumentation", "src": "12089:120:11", "text": " @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."}, "id": 3164, "implemented": true, "kind": "function", "modifiers": [], "name": "log10", "nameLocation": "12223:5:11", "nodeType": "FunctionDefinition", "parameters": {"id": 3039, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3038, "mutability": "mutable", "name": "value", "nameLocation": "12237:5:11", "nodeType": "VariableDeclaration", "scope": 3164, "src": "12229:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3037, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12229:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "12228:15:11"}, "returnParameters": {"id": 3042, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3041, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3164, "src": "12267:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3040, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12267:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "12266:9:11"}, "scope": 3344, "src": "12214:916:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3198, "nodeType": "Block", "src": "13365:170:11", "statements": [{"id": 3197, "nodeType": "UncheckedBlock", "src": "13375:154:11", "statements": [{"assignments": [3176], "declarations": [{"constant": false, "id": 3176, "mutability": "mutable", "name": "result", "nameLocation": "13407:6:11", "nodeType": "VariableDeclaration", "scope": 3197, "src": "13399:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3175, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13399:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3180, "initialValue": {"arguments": [{"id": 3178, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3167, "src": "13422:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3177, "name": "log10", "nodeType": "Identifier", "overloadedDeclarations": [3164, 3199], "referencedDeclaration": 3164, "src": "13416:5:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 3179, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13416:12:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "13399:29:11"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3181, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3176, "src": "13449:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"components": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 3190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 3183, "name": "rounding", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3170, "src": "13476:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}], "id": 3182, "name": "unsignedRoundsUp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3343, "src": "13459:16:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$2301_$returns$_t_bool_$", "typeString": "function (enum Math.Rounding) pure returns (bool)"}}, "id": 3184, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "13459:26:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "3130", "id": 3185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13489:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"id": 3186, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3176, "src": "13495:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "13489:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 3188, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3167, "src": "13504:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "13489:20:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "13459:50:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"hexValue": "30", "id": 3192, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13516:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "id": 3193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "13459:58:11", "trueExpression": {"hexValue": "31", "id": 3191, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13512:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "id": 3194, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "13458:60:11", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "13449:69:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 3174, "id": 3196, "nodeType": "Return", "src": "13442:76:11"}]}]}, "documentation": {"id": 3165, "nodeType": "StructuredDocumentation", "src": "13136:143:11", "text": " @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."}, "id": 3199, "implemented": true, "kind": "function", "modifiers": [], "name": "log10", "nameLocation": "13293:5:11", "nodeType": "FunctionDefinition", "parameters": {"id": 3171, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3167, "mutability": "mutable", "name": "value", "nameLocation": "13307:5:11", "nodeType": "VariableDeclaration", "scope": 3199, "src": "13299:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3166, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13299:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 3170, "mutability": "mutable", "name": "rounding", "nameLocation": "13323:8:11", "nodeType": "VariableDeclaration", "scope": 3199, "src": "13314:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}, "typeName": {"id": 3169, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3168, "name": "Rounding", "nameLocations": ["13314:8:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2301, "src": "13314:8:11"}, "referencedDeclaration": 2301, "src": "13314:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}, "visibility": "internal"}], "src": "13298:34:11"}, "returnParameters": {"id": 3174, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3173, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3199, "src": "13356:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3172, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13356:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "13355:9:11"}, "scope": 3344, "src": "13284:251:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3285, "nodeType": "Block", "src": "13855:600:11", "statements": [{"assignments": [3208], "declarations": [{"constant": false, "id": 3208, "mutability": "mutable", "name": "result", "nameLocation": "13873:6:11", "nodeType": "VariableDeclaration", "scope": 3285, "src": "13865:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3207, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13865:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3210, "initialValue": {"hexValue": "30", "id": 3209, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13882:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "nodeType": "VariableDeclarationStatement", "src": "13865:18:11"}, {"id": 3282, "nodeType": "UncheckedBlock", "src": "13893:533:11", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3211, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3202, "src": "13921:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "313238", "id": 3212, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13930:3:11", "typeDescriptions": {"typeIdentifier": "t_rational_128_by_1", "typeString": "int_const 128"}, "value": "128"}, "src": "13921:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13936:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "13921:16:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3225, "nodeType": "IfStatement", "src": "13917:98:11", "trueBody": {"id": 3224, "nodeType": "Block", "src": "13939:76:11", "statements": [{"expression": {"id": 3218, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3216, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3202, "src": "13957:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "313238", "id": 3217, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13967:3:11", "typeDescriptions": {"typeIdentifier": "t_rational_128_by_1", "typeString": "int_const 128"}, "value": "128"}, "src": "13957:13:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3219, "nodeType": "ExpressionStatement", "src": "13957:13:11"}, {"expression": {"id": 3222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3220, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3208, "src": "13988:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "3136", "id": 3221, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13998:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16"}, "value": "16"}, "src": "13988:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3223, "nodeType": "ExpressionStatement", "src": "13988:12:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3226, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3202, "src": "14032:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "3634", "id": 3227, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14041:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "14032:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3229, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14046:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14032:15:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3240, "nodeType": "IfStatement", "src": "14028:95:11", "trueBody": {"id": 3239, "nodeType": "Block", "src": "14049:74:11", "statements": [{"expression": {"id": 3233, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3231, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3202, "src": "14067:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "3634", "id": 3232, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14077:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "14067:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3234, "nodeType": "ExpressionStatement", "src": "14067:12:11"}, {"expression": {"id": 3237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3235, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3208, "src": "14097:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "38", "id": 3236, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14107:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "14097:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3238, "nodeType": "ExpressionStatement", "src": "14097:11:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3245, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3241, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3202, "src": "14140:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "3332", "id": 3242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14149:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "14140:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3244, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14154:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14140:15:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3255, "nodeType": "IfStatement", "src": "14136:95:11", "trueBody": {"id": 3254, "nodeType": "Block", "src": "14157:74:11", "statements": [{"expression": {"id": 3248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3246, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3202, "src": "14175:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "3332", "id": 3247, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14185:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32"}, "value": "32"}, "src": "14175:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3249, "nodeType": "ExpressionStatement", "src": "14175:12:11"}, {"expression": {"id": 3252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3250, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3208, "src": "14205:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "34", "id": 3251, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14215:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4"}, "value": "4"}, "src": "14205:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3253, "nodeType": "ExpressionStatement", "src": "14205:11:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3256, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3202, "src": "14248:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "3136", "id": 3257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14257:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16"}, "value": "16"}, "src": "14248:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14262:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14248:15:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3270, "nodeType": "IfStatement", "src": "14244:95:11", "trueBody": {"id": 3269, "nodeType": "Block", "src": "14265:74:11", "statements": [{"expression": {"id": 3263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3261, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3202, "src": "14283:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": ">>=", "rightHandSide": {"hexValue": "3136", "id": 3262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14293:2:11", "typeDescriptions": {"typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16"}, "value": "16"}, "src": "14283:12:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3264, "nodeType": "ExpressionStatement", "src": "14283:12:11"}, {"expression": {"id": 3267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3265, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3208, "src": "14313:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "32", "id": 3266, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14323:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "14313:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3268, "nodeType": "ExpressionStatement", "src": "14313:11:11"}]}}, {"condition": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3271, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3202, "src": "14356:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "38", "id": 3272, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14365:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8"}, "value": "8"}, "src": "14356:10:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 3274, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14369:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "14356:14:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 3281, "nodeType": "IfStatement", "src": "14352:64:11", "trueBody": {"id": 3280, "nodeType": "Block", "src": "14372:44:11", "statements": [{"expression": {"id": 3278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"id": 3276, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3208, "src": "14390:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 3277, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14400:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "14390:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 3279, "nodeType": "ExpressionStatement", "src": "14390:11:11"}]}}]}, {"expression": {"id": 3283, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3208, "src": "14442:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 3206, "id": 3284, "nodeType": "Return", "src": "14435:13:11"}]}, "documentation": {"id": 3200, "nodeType": "StructuredDocumentation", "src": "13541:246:11", "text": " @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."}, "id": 3286, "implemented": true, "kind": "function", "modifiers": [], "name": "log256", "nameLocation": "13801:6:11", "nodeType": "FunctionDefinition", "parameters": {"id": 3203, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3202, "mutability": "mutable", "name": "value", "nameLocation": "13816:5:11", "nodeType": "VariableDeclaration", "scope": 3286, "src": "13808:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3201, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13808:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "13807:15:11"}, "returnParameters": {"id": 3206, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3205, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3286, "src": "13846:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3204, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13846:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "13845:9:11"}, "scope": 3344, "src": "13792:663:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3323, "nodeType": "Block", "src": "14692:177:11", "statements": [{"id": 3322, "nodeType": "UncheckedBlock", "src": "14702:161:11", "statements": [{"assignments": [3298], "declarations": [{"constant": false, "id": 3298, "mutability": "mutable", "name": "result", "nameLocation": "14734:6:11", "nodeType": "VariableDeclaration", "scope": 3322, "src": "14726:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3297, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14726:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 3302, "initialValue": {"arguments": [{"id": 3300, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3289, "src": "14750:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3299, "name": "log256", "nodeType": "Identifier", "overloadedDeclarations": [3286, 3324], "referencedDeclaration": 3286, "src": "14743:6:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 3301, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14743:13:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "14726:30:11"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3303, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3298, "src": "14777:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"components": [{"condition": {"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 3315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 3305, "name": "rounding", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3292, "src": "14804:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}], "id": 3304, "name": "unsignedRoundsUp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3343, "src": "14787:16:11", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$2301_$returns$_t_bool_$", "typeString": "function (enum Math.Rounding) pure returns (bool)"}}, "id": 3306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "14787:26:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"hexValue": "31", "id": 3307, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14817:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "nodeType": "BinaryOperation", "operator": "<<", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3310, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3308, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3298, "src": "14823:6:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<<", "rightExpression": {"hexValue": "33", "id": 3309, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14833:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3"}, "value": "3"}, "src": "14823:11:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 3311, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "14822:13:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "14817:18:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 3313, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3289, "src": "14838:5:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "14817:26:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "14787:56:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"hexValue": "30", "id": 3317, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14850:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "id": 3318, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "14787:64:11", "trueExpression": {"hexValue": "31", "id": 3316, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "14846:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}], "id": 3319, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "14786:66:11", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "src": "14777:75:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 3296, "id": 3321, "nodeType": "Return", "src": "14770:82:11"}]}]}, "documentation": {"id": 3287, "nodeType": "StructuredDocumentation", "src": "14461:144:11", "text": " @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."}, "id": 3324, "implemented": true, "kind": "function", "modifiers": [], "name": "log256", "nameLocation": "14619:6:11", "nodeType": "FunctionDefinition", "parameters": {"id": 3293, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3289, "mutability": "mutable", "name": "value", "nameLocation": "14634:5:11", "nodeType": "VariableDeclaration", "scope": 3324, "src": "14626:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3288, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14626:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 3292, "mutability": "mutable", "name": "rounding", "nameLocation": "14650:8:11", "nodeType": "VariableDeclaration", "scope": 3324, "src": "14641:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}, "typeName": {"id": 3291, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3290, "name": "Rounding", "nameLocations": ["14641:8:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2301, "src": "14641:8:11"}, "referencedDeclaration": 2301, "src": "14641:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}, "visibility": "internal"}], "src": "14625:34:11"}, "returnParameters": {"id": 3296, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3295, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3324, "src": "14683:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3294, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14683:7:11", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "14682:9:11"}, "scope": 3344, "src": "14610:259:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3342, "nodeType": "Block", "src": "15067:48:11", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 3340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint8", "typeString": "uint8"}, "id": 3338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 3335, "name": "rounding", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3328, "src": "15090:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}], "id": 3334, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "15084:5:11", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)"}, "typeName": {"id": 3333, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "15084:5:11", "typeDescriptions": {}}}, "id": 3336, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "15084:15:11", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"hexValue": "32", "id": 3337, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15102:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "src": "15084:19:11", "typeDescriptions": {"typeIdentifier": "t_uint8", "typeString": "uint8"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "31", "id": 3339, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "15107:1:11", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "15084:24:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 3332, "id": 3341, "nodeType": "Return", "src": "15077:31:11"}]}, "documentation": {"id": 3325, "nodeType": "StructuredDocumentation", "src": "14875:113:11", "text": " @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."}, "id": 3343, "implemented": true, "kind": "function", "modifiers": [], "name": "unsignedRoundsUp", "nameLocation": "15002:16:11", "nodeType": "FunctionDefinition", "parameters": {"id": 3329, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3328, "mutability": "mutable", "name": "rounding", "nameLocation": "15028:8:11", "nodeType": "VariableDeclaration", "scope": 3343, "src": "15019:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}, "typeName": {"id": 3327, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 3326, "name": "Rounding", "nameLocations": ["15019:8:11"], "nodeType": "IdentifierPath", "referencedDeclaration": 2301, "src": "15019:8:11"}, "referencedDeclaration": 2301, "src": "15019:8:11", "typeDescriptions": {"typeIdentifier": "t_enum$_Rounding_$2301", "typeString": "enum Math.Rounding"}}, "visibility": "internal"}], "src": "15018:19:11"}, "returnParameters": {"id": 3332, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3331, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3343, "src": "15061:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 3330, "name": "bool", "nodeType": "ElementaryTypeName", "src": "15061:4:11", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "15060:6:11"}, "scope": 3344, "src": "14993:122:11", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 3345, "src": "203:14914:11", "usedErrors": [2296], "usedEvents": []}], "src": "103:15015:11"}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": {"AST": {"absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol", "exportedSymbols": {"SignedMath": [3449]}, "id": 3450, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 3346, "literals": ["solidity", "^", "0.8", ".20"], "nodeType": "PragmaDirective", "src": "109:24:12"}, {"abstract": false, "baseContracts": [], "canonicalName": "SignedMath", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 3347, "nodeType": "StructuredDocumentation", "src": "135:80:12", "text": " @dev Standard signed math utilities missing in the Solidity language."}, "fullyImplemented": true, "id": 3449, "linearizedBaseContracts": [3449], "name": "SignedMath", "nameLocation": "224:10:12", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 3364, "nodeType": "Block", "src": "376:37:12", "statements": [{"expression": {"condition": {"commonType": {"typeIdentifier": "t_int256", "typeString": "int256"}, "id": 3359, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3357, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3350, "src": "393:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 3358, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3352, "src": "397:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "src": "393:5:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"id": 3361, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3352, "src": "405:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "id": 3362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "393:13:12", "trueExpression": {"id": 3360, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3350, "src": "401:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "functionReturnParameters": 3356, "id": 3363, "nodeType": "Return", "src": "386:20:12"}]}, "documentation": {"id": 3348, "nodeType": "StructuredDocumentation", "src": "241:66:12", "text": " @dev Returns the largest of two signed numbers."}, "id": 3365, "implemented": true, "kind": "function", "modifiers": [], "name": "max", "nameLocation": "321:3:12", "nodeType": "FunctionDefinition", "parameters": {"id": 3353, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3350, "mutability": "mutable", "name": "a", "nameLocation": "332:1:12", "nodeType": "VariableDeclaration", "scope": 3365, "src": "325:8:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 3349, "name": "int256", "nodeType": "ElementaryTypeName", "src": "325:6:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}, {"constant": false, "id": 3352, "mutability": "mutable", "name": "b", "nameLocation": "342:1:12", "nodeType": "VariableDeclaration", "scope": 3365, "src": "335:8:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 3351, "name": "int256", "nodeType": "ElementaryTypeName", "src": "335:6:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}], "src": "324:20:12"}, "returnParameters": {"id": 3356, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3355, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3365, "src": "368:6:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 3354, "name": "int256", "nodeType": "ElementaryTypeName", "src": "368:6:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}], "src": "367:8:12"}, "scope": 3449, "src": "312:101:12", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3382, "nodeType": "Block", "src": "555:37:12", "statements": [{"expression": {"condition": {"commonType": {"typeIdentifier": "t_int256", "typeString": "int256"}, "id": 3377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3375, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3368, "src": "572:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 3376, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3370, "src": "576:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "src": "572:5:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"id": 3379, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3370, "src": "584:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "id": 3380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "572:13:12", "trueExpression": {"id": 3378, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3368, "src": "580:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "functionReturnParameters": 3374, "id": 3381, "nodeType": "Return", "src": "565:20:12"}]}, "documentation": {"id": 3366, "nodeType": "StructuredDocumentation", "src": "419:67:12", "text": " @dev Returns the smallest of two signed numbers."}, "id": 3383, "implemented": true, "kind": "function", "modifiers": [], "name": "min", "nameLocation": "500:3:12", "nodeType": "FunctionDefinition", "parameters": {"id": 3371, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3368, "mutability": "mutable", "name": "a", "nameLocation": "511:1:12", "nodeType": "VariableDeclaration", "scope": 3383, "src": "504:8:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 3367, "name": "int256", "nodeType": "ElementaryTypeName", "src": "504:6:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}, {"constant": false, "id": 3370, "mutability": "mutable", "name": "b", "nameLocation": "521:1:12", "nodeType": "VariableDeclaration", "scope": 3383, "src": "514:8:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 3369, "name": "int256", "nodeType": "ElementaryTypeName", "src": "514:6:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}], "src": "503:20:12"}, "returnParameters": {"id": 3374, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3373, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3383, "src": "547:6:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 3372, "name": "int256", "nodeType": "ElementaryTypeName", "src": "547:6:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}], "src": "546:8:12"}, "scope": 3449, "src": "491:101:12", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3426, "nodeType": "Block", "src": "797:162:12", "statements": [{"assignments": [3394], "declarations": [{"constant": false, "id": 3394, "mutability": "mutable", "name": "x", "nameLocation": "866:1:12", "nodeType": "VariableDeclaration", "scope": 3426, "src": "859:8:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 3393, "name": "int256", "nodeType": "ElementaryTypeName", "src": "859:6:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}], "id": 3407, "initialValue": {"commonType": {"typeIdentifier": "t_int256", "typeString": "int256"}, "id": 3406, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_int256", "typeString": "int256"}, "id": 3397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3395, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3386, "src": "871:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"id": 3396, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3388, "src": "875:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "src": "871:5:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}], "id": 3398, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "870:7:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_int256", "typeString": "int256"}, "id": 3404, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_int256", "typeString": "int256"}, "id": 3401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3399, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3386, "src": "882:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "BinaryOperation", "operator": "^", "rightExpression": {"id": 3400, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3388, "src": "886:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "src": "882:5:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}], "id": 3402, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "881:7:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "31", "id": 3403, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "892:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "881:12:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}], "id": 3405, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "880:14:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "src": "870:24:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "VariableDeclarationStatement", "src": "859:35:12"}, {"expression": {"commonType": {"typeIdentifier": "t_int256", "typeString": "int256"}, "id": 3424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3408, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3394, "src": "911:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_int256", "typeString": "int256"}, "id": 3422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 3416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 3413, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3394, "src": "931:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_int256", "typeString": "int256"}], "id": 3412, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "923:7:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 3411, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "923:7:12", "typeDescriptions": {}}}, "id": 3414, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "923:10:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">>", "rightExpression": {"hexValue": "323535", "id": 3415, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "937:3:12", "typeDescriptions": {"typeIdentifier": "t_rational_255_by_1", "typeString": "int_const 255"}, "value": "255"}, "src": "923:17:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 3410, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "916:6:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_int256_$", "typeString": "type(int256)"}, "typeName": {"id": 3409, "name": "int256", "nodeType": "ElementaryTypeName", "src": "916:6:12", "typeDescriptions": {}}}, "id": 3417, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "916:25:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "BinaryOperation", "operator": "&", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_int256", "typeString": "int256"}, "id": 3420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3418, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3386, "src": "945:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "BinaryOperation", "operator": "^", "rightExpression": {"id": 3419, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3388, "src": "949:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "src": "945:5:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}], "id": 3421, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "944:7:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "src": "916:35:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}], "id": 3423, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "915:37:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "src": "911:41:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "functionReturnParameters": 3392, "id": 3425, "nodeType": "Return", "src": "904:48:12"}]}, "documentation": {"id": 3384, "nodeType": "StructuredDocumentation", "src": "598:126:12", "text": " @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."}, "id": 3427, "implemented": true, "kind": "function", "modifiers": [], "name": "average", "nameLocation": "738:7:12", "nodeType": "FunctionDefinition", "parameters": {"id": 3389, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3386, "mutability": "mutable", "name": "a", "nameLocation": "753:1:12", "nodeType": "VariableDeclaration", "scope": 3427, "src": "746:8:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 3385, "name": "int256", "nodeType": "ElementaryTypeName", "src": "746:6:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}, {"constant": false, "id": 3388, "mutability": "mutable", "name": "b", "nameLocation": "763:1:12", "nodeType": "VariableDeclaration", "scope": 3427, "src": "756:8:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 3387, "name": "int256", "nodeType": "ElementaryTypeName", "src": "756:6:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}], "src": "745:20:12"}, "returnParameters": {"id": 3392, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3391, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3427, "src": "789:6:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 3390, "name": "int256", "nodeType": "ElementaryTypeName", "src": "789:6:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}], "src": "788:8:12"}, "scope": 3449, "src": "729:230:12", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 3447, "nodeType": "Block", "src": "1103:158:12", "statements": [{"id": 3446, "nodeType": "UncheckedBlock", "src": "1113:142:12", "statements": [{"expression": {"arguments": [{"condition": {"commonType": {"typeIdentifier": "t_int256", "typeString": "int256"}, "id": 3439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 3437, "name": "n", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3430, "src": "1228:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": {"hexValue": "30", "id": 3438, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1233:1:12", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1228:6:12", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"id": 3442, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "-", "prefix": true, "src": "1241:2:12", "subExpression": {"id": 3441, "name": "n", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3430, "src": "1242:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "id": 3443, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1228:15:12", "trueExpression": {"id": 3440, "name": "n", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3430, "src": "1237:1:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_int256", "typeString": "int256"}], "id": 3436, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1220:7:12", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 3435, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1220:7:12", "typeDescriptions": {}}}, "id": 3444, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1220:24:12", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 3434, "id": 3445, "nodeType": "Return", "src": "1213:31:12"}]}]}, "documentation": {"id": 3428, "nodeType": "StructuredDocumentation", "src": "965:78:12", "text": " @dev Returns the absolute unsigned value of a signed value."}, "id": 3448, "implemented": true, "kind": "function", "modifiers": [], "name": "abs", "nameLocation": "1057:3:12", "nodeType": "FunctionDefinition", "parameters": {"id": 3431, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3430, "mutability": "mutable", "name": "n", "nameLocation": "1068:1:12", "nodeType": "VariableDeclaration", "scope": 3448, "src": "1061:8:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}, "typeName": {"id": 3429, "name": "int256", "nodeType": "ElementaryTypeName", "src": "1061:6:12", "typeDescriptions": {"typeIdentifier": "t_int256", "typeString": "int256"}}, "visibility": "internal"}], "src": "1060:10:12"}, "returnParameters": {"id": 3434, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 3433, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 3448, "src": "1094:7:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 3432, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1094:7:12", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1093:9:12"}, "scope": 3449, "src": "1048:213:12", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 3450, "src": "216:1047:12", "usedErrors": [], "usedEvents": []}], "src": "109:1155:12"}}, "/Users/fabian/Code/ItemBlocks/contract/src/ItemBlocks.sol": {"AST": {"absolutePath": "src/ItemBlocks.sol", "exportedSymbols": {"Context": [1699], "ERC165": [2278], "ERC721": [1669], "IERC165": [2290], "IERC721": [1953], "IERC721Errors": [1789], "IERC721Metadata": [1999], "IERC721Receiver": [1971], "ItemBlocks": [512], "Ownable": [660], "Strings": [2254]}, "id": 513, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 145, "literals": ["solidity", "^", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "32:24:13"}, {"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol", "file": "openzeppelin-contracts/contracts/token/ERC721/ERC721.sol", "id": 146, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 513, "sourceUnit": 1670, "src": "58:66:13", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", "file": "openzeppelin-contracts/contracts/access/Ownable.sol", "id": 147, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 513, "sourceUnit": 661, "src": "125:61:13", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 148, "name": "ERC721", "nameLocations": ["211:6:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 1669, "src": "211:6:13"}, "id": 149, "nodeType": "InheritanceSpecifier", "src": "211:6:13"}, {"baseName": {"id": 150, "name": "Ownable", "nameLocations": ["219:7:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 660, "src": "219:7:13"}, "id": 151, "nodeType": "InheritanceSpecifier", "src": "219:7:13"}], "canonicalName": "ItemBlocks", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 512, "linearizedBaseContracts": [512, 660, 1669, 1789, 1999, 1953, 2278, 2290, 1699], "name": "ItemBlocks", "nameLocation": "197:10:13", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ItemBlocks.Passport", "id": 162, "members": [{"constant": false, "id": 153, "mutability": "mutable", "name": "name", "nameLocation": "266:4:13", "nodeType": "VariableDeclaration", "scope": 162, "src": "259:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}, "typeName": {"id": 152, "name": "string", "nodeType": "ElementaryTypeName", "src": "259:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 155, "mutability": "mutable", "name": "desc", "nameLocation": "287:4:13", "nodeType": "VariableDeclaration", "scope": 162, "src": "280:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}, "typeName": {"id": 154, "name": "string", "nodeType": "ElementaryTypeName", "src": "280:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 157, "mutability": "mutable", "name": "family", "nameLocation": "308:6:13", "nodeType": "VariableDeclaration", "scope": 162, "src": "301:13:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}, "typeName": {"id": 156, "name": "string", "nodeType": "ElementaryTypeName", "src": "301:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 159, "mutability": "mutable", "name": "url", "nameLocation": "331:3:13", "nodeType": "VariableDeclaration", "scope": 162, "src": "324:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}, "typeName": {"id": 158, "name": "string", "nodeType": "ElementaryTypeName", "src": "324:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 161, "mutability": "mutable", "name": "img", "nameLocation": "351:3:13", "nodeType": "VariableDeclaration", "scope": 162, "src": "344:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}, "typeName": {"id": 160, "name": "string", "nodeType": "ElementaryTypeName", "src": "344:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "name": "Passport", "nameLocation": "240:8:13", "nodeType": "StructDefinition", "scope": 512, "src": "233:128:13", "visibility": "public"}, {"constant": false, "functionSelector": "5589fe78", "id": 167, "mutability": "mutable", "name": "itemPassports", "nameLocation": "404:13:13", "nodeType": "VariableDeclaration", "scope": 512, "src": "367:50:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Passport_$162_storage_$", "typeString": "mapping(uint256 => struct ItemBlocks.Passport)"}, "typeName": {"id": 166, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 163, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "376:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "367:29:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Passport_$162_storage_$", "typeString": "mapping(uint256 => struct ItemBlocks.Passport)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 165, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 164, "name": "Passport", "nameLocations": ["387:8:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 162, "src": "387:8:13"}, "referencedDeclaration": 162, "src": "387:8:13", "typeDescriptions": {"typeIdentifier": "t_struct$_Passport_$162_storage_ptr", "typeString": "struct ItemBlocks.Passport"}}}, "visibility": "public"}, {"constant": false, "functionSelector": "2bf3d817", "id": 172, "mutability": "mutable", "name": "allItemOwners", "nameLocation": "461:13:13", "nodeType": "VariableDeclaration", "scope": 512, "src": "423:51:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(uint256 => address[])"}, "typeName": {"id": 171, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 168, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "432:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Mapping", "src": "423:30:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(uint256 => address[])"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"baseType": {"id": 169, "name": "address", "nodeType": "ElementaryTypeName", "src": "443:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 170, "nodeType": "ArrayTypeName", "src": "443:9:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}}, "visibility": "public"}, {"constant": false, "functionSelector": "48cdcd4d", "id": 177, "mutability": "mutable", "name": "createdItems", "nameLocation": "518:12:13", "nodeType": "VariableDeclaration", "scope": 512, "src": "480:50:13", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", "typeString": "mapping(address => uint256[])"}, "typeName": {"id": 176, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 173, "name": "address", "nodeType": "ElementaryTypeName", "src": "489:7:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Mapping", "src": "480:30:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", "typeString": "mapping(address => uint256[])"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"baseType": {"id": 174, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "500:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 175, "nodeType": "ArrayTypeName", "src": "500:9:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}}, "visibility": "public"}, {"canonicalName": "ItemBlocks.Role", "id": 180, "members": [{"id": 178, "name": "Owner", "nameLocation": "548:5:13", "nodeType": "EnumValue", "src": "548:5:13"}, {"id": 179, "name": "Creator", "nameLocation": "555:7:13", "nodeType": "EnumValue", "src": "555:7:13"}], "name": "Role", "nameLocation": "542:4:13", "nodeType": "EnumDefinition", "src": "537:26:13"}, {"anonymous": false, "eventSelector": "132290b0f8d58f9abffd99c75c46d96d52da97d6c61e23f54ab53dd2f27dc1e3", "id": 199, "name": "PassportUpdate", "nameLocation": "575:14:13", "nodeType": "EventDefinition", "parameters": {"id": 198, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 182, "indexed": true, "mutability": "mutable", "name": "tokenId", "nameLocation": "606:7:13", "nodeType": "VariableDeclaration", "scope": 199, "src": "590:23:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 181, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "590:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 184, "indexed": true, "mutability": "mutable", "name": "editor", "nameLocation": "631:6:13", "nodeType": "VariableDeclaration", "scope": 199, "src": "615:22:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 183, "name": "address", "nodeType": "ElementaryTypeName", "src": "615:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 187, "indexed": false, "mutability": "mutable", "name": "role", "nameLocation": "644:4:13", "nodeType": "VariableDeclaration", "scope": 199, "src": "639:9:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_Role_$180", "typeString": "enum ItemBlocks.Role"}, "typeName": {"id": 186, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 185, "name": "Role", "nameLocations": ["639:4:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 180, "src": "639:4:13"}, "referencedDeclaration": 180, "src": "639:4:13", "typeDescriptions": {"typeIdentifier": "t_enum$_Role_$180", "typeString": "enum ItemBlocks.Role"}}, "visibility": "internal"}, {"constant": false, "id": 189, "indexed": false, "mutability": "mutable", "name": "name", "nameLocation": "657:4:13", "nodeType": "VariableDeclaration", "scope": 199, "src": "650:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 188, "name": "string", "nodeType": "ElementaryTypeName", "src": "650:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 191, "indexed": false, "mutability": "mutable", "name": "desc", "nameLocation": "670:4:13", "nodeType": "VariableDeclaration", "scope": 199, "src": "663:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 190, "name": "string", "nodeType": "ElementaryTypeName", "src": "663:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 193, "indexed": false, "mutability": "mutable", "name": "family", "nameLocation": "683:6:13", "nodeType": "VariableDeclaration", "scope": 199, "src": "676:13:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 192, "name": "string", "nodeType": "ElementaryTypeName", "src": "676:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 195, "indexed": false, "mutability": "mutable", "name": "url", "nameLocation": "698:3:13", "nodeType": "VariableDeclaration", "scope": 199, "src": "691:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 194, "name": "string", "nodeType": "ElementaryTypeName", "src": "691:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 197, "indexed": false, "mutability": "mutable", "name": "img", "nameLocation": "710:3:13", "nodeType": "VariableDeclaration", "scope": 199, "src": "703:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 196, "name": "string", "nodeType": "ElementaryTypeName", "src": "703:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "589:125:13"}, "src": "569:146:13"}, {"body": {"id": 211, "nodeType": "Block", "src": "959:2:13", "statements": []}, "id": 212, "implemented": true, "kind": "constructor", "modifiers": [{"arguments": [{"hexValue": "4974656d426c6f636b735465737439", "id": 204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "899:17:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_6cfb1756f46f7044b1dbaf5889dee23d08ca7698508c1d9519abe96241a9e420", "typeString": "literal_string \"ItemBlocksTest9\""}, "value": "ItemBlocksTest9"}, {"hexValue": "494239", "id": 205, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "918:5:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_42fac3e89ce5a82285b7394c615d4b4ba3190c9dd56786750342cfd1973f5df7", "typeString": "literal_string \"IB9\""}, "value": "IB9"}], "id": 206, "kind": "baseConstructorSpecifier", "modifierName": {"id": 203, "name": "ERC721", "nameLocations": ["892:6:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 1669, "src": "892:6:13"}, "nodeType": "ModifierInvocation", "src": "892:32:13"}, {"arguments": [{"id": 208, "name": "initialOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 201, "src": "941:12:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "id": 209, "kind": "baseConstructorSpecifier", "modifierName": {"id": 207, "name": "Ownable", "nameLocations": ["933:7:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 660, "src": "933:7:13"}, "nodeType": "ModifierInvocation", "src": "933:21:13"}], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 202, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 201, "mutability": "mutable", "name": "initialOwner", "nameLocation": "870:12:13", "nodeType": "VariableDeclaration", "scope": 212, "src": "862:20:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 200, "name": "address", "nodeType": "ElementaryTypeName", "src": "862:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "861:22:13"}, "returnParameters": {"id": 210, "nodeType": "ParameterList", "parameters": [], "src": "959:0:13"}, "scope": 512, "src": "850:111:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 226, "nodeType": "Block", "src": "1031:39:13", "statements": [{"expression": {"arguments": [{"id": 222, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 214, "src": "1051:2:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 223, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 216, "src": "1055:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 221, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [1291, 1317], "referencedDeclaration": 1291, "src": "1041:9:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 224, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1041:22:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 225, "nodeType": "ExpressionStatement", "src": "1041:22:13"}]}, "functionSelector": "a1448194", "id": 227, "implemented": true, "kind": "function", "modifiers": [{"id": 219, "kind": "modifierInvocation", "modifierName": {"id": 218, "name": "onlyOwner", "nameLocations": ["1021:9:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 571, "src": "1021:9:13"}, "nodeType": "ModifierInvocation", "src": "1021:9:13"}], "name": "safeMint", "nameLocation": "976:8:13", "nodeType": "FunctionDefinition", "parameters": {"id": 217, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 214, "mutability": "mutable", "name": "to", "nameLocation": "993:2:13", "nodeType": "VariableDeclaration", "scope": 227, "src": "985:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 213, "name": "address", "nodeType": "ElementaryTypeName", "src": "985:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 216, "mutability": "mutable", "name": "tokenId", "nameLocation": "1005:7:13", "nodeType": "VariableDeclaration", "scope": 227, "src": "997:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 215, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "997:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "984:29:13"}, "returnParameters": {"id": 220, "nodeType": "ParameterList", "parameters": [], "src": "1031:0:13"}, "scope": 512, "src": "967:103:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 265, "nodeType": "Block", "src": "1238:158:13", "statements": [{"expression": {"arguments": [{"expression": {"id": 245, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1258:3:13", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 246, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1262:6:13", "memberName": "sender", "nodeType": "MemberAccess", "src": "1258:10:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 247, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, "src": "1270:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 244, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [1291, 1317], "referencedDeclaration": 1291, "src": "1248:9:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 248, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1248:30:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 249, "nodeType": "ExpressionStatement", "src": "1248:30:13"}, {"expression": {"arguments": [{"expression": {"id": 251, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1299:3:13", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1303:6:13", "memberName": "sender", "nodeType": "MemberAccess", "src": "1299:10:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 253, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, "src": "1311:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 250, "name": "setCreator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 397, "src": "1288:10:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1288:31:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 255, "nodeType": "ExpressionStatement", "src": "1288:31:13"}, {"expression": {"arguments": [{"id": 257, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 229, "src": "1351:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 258, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 231, "src": "1360:4:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 259, "name": "desc", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 233, "src": "1366:4:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 260, "name": "family", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 235, "src": "1372:6:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 261, "name": "url", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 237, "src": "1380:3:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 262, "name": "img", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 239, "src": "1385:3:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 256, "name": "updatePassport", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 330, "src": "1336:14:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,string memory,string memory,string memory,string memory,string memory) returns (uint256)"}}, "id": 263, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1336:53:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 243, "id": 264, "nodeType": "Return", "src": "1329:60:13"}]}, "functionSelector": "875185c3", "id": 266, "implemented": true, "kind": "function", "modifiers": [], "name": "createPassport", "nameLocation": "1085:14:13", "nodeType": "FunctionDefinition", "parameters": {"id": 240, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 229, "mutability": "mutable", "name": "tokenId", "nameLocation": "1105:7:13", "nodeType": "VariableDeclaration", "scope": 266, "src": "1100:12:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 228, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1100:4:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 231, "mutability": "mutable", "name": "name", "nameLocation": "1128:4:13", "nodeType": "VariableDeclaration", "scope": 266, "src": "1114:18:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 230, "name": "string", "nodeType": "ElementaryTypeName", "src": "1114:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 233, "mutability": "mutable", "name": "desc", "nameLocation": "1148:4:13", "nodeType": "VariableDeclaration", "scope": 266, "src": "1134:18:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 232, "name": "string", "nodeType": "ElementaryTypeName", "src": "1134:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 235, "mutability": "mutable", "name": "family", "nameLocation": "1168:6:13", "nodeType": "VariableDeclaration", "scope": 266, "src": "1154:20:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 234, "name": "string", "nodeType": "ElementaryTypeName", "src": "1154:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 237, "mutability": "mutable", "name": "url", "nameLocation": "1190:3:13", "nodeType": "VariableDeclaration", "scope": 266, "src": "1176:17:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 236, "name": "string", "nodeType": "ElementaryTypeName", "src": "1176:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 239, "mutability": "mutable", "name": "img", "nameLocation": "1209:3:13", "nodeType": "VariableDeclaration", "scope": 266, "src": "1195:17:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 238, "name": "string", "nodeType": "ElementaryTypeName", "src": "1195:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1099:114:13"}, "returnParameters": {"id": 243, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 242, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 266, "src": "1229:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 241, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1229:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1228:9:13"}, "scope": 512, "src": "1076:320:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 329, "nodeType": "Block", "src": "1564:571:13", "statements": [{"expression": {"arguments": [{"arguments": [{"id": 285, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 268, "src": "1602:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 286, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1611:3:13", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1615:6:13", "memberName": "sender", "nodeType": "MemberAccess", "src": "1611:10:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 284, "name": "isEligible", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "1591:10:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_bool_$", "typeString": "function (uint256,address) view returns (bool)"}}, "id": 288, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1591:31:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d75737420626520746865206f776e6572206f6620746865206974656d206f72207468652063726561746f72206f66206974", "id": 289, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1624:52:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_17181a1bbdb611950887880d0322e85db4f450dcd2a4c563d1825a05f69e2f75", "typeString": "literal_string \"Must be the owner of the item or the creator of it\""}, "value": "Must be the owner of the item or the creator of it"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_17181a1bbdb611950887880d0322e85db4f450dcd2a4c563d1825a05f69e2f75", "typeString": "literal_string \"Must be the owner of the item or the creator of it\""}], "id": 283, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1582:7:13", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 290, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1582:96:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 291, "nodeType": "ExpressionStatement", "src": "1582:96:13"}, {"expression": {"id": 302, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"id": 292, "name": "itemPassports", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "1689:13:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Passport_$162_storage_$", "typeString": "mapping(uint256 => struct ItemBlocks.Passport storage ref)"}}, "id": 294, "indexExpression": {"id": 293, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 268, "src": "1703:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1689:22:13", "typeDescriptions": {"typeIdentifier": "t_struct$_Passport_$162_storage", "typeString": "struct ItemBlocks.Passport storage ref"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 296, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 270, "src": "1744:4:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 297, "name": "desc", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "1768:4:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 298, "name": "family", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, "src": "1794:6:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 299, "name": "url", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 276, "src": "1819:3:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 300, "name": "img", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 278, "src": "1841:3:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 295, "name": "Passport", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 162, "src": "1714:8:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_struct$_Passport_$162_storage_ptr_$", "typeString": "type(struct ItemBlocks.Passport storage pointer)"}}, "id": 301, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": ["1738:4:13", "1762:4:13", "1786:6:13", "1814:3:13", "1836:3:13"], "names": ["name", "desc", "family", "url", "img"], "nodeType": "FunctionCall", "src": "1714:141:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_Passport_$162_memory_ptr", "typeString": "struct ItemBlocks.Passport memory"}}, "src": "1689:166:13", "typeDescriptions": {"typeIdentifier": "t_struct$_Passport_$162_storage", "typeString": "struct ItemBlocks.Passport storage ref"}}, "id": 303, "nodeType": "ExpressionStatement", "src": "1689:166:13"}, {"eventCall": {"arguments": [{"id": 305, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 268, "src": "1899:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 306, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1920:3:13", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1924:6:13", "memberName": "sender", "nodeType": "MemberAccess", "src": "1920:10:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 313, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 308, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1944:3:13", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 309, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1948:6:13", "memberName": "sender", "nodeType": "MemberAccess", "src": "1944:10:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"id": 311, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 268, "src": "1966:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 310, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 802, "src": "1958:7:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 312, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1958:16:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1944:30:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseExpression": {"expression": {"id": 316, "name": "Role", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 180, "src": "1989:4:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_Role_$180_$", "typeString": "type(enum ItemBlocks.Role)"}}, "id": 317, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1994:7:13", "memberName": "Creator", "nodeType": "MemberAccess", "referencedDeclaration": 179, "src": "1989:12:13", "typeDescriptions": {"typeIdentifier": "t_enum$_Role_$180", "typeString": "enum ItemBlocks.Role"}}, "id": 318, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1944:57:13", "trueExpression": {"expression": {"id": 314, "name": "Role", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 180, "src": "1977:4:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_enum$_Role_$180_$", "typeString": "type(enum ItemBlocks.Role)"}}, "id": 315, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1982:5:13", "memberName": "Owner", "nodeType": "MemberAccess", "referencedDeclaration": 178, "src": "1977:10:13", "typeDescriptions": {"typeIdentifier": "t_enum$_Role_$180", "typeString": "enum ItemBlocks.Role"}}, "typeDescriptions": {"typeIdentifier": "t_enum$_Role_$180", "typeString": "enum ItemBlocks.Role"}}, {"id": 319, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 270, "src": "2015:4:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 320, "name": "desc", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2033:4:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 321, "name": "family", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 274, "src": "2051:6:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 322, "name": "url", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 276, "src": "2071:3:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}, {"id": 323, "name": "img", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 278, "src": "2088:3:13", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_enum$_Role_$180", "typeString": "enum ItemBlocks.Role"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 304, "name": "PassportUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 199, "src": "1871:14:13", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_enum$_Role_$180_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", "typeString": "function (uint256,address,enum ItemBlocks.Role,string memory,string memory,string memory,string memory,string memory)"}}, "id": 324, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1871:221:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 325, "nodeType": "EmitStatement", "src": "1866:226:13"}, {"expression": {"components": [{"id": 326, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 268, "src": "2111:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 327, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2110:9:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 282, "id": 328, "nodeType": "Return", "src": "2103:16:13"}]}, "functionSelector": "886ee64e", "id": 330, "implemented": true, "kind": "function", "modifiers": [], "name": "updatePassport", "nameLocation": "1411:14:13", "nodeType": "FunctionDefinition", "parameters": {"id": 279, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 268, "mutability": "mutable", "name": "tokenId", "nameLocation": "1431:7:13", "nodeType": "VariableDeclaration", "scope": 330, "src": "1426:12:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 267, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1426:4:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 270, "mutability": "mutable", "name": "name", "nameLocation": "1454:4:13", "nodeType": "VariableDeclaration", "scope": 330, "src": "1440:18:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 269, "name": "string", "nodeType": "ElementaryTypeName", "src": "1440:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 272, "mutability": "mutable", "name": "desc", "nameLocation": "1474:4:13", "nodeType": "VariableDeclaration", "scope": 330, "src": "1460:18:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 271, "name": "string", "nodeType": "ElementaryTypeName", "src": "1460:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 274, "mutability": "mutable", "name": "family", "nameLocation": "1494:6:13", "nodeType": "VariableDeclaration", "scope": 330, "src": "1480:20:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 273, "name": "string", "nodeType": "ElementaryTypeName", "src": "1480:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 276, "mutability": "mutable", "name": "url", "nameLocation": "1516:3:13", "nodeType": "VariableDeclaration", "scope": 330, "src": "1502:17:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 275, "name": "string", "nodeType": "ElementaryTypeName", "src": "1502:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}, {"constant": false, "id": 278, "mutability": "mutable", "name": "img", "nameLocation": "1535:3:13", "nodeType": "VariableDeclaration", "scope": 330, "src": "1521:17:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 277, "name": "string", "nodeType": "ElementaryTypeName", "src": "1521:6:13", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "1425:114:13"}, "returnParameters": {"id": 282, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 281, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 330, "src": "1555:7:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 280, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1555:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1554:9:13"}, "scope": 512, "src": "1402:733:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 354, "nodeType": "Block", "src": "2368:101:13", "statements": [{"expression": {"components": [{"commonType": {"typeIdentifier": "t_bool", "typeString": "bool"}, "id": 351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 339, "name": "userAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 334, "src": "2386:11:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"id": 341, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 332, "src": "2409:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 340, "name": "ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 802, "src": "2401:7:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 342, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2401:16:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2386:31:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 344, "name": "userAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 334, "src": "2421:11:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"baseExpression": {"baseExpression": {"id": 345, "name": "allItemOwners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 172, "src": "2436:13:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(uint256 => address[] storage ref)"}}, "id": 347, "indexExpression": {"id": 346, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 332, "src": "2450:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2436:22:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref"}}, "id": 349, "indexExpression": {"hexValue": "30", "id": 348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2459:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2436:25:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2421:40:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "src": "2386:75:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "id": 352, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "2385:77:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 338, "id": 353, "nodeType": "Return", "src": "2378:84:13"}]}, "functionSelector": "592e0e00", "id": 355, "implemented": true, "kind": "function", "modifiers": [], "name": "isEligible", "nameLocation": "2294:10:13", "nodeType": "FunctionDefinition", "parameters": {"id": 335, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 332, "mutability": "mutable", "name": "tokenId", "nameLocation": "2313:7:13", "nodeType": "VariableDeclaration", "scope": 355, "src": "2305:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 331, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2305:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 334, "mutability": "mutable", "name": "userAddress", "nameLocation": "2330:11:13", "nodeType": "VariableDeclaration", "scope": 355, "src": "2322:19:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 333, "name": "address", "nodeType": "ElementaryTypeName", "src": "2322:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2304:38:13"}, "returnParameters": {"id": 338, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 337, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 355, "src": "2363:4:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 336, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2363:4:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2362:6:13"}, "scope": 512, "src": "2285:184:13", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 396, "nodeType": "Block", "src": "2545:304:13", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 368, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"baseExpression": {"id": 363, "name": "allItemOwners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 172, "src": "2563:13:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(uint256 => address[] storage ref)"}}, "id": 365, "indexExpression": {"id": 364, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, "src": "2577:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2563:22:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref"}}, "id": 366, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2586:6:13", "memberName": "length", "nodeType": "MemberAccess", "src": "2563:29:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 367, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2596:1:13", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "2563:34:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "546865726520697320616c726561647920612063726561746f7220666f722074686973206974656d2e", "id": 369, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2599:43:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_08038ddd7c687878571053bb90df57d203072b7320715f89c47afe106c69ce57", "typeString": "literal_string \"There is already a creator for this item.\""}, "value": "There is already a creator for this item."}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_08038ddd7c687878571053bb90df57d203072b7320715f89c47afe106c69ce57", "typeString": "literal_string \"There is already a creator for this item.\""}], "id": 362, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2555:7:13", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 370, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2555:88:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 371, "nodeType": "ExpressionStatement", "src": "2555:88:13"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 373, "name": "creatorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 357, "src": "2661:14:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 376, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2687:1:13", "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": 375, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2679:7:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 374, "name": "address", "nodeType": "ElementaryTypeName", "src": "2679:7:13", "typeDescriptions": {}}}, "id": 377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2679:10:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "2661:28:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "596f7520617265206e6f7420616c6c6f77656420746f20686176652061207a65726f20616464726573732e", "id": 379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2691:45:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_2079271221ee7024d486a35583ff3f2558e454de2b8c06047f2fb9b1c2b09e9d", "typeString": "literal_string \"You are not allowed to have a zero address.\""}, "value": "You are not allowed to have a zero address."}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_2079271221ee7024d486a35583ff3f2558e454de2b8c06047f2fb9b1c2b09e9d", "typeString": "literal_string \"You are not allowed to have a zero address.\""}], "id": 372, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2653:7:13", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 380, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2653:84:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 381, "nodeType": "ExpressionStatement", "src": "2653:84:13"}, {"expression": {"arguments": [{"id": 386, "name": "creatorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 357, "src": "2775:14:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"baseExpression": {"id": 382, "name": "allItemOwners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 172, "src": "2747:13:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(uint256 => address[] storage ref)"}}, "id": 384, "indexExpression": {"id": 383, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, "src": "2761:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2747:22:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref"}}, "id": 385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2770:4:13", "memberName": "push", "nodeType": "MemberAccess", "src": "2747:27:13", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", "typeString": "function (address[] storage pointer,address)"}}, "id": 387, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2747:43:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 388, "nodeType": "ExpressionStatement", "src": "2747:43:13"}, {"expression": {"arguments": [{"id": 393, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, "src": "2834:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"baseExpression": {"id": 389, "name": "createdItems", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 177, "src": "2800:12:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", "typeString": "mapping(address => uint256[] storage ref)"}}, "id": 391, "indexExpression": {"id": 390, "name": "creatorAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 357, "src": "2813:14:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2800:28:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}}, "id": 392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2829:4:13", "memberName": "push", "nodeType": "MemberAccess", "src": "2800:33:13", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$", "typeString": "function (uint256[] storage pointer,uint256)"}}, "id": 394, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2800:42:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 395, "nodeType": "ExpressionStatement", "src": "2800:42:13"}]}, "id": 397, "implemented": true, "kind": "function", "modifiers": [], "name": "setCreator", "nameLocation": "2484:10:13", "nodeType": "FunctionDefinition", "parameters": {"id": 360, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 357, "mutability": "mutable", "name": "creatorAddress", "nameLocation": "2503:14:13", "nodeType": "VariableDeclaration", "scope": 397, "src": "2495:22:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 356, "name": "address", "nodeType": "ElementaryTypeName", "src": "2495:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 359, "mutability": "mutable", "name": "tokenId", "nameLocation": "2527:7:13", "nodeType": "VariableDeclaration", "scope": 397, "src": "2519:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 358, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2519:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2494:41:13"}, "returnParameters": {"id": 361, "nodeType": "ParameterList", "parameters": [], "src": "2545:0:13"}, "scope": 512, "src": "2475:374:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 420, "nodeType": "Block", "src": "3408:219:13", "statements": [{"expression": {"arguments": [{"id": 408, "name": "currentOwnerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 400, "src": "3518:19:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 409, "name": "nextOwnerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 402, "src": "3539:16:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 410, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 404, "src": "3557:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 407, "name": "safeTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [995, 1021], "referencedDeclaration": 995, "src": "3501:16:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)"}}, "id": 411, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3501:64:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 412, "nodeType": "ExpressionStatement", "src": "3501:64:13"}, {"expression": {"arguments": [{"id": 417, "name": "nextOwnerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 402, "src": "3603:16:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "expression": {"baseExpression": {"id": 413, "name": "allItemOwners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 172, "src": "3575:13:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(uint256 => address[] storage ref)"}}, "id": 415, "indexExpression": {"id": 414, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 404, "src": "3589:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3575:22:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref"}}, "id": 416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3598:4:13", "memberName": "push", "nodeType": "MemberAccess", "src": "3575:27:13", "typeDescriptions": {"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", "typeString": "function (address[] storage pointer,address)"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3575:45:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 419, "nodeType": "ExpressionStatement", "src": "3575:45:13"}]}, "documentation": {"id": 398, "nodeType": "StructuredDocumentation", "src": "2860:440:13", "text": " @notice updateOwnership is a function that we use it change owners of our NFT (item).\n Also we use it to add the new owner of an NFT in a list of all owners for a specific NFT.\n \n @param currentOwnerAddress ethereum address of current tokenId owner\n @param nextOwnerAddress ethereum address we want to transfer ownership to\n @param tokenId uint256 id of token we want to update ownership for"}, "functionSelector": "534a3a5c", "id": 421, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOwnership", "nameLocation": "3314:15:13", "nodeType": "FunctionDefinition", "parameters": {"id": 405, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 400, "mutability": "mutable", "name": "currentOwnerAddress", "nameLocation": "3338:19:13", "nodeType": "VariableDeclaration", "scope": 421, "src": "3330:27:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 399, "name": "address", "nodeType": "ElementaryTypeName", "src": "3330:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 402, "mutability": "mutable", "name": "nextOwnerAddress", "nameLocation": "3367:16:13", "nodeType": "VariableDeclaration", "scope": 421, "src": "3359:24:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 401, "name": "address", "nodeType": "ElementaryTypeName", "src": "3359:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 404, "mutability": "mutable", "name": "tokenId", "nameLocation": "3393:7:13", "nodeType": "VariableDeclaration", "scope": 421, "src": "3385:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 403, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3385:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "3329:72:13"}, "returnParameters": {"id": 406, "nodeType": "ParameterList", "parameters": [], "src": "3408:0:13"}, "scope": 512, "src": "3305:322:13", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 453, "nodeType": "Block", "src": "4061:187:13", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 432, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 424, "src": "4089:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 431, "name": "_ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "4080:8:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4080:17:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 436, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4109:1:13", "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": 435, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4101:7:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 434, "name": "address", "nodeType": "ElementaryTypeName", "src": "4101:7:13", "typeDescriptions": {}}}, "id": 437, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4101:10:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4080:31:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"arguments": [{"arguments": [{"hexValue": "54686520746f6b656e206973206e6f742076616c69642e205468657265206973206e6f207375636820746f6b656e206173", "id": 443, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4137:51:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_5adfaa2aa9c262d06fa99ce7eb851020eefcc1023cbf042fe340a47f0cfc340f", "typeString": "literal_string \"The token is not valid. There is no such token as\""}, "value": "The token is not valid. There is no such token as"}, {"id": 444, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 424, "src": "4191:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_5adfaa2aa9c262d06fa99ce7eb851020eefcc1023cbf042fe340a47f0cfc340f", "typeString": "literal_string \"The token is not valid. There is no such token as\""}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 441, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "4120:3:13", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 442, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4124:12:13", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "4120:16:13", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4120:79:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 440, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4113:6:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 439, "name": "string", "nodeType": "ElementaryTypeName", "src": "4113:6:13", "typeDescriptions": {}}}, "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4113:87:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 430, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4071:7:13", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 447, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4071:131:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 448, "nodeType": "ExpressionStatement", "src": "4071:131:13"}, {"expression": {"baseExpression": {"id": 449, "name": "allItemOwners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 172, "src": "4219:13:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$", "typeString": "mapping(uint256 => address[] storage ref)"}}, "id": 451, "indexExpression": {"id": 450, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 424, "src": "4233:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4219:22:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref"}}, "functionReturnParameters": 429, "id": 452, "nodeType": "Return", "src": "4212:29:13"}]}, "documentation": {"id": 422, "nodeType": "StructuredDocumentation", "src": "3637:340:13", "text": " @notice Function returns a list of addresses that have owner this item.\n The first address is the item creator and the last is the current owner of the item.\n \n @param tokenId id of a nft token\n @return address[] list of all owners of token with tokenId\n \n @dev Fails is tokenId does ."}, "functionSelector": "f2a1625e", "id": 454, "implemented": true, "kind": "function", "modifiers": [], "name": "getUserHistory", "nameLocation": "3991:14:13", "nodeType": "FunctionDefinition", "parameters": {"id": 425, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 424, "mutability": "mutable", "name": "tokenId", "nameLocation": "4014:7:13", "nodeType": "VariableDeclaration", "scope": 454, "src": "4006:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 423, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4006:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "4005:17:13"}, "returnParameters": {"id": 429, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 428, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 454, "src": "4044:16:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]"}, "typeName": {"baseType": {"id": 426, "name": "address", "nodeType": "ElementaryTypeName", "src": "4044:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 427, "nodeType": "ArrayTypeName", "src": "4044:9:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]"}}, "visibility": "internal"}], "src": "4043:18:13"}, "scope": 512, "src": "3982:266:13", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 477, "nodeType": "Block", "src": "4671:164:13", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 469, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 464, "name": "userAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "4689:11:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 467, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4712:1:13", "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": 466, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4704:7:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 465, "name": "address", "nodeType": "ElementaryTypeName", "src": "4704:7:13", "typeDescriptions": {}}}, "id": 468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4704:10:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "4689:25:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "596f7520617265206e6f7420616c6c6f77656420746f2073656520746865206372656174656420746f6b656e73207769746820616e207a65726f20616464726573732e", "id": 470, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4716:69:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_418546e688bee38d6231af9f1bdc039740fb118634a60fcd243dbd2350261b16", "typeString": "literal_string \"You are not allowed to see the created tokens with an zero address.\""}, "value": "You are not allowed to see the created tokens with an zero address."}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_418546e688bee38d6231af9f1bdc039740fb118634a60fcd243dbd2350261b16", "typeString": "literal_string \"You are not allowed to see the created tokens with an zero address.\""}], "id": 463, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "4681:7:13", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 471, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4681:105:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 472, "nodeType": "ExpressionStatement", "src": "4681:105:13"}, {"expression": {"baseExpression": {"id": 473, "name": "createdItems", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 177, "src": "4803:12:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", "typeString": "mapping(address => uint256[] storage ref)"}}, "id": 475, "indexExpression": {"id": 474, "name": "userAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "4816:11:13", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4803:25:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[] storage ref"}}, "functionReturnParameters": 462, "id": 476, "nodeType": "Return", "src": "4796:32:13"}]}, "documentation": {"id": 455, "nodeType": "StructuredDocumentation", "src": "4253:324:13", "text": " @notice Function returns a list of user items. \n \n @param userAddress the user's Address for whome all the items will be retun.\n Like user's intentory.\n @return createdItems[] list of all user items.\n @dev fails if the userAdderss is a zero address."}, "functionSelector": "10c8b433", "id": 478, "implemented": true, "kind": "function", "modifiers": [], "name": "getCreatedItemTokens", "nameLocation": "4591:20:13", "nodeType": "FunctionDefinition", "parameters": {"id": 458, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 457, "mutability": "mutable", "name": "userAddress", "nameLocation": "4620:11:13", "nodeType": "VariableDeclaration", "scope": 478, "src": "4612:19:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 456, "name": "address", "nodeType": "ElementaryTypeName", "src": "4612:7:13", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "4611:21:13"}, "returnParameters": {"id": 462, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 461, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 478, "src": "4653:16:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[]"}, "typeName": {"baseType": {"id": 459, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4653:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 460, "nodeType": "ArrayTypeName", "src": "4653:9:13", "typeDescriptions": {"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]"}}, "visibility": "internal"}], "src": "4652:18:13"}, "scope": 512, "src": "4582:253:13", "stateMutability": "view", "virtual": false, "visibility": "public"}, {"body": {"id": 510, "nodeType": "Block", "src": "5215:186:13", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 495, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 489, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "5243:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 488, "name": "_ownerOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1034, "src": "5234:8:13", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)"}}, "id": 490, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5234:17:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": {"arguments": [{"hexValue": "30", "id": 493, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5263:1:13", "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": 492, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5255:7:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 491, "name": "address", "nodeType": "ElementaryTypeName", "src": "5255:7:13", "typeDescriptions": {}}}, "id": 494, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5255:10:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "5234:31:13", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"arguments": [{"arguments": [{"hexValue": "54686520746f6b656e206973206e6f742076616c69642e205468657265206973206e6f207375636820746f6b656e206173", "id": 500, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5291:51:13", "typeDescriptions": {"typeIdentifier": "t_stringliteral_5adfaa2aa9c262d06fa99ce7eb851020eefcc1023cbf042fe340a47f0cfc340f", "typeString": "literal_string \"The token is not valid. There is no such token as\""}, "value": "The token is not valid. There is no such token as"}, {"id": 501, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "5345:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_5adfaa2aa9c262d06fa99ce7eb851020eefcc1023cbf042fe340a47f0cfc340f", "typeString": "literal_string \"The token is not valid. There is no such token as\""}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 498, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5274:3:13", "typeDescriptions": {"typeIdentifier": "t_magic_abi", "typeString": "abi"}}, "id": 499, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5278:12:13", "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "5274:16:13", "typeDescriptions": {"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)"}}, "id": 502, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5274:79:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory"}], "id": 497, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5267:6:13", "typeDescriptions": {"typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)"}, "typeName": {"id": 496, "name": "string", "nodeType": "ElementaryTypeName", "src": "5267:6:13", "typeDescriptions": {}}}, "id": 503, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5267:87:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_string_memory_ptr", "typeString": "string memory"}], "id": 487, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5225:7:13", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 504, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5225:130:13", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 505, "nodeType": "ExpressionStatement", "src": "5225:130:13"}, {"expression": {"baseExpression": {"id": 506, "name": "itemPassports", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "5372:13:13", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Passport_$162_storage_$", "typeString": "mapping(uint256 => struct ItemBlocks.Passport storage ref)"}}, "id": 508, "indexExpression": {"id": 507, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "5386:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5372:22:13", "typeDescriptions": {"typeIdentifier": "t_struct$_Passport_$162_storage", "typeString": "struct ItemBlocks.Passport storage ref"}}, "functionReturnParameters": 486, "id": 509, "nodeType": "Return", "src": "5365:29:13"}]}, "documentation": {"id": 479, "nodeType": "StructuredDocumentation", "src": "4850:284:13", "text": " @notice Function returns a Passport for an item (tokenId).\n @param tokenId the item's Id that we want to retun the Passport.\n @return itemPassport[tokenId] the Passport of the item (token).\n @dev fails if the tokenId does not exists."}, "functionSelector": "9f5679f4", "id": 511, "implemented": true, "kind": "function", "modifiers": [], "name": "getPassport", "nameLocation": "5148:11:13", "nodeType": "FunctionDefinition", "parameters": {"id": 482, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 481, "mutability": "mutable", "name": "tokenId", "nameLocation": "5168:7:13", "nodeType": "VariableDeclaration", "scope": 511, "src": "5160:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 480, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5160:7:13", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "5159:17:13"}, "returnParameters": {"id": 486, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 485, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 511, "src": "5198:15:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_struct$_Passport_$162_memory_ptr", "typeString": "struct ItemBlocks.Passport"}, "typeName": {"id": 484, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 483, "name": "Passport", "nameLocations": ["5198:8:13"], "nodeType": "IdentifierPath", "referencedDeclaration": 162, "src": "5198:8:13"}, "referencedDeclaration": 162, "src": "5198:8:13", "typeDescriptions": {"typeIdentifier": "t_struct$_Passport_$162_storage_ptr", "typeString": "struct ItemBlocks.Passport"}}, "visibility": "internal"}], "src": "5197:17:13"}, "scope": 512, "src": "5139:262:13", "stateMutability": "view", "virtual": false, "visibility": "public"}], "scope": 513, "src": "188:5217:13", "usedErrors": [526, 531, 1747, 1752, 1761, 1766, 1771, 1778, 1783, 1788], "usedEvents": [199, 537, 1852, 1861, 1870]}], "src": "32:5373:13"}}}, "sourceList": ["/Users/fabian/Code/ItemBlocks/contract/echidna/PropertyTest.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/access/Ownable.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/Context.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/Strings.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/math/Math.sol", "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol", "/Users/fabian/Code/ItemBlocks/contract/src/ItemBlocks.sol"], "contracts": {"/Users/fabian/Code/ItemBlocks/contract/echidna/PropertyTest.sol:ItemBlocksPropertyTest": {"srcmap": "300:1496:0:-:0;;;374:1;352:23;;382:170;;;;;;;;;;415:7;941:12:13;1381:113:3;;;;;;;;;;;;;-1:-1:-1;;;1381:113:3;;;;;;;;;;;;;;;;-1:-1:-1;;;1381:113:3;;;1455:5;1447;:13;;;;;;:::i;:::-;-1:-1:-1;1470:7:3;:17;1480:7;1470;:17;:::i;:::-;-1:-1:-1;;;;;;;;1273:26:1;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:1;;1350:1;1322:31;;;2847:51:14;2820:18;;1322:31:1;;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;1225:187;850:111:13;449:96:0::1;464:1;449:96;;;;;;;;;;;;;-1:-1:-1::0;;;449:96:0::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;449:96:0::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;449:96:0::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;449:96:0::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;449:96:0::1;;::::0;:14:::1;;;:96;;:::i;:::-;435:11;:110:::0;300:1496;;2912:187:1;3004:6;;;-1:-1:-1;;;;;3020:17:1;;;-1:-1:-1;;;;;;3020:17:1;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;1076:320:13:-;1229:7;1248:30;1258:10;1270:7;1248:9;:30::i;:::-;1288:31;1299:10;1311:7;1288:10;:31::i;:::-;1336:53;1351:7;1360:4;1366;1372:6;1380:3;1385;1336:14;:53::i;:::-;1329:60;1076:320;-1:-1:-1;;;;;;;1076:320:13:o;10633:100:3:-;10700:26;10710:2;10714:7;10700:26;;;;;;;;;;;;:9;;;:26;;:::i;:::-;10633:100;;:::o;2475:374:13:-;2563:22;;;;:13;:22;;;;;:29;:34;2555:88;;;;-1:-1:-1;;;2555:88:13;;3111:2:14;2555:88:13;;;3093:21:14;3150:2;3130:18;;;3123:30;3189:34;3169:18;;;3162:62;-1:-1:-1;;;3240:18:14;;;3233:39;3289:19;;2555:88:13;2909:405:14;2555:88:13;-1:-1:-1;;;;;2661:28:13;;2653:84;;;;-1:-1:-1;;;2653:84:13;;3521:2:14;2653:84:13;;;3503:21:14;3560:2;3540:18;;;3533:30;3599:34;3579:18;;;3572:62;-1:-1:-1;;;3650:18:14;;;3643:41;3701:19;;2653:84:13;3319:407:14;2653:84:13;2747:22;;;;:13;:22;;;;;;;;:43;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2747:43:13;;;-1:-1:-1;;;;;;2747:43:13;;;;;;;2800:28;;;:12;:28;;;;:42;;;;;;;;;;;;;;;2475:374::o;1402:733::-;1555:7;1591:31;1602:7;1611:10;1591;:31::i;:::-;1582:96;;;;-1:-1:-1;;;1582:96:13;;3933:2:14;1582:96:13;;;3915:21:14;3972:2;3952:18;;;3945:30;4011:34;3991:18;;;3984:62;-1:-1:-1;;;4062:18:14;;;4055:48;4120:19;;1582:96:13;3731:414:14;1582:96:13;1714:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1689:22:13;;;:13;:22;;;;;;;:166;;:22;;:166;;:22;:166;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1920:10:13;;-1:-1:-1;1899:7:13;;-1:-1:-1;1871:221:13;1958:16;1899:7;1958;:16::i;:::-;-1:-1:-1;;;;;1944:30:13;:10;-1:-1:-1;;;;;1944:30:13;;:57;;1989:12;1944:57;;;1977:10;1944:57;2015:4;2033;2051:6;2071:3;2088;1871:221;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2111:7:13;;1402:733;-1:-1:-1;;;;;1402:733:13:o;10954:182:3:-;11048:18;11054:2;11058:7;11048:5;:18::i;:::-;11076:53;11107:1;11111:2;11115:7;11124:4;11076:22;:53::i;:::-;10954:182;;;:::o;2285:184:13:-;2363:4;2401:16;2409:7;2401;:16::i;:::-;-1:-1:-1;;;;;2386:31:13;:11;-1:-1:-1;;;;;2386:31:13;;:75;;;-1:-1:-1;2436:22:13;;;;:13;:22;;;;;:25;;:22;;;:25;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2421:40:13;;;2436:25;;2421:40;2386:75;2378:84;2285:184;-1:-1:-1;;;2285:184:13:o;2185:118:3:-;2248:7;2274:22;2288:7;2274:13;:22::i;:::-;2267:29;2185:118;-1:-1:-1;;2185:118:3:o;9955:327::-;-1:-1:-1;;;;;10022:16:3;;10018:87;;10061:33;;-1:-1:-1;;;10061:33:3;;10091:1;10061:33;;;2847:51:14;2820:18;;10061:33:3;2701:203:14;10018:87:3;10114:21;10138:32;10146:2;10150:7;10114:21;10138:7;:32::i;:::-;10114:56;-1:-1:-1;;;;;;10184:27:3;;;10180:96;;10234:31;;-1:-1:-1;;;10234:31:3;;10262:1;10234:31;;;2847:51:14;2820:18;;10234:31:3;2701:203:14;16918:782:3;-1:-1:-1;;;;;17034:14:3;;;:18;17030:664;;17072:71;;-1:-1:-1;;;17072:71:3;;-1:-1:-1;;;;;17072:36:3;;;;;:71;;735:10:7;;17123:4:3;;17129:7;;17138:4;;17072:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17072:71:3;;;;;;;;-1:-1:-1;;17072:71:3;;;;;;;;;;;;:::i;:::-;;;17068:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17381:6;:13;17398:1;17381:18;17377:293;;17430:25;;-1:-1:-1;;;17430:25:3;;-1:-1:-1;;;;;2865:32:14;;17430:25:3;;;2847:51:14;2820:18;;17430:25:3;2701:203:14;17377:293:3;17622:6;17616:13;17607:6;17603:2;17599:15;17592:38;17068:616;-1:-1:-1;;;;;;17190:51:3;;-1:-1:-1;;;17190:51:3;17186:130;;17272:25;;-1:-1:-1;;;17272:25:3;;-1:-1:-1;;;;;2865:32:14;;17272:25:3;;;2847:51:14;2820:18;;17272:25:3;2701:203:14;17186:130:3;17144:186;17068:616;16918:782;;;;:::o;16138:241::-;16201:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:3;;16263:88;;16309:31;;-1:-1:-1;;;16309:31:3;;;;;6756:25:14;;;6729:18;;16309:31:3;6610:177:14;8838:795:3;8924:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:3;;;;9035:18;;;9031:86;;9069:37;9086:4;9092;9098:7;9069:16;:37::i;:::-;-1:-1:-1;;;;;9161:18:3;;;9157:256;;9277:48;9294:1;9298:7;9294:1;;9277:8;:48::i;:::-;-1:-1:-1;;;;;9368:15:3;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9368:20:3;;;9157:256;-1:-1:-1;;;;;9427:16:3;;;9423:107;;-1:-1:-1;;;;;9487:13:3;;;;;;:9;:13;;;;;:18;;9504:1;9487:18;;;9423:107;9540:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9540:21:3;-1:-1:-1;;;;;9540:21:3;;;;;;;;;9577:27;;9540:16;;9577:27;;;;;;;9622:4;8838:795;-1:-1:-1;;;;8838:795:3:o;7082:368::-;7194:38;7208:5;7215:7;7224;7194:13;:38::i;:::-;7189:255;;-1:-1:-1;;;;;7252:19:3;;7248:186;;7298:31;;-1:-1:-1;;;7298:31:3;;;;;6756:25:14;;;6729:18;;7298:31:3;6610:177:14;7248:186:3;7375:44;;-1:-1:-1;;;7375:44:3;;-1:-1:-1;;;;;6984:32:14;;7375:44:3;;;6966:51:14;7033:18;;;7026:34;;;6939:18;;7375:44:3;6792:274:14;14720:662:3;14880:9;:31;;;-1:-1:-1;;;;;;14893:18:3;;;;14880:31;14876:460;;;14927:13;14943:22;14957:7;14943:13;:22::i;:::-;14927:38;-1:-1:-1;;;;;;15093:18:3;;;;;;:35;;;15124:4;-1:-1:-1;;;;;15115:13:3;:5;-1:-1:-1;;;;;15115:13:3;;;15093:35;:69;;;;-1:-1:-1;;;;;;4039:25:3;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;15132:30;15093:69;15089:142;;;15189:27;;-1:-1:-1;;;15189:27:3;;-1:-1:-1;;;;;2865:32:14;;15189:27:3;;;2847:51:14;2820:18;;15189:27:3;2701:203:14;15089:142:3;15249:9;15245:81;;;15303:7;15299:2;-1:-1:-1;;;;;15283:28:3;15292:5;-1:-1:-1;;;;;15283:28:3;;;;;;;;;;;15245:81;14913:423;14876:460;-1:-1:-1;;15346:24:3;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15346:29:3;-1:-1:-1;;;;;15346:29:3;;;;;;;;;;14720:662::o;6376:272::-;6479:4;-1:-1:-1;;;;;6514:21:3;;;;;;:127;;;6561:7;-1:-1:-1;;;;;6552:16:3;:5;-1:-1:-1;;;;;6552:16:3;;:52;;;-1:-1:-1;;;;;;4039:25:3;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;6572:32;6552:88;;;-1:-1:-1;6008:7:3;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6608:32:3;;;6034:24;;6608:32;6552:88;6495:146;6376:272;-1:-1:-1;;;;6376:272:3:o;14:127:14:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:518::-;759:2;754:3;751:11;748:421;;;795:5;792:1;785:16;839:4;836:1;826:18;909:2;897:10;893:19;890:1;886:27;880:4;876:38;945:4;933:10;930:20;927:47;;;-1:-1:-1;968:4:14;927:47;1023:2;1018:3;1014:12;1011:1;1007:20;1001:4;997:31;987:41;;1078:81;1096:2;1089:5;1086:13;1078:81;;;1155:1;1141:16;;1122:1;1111:13;1078:81;;1351:1345;1471:10;;-1:-1:-1;;;;;1493:30:14;;1490:56;;;1526:18;;:::i;:::-;1555:97;1645:6;1605:38;1637:4;1631:11;1605:38;:::i;:::-;1599:4;1555:97;:::i;:::-;1707:4;;1764:2;1753:14;;1781:1;1776:663;;;;2483:1;2500:6;2497:89;;;-1:-1:-1;2552:19:14;;;2546:26;2497:89;-1:-1:-1;;1308:1:14;1304:11;;;1300:24;1296:29;1286:40;1332:1;1328:11;;;1283:57;2599:81;;1746:944;;1776:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1812:20:14;;;1930:236;1944:7;1941:1;1938:14;1930:236;;;2033:19;;;2027:26;2012:42;;2125:27;;;;2093:1;2081:14;;;;1960:19;;1930:236;;;1934:3;2194:6;2185:7;2182:19;2179:201;;;2255:19;;;2249:26;-1:-1:-1;;2338:1:14;2334:14;;;2350:3;2330:24;2326:37;2322:42;2307:58;2292:74;;2179:201;;;2426:1;2417:6;2414:1;2410:14;2406:22;2400:4;2393:36;1746:944;;;;;1351:1345;;:::o;4150:423::-;4192:3;4230:5;4224:12;4257:6;4252:3;4245:19;4282:1;4292:162;4306:6;4303:1;4300:13;4292:162;;;4368:4;4424:13;;;4420:22;;4414:29;4396:11;;;4392:20;;4385:59;4321:12;4292:162;;;4296:3;4499:1;4492:4;4483:6;4478:3;4474:16;4470:27;4463:38;4562:4;4555:2;4551:7;4546:2;4538:6;4534:15;4530:29;4525:3;4521:39;4517:50;4510:57;;;4150:423;;;;:::o;4578:1106::-;4916:4;4956:1;4948:6;4945:13;4935:144;;5001:10;4996:3;4992:20;4989:1;4982:31;5036:4;5033:1;5026:15;5064:4;5061:1;5054:15;4935:144;5106:6;5095:9;5088:25;5149:3;5144:2;5133:9;5129:18;5122:31;5176:46;5217:3;5206:9;5202:19;5194:6;5176:46;:::i;:::-;5270:9;5262:6;5258:22;5253:2;5242:9;5238:18;5231:50;5304:33;5330:6;5322;5304:33;:::i;:::-;5290:47;;5385:9;5377:6;5373:22;5368:2;5357:9;5353:18;5346:50;5419:33;5445:6;5437;5419:33;:::i;:::-;5405:47;;5501:9;5493:6;5489:22;5483:3;5472:9;5468:19;5461:51;5535:33;5561:6;5553;5535:33;:::i;:::-;5521:47;;5617:9;5609:6;5605:22;5599:3;5588:9;5584:19;5577:51;5645:33;5671:6;5663;5645:33;:::i;:::-;5637:41;4578:1106;-1:-1:-1;;;;;;;;;4578:1106:14:o;5689:127::-;5750:10;5745:3;5741:20;5738:1;5731:31;5781:4;5778:1;5771:15;5805:4;5802:1;5795:15;5821:489;-1:-1:-1;;;;;6090:15:14;;;6072:34;;6142:15;;6137:2;6122:18;;6115:43;6189:2;6174:18;;6167:34;;;6237:3;6232:2;6217:18;;6210:31;;;6015:4;;6258:46;;6284:19;;6276:6;6258:46;:::i;:::-;6250:54;5821:489;-1:-1:-1;;;;;;5821:489:14:o;6315:290::-;6384:6;6437:2;6425:9;6416:7;6412:23;6408:32;6405:52;;;6453:1;6450;6443:12;6405:52;6479:16;;-1:-1:-1;;;;;;6524:32:14;;6514:43;;6504:71;;6571:1;6568;6561:12;6792:274;300:1496:0;;;;;;", "srcmap-runtime": "300:1496:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1561:300:3;;;;;;:::i;:::-;;:::i;:::-;;;565:14:14;;558:22;540:41;;528:2;513:18;1561:300:3;;;;;;;;2365:89;;;:::i;:::-;;;;;;;:::i;3497:154::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:14;;;1679:51;;1667:2;1652:18;3497:154:3;1533:203:14;3323:113:3;;;;;;:::i;:::-;;:::i;:::-;;4582:253:13;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4143:578:3:-;;;;;;:::i;:::-;;:::i;423:51:13:-;;;;;;:::i;:::-;;:::i;4787:132:3:-;;;;;;:::i;:::-;;:::i;480:50:13:-;;;;;;:::i;:::-;;:::i;:::-;;;3738:25:14;;;3726:2;3711:18;480:50:13;3592:177:14;3305:322:13;;;;;;:::i;:::-;;:::i;367:50::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;2285:184::-;;;;;;:::i;:::-;;:::i;2185:118:3:-;;;;;;:::i;:::-;;:::i;1920:208::-;;;;;;:::i;:::-;;:::i;2293:101:1:-;;;:::i;1076:320:13:-;;;;;;:::i;:::-;;:::i;1402:733::-;;;;;;:::i;:::-;;:::i;1638:85:1:-;1710:6;;-1:-1:-1;;;;;1710:6:1;1638:85;;600:119:0;;;:::i;2518:93:3:-;;;:::i;5139:262:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;967:103::-;;;;;;:::i;:::-;;:::i;3718:144:3:-;;;;;;:::i;:::-;;:::i;1501:292:0:-;;;:::i;796:120::-;;;:::i;4985:208:3:-;;;;;;:::i;:::-;;:::i;2677:255::-;;;;;;:::i;:::-;;:::i;1188:244:0:-;;;:::i;972:124::-;1068:7;1024:4;1047:30;:12;:30;;;:37;1088:1;-1:-1:-1;1047:42:0;972:124;;3928:153:3;;;;;;:::i;:::-;;:::i;3982:266:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2543:215:1:-;;;;;;:::i;:::-;;:::i;1561:300:3:-;1663:4;-1:-1:-1;;;;;;1698:40:3;;-1:-1:-1;;;1698:40:3;;:104;;-1:-1:-1;;;;;;;1754:48:3;;-1:-1:-1;;;1754:48:3;1698:104;:156;;;-1:-1:-1;;;;;;;;;;861:40:9;;;1818:36:3;1679:175;1561:300;-1:-1:-1;;1561:300:3:o;2365:89::-;2410:13;2442:5;2435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:89;:::o;3497:154::-;3564:7;3583:22;3597:7;3583:13;:22::i;:::-;-1:-1:-1;6008:7:3;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6034:24:3;3623:21;5938:127;3323:113;3394:35;3403:2;3407:7;735:10:7;3394:8:3;:35::i;:::-;3323:113;;:::o;4582:253:13:-;4653:16;-1:-1:-1;;;;;4689:25:13;;4681:105;;;;-1:-1:-1;;;4681:105:13;;10782:2:14;4681:105:13;;;10764:21:14;10821:2;10801:18;;;10794:30;10860:34;10840:18;;;10833:62;10931:34;10911:18;;;10904:62;-1:-1:-1;;;10982:19:14;;;10975:34;11026:19;;4681:105:13;;;;;;;;;-1:-1:-1;;;;;4803:25:13;;;;;;:12;:25;;;;;;;;;4796:32;;;;;;;;;;;;;;;;;4803:25;;4796:32;;4803:25;4796:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4582:253;;;:::o;4143:578:3:-;-1:-1:-1;;;;;4237:16:3;;4233:87;;4276:33;;-1:-1:-1;;;4276:33:3;;4306:1;4276:33;;;1679:51:14;1652:18;;4276:33:3;1533:203:14;4233:87:3;4538:21;4562:34;4570:2;4574:7;735:10:7;4562:7:3;:34::i;:::-;4538:58;;4627:4;-1:-1:-1;;;;;4610:21:3;:13;-1:-1:-1;;;;;4610:21:3;;4606:109;;4654:50;;-1:-1:-1;;;4654:50:3;;-1:-1:-1;;;;;11314:15:14;;;4654:50:3;;;11296:34:14;11346:18;;;11339:34;;;11409:15;;11389:18;;;11382:43;11231:18;;4654:50:3;11056:375:14;4606:109:3;4223:498;4143:578;;;:::o;423:51:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;423:51:13;;-1:-1:-1;423:51:13;;-1:-1:-1;423:51:13:o;4787:132:3:-;4873:39;4890:4;4896:2;4900:7;4873:39;;;;;;;;;;;;:16;:39::i;:::-;4787:132;;;:::o;480:50:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3305:322::-;3501:64;3518:19;3539:16;3557:7;3501:16;:64::i;:::-;3575:22;;;;:13;:22;;;;;;;:45;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3575:45:13;-1:-1:-1;;;;;3575:45:13;;;;;;;;;;-1:-1:-1;3305:322:13:o;367:50::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2285:184::-;2363:4;2401:16;2409:7;2401;:16::i;:::-;-1:-1:-1;;;;;2386:31:13;:11;-1:-1:-1;;;;;2386:31:13;;:75;;;-1:-1:-1;2436:22:13;;;;:13;:22;;;;;:25;;:22;;;:25;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2421:40:13;;;2436:25;;2421:40;2386:75;2378:84;2285:184;-1:-1:-1;;;2285:184:13:o;2185:118:3:-;2248:7;2274:22;2288:7;2274:13;:22::i;1920:208::-;1983:7;-1:-1:-1;;;;;2006:19:3;;2002:87;;2048:30;;-1:-1:-1;;;2048:30:3;;2075:1;2048:30;;;1679:51:14;1652:18;;2048:30:3;1533:203:14;2002:87:3;-1:-1:-1;;;;;;2105:16:3;;;;;:9;:16;;;;;;;1920:208::o;2293:101:1:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1076:320:13:-;1229:7;1248:30;1258:10;1270:7;1248:9;:30::i;:::-;1288:31;1299:10;1311:7;1288:10;:31::i;:::-;1336:53;1351:7;1360:4;1366;1372:6;1380:3;1385;1336:14;:53::i;:::-;1329:60;1076:320;-1:-1:-1;;;;;;;1076:320:13:o;1402:733::-;1555:7;1591:31;1602:7;1611:10;1591;:31::i;:::-;1582:96;;;;-1:-1:-1;;;1582:96:13;;11770:2:14;1582:96:13;;;11752:21:14;11809:2;11789:18;;;11782:30;11848:34;11828:18;;;11821:62;-1:-1:-1;;;11899:18:14;;;11892:48;11957:19;;1582:96:13;11568:414:14;1582:96:13;1714:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1689:22:13;;;:13;:22;;;;;;;:166;;:22;;:166;;:22;:166;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1920:10:13;;-1:-1:-1;1899:7:13;;-1:-1:-1;1871:221:13;1958:16;1899:7;1958;:16::i;:::-;-1:-1:-1;;;;;1944:30:13;:10;-1:-1:-1;;;;;1944:30:13;;:57;;1989:12;1944:57;;;1977:10;1944:57;2015:4;2033;2051:6;2071:3;2088;1871:221;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2111:7:13;;1402:733;-1:-1:-1;;;;;1402:733:13:o;600:119:0:-;655:4;710:1;-1:-1:-1;;;;;678:34:0;:20;686:11;;678:7;:20::i;:::-;-1:-1:-1;;;;;678:34:0;;;671:41;;600:119;:::o;2518:93:3:-;2565:13;2597:7;2590:14;;;;;:::i;5139:262:13:-;5198:15;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5198:15:13;5263:1;5799:16:3;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:3;-1:-1:-1;;;;;5234:31:13;;;5345:7;5274:79;;;;;;;;:::i;:::-;;;;;;;;;;;;;5225:130;;;;;-1:-1:-1;;;5225:130:13;;;;;;;;:::i;:::-;-1:-1:-1;5372:22:13;;;;:13;:22;;;;;;;5365:29;;;;;;;;;;;;5372:22;;5365:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5139:262;;;:::o;967:103::-;1531:13:1;:11;:13::i;:::-;1041:22:13::1;1051:2;1055:7;1041:9;:22::i;3718:144:3:-:0;3803:52;735:10:7;3836:8:3;3846;3803:18;:52::i;1501:292:0:-;1609:1;1575:4;1595:16;;;:13;:16;;;:23;:27;1591:196;;1676:1;1638:21;1662:16;;;:13;:16;;;;;1638:40;;1662:16;1638:40;;;;;;;;;;;;;;;;;;1662:16;1638:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1638:40:0;;;;;;;;;;;;;;;;;;;;;;;1724:10;1732:1;1724:7;:10::i;:::-;-1:-1:-1;;;;;1699:35:0;:4;1718:1;1704:4;:11;:15;;;;:::i;:::-;1699:21;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1699:35:0;;1692:42;;;1501:292;:::o;1591:196::-;-1:-1:-1;1772:4:0;;1501:292::o;796:120::-;884:1;848:4;870:16;;;:13;:16;;;:19;;901:7;;870:16;848:4;;870:19;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;870:19:0;:39;;796:120;-1:-1:-1;796:120:0:o;4985:208:3:-;5098:31;5111:4;5117:2;5121:7;5098:12;:31::i;:::-;5139:47;5162:4;5168:2;5172:7;5181:4;5139:22;:47::i;2677:255::-;2741:13;2766:22;2780:7;2766:13;:22::i;:::-;;2799:21;2823:10;3250:9;;;;;;;;;-1:-1:-1;3250:9:3;;;3174:92;2823:10;2799:34;;2874:1;2856:7;2850:21;:25;:75;;;;;;;;;;;;;;;;;2892:7;2901:18;:7;:16;:18::i;:::-;2878:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2843:82;2677:255;-1:-1:-1;;;2677:255:3:o;1188:244:0:-;1298:1;1264:4;1284:16;;;:13;:16;;;:23;:27;1280:146;;1340:13;1372:1;1340:16;;;;;;;;;1334:35;;;;;:::i;:::-;;;:39;1327:46;;1188:244;:::o;3928:153:3:-;-1:-1:-1;;;;;4039:25:3;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3928:153::o;3982:266:13:-;4109:1;5799:16:3;;;:7;:16;;;;;;4044::13;;4109:1;-1:-1:-1;;;;;5799:16:3;-1:-1:-1;;;;;4080:31:13;;;4191:7;4120:79;;;;;;;;:::i;:::-;;;;;;;;;;;;;4071:131;;;;;-1:-1:-1;;;4071:131:13;;;;;;;;:::i;:::-;-1:-1:-1;4219:22:13;;;;:13;:22;;;;;;;;;4212:29;;;;;;;;;;;;;;;;;4219:22;;4212:29;;4219:22;4212:29;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4212:29:13;;;;;;;;;;;;;;;;;;;;;;3982:266;;;:::o;2543:215:1:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:1;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:1;;2700:1:::1;2672:31;::::0;::::1;1679:51:14::0;1652:18;;2672:31:1::1;1533:203:14::0;2623:91:1::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;16138:241:3:-;16201:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:3;;16263:88;;16309:31;;-1:-1:-1;;;16309:31:3;;;;;3738:25:14;;;3711:18;;16309:31:3;3592:177:14;14418:120:3;14498:33;14507:2;14511:7;14520:4;14526;14498:8;:33::i;8838:795::-;8924:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:3;;;;9035:18;;;9031:86;;9069:37;9086:4;9092;9098:7;9069:16;:37::i;:::-;-1:-1:-1;;;;;9161:18:3;;;9157:256;;9277:48;9294:1;9298:7;9315:1;9319:5;9277:8;:48::i;:::-;-1:-1:-1;;;;;9368:15:3;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9368:20:3;;;9157:256;-1:-1:-1;;;;;9427:16:3;;;9423:107;;-1:-1:-1;;;;;9487:13:3;;;;;;:9;:13;;;;;:18;;9504:1;9487:18;;;9423:107;9540:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9540:21:3;-1:-1:-1;;;;;9540:21:3;;;;;;;;;9577:27;;9540:16;;9577:27;;;;;;;9622:4;8838:795;-1:-1:-1;;;;8838:795:3:o;1796:162:1:-;1710:6;;-1:-1:-1;;;;;1710:6:1;735:10:7;1855:23:1;1851:101;;1901:40;;-1:-1:-1;;;1901:40:1;;735:10:7;1901:40:1;;;1679:51:14;1652:18;;1901:40:1;1533:203:14;2912:187:1;3004:6;;;-1:-1:-1;;;;;3020:17:1;;;-1:-1:-1;;;;;;3020:17:1;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;10633:100:3:-;10700:26;10710:2;10714:7;10700:26;;;;;;;;;;;;:9;:26::i;2475:374:13:-;2563:22;;;;:13;:22;;;;;:29;:34;2555:88;;;;-1:-1:-1;;;2555:88:13;;16604:2:14;2555:88:13;;;16586:21:14;16643:2;16623:18;;;16616:30;16682:34;16662:18;;;16655:62;-1:-1:-1;;;16733:18:14;;;16726:39;16782:19;;2555:88:13;16402:405:14;2555:88:13;-1:-1:-1;;;;;2661:28:13;;2653:84;;;;-1:-1:-1;;;2653:84:13;;17014:2:14;2653:84:13;;;16996:21:14;17053:2;17033:18;;;17026:30;17092:34;17072:18;;;17065:62;-1:-1:-1;;;17143:18:14;;;17136:41;17194:19;;2653:84:13;16812:407:14;2653:84:13;2747:22;;;;:13;:22;;;;;;;;:43;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2747:43:13;;;-1:-1:-1;;;;;;2747:43:13;;;;;;;2800:28;;;:12;:28;;;;:42;;;;;;;;;;;;;;;2475:374::o;15591:312:3:-;-1:-1:-1;;;;;15698:22:3;;15694:91;;15743:31;;-1:-1:-1;;;15743:31:3;;-1:-1:-1;;;;;1697:32:14;;15743:31:3;;;1679:51:14;1652:18;;15743:31:3;1533:203:14;15694:91:3;-1:-1:-1;;;;;15794:25:3;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15794:46:3;;;;;;;;;;15855:41;;540::14;;;15855::3;;513:18:14;15855:41:3;;;;;;;15591:312;;;:::o;16918:782::-;-1:-1:-1;;;;;17034:14:3;;;:18;17030:664;;17072:71;;-1:-1:-1;;;17072:71:3;;-1:-1:-1;;;;;17072:36:3;;;;;:71;;735:10:7;;17123:4:3;;17129:7;;17138:4;;17072:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17072:71:3;;;;;;;;-1:-1:-1;;17072:71:3;;;;;;;;;;;;:::i;:::-;;;17068:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17381:6;:13;17398:1;17381:18;17377:293;;17430:25;;-1:-1:-1;;;17430:25:3;;-1:-1:-1;;;;;1697:32:14;;17430:25:3;;;1679:51:14;1652:18;;17430:25:3;1533:203:14;17377:293:3;17622:6;17616:13;17607:6;17603:2;17599:15;17592:38;17068:616;-1:-1:-1;;;;;;17190:51:3;;-1:-1:-1;;;17190:51:3;17186:130;;17272:25;;-1:-1:-1;;;17272:25:3;;-1:-1:-1;;;;;1697:32:14;;17272:25:3;;;1679:51:14;1652:18;;17272:25:3;1533:203:14;17186:130:3;17144:186;16918:782;;;;:::o;637:698:8:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;817:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:8;-1:-1:-1;794:41:8;-1:-1:-1;955:28:8;;;971:2;955:28;1010:282;-1:-1:-1;;1041:5:8;-1:-1:-1;;;1175:2:8;1164:14;;1159:32;1041:5;1146:46;1236:2;1227:11;;;-1:-1:-1;1256:21:8;1010:282;1256:21;-1:-1:-1;1312:6:8;637:698;-1:-1:-1;;;637:698:8:o;14720:662:3:-;14880:9;:31;;;-1:-1:-1;;;;;;14893:18:3;;;;14880:31;14876:460;;;14927:13;14943:22;14957:7;14943:13;:22::i;:::-;14927:38;-1:-1:-1;;;;;;15093:18:3;;;;;;:35;;;15124:4;-1:-1:-1;;;;;15115:13:3;:5;-1:-1:-1;;;;;15115:13:3;;;15093:35;:69;;;;;15133:29;15150:5;15157:4;15133:16;:29::i;:::-;15132:30;15093:69;15089:142;;;15189:27;;-1:-1:-1;;;15189:27:3;;-1:-1:-1;;;;;1697:32:14;;15189:27:3;;;1679:51:14;1652:18;;15189:27:3;1533:203:14;15089:142:3;15249:9;15245:81;;;15303:7;15299:2;-1:-1:-1;;;;;15283:28:3;15292:5;-1:-1:-1;;;;;15283:28:3;;;;;;;;;;;15245:81;14913:423;14876:460;-1:-1:-1;;15346:24:3;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15346:29:3;-1:-1:-1;;;;;15346:29:3;;;;;;;;;;14720:662::o;7082:368::-;7194:38;7208:5;7215:7;7224;7194:13;:38::i;:::-;7189:255;;-1:-1:-1;;;;;7252:19:3;;7248:186;;7298:31;;-1:-1:-1;;;7298:31:3;;;;;3738:25:14;;;3711:18;;7298:31:3;3592:177:14;7248:186:3;7375:44;;-1:-1:-1;;;7375:44:3;;-1:-1:-1;;;;;18296:32:14;;7375:44:3;;;18278:51:14;18345:18;;;18338:34;;;18251:18;;7375:44:3;18104:274:14;10954:182:3;11048:18;11054:2;11058:7;11048:5;:18::i;:::-;11076:53;11107:1;11111:2;11115:7;11124:4;11076:22;:53::i;12214:916:11:-;12267:7;;-1:-1:-1;;;12342:17:11;;12338:103;;-1:-1:-1;;;12379:17:11;;;-1:-1:-1;12424:2:11;12414:12;12338:103;12467:8;12458:5;:17;12454:103;;12504:8;12495:17;;;-1:-1:-1;12540:2:11;12530:12;12454:103;12583:8;12574:5;:17;12570:103;;12620:8;12611:17;;;-1:-1:-1;12656:2:11;12646:12;12570:103;12699:7;12690:5;:16;12686:100;;12735:7;12726:16;;;-1:-1:-1;12770:1:11;12760:11;12686:100;12812:7;12803:5;:16;12799:100;;12848:7;12839:16;;;-1:-1:-1;12883:1:11;12873:11;12799:100;12925:7;12916:5;:16;12912:100;;12961:7;12952:16;;;-1:-1:-1;12996:1:11;12986:11;12912:100;13038:7;13029:5;:16;13025:66;;13075:1;13065:11;13117:6;12214:916;-1:-1:-1;;12214:916:11:o;6376:272:3:-;6479:4;-1:-1:-1;;;;;6514:21:3;;;;;;:127;;;6561:7;-1:-1:-1;;;;;6552:16:3;:5;-1:-1:-1;;;;;6552:16:3;;:52;;;;6572:32;6589:5;6596:7;6572:16;:32::i;:::-;6552:88;;;-1:-1:-1;6008:7:3;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6608:32:3;;;6034:24;;6608:32;6552:88;6495:146;6376:272;-1:-1:-1;;;;6376:272:3:o;9955:327::-;-1:-1:-1;;;;;10022:16:3;;10018:87;;10061:33;;-1:-1:-1;;;10061:33:3;;10091:1;10061:33;;;1679:51:14;1652:18;;10061:33:3;1533:203:14;10018:87:3;10114:21;10138:32;10146:2;10150:7;10167:1;10138:7;:32::i;:::-;10114:56;-1:-1:-1;;;;;;10184:27:3;;;10180:96;;10234:31;;-1:-1:-1;;;10234:31:3;;10262:1;10234:31;;;1679:51:14;1652:18;;10234:31:3;1533:203:14;14:131;-1:-1:-1;;;;;;88:32:14;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:14;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:14;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:14:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:14;;1348:180;-1:-1:-1;1348:180:14:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:14;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:14:o;2178:186::-;2237:6;2290:2;2278:9;2269:7;2265:23;2261:32;2258:52;;;2306:1;2303;2296:12;2258:52;2329:29;2348:9;2329:29;:::i;2369:632::-;2540:2;2592:21;;;2662:13;;2565:18;;;2684:22;;;2511:4;;2540:2;2763:15;;;;2737:2;2722:18;;;2511:4;2806:169;2820:6;2817:1;2814:13;2806:169;;;2881:13;;2869:26;;2950:15;;;;2915:12;;;;2842:1;2835:9;2806:169;;;-1:-1:-1;2992:3:14;;2369:632;-1:-1:-1;;;;;;2369:632:14:o;3006:328::-;3083:6;3091;3099;3152:2;3140:9;3131:7;3127:23;3123:32;3120:52;;;3168:1;3165;3158:12;3120:52;3191:29;3210:9;3191:29;:::i;:::-;3181:39;;3239:38;3273:2;3262:9;3258:18;3239:38;:::i;:::-;3229:48;;3324:2;3313:9;3309:18;3296:32;3286:42;;3006:328;;;;;:::o;3339:248::-;3407:6;3415;3468:2;3456:9;3447:7;3443:23;3439:32;3436:52;;;3484:1;3481;3474:12;3436:52;-1:-1:-1;;3507:23:14;;;3577:2;3562:18;;;3549:32;;-1:-1:-1;3339:248:14:o;3774:875::-;4115:3;4104:9;4097:22;4078:4;4142:46;4183:3;4172:9;4168:19;4160:6;4142:46;:::i;:::-;4236:9;4228:6;4224:22;4219:2;4208:9;4204:18;4197:50;4270:33;4296:6;4288;4270:33;:::i;:::-;4256:47;;4351:9;4343:6;4339:22;4334:2;4323:9;4319:18;4312:50;4385:33;4411:6;4403;4385:33;:::i;:::-;4371:47;;4466:9;4458:6;4454:22;4449:2;4438:9;4434:18;4427:50;4500:33;4526:6;4518;4500:33;:::i;:::-;4486:47;;4582:9;4574:6;4570:22;4564:3;4553:9;4549:19;4542:51;4610:33;4636:6;4628;4610:33;:::i;:::-;4602:41;3774:875;-1:-1:-1;;;;;;;;3774:875:14:o;4654:254::-;4722:6;4730;4783:2;4771:9;4762:7;4758:23;4754:32;4751:52;;;4799:1;4796;4789:12;4751:52;4835:9;4822:23;4812:33;;4864:38;4898:2;4887:9;4883:18;4864:38;:::i;:::-;4854:48;;4654:254;;;;;:::o;4913:127::-;4974:10;4969:3;4965:20;4962:1;4955:31;5005:4;5002:1;4995:15;5029:4;5026:1;5019:15;5045:632;5110:5;5140:18;5181:2;5173:6;5170:14;5167:40;;;5187:18;;:::i;:::-;5262:2;5256:9;5230:2;5316:15;;-1:-1:-1;;5312:24:14;;;5338:2;5308:33;5304:42;5292:55;;;5362:18;;;5382:22;;;5359:46;5356:72;;;5408:18;;:::i;:::-;5448:10;5444:2;5437:22;5477:6;5468:15;;5507:6;5499;5492:22;5547:3;5538:6;5533:3;5529:16;5526:25;5523:45;;;5564:1;5561;5554:12;5523:45;5614:6;5609:3;5602:4;5594:6;5590:17;5577:44;5669:1;5662:4;5653:6;5645;5641:19;5637:30;5630:41;;;;5045:632;;;;;:::o;5682:222::-;5725:5;5778:3;5771:4;5763:6;5759:17;5755:27;5745:55;;5796:1;5793;5786:12;5745:55;5818:80;5894:3;5885:6;5872:20;5865:4;5857:6;5853:17;5818:80;:::i;5909:1214::-;6063:6;6071;6079;6087;6095;6103;6156:3;6144:9;6135:7;6131:23;6127:33;6124:53;;;6173:1;6170;6163:12;6124:53;6209:9;6196:23;6186:33;;6270:2;6259:9;6255:18;6242:32;6293:18;6334:2;6326:6;6323:14;6320:34;;;6350:1;6347;6340:12;6320:34;6373:50;6415:7;6406:6;6395:9;6391:22;6373:50;:::i;:::-;6363:60;;6476:2;6465:9;6461:18;6448:32;6432:48;;6505:2;6495:8;6492:16;6489:36;;;6521:1;6518;6511:12;6489:36;6544:52;6588:7;6577:8;6566:9;6562:24;6544:52;:::i;:::-;6534:62;;6649:2;6638:9;6634:18;6621:32;6605:48;;6678:2;6668:8;6665:16;6662:36;;;6694:1;6691;6684:12;6662:36;6717:52;6761:7;6750:8;6739:9;6735:24;6717:52;:::i;:::-;6707:62;;6822:3;6811:9;6807:19;6794:33;6778:49;;6852:2;6842:8;6839:16;6836:36;;;6868:1;6865;6858:12;6836:36;6891:52;6935:7;6924:8;6913:9;6909:24;6891:52;:::i;:::-;6881:62;;6996:3;6985:9;6981:19;6968:33;6952:49;;7026:2;7016:8;7013:16;7010:36;;;7042:1;7039;7032:12;7010:36;;7065:52;7109:7;7098:8;7087:9;7083:24;7065:52;:::i;:::-;7055:62;;;5909:1214;;;;;;;;:::o;7128:1110::-;7307:2;7296:9;7289:21;7270:4;7345:6;7339:13;7388:4;7383:2;7372:9;7368:18;7361:32;7416:52;7463:3;7452:9;7448:19;7434:12;7416:52;:::i;:::-;7402:66;;7517:2;7509:6;7505:15;7499:22;7544:2;7540:7;7611:2;7599:9;7591:6;7587:22;7583:31;7578:2;7567:9;7563:18;7556:59;7638:41;7672:6;7656:14;7638:41;:::i;:::-;7624:55;;7728:2;7720:6;7716:15;7710:22;7688:44;;7796:2;7784:9;7776:6;7772:22;7768:31;7763:2;7752:9;7748:18;7741:59;7823:41;7857:6;7841:14;7823:41;:::i;:::-;7809:55;;7913:2;7905:6;7901:15;7895:22;7873:44;;7982:2;7970:9;7962:6;7958:22;7954:31;7948:3;7937:9;7933:19;7926:60;8009:41;8043:6;8027:14;8009:41;:::i;:::-;7995:55;;8099:3;8091:6;8087:16;8081:23;8059:45;;8170:2;8158:9;8150:6;8146:22;8142:31;8135:4;8124:9;8120:20;8113:61;;8191:41;8225:6;8209:14;8191:41;:::i;:::-;8183:49;7128:1110;-1:-1:-1;;;;;7128:1110:14:o;8243:347::-;8308:6;8316;8369:2;8357:9;8348:7;8344:23;8340:32;8337:52;;;8385:1;8382;8375:12;8337:52;8408:29;8427:9;8408:29;:::i;:::-;8398:39;;8487:2;8476:9;8472:18;8459:32;8534:5;8527:13;8520:21;8513:5;8510:32;8500:60;;8556:1;8553;8546:12;8500:60;8579:5;8569:15;;;8243:347;;;;;:::o;8595:667::-;8690:6;8698;8706;8714;8767:3;8755:9;8746:7;8742:23;8738:33;8735:53;;;8784:1;8781;8774:12;8735:53;8807:29;8826:9;8807:29;:::i;:::-;8797:39;;8855:38;8889:2;8878:9;8874:18;8855:38;:::i;:::-;8845:48;;8940:2;8929:9;8925:18;8912:32;8902:42;;8995:2;8984:9;8980:18;8967:32;9022:18;9014:6;9011:30;9008:50;;;9054:1;9051;9044:12;9008:50;9077:22;;9130:4;9122:13;;9118:27;-1:-1:-1;9108:55:14;;9159:1;9156;9149:12;9108:55;9182:74;9248:7;9243:2;9230:16;9225:2;9221;9217:11;9182:74;:::i;:::-;9172:84;;;8595:667;;;;;;;:::o;9267:260::-;9335:6;9343;9396:2;9384:9;9375:7;9371:23;9367:32;9364:52;;;9412:1;9409;9402:12;9364:52;9435:29;9454:9;9435:29;:::i;:::-;9425:39;;9483:38;9517:2;9506:9;9502:18;9483:38;:::i;9532:658::-;9703:2;9755:21;;;9825:13;;9728:18;;;9847:22;;;9674:4;;9703:2;9926:15;;;;9900:2;9885:18;;;9674:4;9969:195;9983:6;9980:1;9977:13;9969:195;;;10048:13;;-1:-1:-1;;;;;10044:39:14;10032:52;;10139:15;;;;10104:12;;;;10080:1;9998:9;9969:195;;10195:380;10274:1;10270:12;;;;10317;;;10338:61;;10392:4;10384:6;10380:17;10370:27;;10338:61;10445:2;10437:6;10434:14;10414:18;10411:38;10408:161;;10491:10;10486:3;10482:20;10479:1;10472:31;10526:4;10523:1;10516:15;10554:4;10551:1;10544:15;10408:161;;10195:380;;;:::o;11436:127::-;11497:10;11492:3;11488:20;11485:1;11478:31;11528:4;11525:1;11518:15;11552:4;11549:1;11542:15;12113:518;12215:2;12210:3;12207:11;12204:421;;;12251:5;12248:1;12241:16;12295:4;12292:1;12282:18;12365:2;12353:10;12349:19;12346:1;12342:27;12336:4;12332:38;12401:4;12389:10;12386:20;12383:47;;;-1:-1:-1;12424:4:14;12383:47;12479:2;12474:3;12470:12;12467:1;12463:20;12457:4;12453:31;12443:41;;12534:81;12552:2;12545:5;12542:13;12534:81;;;12611:1;12597:16;;12578:1;12567:13;12534:81;;12807:1345;12933:3;12927:10;12960:18;12952:6;12949:30;12946:56;;;12982:18;;:::i;:::-;13011:97;13101:6;13061:38;13093:4;13087:11;13061:38;:::i;:::-;13055:4;13011:97;:::i;:::-;13163:4;;13220:2;13209:14;;13237:1;13232:663;;;;13939:1;13956:6;13953:89;;;-1:-1:-1;14008:19:14;;;14002:26;13953:89;-1:-1:-1;;12764:1:14;12760:11;;;12756:24;12752:29;12742:40;12788:1;12784:11;;;12739:57;14055:81;;13202:944;;13232:663;12060:1;12053:14;;;12097:4;12084:18;;-1:-1:-1;;13268:20:14;;;13386:236;13400:7;13397:1;13394:14;13386:236;;;13489:19;;;13483:26;13468:42;;13581:27;;;;13549:1;13537:14;;;;13416:19;;13386:236;;;13390:3;13650:6;13641:7;13638:19;13635:201;;;13711:19;;;13705:26;-1:-1:-1;;13794:1:14;13790:14;;;13806:3;13786:24;13782:37;13778:42;13763:58;13748:74;;13635:201;;;13882:1;13873:6;13870:1;13866:14;13862:22;13856:4;13849:36;13202:944;;;;;12807:1345;;:::o;14157:1106::-;14495:4;14535:1;14527:6;14524:13;14514:144;;14580:10;14575:3;14571:20;14568:1;14561:31;14615:4;14612:1;14605:15;14643:4;14640:1;14633:15;14514:144;14685:6;14674:9;14667:25;14728:3;14723:2;14712:9;14708:18;14701:31;14755:46;14796:3;14785:9;14781:19;14773:6;14755:46;:::i;:::-;14849:9;14841:6;14837:22;14832:2;14821:9;14817:18;14810:50;14883:33;14909:6;14901;14883:33;:::i;:::-;14869:47;;14964:9;14956:6;14952:22;14947:2;14936:9;14932:18;14925:50;14998:33;15024:6;15016;14998:33;:::i;:::-;14984:47;;15080:9;15072:6;15068:22;15062:3;15051:9;15047:19;15040:51;15114:33;15140:6;15132;15114:33;:::i;:::-;15100:47;;15196:9;15188:6;15184:22;15178:3;15167:9;15163:19;15156:51;15224:33;15250:6;15242;15224:33;:::i;:::-;15216:41;14157:1106;-1:-1:-1;;;;;;;;;14157:1106:14:o;15268:398::-;15510:34;15498:47;;-1:-1:-1;;;15570:2:14;15561:12;;15554:41;15620:2;15611:12;;15604:28;;;;15657:2;15648:12;;15268:398::o;15671:225::-;15738:9;;;15759:11;;;15756:134;;;15812:10;15807:3;15803:20;15800:1;15793:31;15847:4;15844:1;15837:15;15875:4;15872:1;15865:15;15901:496;16080:3;16118:6;16112:13;16134:66;16193:6;16188:3;16181:4;16173:6;16169:17;16134:66;:::i;:::-;16263:13;;16222:16;;;;16285:70;16263:13;16222:16;16332:4;16320:17;;16285:70;:::i;:::-;16371:20;;15901:496;-1:-1:-1;;;;15901:496:14:o;17224:489::-;-1:-1:-1;;;;;17493:15:14;;;17475:34;;17545:15;;17540:2;17525:18;;17518:43;17592:2;17577:18;;17570:34;;;17640:3;17635:2;17620:18;;17613:31;;;17418:4;;17661:46;;17687:19;;17679:6;17661:46;:::i;:::-;17653:54;17224:489;-1:-1:-1;;;;;;17224:489:14:o;17718:249::-;17787:6;17840:2;17828:9;17819:7;17815:23;17811:32;17808:52;;;17856:1;17853;17846:12;17808:52;17888:9;17882:16;17907:30;17931:5;17907:30;:::i", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"editor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enumItemBlocks.Role\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"desc\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"family\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"img\",\"type\":\"string\"}],\"name\":\"PassportUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allItemOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"desc\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"family\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"img\",\"type\":\"string\"}],\"name\":\"createPassport\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"createdItems\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"echidna_create_more\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"echidna_need_to_create_history_and_passport\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"echidna_owner_is_last_entry_allItemOwners\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"echidna_owner_not_zero\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"echidna_set_creator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"}],\"name\":\"getCreatedItemTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getPassport\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"desc\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"family\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"img\",\"type\":\"string\"}],\"internalType\":\"structItemBlocks.Passport\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getUserHistory\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"}],\"name\":\"isEligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"itemPassports\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"desc\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"family\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"img\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"currentOwnerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nextOwnerAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"updateOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"desc\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"family\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"img\",\"type\":\"string\"}],\"name\":\"updatePassport\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "60806040525f600a5534801562000014575f80fd5b5062030000806040518060400160405280600f81526020016e4974656d426c6f636b73546573743960881b8152506040518060400160405280600381526020016249423960e81b815250815f90816200006e919062000b1f565b5060016200007d828262000b1f565b5050506001600160a01b038116620000af57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b620000ba8162000190565b50506200018760076040518060400160405280600c81526020016b546573744974656d4e616d6560a01b8152506040518060400160405280600c81526020016b546573744974656d4465736360a01b8152506040518060400160405280600e81526020016d546573744974656d46616d696c7960901b8152506040518060400160405280600b81526020016a15195cdd125d195b555c9b60aa1b8152506040518060400160405280600b81526020016a546573744974656d496d6760a81b815250620001e160201b60201c565b600a5562000d45565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f620001ee338862000215565b620001fa33886200023a565b6200020a8787878787876200036c565b979650505050505050565b62000236828260405180602001604052805f8152506200050660201b60201c565b5050565b5f8181526008602052604090205415620002a95760405162461bcd60e51b815260206004820152602960248201527f546865726520697320616c726561647920612063726561746f7220666f7220746044820152683434b99034ba32b69760b91b6064820152608401620000a6565b6001600160a01b038216620003155760405162461bcd60e51b815260206004820152602b60248201527f596f7520617265206e6f7420616c6c6f77656420746f20686176652061207a6560448201526a39379030b2323932b9b99760a91b6064820152608401620000a6565b5f8181526008602090815260408083208054600181810183559185528385200180546001600160a01b039097166001600160a01b031990971687179055948352600982528220805494850181558252902090910155565b5f62000379873362000525565b620003e25760405162461bcd60e51b815260206004820152603260248201527f4d75737420626520746865206f776e6572206f6620746865206974656d206f72604482015271081d1a194818dc99585d1bdc881bd9881a5d60721b6064820152608401620000a6565b6040805160a081018252878152602080820188905281830187905260608201869052608082018590525f8a81526007909152919091208151819062000428908262000b1f565b50602082015160018201906200043f908262000b1f565b506040820151600282019062000456908262000b1f565b50606082015160038201906200046d908262000b1f565b506080820151600482019062000484908262000b1f565b503391508890507f132290b0f8d58f9abffd99c75c46d96d52da97d6c61e23f54ab53dd2f27dc1e3620004b7826200058e565b6001600160a01b0316336001600160a01b031614620004d8576001620004da565b5f5b8989898989604051620004f39695949392919062000c30565b60405180910390a3509495945050505050565b620005128383620005a0565b620005205f84848462000607565b505050565b5f62000531836200058e565b6001600160a01b0316826001600160a01b031614806200058757505f83815260086020526040812080549091906200056d576200056d62000cca565b5f918252602090912001546001600160a01b038381169116145b9392505050565b5f6200059a826200073b565b92915050565b6001600160a01b038216620005cb57604051633250574960e11b81525f6004820152602401620000a6565b5f620005d983838362000775565b90506001600160a01b0381161562000520576040516339e3563760e11b81525f6004820152602401620000a6565b6001600160a01b0383163b156200073557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906200064c90339088908790879060040162000cde565b6020604051808303815f875af192505050801562000689575060408051601f3d908101601f19168201909252620006869181019062000d1c565b60015b620006f5573d808015620006b9576040519150601f19603f3d011682016040523d82523d5f602084013e620006be565b606091505b5080515f03620006ed57604051633250574960e11b81526001600160a01b0385166004820152602401620000a6565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146200073357604051633250574960e11b81526001600160a01b0385166004820152602401620000a6565b505b50505050565b5f818152600260205260408120546001600160a01b0316806200059a57604051637e27328960e01b815260048101849052602401620000a6565b5f828152600260205260408120546001600160a01b0390811690831615620007a457620007a48184866200086e565b6001600160a01b03811615620007e157620007c25f858180620008d8565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b0385161562000810576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6200087b83838362000a03565b62000520576001600160a01b038316620008ac57604051637e27328960e01b815260048101829052602401620000a6565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000a6565b8080620008ed57506001600160a01b03821615155b15620009d4575f620008ff846200073b565b90506001600160a01b038316158015906200092c5750826001600160a01b0316816001600160a01b031614155b80156200095e57506001600160a01b038082165f9081526005602090815260408083209387168352929052205460ff16155b15620009895760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000a6565b8115620009d25783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f6001600160a01b0383161580159062000a815750826001600160a01b0316846001600160a01b0316148062000a5d57506001600160a01b038085165f9081526005602090815260408083209387168352929052205460ff165b8062000a8157505f828152600460205260409020546001600160a01b038481169116145b949350505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168062000ab257607f821691505b60208210810362000ad157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200052057805f5260205f20601f840160051c8101602085101562000afe5750805b601f840160051c820191505b8181101562000733575f815560010162000b0a565b81516001600160401b0381111562000b3b5762000b3b62000a89565b62000b538162000b4c845462000a9d565b8462000ad7565b602080601f83116001811462000b89575f841562000b715750858301515b5f19600386901b1c1916600185901b17855562000be3565b5f85815260208120601f198616915b8281101562000bb95788860151825594840194600190910190840162000b98565b508582101562000bd757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f81518084525f5b8181101562000c115760208185018101518683018201520162000bf3565b505f602082860101526020601f19601f83011685010191505092915050565b5f6002881062000c4e57634e487b7160e01b5f52602160045260245ffd5b87825260c0602083015262000c6760c083018862000beb565b828103604084015262000c7b818862000beb565b9050828103606084015262000c91818762000beb565b9050828103608084015262000ca7818662000beb565b905082810360a084015262000cbd818562000beb565b9998505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9062000d129083018462000beb565b9695505050505050565b5f6020828403121562000d2d575f80fd5b81516001600160e01b03198116811462000587575f80fd5b61256a8062000d535f395ff3fe608060405234801561000f575f80fd5b50600436106101e7575f3560e01c8063886ee64e11610109578063b6890f721161009e578063e4dfd6b91161006e578063e4dfd6b914610425578063e985e9c51461045b578063f2a1625e1461046e578063f2fde38b1461048e575f80fd5b8063b6890f72146103ef578063b88d4fde146103f7578063c87b56dd1461040a578063d03aef631461041d575f80fd5b80639f5679f4116100d95780639f5679f4146103a1578063a1448194146103c1578063a22cb465146103d4578063b317b8ee146103e7575f80fd5b8063886ee64e1461036d5780638da5cb5b1461038057806390203d631461039157806395d89b4114610399575f80fd5b806348cdcd4d1161017f5780636352211e1161014f5780636352211e1461032c57806370a082311461033f578063715018a614610352578063875185c31461035a575f80fd5b806348cdcd4d146102c1578063534a3a5c146102e25780635589fe78146102f5578063592e0e0014610319575f80fd5b806310c8b433116101ba57806310c8b4331461026857806323b872dd146102885780632bf3d8171461029b57806342842e0e146102ae575f80fd5b806301ffc9a7146101eb57806306fdde0314610213578063081812fc14610228578063095ea7b314610253575b5f80fd5b6101fe6101f9366004611d1f565b6104a1565b60405190151581526020015b60405180910390f35b61021b6104f2565b60405161020a9190611d87565b61023b610236366004611d99565b610581565b6040516001600160a01b03909116815260200161020a565b610266610261366004611dcb565b6105a8565b005b61027b610276366004611df3565b6105b7565b60405161020a9190611e0c565b610266610296366004611e4f565b6106ad565b61023b6102a9366004611e88565b610736565b6102666102bc366004611e4f565b61076a565b6102d46102cf366004611dcb565b610789565b60405190815260200161020a565b6102666102f0366004611e4f565b6107b4565b610308610303366004611d99565b6107fd565b60405161020a959493929190611ea8565b6101fe610327366004611f14565b610ac8565b61023b61033a366004611d99565b610b2b565b6102d461034d366004611df3565b610b35565b610266610b7a565b6102d4610368366004611fe3565b610b8d565b6102d461037b366004611fe3565b610bbb565b6006546001600160a01b031661023b565b6101fe610d41565b61021b610d67565b6103b46103af366004611d99565b610d76565b60405161020a91906120b4565b6102666103cf366004611dcb565b6110f7565b6102666103e236600461214e565b611109565b6101fe611114565b6101fe611216565b610266610405366004612187565b611272565b61021b610418366004611d99565b611289565b6101fe6112f9565b620300005f5260096020527f68842696cbe3b5b517e6d2d11c9f977d94a1cb6b1490ba5b0ef28ddb540e0a2154600111156101fe565b6101fe6104693660046121fe565b61136b565b61048161047c366004611d99565b611398565b60405161020a9190612226565b61026661049c366004611df3565b611463565b5f6001600160e01b031982166380ac58cd60e01b14806104d157506001600160e01b03198216635b5e139f60e01b145b806104ec57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f805461050090612266565b80601f016020809104026020016040519081016040528092919081815260200182805461052c90612266565b80156105775780601f1061054e57610100808354040283529160200191610577565b820191905f5260205f20905b81548152906001019060200180831161055a57829003601f168201915b5050505050905090565b5f61058b826114a0565b505f828152600460205260409020546001600160a01b03166104ec565b6105b38282336114d8565b5050565b60606001600160a01b0382166106465760405162461bcd60e51b815260206004820152604360248201527f596f7520617265206e6f7420616c6c6f77656420746f2073656520746865206360448201527f72656174656420746f6b656e73207769746820616e207a65726f20616464726560648201526239b99760e91b608482015260a4015b60405180910390fd5b6001600160a01b0382165f90815260096020908152604091829020805483518184028101840190945280845290918301828280156106a157602002820191905f5260205f20905b81548152602001906001019080831161068d575b50505050509050919050565b6001600160a01b0382166106d657604051633250574960e11b81525f600482015260240161063d565b5f6106e28383336114e5565b9050836001600160a01b0316816001600160a01b031614610730576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161063d565b50505050565b6008602052815f5260405f20818154811061074f575f80fd5b5f918252602090912001546001600160a01b03169150829050565b61078483838360405180602001604052805f815250611272565b505050565b6009602052815f5260405f2081815481106107a2575f80fd5b905f5260205f20015f91509150505481565b6107bf83838361076a565b5f9081526008602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b039290921691909117905550565b60076020525f908152604090208054819061081790612266565b80601f016020809104026020016040519081016040528092919081815260200182805461084390612266565b801561088e5780601f106108655761010080835404028352916020019161088e565b820191905f5260205f20905b81548152906001019060200180831161087157829003601f168201915b5050505050908060010180546108a390612266565b80601f01602080910402602001604051908101604052809291908181526020018280546108cf90612266565b801561091a5780601f106108f15761010080835404028352916020019161091a565b820191905f5260205f20905b8154815290600101906020018083116108fd57829003601f168201915b50505050509080600201805461092f90612266565b80601f016020809104026020016040519081016040528092919081815260200182805461095b90612266565b80156109a65780601f1061097d576101008083540402835291602001916109a6565b820191905f5260205f20905b81548152906001019060200180831161098957829003601f168201915b5050505050908060030180546109bb90612266565b80601f01602080910402602001604051908101604052809291908181526020018280546109e790612266565b8015610a325780601f10610a0957610100808354040283529160200191610a32565b820191905f5260205f20905b815481529060010190602001808311610a1557829003601f168201915b505050505090806004018054610a4790612266565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7390612266565b8015610abe5780601f10610a9557610100808354040283529160200191610abe565b820191905f5260205f20905b815481529060010190602001808311610aa157829003601f168201915b5050505050905085565b5f610ad283610b2b565b6001600160a01b0316826001600160a01b03161480610b2457505f8381526008602052604081208054909190610b0a57610b0a61229e565b5f918252602090912001546001600160a01b038381169116145b9392505050565b5f6104ec826114a0565b5f6001600160a01b038216610b5f576040516322718ad960e21b81525f600482015260240161063d565b506001600160a01b03165f9081526003602052604090205490565b610b826115d7565b610b8b5f611604565b565b5f610b983388611655565b610ba2338861166e565b610bb0878787878787610bbb565b979650505050505050565b5f610bc68733610ac8565b610c2d5760405162461bcd60e51b815260206004820152603260248201527f4d75737420626520746865206f776e6572206f6620746865206974656d206f72604482015271081d1a194818dc99585d1bdc881bd9881a5d60721b606482015260840161063d565b6040805160a081018252878152602080820188905281830187905260608201869052608082018590525f8a815260079091529190912081518190610c7190826122f6565b5060208201516001820190610c8690826122f6565b5060408201516002820190610c9b90826122f6565b5060608201516003820190610cb090826122f6565b5060808201516004820190610cc590826122f6565b503391508890507f132290b0f8d58f9abffd99c75c46d96d52da97d6c61e23f54ab53dd2f27dc1e3610cf682610b2b565b6001600160a01b0316336001600160a01b031614610d15576001610d17565b5f5b8989898989604051610d2e969594939291906123b6565b60405180910390a3509495945050505050565b5f806001600160a01b0316610d57600a54610b2b565b6001600160a01b03161415905090565b60606001805461050090612266565b610da86040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b5f828152600260205260408120546001600160a01b03166001600160a01b0316141582604051602001610ddb9190612445565b60405160208183030381529060405290610e085760405162461bcd60e51b815260040161063d9190611d87565b505f8281526007602052604090819020815160a08101909252805482908290610e3090612266565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5c90612266565b8015610ea75780601f10610e7e57610100808354040283529160200191610ea7565b820191905f5260205f20905b815481529060010190602001808311610e8a57829003601f168201915b50505050508152602001600182018054610ec090612266565b80601f0160208091040260200160405190810160405280929190818152602001828054610eec90612266565b8015610f375780601f10610f0e57610100808354040283529160200191610f37565b820191905f5260205f20905b815481529060010190602001808311610f1a57829003601f168201915b50505050508152602001600282018054610f5090612266565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7c90612266565b8015610fc75780601f10610f9e57610100808354040283529160200191610fc7565b820191905f5260205f20905b815481529060010190602001808311610faa57829003601f168201915b50505050508152602001600382018054610fe090612266565b80601f016020809104026020016040519081016040528092919081815260200182805461100c90612266565b80156110575780601f1061102e57610100808354040283529160200191611057565b820191905f5260205f20905b81548152906001019060200180831161103a57829003601f168201915b5050505050815260200160048201805461107090612266565b80601f016020809104026020016040519081016040528092919081815260200182805461109c90612266565b80156110e75780601f106110be576101008083540402835291602001916110e7565b820191905f5260205f20905b8154815290600101906020018083116110ca57829003601f168201915b5050505050815250509050919050565b6110ff6115d7565b6105b38282611655565b6105b333838361179c565b60015f90815260086020527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f54156112105760015f908152600860209081527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f80546040805182850281018501909152818152928301828280156111bf57602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116111a1575b505050505090506111d06001610b2b565b6001600160a01b031681600183516111e89190612490565b815181106111f8576111f861229e565b60200260200101516001600160a01b03161491505090565b50600190565b60075f90815260086020527f24cd397636bedc6cf9b490d0edd57c769c19b367fb7d5c2344ae1ddc7d21c144805462030000919083906112585761125861229e565b5f918252602090912001546001600160a01b031614919050565b61127d8484846106ad565b6107308484848461183a565b6060611294826114a0565b505f6112aa60408051602081019091525f815290565b90505f8151116112c85760405180602001604052805f815250610b24565b806112d284611960565b6040516020016112e39291906124af565b6040516020818303038152906040529392505050565b60075f90815260086020527f24cd397636bedc6cf9b490d0edd57c769c19b367fb7d5c2344ae1ddc7d21c14454156112105760075f8181526020919091527fb7c49cceb9f85950584035457a41ebbd8cf93b9b612733ad25aa9731ac43aad6805461136390612266565b905011905090565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f81815260026020526040812054606091906001600160a01b03166001600160a01b03161415826040516020016113cf9190612445565b604051602081830303815290604052906113fc5760405162461bcd60e51b815260040161063d9190611d87565b505f82815260086020908152604091829020805483518184028101840190945280845290918301828280156106a157602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161143a5750505050509050919050565b61146b6115d7565b6001600160a01b03811661149457604051631e4fbdf760e01b81525f600482015260240161063d565b61149d81611604565b50565b5f818152600260205260408120546001600160a01b0316806104ec57604051637e27328960e01b81526004810184905260240161063d565b61078483838360016119f0565b5f828152600260205260408120546001600160a01b039081169083161561151157611511818486611af4565b6001600160a01b0381161561154b5761152c5f855f806119f0565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611579576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b03163314610b8b5760405163118cdaa760e01b815233600482015260240161063d565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6105b3828260405180602001604052805f815250611b58565b5f81815260086020526040902054156116db5760405162461bcd60e51b815260206004820152602960248201527f546865726520697320616c726561647920612063726561746f7220666f7220746044820152683434b99034ba32b69760b91b606482015260840161063d565b6001600160a01b0382166117455760405162461bcd60e51b815260206004820152602b60248201527f596f7520617265206e6f7420616c6c6f77656420746f20686176652061207a6560448201526a39379030b2323932b9b99760a91b606482015260840161063d565b5f8181526008602090815260408083208054600181810183559185528385200180546001600160a01b039097166001600160a01b031990971687179055948352600982528220805494850181558252902090910155565b6001600160a01b0382166117ce57604051630b61174360e31b81526001600160a01b038316600482015260240161063d565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561073057604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061187c9033908890879087906004016124dd565b6020604051808303815f875af19250505080156118b6575060408051601f3d908101601f191682019092526118b391810190612519565b60015b61191d573d8080156118e3576040519150601f19603f3d011682016040523d82523d5f602084013e6118e8565b606091505b5080515f0361191557604051633250574960e11b81526001600160a01b038516600482015260240161063d565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461195957604051633250574960e11b81526001600160a01b038516600482015260240161063d565b5050505050565b60605f61196c83611b6e565b60010190505f8167ffffffffffffffff81111561198b5761198b611f3e565b6040519080825280601f01601f1916602001820160405280156119b5576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846119bf57509392505050565b8080611a0457506001600160a01b03821615155b15611ac5575f611a13846114a0565b90506001600160a01b03831615801590611a3f5750826001600160a01b0316816001600160a01b031614155b8015611a525750611a50818461136b565b155b15611a7b5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161063d565b8115611ac35783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b611aff838383611c45565b610784576001600160a01b038316611b2d57604051637e27328960e01b81526004810182905260240161063d565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161063d565b611b628383611ca9565b6107845f84848461183a565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611bac5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611bd8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611bf657662386f26fc10000830492506010015b6305f5e1008310611c0e576305f5e100830492506008015b6127108310611c2257612710830492506004015b60648310611c34576064830492506002015b600a83106104ec5760010192915050565b5f6001600160a01b03831615801590611ca15750826001600160a01b0316846001600160a01b03161480611c7e5750611c7e848461136b565b80611ca157505f828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216611cd257604051633250574960e11b81525f600482015260240161063d565b5f611cde83835f6114e5565b90506001600160a01b03811615610784576040516339e3563760e11b81525f600482015260240161063d565b6001600160e01b03198116811461149d575f80fd5b5f60208284031215611d2f575f80fd5b8135610b2481611d0a565b5f5b83811015611d54578181015183820152602001611d3c565b50505f910152565b5f8151808452611d73816020860160208601611d3a565b601f01601f19169290920160200192915050565b602081525f610b246020830184611d5c565b5f60208284031215611da9575f80fd5b5035919050565b80356001600160a01b0381168114611dc6575f80fd5b919050565b5f8060408385031215611ddc575f80fd5b611de583611db0565b946020939093013593505050565b5f60208284031215611e03575f80fd5b610b2482611db0565b602080825282518282018190525f9190848201906040850190845b81811015611e4357835183529284019291840191600101611e27565b50909695505050505050565b5f805f60608486031215611e61575f80fd5b611e6a84611db0565b9250611e7860208501611db0565b9150604084013590509250925092565b5f8060408385031215611e99575f80fd5b50508035926020909101359150565b60a081525f611eba60a0830188611d5c565b8281036020840152611ecc8188611d5c565b90508281036040840152611ee08187611d5c565b90508281036060840152611ef48186611d5c565b90508281036080840152611f088185611d5c565b98975050505050505050565b5f8060408385031215611f25575f80fd5b82359150611f3560208401611db0565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611f6c57611f6c611f3e565b604051601f8501601f19908116603f01168101908282118183101715611f9457611f94611f3e565b81604052809350858152868686011115611fac575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112611fd4575f80fd5b610b2483833560208501611f52565b5f805f805f8060c08789031215611ff8575f80fd5b86359550602087013567ffffffffffffffff80821115612016575f80fd5b6120228a838b01611fc5565b96506040890135915080821115612037575f80fd5b6120438a838b01611fc5565b95506060890135915080821115612058575f80fd5b6120648a838b01611fc5565b94506080890135915080821115612079575f80fd5b6120858a838b01611fc5565b935060a089013591508082111561209a575f80fd5b506120a789828a01611fc5565b9150509295509295509295565b602081525f825160a060208401526120cf60c0840182611d5c565b90506020840151601f19808584030160408601526120ed8383611d5c565b9250604086015191508085840301606086015261210a8383611d5c565b925060608601519150808584030160808601526121278383611d5c565b925060808601519150808584030160a0860152506121458282611d5c565b95945050505050565b5f806040838503121561215f575f80fd5b61216883611db0565b91506020830135801515811461217c575f80fd5b809150509250929050565b5f805f806080858703121561219a575f80fd5b6121a385611db0565b93506121b160208601611db0565b925060408501359150606085013567ffffffffffffffff8111156121d3575f80fd5b8501601f810187136121e3575f80fd5b6121f287823560208401611f52565b91505092959194509250565b5f806040838503121561220f575f80fd5b61221883611db0565b9150611f3560208401611db0565b602080825282518282018190525f9190848201906040850190845b81811015611e435783516001600160a01b031683529284019291840191600101612241565b600181811c9082168061227a57607f821691505b60208210810361229857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b601f82111561078457805f5260205f20601f840160051c810160208510156122d75750805b601f840160051c820191505b81811015611959575f81556001016122e3565b815167ffffffffffffffff81111561231057612310611f3e565b6123248161231e8454612266565b846122b2565b602080601f831160018114612357575f84156123405750858301515b5f19600386901b1c1916600185901b1785556123ae565b5f85815260208120601f198616915b8281101561238557888601518255948401946001909101908401612366565b50858210156123a257878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f600288106123d357634e487b7160e01b5f52602160045260245ffd5b87825260c060208301526123ea60c0830188611d5c565b82810360408401526123fc8188611d5c565b905082810360608401526124108187611d5c565b905082810360808401526124248186611d5c565b905082810360a08401526124388185611d5c565b9998505050505050505050565b7f54686520746f6b656e206973206e6f742076616c69642e205468657265206973815270206e6f207375636820746f6b656e20617360781b6020820152603181019190915260510190565b818103818111156104ec57634e487b7160e01b5f52601160045260245ffd5b5f83516124c0818460208801611d3a565b8351908301906124d4818360208801611d3a565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061250f90830184611d5c565b9695505050505050565b5f60208284031215612529575f80fd5b8151610b2481611d0a56fea264697066735822122099a0418c43788bcfa03376bb4e22c4667c24226d2e7602f3b724c983c7230a6d64736f6c63430008160033", "bin-runtime": "608060405234801561000f575f80fd5b50600436106101e7575f3560e01c8063886ee64e11610109578063b6890f721161009e578063e4dfd6b91161006e578063e4dfd6b914610425578063e985e9c51461045b578063f2a1625e1461046e578063f2fde38b1461048e575f80fd5b8063b6890f72146103ef578063b88d4fde146103f7578063c87b56dd1461040a578063d03aef631461041d575f80fd5b80639f5679f4116100d95780639f5679f4146103a1578063a1448194146103c1578063a22cb465146103d4578063b317b8ee146103e7575f80fd5b8063886ee64e1461036d5780638da5cb5b1461038057806390203d631461039157806395d89b4114610399575f80fd5b806348cdcd4d1161017f5780636352211e1161014f5780636352211e1461032c57806370a082311461033f578063715018a614610352578063875185c31461035a575f80fd5b806348cdcd4d146102c1578063534a3a5c146102e25780635589fe78146102f5578063592e0e0014610319575f80fd5b806310c8b433116101ba57806310c8b4331461026857806323b872dd146102885780632bf3d8171461029b57806342842e0e146102ae575f80fd5b806301ffc9a7146101eb57806306fdde0314610213578063081812fc14610228578063095ea7b314610253575b5f80fd5b6101fe6101f9366004611d1f565b6104a1565b60405190151581526020015b60405180910390f35b61021b6104f2565b60405161020a9190611d87565b61023b610236366004611d99565b610581565b6040516001600160a01b03909116815260200161020a565b610266610261366004611dcb565b6105a8565b005b61027b610276366004611df3565b6105b7565b60405161020a9190611e0c565b610266610296366004611e4f565b6106ad565b61023b6102a9366004611e88565b610736565b6102666102bc366004611e4f565b61076a565b6102d46102cf366004611dcb565b610789565b60405190815260200161020a565b6102666102f0366004611e4f565b6107b4565b610308610303366004611d99565b6107fd565b60405161020a959493929190611ea8565b6101fe610327366004611f14565b610ac8565b61023b61033a366004611d99565b610b2b565b6102d461034d366004611df3565b610b35565b610266610b7a565b6102d4610368366004611fe3565b610b8d565b6102d461037b366004611fe3565b610bbb565b6006546001600160a01b031661023b565b6101fe610d41565b61021b610d67565b6103b46103af366004611d99565b610d76565b60405161020a91906120b4565b6102666103cf366004611dcb565b6110f7565b6102666103e236600461214e565b611109565b6101fe611114565b6101fe611216565b610266610405366004612187565b611272565b61021b610418366004611d99565b611289565b6101fe6112f9565b620300005f5260096020527f68842696cbe3b5b517e6d2d11c9f977d94a1cb6b1490ba5b0ef28ddb540e0a2154600111156101fe565b6101fe6104693660046121fe565b61136b565b61048161047c366004611d99565b611398565b60405161020a9190612226565b61026661049c366004611df3565b611463565b5f6001600160e01b031982166380ac58cd60e01b14806104d157506001600160e01b03198216635b5e139f60e01b145b806104ec57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f805461050090612266565b80601f016020809104026020016040519081016040528092919081815260200182805461052c90612266565b80156105775780601f1061054e57610100808354040283529160200191610577565b820191905f5260205f20905b81548152906001019060200180831161055a57829003601f168201915b5050505050905090565b5f61058b826114a0565b505f828152600460205260409020546001600160a01b03166104ec565b6105b38282336114d8565b5050565b60606001600160a01b0382166106465760405162461bcd60e51b815260206004820152604360248201527f596f7520617265206e6f7420616c6c6f77656420746f2073656520746865206360448201527f72656174656420746f6b656e73207769746820616e207a65726f20616464726560648201526239b99760e91b608482015260a4015b60405180910390fd5b6001600160a01b0382165f90815260096020908152604091829020805483518184028101840190945280845290918301828280156106a157602002820191905f5260205f20905b81548152602001906001019080831161068d575b50505050509050919050565b6001600160a01b0382166106d657604051633250574960e11b81525f600482015260240161063d565b5f6106e28383336114e5565b9050836001600160a01b0316816001600160a01b031614610730576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161063d565b50505050565b6008602052815f5260405f20818154811061074f575f80fd5b5f918252602090912001546001600160a01b03169150829050565b61078483838360405180602001604052805f815250611272565b505050565b6009602052815f5260405f2081815481106107a2575f80fd5b905f5260205f20015f91509150505481565b6107bf83838361076a565b5f9081526008602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b039290921691909117905550565b60076020525f908152604090208054819061081790612266565b80601f016020809104026020016040519081016040528092919081815260200182805461084390612266565b801561088e5780601f106108655761010080835404028352916020019161088e565b820191905f5260205f20905b81548152906001019060200180831161087157829003601f168201915b5050505050908060010180546108a390612266565b80601f01602080910402602001604051908101604052809291908181526020018280546108cf90612266565b801561091a5780601f106108f15761010080835404028352916020019161091a565b820191905f5260205f20905b8154815290600101906020018083116108fd57829003601f168201915b50505050509080600201805461092f90612266565b80601f016020809104026020016040519081016040528092919081815260200182805461095b90612266565b80156109a65780601f1061097d576101008083540402835291602001916109a6565b820191905f5260205f20905b81548152906001019060200180831161098957829003601f168201915b5050505050908060030180546109bb90612266565b80601f01602080910402602001604051908101604052809291908181526020018280546109e790612266565b8015610a325780601f10610a0957610100808354040283529160200191610a32565b820191905f5260205f20905b815481529060010190602001808311610a1557829003601f168201915b505050505090806004018054610a4790612266565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7390612266565b8015610abe5780601f10610a9557610100808354040283529160200191610abe565b820191905f5260205f20905b815481529060010190602001808311610aa157829003601f168201915b5050505050905085565b5f610ad283610b2b565b6001600160a01b0316826001600160a01b03161480610b2457505f8381526008602052604081208054909190610b0a57610b0a61229e565b5f918252602090912001546001600160a01b038381169116145b9392505050565b5f6104ec826114a0565b5f6001600160a01b038216610b5f576040516322718ad960e21b81525f600482015260240161063d565b506001600160a01b03165f9081526003602052604090205490565b610b826115d7565b610b8b5f611604565b565b5f610b983388611655565b610ba2338861166e565b610bb0878787878787610bbb565b979650505050505050565b5f610bc68733610ac8565b610c2d5760405162461bcd60e51b815260206004820152603260248201527f4d75737420626520746865206f776e6572206f6620746865206974656d206f72604482015271081d1a194818dc99585d1bdc881bd9881a5d60721b606482015260840161063d565b6040805160a081018252878152602080820188905281830187905260608201869052608082018590525f8a815260079091529190912081518190610c7190826122f6565b5060208201516001820190610c8690826122f6565b5060408201516002820190610c9b90826122f6565b5060608201516003820190610cb090826122f6565b5060808201516004820190610cc590826122f6565b503391508890507f132290b0f8d58f9abffd99c75c46d96d52da97d6c61e23f54ab53dd2f27dc1e3610cf682610b2b565b6001600160a01b0316336001600160a01b031614610d15576001610d17565b5f5b8989898989604051610d2e969594939291906123b6565b60405180910390a3509495945050505050565b5f806001600160a01b0316610d57600a54610b2b565b6001600160a01b03161415905090565b60606001805461050090612266565b610da86040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b5f828152600260205260408120546001600160a01b03166001600160a01b0316141582604051602001610ddb9190612445565b60405160208183030381529060405290610e085760405162461bcd60e51b815260040161063d9190611d87565b505f8281526007602052604090819020815160a08101909252805482908290610e3090612266565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5c90612266565b8015610ea75780601f10610e7e57610100808354040283529160200191610ea7565b820191905f5260205f20905b815481529060010190602001808311610e8a57829003601f168201915b50505050508152602001600182018054610ec090612266565b80601f0160208091040260200160405190810160405280929190818152602001828054610eec90612266565b8015610f375780601f10610f0e57610100808354040283529160200191610f37565b820191905f5260205f20905b815481529060010190602001808311610f1a57829003601f168201915b50505050508152602001600282018054610f5090612266565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7c90612266565b8015610fc75780601f10610f9e57610100808354040283529160200191610fc7565b820191905f5260205f20905b815481529060010190602001808311610faa57829003601f168201915b50505050508152602001600382018054610fe090612266565b80601f016020809104026020016040519081016040528092919081815260200182805461100c90612266565b80156110575780601f1061102e57610100808354040283529160200191611057565b820191905f5260205f20905b81548152906001019060200180831161103a57829003601f168201915b5050505050815260200160048201805461107090612266565b80601f016020809104026020016040519081016040528092919081815260200182805461109c90612266565b80156110e75780601f106110be576101008083540402835291602001916110e7565b820191905f5260205f20905b8154815290600101906020018083116110ca57829003601f168201915b5050505050815250509050919050565b6110ff6115d7565b6105b38282611655565b6105b333838361179c565b60015f90815260086020527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f54156112105760015f908152600860209081527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f80546040805182850281018501909152818152928301828280156111bf57602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116111a1575b505050505090506111d06001610b2b565b6001600160a01b031681600183516111e89190612490565b815181106111f8576111f861229e565b60200260200101516001600160a01b03161491505090565b50600190565b60075f90815260086020527f24cd397636bedc6cf9b490d0edd57c769c19b367fb7d5c2344ae1ddc7d21c144805462030000919083906112585761125861229e565b5f918252602090912001546001600160a01b031614919050565b61127d8484846106ad565b6107308484848461183a565b6060611294826114a0565b505f6112aa60408051602081019091525f815290565b90505f8151116112c85760405180602001604052805f815250610b24565b806112d284611960565b6040516020016112e39291906124af565b6040516020818303038152906040529392505050565b60075f90815260086020527f24cd397636bedc6cf9b490d0edd57c769c19b367fb7d5c2344ae1ddc7d21c14454156112105760075f8181526020919091527fb7c49cceb9f85950584035457a41ebbd8cf93b9b612733ad25aa9731ac43aad6805461136390612266565b905011905090565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f81815260026020526040812054606091906001600160a01b03166001600160a01b03161415826040516020016113cf9190612445565b604051602081830303815290604052906113fc5760405162461bcd60e51b815260040161063d9190611d87565b505f82815260086020908152604091829020805483518184028101840190945280845290918301828280156106a157602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161143a5750505050509050919050565b61146b6115d7565b6001600160a01b03811661149457604051631e4fbdf760e01b81525f600482015260240161063d565b61149d81611604565b50565b5f818152600260205260408120546001600160a01b0316806104ec57604051637e27328960e01b81526004810184905260240161063d565b61078483838360016119f0565b5f828152600260205260408120546001600160a01b039081169083161561151157611511818486611af4565b6001600160a01b0381161561154b5761152c5f855f806119f0565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611579576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b03163314610b8b5760405163118cdaa760e01b815233600482015260240161063d565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6105b3828260405180602001604052805f815250611b58565b5f81815260086020526040902054156116db5760405162461bcd60e51b815260206004820152602960248201527f546865726520697320616c726561647920612063726561746f7220666f7220746044820152683434b99034ba32b69760b91b606482015260840161063d565b6001600160a01b0382166117455760405162461bcd60e51b815260206004820152602b60248201527f596f7520617265206e6f7420616c6c6f77656420746f20686176652061207a6560448201526a39379030b2323932b9b99760a91b606482015260840161063d565b5f8181526008602090815260408083208054600181810183559185528385200180546001600160a01b039097166001600160a01b031990971687179055948352600982528220805494850181558252902090910155565b6001600160a01b0382166117ce57604051630b61174360e31b81526001600160a01b038316600482015260240161063d565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561073057604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061187c9033908890879087906004016124dd565b6020604051808303815f875af19250505080156118b6575060408051601f3d908101601f191682019092526118b391810190612519565b60015b61191d573d8080156118e3576040519150601f19603f3d011682016040523d82523d5f602084013e6118e8565b606091505b5080515f0361191557604051633250574960e11b81526001600160a01b038516600482015260240161063d565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461195957604051633250574960e11b81526001600160a01b038516600482015260240161063d565b5050505050565b60605f61196c83611b6e565b60010190505f8167ffffffffffffffff81111561198b5761198b611f3e565b6040519080825280601f01601f1916602001820160405280156119b5576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846119bf57509392505050565b8080611a0457506001600160a01b03821615155b15611ac5575f611a13846114a0565b90506001600160a01b03831615801590611a3f5750826001600160a01b0316816001600160a01b031614155b8015611a525750611a50818461136b565b155b15611a7b5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161063d565b8115611ac35783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b611aff838383611c45565b610784576001600160a01b038316611b2d57604051637e27328960e01b81526004810182905260240161063d565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161063d565b611b628383611ca9565b6107845f84848461183a565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611bac5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611bd8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611bf657662386f26fc10000830492506010015b6305f5e1008310611c0e576305f5e100830492506008015b6127108310611c2257612710830492506004015b60648310611c34576064830492506002015b600a83106104ec5760010192915050565b5f6001600160a01b03831615801590611ca15750826001600160a01b0316846001600160a01b03161480611c7e5750611c7e848461136b565b80611ca157505f828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216611cd257604051633250574960e11b81525f600482015260240161063d565b5f611cde83835f6114e5565b90506001600160a01b03811615610784576040516339e3563760e11b81525f600482015260240161063d565b6001600160e01b03198116811461149d575f80fd5b5f60208284031215611d2f575f80fd5b8135610b2481611d0a565b5f5b83811015611d54578181015183820152602001611d3c565b50505f910152565b5f8151808452611d73816020860160208601611d3a565b601f01601f19169290920160200192915050565b602081525f610b246020830184611d5c565b5f60208284031215611da9575f80fd5b5035919050565b80356001600160a01b0381168114611dc6575f80fd5b919050565b5f8060408385031215611ddc575f80fd5b611de583611db0565b946020939093013593505050565b5f60208284031215611e03575f80fd5b610b2482611db0565b602080825282518282018190525f9190848201906040850190845b81811015611e4357835183529284019291840191600101611e27565b50909695505050505050565b5f805f60608486031215611e61575f80fd5b611e6a84611db0565b9250611e7860208501611db0565b9150604084013590509250925092565b5f8060408385031215611e99575f80fd5b50508035926020909101359150565b60a081525f611eba60a0830188611d5c565b8281036020840152611ecc8188611d5c565b90508281036040840152611ee08187611d5c565b90508281036060840152611ef48186611d5c565b90508281036080840152611f088185611d5c565b98975050505050505050565b5f8060408385031215611f25575f80fd5b82359150611f3560208401611db0565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611f6c57611f6c611f3e565b604051601f8501601f19908116603f01168101908282118183101715611f9457611f94611f3e565b81604052809350858152868686011115611fac575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112611fd4575f80fd5b610b2483833560208501611f52565b5f805f805f8060c08789031215611ff8575f80fd5b86359550602087013567ffffffffffffffff80821115612016575f80fd5b6120228a838b01611fc5565b96506040890135915080821115612037575f80fd5b6120438a838b01611fc5565b95506060890135915080821115612058575f80fd5b6120648a838b01611fc5565b94506080890135915080821115612079575f80fd5b6120858a838b01611fc5565b935060a089013591508082111561209a575f80fd5b506120a789828a01611fc5565b9150509295509295509295565b602081525f825160a060208401526120cf60c0840182611d5c565b90506020840151601f19808584030160408601526120ed8383611d5c565b9250604086015191508085840301606086015261210a8383611d5c565b925060608601519150808584030160808601526121278383611d5c565b925060808601519150808584030160a0860152506121458282611d5c565b95945050505050565b5f806040838503121561215f575f80fd5b61216883611db0565b91506020830135801515811461217c575f80fd5b809150509250929050565b5f805f806080858703121561219a575f80fd5b6121a385611db0565b93506121b160208601611db0565b925060408501359150606085013567ffffffffffffffff8111156121d3575f80fd5b8501601f810187136121e3575f80fd5b6121f287823560208401611f52565b91505092959194509250565b5f806040838503121561220f575f80fd5b61221883611db0565b9150611f3560208401611db0565b602080825282518282018190525f9190848201906040850190845b81811015611e435783516001600160a01b031683529284019291840191600101612241565b600181811c9082168061227a57607f821691505b60208210810361229857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b601f82111561078457805f5260205f20601f840160051c810160208510156122d75750805b601f840160051c820191505b81811015611959575f81556001016122e3565b815167ffffffffffffffff81111561231057612310611f3e565b6123248161231e8454612266565b846122b2565b602080601f831160018114612357575f84156123405750858301515b5f19600386901b1c1916600185901b1785556123ae565b5f85815260208120601f198616915b8281101561238557888601518255948401946001909101908401612366565b50858210156123a257878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f600288106123d357634e487b7160e01b5f52602160045260245ffd5b87825260c060208301526123ea60c0830188611d5c565b82810360408401526123fc8188611d5c565b905082810360608401526124108187611d5c565b905082810360808401526124248186611d5c565b905082810360a08401526124388185611d5c565b9998505050505050505050565b7f54686520746f6b656e206973206e6f742076616c69642e205468657265206973815270206e6f207375636820746f6b656e20617360781b6020820152603181019190915260510190565b818103818111156104ec57634e487b7160e01b5f52601160045260245ffd5b5f83516124c0818460208801611d3a565b8351908301906124d4818360208801611d3a565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061250f90830184611d5c565b9695505050505050565b5f60208284031215612529575f80fd5b8151610b2481611d0a56fea264697066735822122099a0418c43788bcfa03376bb4e22c4667c24226d2e7602f3b724c983c7230a6d64736f6c63430008160033", "userdoc": {"methods": {"getCreatedItemTokens(address)": {"notice": "Function returns a list of user items. "}, "getPassport(uint256)": {"notice": "Function returns a Passport for an item (tokenId)."}, "getUserHistory(uint256)": {"notice": "Function returns a list of addresses that have owner this item. The first address is the item creator and the last is the current owner of the item. "}, "updateOwnership(address,address,uint256)": {"notice": "updateOwnership is a function that we use it change owners of our NFT (item). Also we use it to add the new owner of an NFT in a list of all owners for a specific NFT. "}}, "notice": " "}, "devdoc": {"methods": {"approve(address,uint256)": {"author": null, "details": "See {IERC721-approve}.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "See {IERC721-balanceOf}.", "params": {}, "return": null}, "getApproved(uint256)": {"author": null, "details": "See {IERC721-getApproved}.", "params": {}, "return": null}, "getCreatedItemTokens(address)": {"author": null, "details": "fails if the userAdderss is a zero address.", "params": {"userAddress": "the user's Address for whome all the items will be retun. Like user's intentory."}, "return": null}, "getPassport(uint256)": {"author": null, "details": "fails if the tokenId does not exists.", "params": {"tokenId": "the item's Id that we want to retun the Passport."}, "return": null}, "getUserHistory(uint256)": {"author": null, "details": "Fails is tokenId does .", "params": {"tokenId": "id of a nft token"}, "return": null}, "isApprovedForAll(address,address)": {"author": null, "details": "See {IERC721-isApprovedForAll}.", "params": {}, "return": null}, "name()": {"author": null, "details": "See {IERC721Metadata-name}.", "params": {}, "return": null}, "owner()": {"author": null, "details": "Returns the address of the current owner.", "params": {}, "return": null}, "ownerOf(uint256)": {"author": null, "details": "See {IERC721-ownerOf}.", "params": {}, "return": null}, "renounceOwnership()": {"author": null, "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.", "params": {}, "return": null}, "safeTransferFrom(address,address,uint256)": {"author": null, "details": "See {IERC721-safeTransferFrom}.", "params": {}, "return": null}, "safeTransferFrom(address,address,uint256,bytes)": {"author": null, "details": "See {IERC721-safeTransferFrom}.", "params": {}, "return": null}, "setApprovalForAll(address,bool)": {"author": null, "details": "See {IERC721-setApprovalForAll}.", "params": {}, "return": null}, "supportsInterface(bytes4)": {"author": null, "details": "See {IERC165-supportsInterface}.", "params": {}, "return": null}, "symbol()": {"author": null, "details": "See {IERC721Metadata-symbol}.", "params": {}, "return": null}, "tokenURI(uint256)": {"author": null, "details": "See {IERC721Metadata-tokenURI}.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "See {IERC721-transferFrom}.", "params": {}, "return": null}, "transferOwnership(address)": {"author": null, "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.", "params": {}, "return": null}, "updateOwnership(address,address,uint256)": {"author": null, "details": null, "params": {"currentOwnerAddress": "ethereum address of current tokenId owner", "nextOwnerAddress": "ethereum address we want to transfer ownership to", "tokenId": "uint256 id of token we want to update ownership for"}, "return": null}}, "author": null, "details": "There are some specific addresses in Echidna: 0x30000 calls the constructor. 0x10000, 0x20000, and 0x30000 randomly call other functions.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/access/Ownable.sol:Ownable": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"constructor": {"author": null, "details": "Initializes the contract setting the address provided by the deployer as the initial owner.", "params": {}, "return": null}, "owner()": {"author": null, "details": "Returns the address of the current owner.", "params": {}, "return": null}, "renounceOwnership()": {"author": null, "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.", "params": {}, "return": null}, "transferOwnership(address)": {"author": null, "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.", "params": {}, "return": null}}, "author": null, "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol:IERC1155Errors": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Standard ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol:IERC20Errors": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Standard ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol:IERC721Errors": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Standard ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol:ERC721": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"approve(address,uint256)": {"author": null, "details": "See {IERC721-approve}.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "See {IERC721-balanceOf}.", "params": {}, "return": null}, "constructor": {"author": null, "details": "Initializes the contract by setting a `name` and a `symbol` to the token collection.", "params": {}, "return": null}, "getApproved(uint256)": {"author": null, "details": "See {IERC721-getApproved}.", "params": {}, "return": null}, "isApprovedForAll(address,address)": {"author": null, "details": "See {IERC721-isApprovedForAll}.", "params": {}, "return": null}, "name()": {"author": null, "details": "See {IERC721Metadata-name}.", "params": {}, "return": null}, "ownerOf(uint256)": {"author": null, "details": "See {IERC721-ownerOf}.", "params": {}, "return": null}, "safeTransferFrom(address,address,uint256)": {"author": null, "details": "See {IERC721-safeTransferFrom}.", "params": {}, "return": null}, "safeTransferFrom(address,address,uint256,bytes)": {"author": null, "details": "See {IERC721-safeTransferFrom}.", "params": {}, "return": null}, "setApprovalForAll(address,bool)": {"author": null, "details": "See {IERC721-setApprovalForAll}.", "params": {}, "return": null}, "supportsInterface(bytes4)": {"author": null, "details": "See {IERC165-supportsInterface}.", "params": {}, "return": null}, "symbol()": {"author": null, "details": "See {IERC721Metadata-symbol}.", "params": {}, "return": null}, "tokenURI(uint256)": {"author": null, "details": "See {IERC721Metadata-tokenURI}.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "See {IERC721-transferFrom}.", "params": {}, "return": null}}, "author": null, "details": "Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol:IERC721": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"approve(address,uint256)": {"author": null, "details": "Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the number of tokens in ``owner``'s account.", "params": {}, "return": null}, "getApproved(uint256)": {"author": null, "details": "Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.", "params": {}, "return": null}, "isApprovedForAll(address,address)": {"author": null, "details": "Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}", "params": {}, "return": null}, "ownerOf(uint256)": {"author": null, "details": "Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.", "params": {}, "return": null}, "safeTransferFrom(address,address,uint256)": {"author": null, "details": "Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.", "params": {}, "return": null}, "safeTransferFrom(address,address,uint256,bytes)": {"author": null, "details": "Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.", "params": {}, "return": null}, "setApprovalForAll(address,bool)": {"author": null, "details": "Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.", "params": {}, "return": null}, "supportsInterface(bytes4)": {"author": null, "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Required interface of an ERC721 compliant contract.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol:IERC721Receiver": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"onERC721Received(address,address,uint256,bytes)": {"author": null, "details": "Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.", "params": {}, "return": null}}, "author": null, "details": "Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.", "title": "ERC721 token receiver interface"}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol:IERC721Metadata": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"approve(address,uint256)": {"author": null, "details": "Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the number of tokens in ``owner``'s account.", "params": {}, "return": null}, "getApproved(uint256)": {"author": null, "details": "Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.", "params": {}, "return": null}, "isApprovedForAll(address,address)": {"author": null, "details": "Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}", "params": {}, "return": null}, "name()": {"author": null, "details": "Returns the token collection name.", "params": {}, "return": null}, "ownerOf(uint256)": {"author": null, "details": "Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.", "params": {}, "return": null}, "safeTransferFrom(address,address,uint256)": {"author": null, "details": "Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.", "params": {}, "return": null}, "safeTransferFrom(address,address,uint256,bytes)": {"author": null, "details": "Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.", "params": {}, "return": null}, "setApprovalForAll(address,bool)": {"author": null, "details": "Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.", "params": {}, "return": null}, "supportsInterface(bytes4)": {"author": null, "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.", "params": {}, "return": null}, "symbol()": {"author": null, "details": "Returns the token collection symbol.", "params": {}, "return": null}, "tokenURI(uint256)": {"author": null, "details": "Returns the Uniform Resource Identifier (URI) for `tokenId` token.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "See https://eips.ethereum.org/EIPS/eip-721", "title": "ERC-721 Non-Fungible Token Standard, optional metadata extension"}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/Context.sol:Context": {"srcmap": "", "srcmap-runtime": "", "abi": "[]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/Strings.sol:Strings": {"srcmap": "251:2847:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:2847:8;;;;;;;;;;;;;;;;;", "srcmap-runtime": "251:2847:8:-:0;;;;;;;;", "abi": "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}]", "bin": "60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208f85e8bafe78b98a73ca22611ba545fa83ccde1c933b55312d785691de3d3c0d64736f6c63430008160033", "bin-runtime": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208f85e8bafe78b98a73ca22611ba545fa83ccde1c933b55312d785691de3d3c0d64736f6c63430008160033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "String operations.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol:ERC165": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"supportsInterface(bytes4)": {"author": null, "details": "See {IERC165-supportsInterface}.", "params": {}, "return": null}}, "author": null, "details": "Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol:IERC165": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"supportsInterface(bytes4)": {"author": null, "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/math/Math.sol:Math": {"srcmap": "203:14914:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:11;;;;;;;;;;;;;;;;;", "srcmap-runtime": "203:14914:11:-:0;;;;;;;;", "abi": "[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}]", "bin": "60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122029934ad079d43b8a0e4300b1b8a98d63841e63d439022078a4d4679ef27f386664736f6c63430008160033", "bin-runtime": "730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122029934ad079d43b8a0e4300b1b8a98d63841e63d439022078a4d4679ef27f386664736f6c63430008160033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Standard math utilities missing in the Solidity language.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol:SignedMath": {"srcmap": "216:1047:12:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:1047:12;;;;;;;;;;;;;;;;;", "srcmap-runtime": "216:1047:12:-:0;;;;;;;;", "abi": "[]", "bin": "60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122095f9aed5f0e6e0a670fa39a2973b6909e5a92c582e7968b1ca941b0ffe14b55f64736f6c63430008160033", "bin-runtime": "730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122095f9aed5f0e6e0a670fa39a2973b6909e5a92c582e7968b1ca941b0ffe14b55f64736f6c63430008160033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": "Standard signed math utilities missing in the Solidity language.", "title": null}, "libraries": {}}, "/Users/fabian/Code/ItemBlocks/contract/src/ItemBlocks.sol:ItemBlocks": {"srcmap": "188:5217:13:-:0;;;850:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;941:12;1381:113:3;;;;;;;;;;;;;-1:-1:-1;;;1381:113:3;;;;;;;;;;;;;;;;-1:-1:-1;;;1381:113:3;;;1455:5;1447;:13;;;;;;:::i;:::-;-1:-1:-1;1470:7:3;:17;1480:7;1470;:17;:::i;:::-;-1:-1:-1;;;;;;;;1273:26:1;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:1;;1350:1;1322:31;;;3142:51:14;3115:18;;1322:31:1;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;1225:187;850:111:13;188:5217;;2912:187:1;3004:6;;;-1:-1:-1;;;;;3020:17:1;;;-1:-1:-1;;;;;;3020:17:1;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;14:290:14:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:14;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:14:o;309:127::-;370:10;365:3;361:20;358:1;351:31;401:4;398:1;391:15;425:4;422:1;415:15;441:380;520:1;516:12;;;;563;;;584:61;;638:4;630:6;626:17;616:27;;584:61;691:2;683:6;680:14;660:18;657:38;654:161;;737:10;732:3;728:20;725:1;718:31;772:4;769:1;762:15;800:4;797:1;790:15;654:161;;441:380;;;:::o;952:518::-;1054:2;1049:3;1046:11;1043:421;;;1090:5;1087:1;1080:16;1134:4;1131:1;1121:18;1204:2;1192:10;1188:19;1185:1;1181:27;1175:4;1171:38;1240:4;1228:10;1225:20;1222:47;;;-1:-1:-1;1263:4:14;1222:47;1318:2;1313:3;1309:12;1306:1;1302:20;1296:4;1292:31;1282:41;;1373:81;1391:2;1384:5;1381:13;1373:81;;;1450:1;1436:16;;1417:1;1406:13;1373:81;;;1377:3;;1043:421;952:518;;;:::o;1646:1345::-;1766:10;;-1:-1:-1;;;;;1788:30:14;;1785:56;;;1821:18;;:::i;:::-;1850:97;1940:6;1900:38;1932:4;1926:11;1900:38;:::i;:::-;1894:4;1850:97;:::i;:::-;2002:4;;2059:2;2048:14;;2076:1;2071:663;;;;2778:1;2795:6;2792:89;;;-1:-1:-1;2847:19:14;;;2841:26;2792:89;-1:-1:-1;;1603:1:14;1599:11;;;1595:24;1591:29;1581:40;1627:1;1623:11;;;1578:57;2894:81;;2041:944;;2071:663;899:1;892:14;;;936:4;923:18;;-1:-1:-1;;2107:20:14;;;2225:236;2239:7;2236:1;2233:14;2225:236;;;2328:19;;;2322:26;2307:42;;2420:27;;;;2388:1;2376:14;;;;2255:19;;2225:236;;;2229:3;2489:6;2480:7;2477:19;2474:201;;;2550:19;;;2544:26;-1:-1:-1;;2633:1:14;2629:14;;;2645:3;2625:24;2621:37;2617:42;2602:58;2587:74;;2474:201;;;2721:1;2712:6;2709:1;2705:14;2701:22;2695:4;2688:36;2041:944;;;;;1646:1345;;:::o;2996:203::-;188:5217:13;;;;;;", "srcmap-runtime": "188:5217:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1561:300:3;;;;;;:::i;:::-;;:::i;:::-;;;565:14:14;;558:22;540:41;;528:2;513:18;1561:300:3;;;;;;;;2365:89;;;:::i;:::-;;;;;;;:::i;3497:154::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:14;;;1679:51;;1667:2;1652:18;3497:154:3;1533:203:14;3323:113:3;;;;;;:::i;:::-;;:::i;:::-;;4582:253:13;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4143:578:3:-;;;;;;:::i;:::-;;:::i;423:51:13:-;;;;;;:::i;:::-;;:::i;4787:132:3:-;;;;;;:::i;:::-;;:::i;480:50:13:-;;;;;;:::i;:::-;;:::i;:::-;;;3738:25:14;;;3726:2;3711:18;480:50:13;3592:177:14;3305:322:13;;;;;;:::i;:::-;;:::i;367:50::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;2285:184::-;;;;;;:::i;:::-;;:::i;2185:118:3:-;;;;;;:::i;:::-;;:::i;1920:208::-;;;;;;:::i;:::-;;:::i;2293:101:1:-;;;:::i;1076:320:13:-;;;;;;:::i;:::-;;:::i;1402:733::-;;;;;;:::i;:::-;;:::i;1638:85:1:-;1710:6;;-1:-1:-1;;;;;1710:6:1;1638:85;;2518:93:3;;;:::i;5139:262:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;967:103::-;;;;;;:::i;:::-;;:::i;3718:144:3:-;;;;;;:::i;:::-;;:::i;4985:208::-;;;;;;:::i;:::-;;:::i;2677:255::-;;;;;;:::i;:::-;;:::i;3928:153::-;;;;;;:::i;:::-;;:::i;3982:266:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2543:215:1:-;;;;;;:::i;:::-;;:::i;1561:300:3:-;1663:4;-1:-1:-1;;;;;;1698:40:3;;-1:-1:-1;;;1698:40:3;;:104;;-1:-1:-1;;;;;;;1754:48:3;;-1:-1:-1;;;1754:48:3;1698:104;:156;;;-1:-1:-1;;;;;;;;;;861:40:9;;;1818:36:3;1679:175;1561:300;-1:-1:-1;;1561:300:3:o;2365:89::-;2410:13;2442:5;2435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2365:89;:::o;3497:154::-;3564:7;3583:22;3597:7;3583:13;:22::i;:::-;-1:-1:-1;6008:7:3;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6034:24:3;3623:21;5938:127;3323:113;3394:35;3403:2;3407:7;735:10:7;3394:8:3;:35::i;:::-;3323:113;;:::o;4582:253:13:-;4653:16;-1:-1:-1;;;;;4689:25:13;;4681:105;;;;-1:-1:-1;;;4681:105:13;;10782:2:14;4681:105:13;;;10764:21:14;10821:2;10801:18;;;10794:30;10860:34;10840:18;;;10833:62;10931:34;10911:18;;;10904:62;-1:-1:-1;;;10982:19:14;;;10975:34;11026:19;;4681:105:13;;;;;;;;;-1:-1:-1;;;;;4803:25:13;;;;;;:12;:25;;;;;;;;;4796:32;;;;;;;;;;;;;;;;;4803:25;;4796:32;;4803:25;4796:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4582:253;;;:::o;4143:578:3:-;-1:-1:-1;;;;;4237:16:3;;4233:87;;4276:33;;-1:-1:-1;;;4276:33:3;;4306:1;4276:33;;;1679:51:14;1652:18;;4276:33:3;1533:203:14;4233:87:3;4538:21;4562:34;4570:2;4574:7;735:10:7;4562:7:3;:34::i;:::-;4538:58;;4627:4;-1:-1:-1;;;;;4610:21:3;:13;-1:-1:-1;;;;;4610:21:3;;4606:109;;4654:50;;-1:-1:-1;;;4654:50:3;;-1:-1:-1;;;;;11314:15:14;;;4654:50:3;;;11296:34:14;11346:18;;;11339:34;;;11409:15;;11389:18;;;11382:43;11231:18;;4654:50:3;11056:375:14;4606:109:3;4223:498;4143:578;;;:::o;423:51:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;423:51:13;;-1:-1:-1;423:51:13;;-1:-1:-1;423:51:13:o;4787:132:3:-;4873:39;4890:4;4896:2;4900:7;4873:39;;;;;;;;;;;;:16;:39::i;:::-;4787:132;;;:::o;480:50:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3305:322::-;3501:64;3518:19;3539:16;3557:7;3501:16;:64::i;:::-;3575:22;;;;:13;:22;;;;;;;:45;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3575:45:13;-1:-1:-1;;;;;3575:45:13;;;;;;;;;;-1:-1:-1;3305:322:13:o;367:50::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2285:184::-;2363:4;2401:16;2409:7;2401;:16::i;:::-;-1:-1:-1;;;;;2386:31:13;:11;-1:-1:-1;;;;;2386:31:13;;:75;;;-1:-1:-1;2436:22:13;;;;:13;:22;;;;;:25;;:22;;;:25;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2421:40:13;;;2436:25;;2421:40;2386:75;2378:84;2285:184;-1:-1:-1;;;2285:184:13:o;2185:118:3:-;2248:7;2274:22;2288:7;2274:13;:22::i;1920:208::-;1983:7;-1:-1:-1;;;;;2006:19:3;;2002:87;;2048:30;;-1:-1:-1;;;2048:30:3;;2075:1;2048:30;;;1679:51:14;1652:18;;2048:30:3;1533:203:14;2002:87:3;-1:-1:-1;;;;;;2105:16:3;;;;;:9;:16;;;;;;;1920:208::o;2293:101:1:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1076:320:13:-;1229:7;1248:30;1258:10;1270:7;1248:9;:30::i;:::-;1288:31;1299:10;1311:7;1288:10;:31::i;:::-;1336:53;1351:7;1360:4;1366;1372:6;1380:3;1385;1336:14;:53::i;:::-;1329:60;1076:320;-1:-1:-1;;;;;;;1076:320:13:o;1402:733::-;1555:7;1591:31;1602:7;1611:10;1591;:31::i;:::-;1582:96;;;;-1:-1:-1;;;1582:96:13;;11770:2:14;1582:96:13;;;11752:21:14;11809:2;11789:18;;;11782:30;11848:34;11828:18;;;11821:62;-1:-1:-1;;;11899:18:14;;;11892:48;11957:19;;1582:96:13;11568:414:14;1582:96:13;1714:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1689:22:13;;;:13;:22;;;;;;;:166;;:22;;:166;;:22;:166;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1689:166:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1920:10:13;;-1:-1:-1;1899:7:13;;-1:-1:-1;1871:221:13;1958:16;1899:7;1958;:16::i;:::-;-1:-1:-1;;;;;1944:30:13;:10;-1:-1:-1;;;;;1944:30:13;;:57;;1989:12;1944:57;;;1977:10;1944:57;2015:4;2033;2051:6;2071:3;2088;1871:221;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2111:7:13;;1402:733;-1:-1:-1;;;;;1402:733:13:o;2518:93:3:-;2565:13;2597:7;2590:14;;;;;:::i;5139:262:13:-;5198:15;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5198:15:13;5263:1;5799:16:3;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:3;-1:-1:-1;;;;;5234:31:13;;;5345:7;5274:79;;;;;;;;:::i;:::-;;;;;;;;;;;;;5225:130;;;;;-1:-1:-1;;;5225:130:13;;;;;;;;:::i;:::-;-1:-1:-1;5372:22:13;;;;:13;:22;;;;;;;5365:29;;;;;;;;;;;;5372:22;;5365:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5139:262;;;:::o;967:103::-;1531:13:1;:11;:13::i;:::-;1041:22:13::1;1051:2;1055:7;1041:9;:22::i;3718:144:3:-:0;3803:52;735:10:7;3836:8:3;3846;3803:18;:52::i;4985:208::-;5098:31;5111:4;5117:2;5121:7;5098:12;:31::i;:::-;5139:47;5162:4;5168:2;5172:7;5181:4;5139:22;:47::i;2677:255::-;2741:13;2766:22;2780:7;2766:13;:22::i;:::-;;2799:21;2823:10;3250:9;;;;;;;;;-1:-1:-1;3250:9:3;;;3174:92;2823:10;2799:34;;2874:1;2856:7;2850:21;:25;:75;;;;;;;;;;;;;;;;;2892:7;2901:18;:7;:16;:18::i;:::-;2878:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2843:82;2677:255;-1:-1:-1;;;2677:255:3:o;3928:153::-;-1:-1:-1;;;;;4039:25:3;;;4016:4;4039:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3928:153::o;3982:266:13:-;4109:1;5799:16:3;;;:7;:16;;;;;;4044::13;;4109:1;-1:-1:-1;;;;;5799:16:3;-1:-1:-1;;;;;4080:31:13;;;4191:7;4120:79;;;;;;;;:::i;:::-;;;;;;;;;;;;;4071:131;;;;;-1:-1:-1;;;4071:131:13;;;;;;;;:::i;:::-;-1:-1:-1;4219:22:13;;;;:13;:22;;;;;;;;;4212:29;;;;;;;;;;;;;;;;;4219:22;;4212:29;;4219:22;4212:29;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4212:29:13;;;;;;;;;;;;;;;;;;;;;;3982:266;;;:::o;2543:215:1:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:1;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:1;;2700:1:::1;2672:31;::::0;::::1;1679:51:14::0;1652:18;;2672:31:1::1;1533:203:14::0;2623:91:1::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;16138:241:3:-;16201:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:3;;16263:88;;16309:31;;-1:-1:-1;;;16309:31:3;;;;;3738:25:14;;;3711:18;;16309:31:3;3592:177:14;14418:120:3;14498:33;14507:2;14511:7;14520:4;14526;14498:8;:33::i;8838:795::-;8924:7;5799:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5799:16:3;;;;9035:18;;;9031:86;;9069:37;9086:4;9092;9098:7;9069:16;:37::i;:::-;-1:-1:-1;;;;;9161:18:3;;;9157:256;;9277:48;9294:1;9298:7;9315:1;9319:5;9277:8;:48::i;:::-;-1:-1:-1;;;;;9368:15:3;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9368:20:3;;;9157:256;-1:-1:-1;;;;;9427:16:3;;;9423:107;;-1:-1:-1;;;;;9487:13:3;;;;;;:9;:13;;;;;:18;;9504:1;9487:18;;;9423:107;9540:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9540:21:3;-1:-1:-1;;;;;9540:21:3;;;;;;;;;9577:27;;9540:16;;9577:27;;;;;;;9622:4;8838:795;-1:-1:-1;;;;8838:795:3:o;1796:162:1:-;1710:6;;-1:-1:-1;;;;;1710:6:1;735:10:7;1855:23:1;1851:101;;1901:40;;-1:-1:-1;;;1901:40:1;;735:10:7;1901:40:1;;;1679:51:14;1652:18;;1901:40:1;1533:203:14;2912:187:1;3004:6;;;-1:-1:-1;;;;;3020:17:1;;;-1:-1:-1;;;;;;3020:17:1;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;10633:100:3:-;10700:26;10710:2;10714:7;10700:26;;;;;;;;;;;;:9;:26::i;2475:374:13:-;2563:22;;;;:13;:22;;;;;:29;:34;2555:88;;;;-1:-1:-1;;;2555:88:13;;16374:2:14;2555:88:13;;;16356:21:14;16413:2;16393:18;;;16386:30;16452:34;16432:18;;;16425:62;-1:-1:-1;;;16503:18:14;;;16496:39;16552:19;;2555:88:13;16172:405:14;2555:88:13;-1:-1:-1;;;;;2661:28:13;;2653:84;;;;-1:-1:-1;;;2653:84:13;;16784:2:14;2653:84:13;;;16766:21:14;16823:2;16803:18;;;16796:30;16862:34;16842:18;;;16835:62;-1:-1:-1;;;16913:18:14;;;16906:41;16964:19;;2653:84:13;16582:407:14;2653:84:13;2747:22;;;;:13;:22;;;;;;;;:43;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2747:43:13;;;-1:-1:-1;;;;;;2747:43:13;;;;;;;2800:28;;;:12;:28;;;;:42;;;;;;;;;;;;;;;2475:374::o;15591:312:3:-;-1:-1:-1;;;;;15698:22:3;;15694:91;;15743:31;;-1:-1:-1;;;15743:31:3;;-1:-1:-1;;;;;1697:32:14;;15743:31:3;;;1679:51:14;1652:18;;15743:31:3;1533:203:14;15694:91:3;-1:-1:-1;;;;;15794:25:3;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15794:46:3;;;;;;;;;;15855:41;;540::14;;;15855::3;;513:18:14;15855:41:3;;;;;;;15591:312;;;:::o;16918:782::-;-1:-1:-1;;;;;17034:14:3;;;:18;17030:664;;17072:71;;-1:-1:-1;;;17072:71:3;;-1:-1:-1;;;;;17072:36:3;;;;;:71;;735:10:7;;17123:4:3;;17129:7;;17138:4;;17072:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17072:71:3;;;;;;;;-1:-1:-1;;17072:71:3;;;;;;;;;;;;:::i;:::-;;;17068:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17381:6;:13;17398:1;17381:18;17377:293;;17430:25;;-1:-1:-1;;;17430:25:3;;-1:-1:-1;;;;;1697:32:14;;17430:25:3;;;1679:51:14;1652:18;;17430:25:3;1533:203:14;17377:293:3;17622:6;17616:13;17607:6;17603:2;17599:15;17592:38;17068:616;-1:-1:-1;;;;;;17190:51:3;;-1:-1:-1;;;17190:51:3;17186:130;;17272:25;;-1:-1:-1;;;17272:25:3;;-1:-1:-1;;;;;1697:32:14;;17272:25:3;;;1679:51:14;1652:18;;17272:25:3;1533:203:14;17186:130:3;17144:186;16918:782;;;;:::o;637:698:8:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;817:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:8;-1:-1:-1;794:41:8;-1:-1:-1;955:28:8;;;971:2;955:28;1010:282;-1:-1:-1;;1041:5:8;-1:-1:-1;;;1175:2:8;1164:14;;1159:32;1041:5;1146:46;1236:2;1227:11;;;-1:-1:-1;1256:21:8;1010:282;1256:21;-1:-1:-1;1312:6:8;637:698;-1:-1:-1;;;637:698:8:o;14720:662:3:-;14880:9;:31;;;-1:-1:-1;;;;;;14893:18:3;;;;14880:31;14876:460;;;14927:13;14943:22;14957:7;14943:13;:22::i;:::-;14927:38;-1:-1:-1;;;;;;15093:18:3;;;;;;:35;;;15124:4;-1:-1:-1;;;;;15115:13:3;:5;-1:-1:-1;;;;;15115:13:3;;;15093:35;:69;;;;;15133:29;15150:5;15157:4;15133:16;:29::i;:::-;15132:30;15093:69;15089:142;;;15189:27;;-1:-1:-1;;;15189:27:3;;-1:-1:-1;;;;;1697:32:14;;15189:27:3;;;1679:51:14;1652:18;;15189:27:3;1533:203:14;15089:142:3;15249:9;15245:81;;;15303:7;15299:2;-1:-1:-1;;;;;15283:28:3;15292:5;-1:-1:-1;;;;;15283:28:3;;;;;;;;;;;15245:81;14913:423;14876:460;-1:-1:-1;;15346:24:3;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15346:29:3;-1:-1:-1;;;;;15346:29:3;;;;;;;;;;14720:662::o;7082:368::-;7194:38;7208:5;7215:7;7224;7194:13;:38::i;:::-;7189:255;;-1:-1:-1;;;;;7252:19:3;;7248:186;;7298:31;;-1:-1:-1;;;7298:31:3;;;;;3738:25:14;;;3711:18;;7298:31:3;3592:177:14;7248:186:3;7375:44;;-1:-1:-1;;;7375:44:3;;-1:-1:-1;;;;;18066:32:14;;7375:44:3;;;18048:51:14;18115:18;;;18108:34;;;18021:18;;7375:44:3;17874:274:14;10954:182:3;11048:18;11054:2;11058:7;11048:5;:18::i;:::-;11076:53;11107:1;11111:2;11115:7;11124:4;11076:22;:53::i;12214:916:11:-;12267:7;;-1:-1:-1;;;12342:17:11;;12338:103;;-1:-1:-1;;;12379:17:11;;;-1:-1:-1;12424:2:11;12414:12;12338:103;12467:8;12458:5;:17;12454:103;;12504:8;12495:17;;;-1:-1:-1;12540:2:11;12530:12;12454:103;12583:8;12574:5;:17;12570:103;;12620:8;12611:17;;;-1:-1:-1;12656:2:11;12646:12;12570:103;12699:7;12690:5;:16;12686:100;;12735:7;12726:16;;;-1:-1:-1;12770:1:11;12760:11;12686:100;12812:7;12803:5;:16;12799:100;;12848:7;12839:16;;;-1:-1:-1;12883:1:11;12873:11;12799:100;12925:7;12916:5;:16;12912:100;;12961:7;12952:16;;;-1:-1:-1;12996:1:11;12986:11;12912:100;13038:7;13029:5;:16;13025:66;;13075:1;13065:11;13117:6;12214:916;-1:-1:-1;;12214:916:11:o;6376:272:3:-;6479:4;-1:-1:-1;;;;;6514:21:3;;;;;;:127;;;6561:7;-1:-1:-1;;;;;6552:16:3;:5;-1:-1:-1;;;;;6552:16:3;;:52;;;;6572:32;6589:5;6596:7;6572:16;:32::i;:::-;6552:88;;;-1:-1:-1;6008:7:3;6034:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6608:32:3;;;6034:24;;6608:32;6552:88;6495:146;6376:272;-1:-1:-1;;;;6376:272:3:o;9955:327::-;-1:-1:-1;;;;;10022:16:3;;10018:87;;10061:33;;-1:-1:-1;;;10061:33:3;;10091:1;10061:33;;;1679:51:14;1652:18;;10061:33:3;1533:203:14;10018:87:3;10114:21;10138:32;10146:2;10150:7;10167:1;10138:7;:32::i;:::-;10114:56;-1:-1:-1;;;;;;10184:27:3;;;10180:96;;10234:31;;-1:-1:-1;;;10234:31:3;;10262:1;10234:31;;;1679:51:14;1652:18;;10234:31:3;1533:203:14;14:131;-1:-1:-1;;;;;;88:32:14;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:14;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:14;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:14:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:14;;1348:180;-1:-1:-1;1348:180:14:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:14;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:14:o;2178:186::-;2237:6;2290:2;2278:9;2269:7;2265:23;2261:32;2258:52;;;2306:1;2303;2296:12;2258:52;2329:29;2348:9;2329:29;:::i;2369:632::-;2540:2;2592:21;;;2662:13;;2565:18;;;2684:22;;;2511:4;;2540:2;2763:15;;;;2737:2;2722:18;;;2511:4;2806:169;2820:6;2817:1;2814:13;2806:169;;;2881:13;;2869:26;;2950:15;;;;2915:12;;;;2842:1;2835:9;2806:169;;;-1:-1:-1;2992:3:14;;2369:632;-1:-1:-1;;;;;;2369:632:14:o;3006:328::-;3083:6;3091;3099;3152:2;3140:9;3131:7;3127:23;3123:32;3120:52;;;3168:1;3165;3158:12;3120:52;3191:29;3210:9;3191:29;:::i;:::-;3181:39;;3239:38;3273:2;3262:9;3258:18;3239:38;:::i;:::-;3229:48;;3324:2;3313:9;3309:18;3296:32;3286:42;;3006:328;;;;;:::o;3339:248::-;3407:6;3415;3468:2;3456:9;3447:7;3443:23;3439:32;3436:52;;;3484:1;3481;3474:12;3436:52;-1:-1:-1;;3507:23:14;;;3577:2;3562:18;;;3549:32;;-1:-1:-1;3339:248:14:o;3774:875::-;4115:3;4104:9;4097:22;4078:4;4142:46;4183:3;4172:9;4168:19;4160:6;4142:46;:::i;:::-;4236:9;4228:6;4224:22;4219:2;4208:9;4204:18;4197:50;4270:33;4296:6;4288;4270:33;:::i;:::-;4256:47;;4351:9;4343:6;4339:22;4334:2;4323:9;4319:18;4312:50;4385:33;4411:6;4403;4385:33;:::i;:::-;4371:47;;4466:9;4458:6;4454:22;4449:2;4438:9;4434:18;4427:50;4500:33;4526:6;4518;4500:33;:::i;:::-;4486:47;;4582:9;4574:6;4570:22;4564:3;4553:9;4549:19;4542:51;4610:33;4636:6;4628;4610:33;:::i;:::-;4602:41;3774:875;-1:-1:-1;;;;;;;;3774:875:14:o;4654:254::-;4722:6;4730;4783:2;4771:9;4762:7;4758:23;4754:32;4751:52;;;4799:1;4796;4789:12;4751:52;4835:9;4822:23;4812:33;;4864:38;4898:2;4887:9;4883:18;4864:38;:::i;:::-;4854:48;;4654:254;;;;;:::o;4913:127::-;4974:10;4969:3;4965:20;4962:1;4955:31;5005:4;5002:1;4995:15;5029:4;5026:1;5019:15;5045:632;5110:5;5140:18;5181:2;5173:6;5170:14;5167:40;;;5187:18;;:::i;:::-;5262:2;5256:9;5230:2;5316:15;;-1:-1:-1;;5312:24:14;;;5338:2;5308:33;5304:42;5292:55;;;5362:18;;;5382:22;;;5359:46;5356:72;;;5408:18;;:::i;:::-;5448:10;5444:2;5437:22;5477:6;5468:15;;5507:6;5499;5492:22;5547:3;5538:6;5533:3;5529:16;5526:25;5523:45;;;5564:1;5561;5554:12;5523:45;5614:6;5609:3;5602:4;5594:6;5590:17;5577:44;5669:1;5662:4;5653:6;5645;5641:19;5637:30;5630:41;;;;5045:632;;;;;:::o;5682:222::-;5725:5;5778:3;5771:4;5763:6;5759:17;5755:27;5745:55;;5796:1;5793;5786:12;5745:55;5818:80;5894:3;5885:6;5872:20;5865:4;5857:6;5853:17;5818:80;:::i;5909:1214::-;6063:6;6071;6079;6087;6095;6103;6156:3;6144:9;6135:7;6131:23;6127:33;6124:53;;;6173:1;6170;6163:12;6124:53;6209:9;6196:23;6186:33;;6270:2;6259:9;6255:18;6242:32;6293:18;6334:2;6326:6;6323:14;6320:34;;;6350:1;6347;6340:12;6320:34;6373:50;6415:7;6406:6;6395:9;6391:22;6373:50;:::i;:::-;6363:60;;6476:2;6465:9;6461:18;6448:32;6432:48;;6505:2;6495:8;6492:16;6489:36;;;6521:1;6518;6511:12;6489:36;6544:52;6588:7;6577:8;6566:9;6562:24;6544:52;:::i;:::-;6534:62;;6649:2;6638:9;6634:18;6621:32;6605:48;;6678:2;6668:8;6665:16;6662:36;;;6694:1;6691;6684:12;6662:36;6717:52;6761:7;6750:8;6739:9;6735:24;6717:52;:::i;:::-;6707:62;;6822:3;6811:9;6807:19;6794:33;6778:49;;6852:2;6842:8;6839:16;6836:36;;;6868:1;6865;6858:12;6836:36;6891:52;6935:7;6924:8;6913:9;6909:24;6891:52;:::i;:::-;6881:62;;6996:3;6985:9;6981:19;6968:33;6952:49;;7026:2;7016:8;7013:16;7010:36;;;7042:1;7039;7032:12;7010:36;;7065:52;7109:7;7098:8;7087:9;7083:24;7065:52;:::i;:::-;7055:62;;;5909:1214;;;;;;;;:::o;7128:1110::-;7307:2;7296:9;7289:21;7270:4;7345:6;7339:13;7388:4;7383:2;7372:9;7368:18;7361:32;7416:52;7463:3;7452:9;7448:19;7434:12;7416:52;:::i;:::-;7402:66;;7517:2;7509:6;7505:15;7499:22;7544:2;7540:7;7611:2;7599:9;7591:6;7587:22;7583:31;7578:2;7567:9;7563:18;7556:59;7638:41;7672:6;7656:14;7638:41;:::i;:::-;7624:55;;7728:2;7720:6;7716:15;7710:22;7688:44;;7796:2;7784:9;7776:6;7772:22;7768:31;7763:2;7752:9;7748:18;7741:59;7823:41;7857:6;7841:14;7823:41;:::i;:::-;7809:55;;7913:2;7905:6;7901:15;7895:22;7873:44;;7982:2;7970:9;7962:6;7958:22;7954:31;7948:3;7937:9;7933:19;7926:60;8009:41;8043:6;8027:14;8009:41;:::i;:::-;7995:55;;8099:3;8091:6;8087:16;8081:23;8059:45;;8170:2;8158:9;8150:6;8146:22;8142:31;8135:4;8124:9;8120:20;8113:61;;8191:41;8225:6;8209:14;8191:41;:::i;:::-;8183:49;7128:1110;-1:-1:-1;;;;;7128:1110:14:o;8243:347::-;8308:6;8316;8369:2;8357:9;8348:7;8344:23;8340:32;8337:52;;;8385:1;8382;8375:12;8337:52;8408:29;8427:9;8408:29;:::i;:::-;8398:39;;8487:2;8476:9;8472:18;8459:32;8534:5;8527:13;8520:21;8513:5;8510:32;8500:60;;8556:1;8553;8546:12;8500:60;8579:5;8569:15;;;8243:347;;;;;:::o;8595:667::-;8690:6;8698;8706;8714;8767:3;8755:9;8746:7;8742:23;8738:33;8735:53;;;8784:1;8781;8774:12;8735:53;8807:29;8826:9;8807:29;:::i;:::-;8797:39;;8855:38;8889:2;8878:9;8874:18;8855:38;:::i;:::-;8845:48;;8940:2;8929:9;8925:18;8912:32;8902:42;;8995:2;8984:9;8980:18;8967:32;9022:18;9014:6;9011:30;9008:50;;;9054:1;9051;9044:12;9008:50;9077:22;;9130:4;9122:13;;9118:27;-1:-1:-1;9108:55:14;;9159:1;9156;9149:12;9108:55;9182:74;9248:7;9243:2;9230:16;9225:2;9221;9217:11;9182:74;:::i;:::-;9172:84;;;8595:667;;;;;;;:::o;9267:260::-;9335:6;9343;9396:2;9384:9;9375:7;9371:23;9367:32;9364:52;;;9412:1;9409;9402:12;9364:52;9435:29;9454:9;9435:29;:::i;:::-;9425:39;;9483:38;9517:2;9506:9;9502:18;9483:38;:::i;9532:658::-;9703:2;9755:21;;;9825:13;;9728:18;;;9847:22;;;9674:4;;9703:2;9926:15;;;;9900:2;9885:18;;;9674:4;9969:195;9983:6;9980:1;9977:13;9969:195;;;10048:13;;-1:-1:-1;;;;;10044:39:14;10032:52;;10139:15;;;;10104:12;;;;10080:1;9998:9;9969:195;;10195:380;10274:1;10270:12;;;;10317;;;10338:61;;10392:4;10384:6;10380:17;10370:27;;10338:61;10445:2;10437:6;10434:14;10414:18;10411:38;10408:161;;10491:10;10486:3;10482:20;10479:1;10472:31;10526:4;10523:1;10516:15;10554:4;10551:1;10544:15;10408:161;;10195:380;;;:::o;11436:127::-;11497:10;11492:3;11488:20;11485:1;11478:31;11528:4;11525:1;11518:15;11552:4;11549:1;11542:15;12113:518;12215:2;12210:3;12207:11;12204:421;;;12251:5;12248:1;12241:16;12295:4;12292:1;12282:18;12365:2;12353:10;12349:19;12346:1;12342:27;12336:4;12332:38;12401:4;12389:10;12386:20;12383:47;;;-1:-1:-1;12424:4:14;12383:47;12479:2;12474:3;12470:12;12467:1;12463:20;12457:4;12453:31;12443:41;;12534:81;12552:2;12545:5;12542:13;12534:81;;;12611:1;12597:16;;12578:1;12567:13;12534:81;;12807:1345;12933:3;12927:10;12960:18;12952:6;12949:30;12946:56;;;12982:18;;:::i;:::-;13011:97;13101:6;13061:38;13093:4;13087:11;13061:38;:::i;:::-;13055:4;13011:97;:::i;:::-;13163:4;;13220:2;13209:14;;13237:1;13232:663;;;;13939:1;13956:6;13953:89;;;-1:-1:-1;14008:19:14;;;14002:26;13953:89;-1:-1:-1;;12764:1:14;12760:11;;;12756:24;12752:29;12742:40;12788:1;12784:11;;;12739:57;14055:81;;13202:944;;13232:663;12060:1;12053:14;;;12097:4;12084:18;;-1:-1:-1;;13268:20:14;;;13386:236;13400:7;13397:1;13394:14;13386:236;;;13489:19;;;13483:26;13468:42;;13581:27;;;;13549:1;13537:14;;;;13416:19;;13386:236;;;13390:3;13650:6;13641:7;13638:19;13635:201;;;13711:19;;;13705:26;-1:-1:-1;;13794:1:14;13790:14;;;13806:3;13786:24;13782:37;13778:42;13763:58;13748:74;;13635:201;;;13882:1;13873:6;13870:1;13866:14;13862:22;13856:4;13849:36;13202:944;;;;;12807:1345;;:::o;14157:1106::-;14495:4;14535:1;14527:6;14524:13;14514:144;;14580:10;14575:3;14571:20;14568:1;14561:31;14615:4;14612:1;14605:15;14643:4;14640:1;14633:15;14514:144;14685:6;14674:9;14667:25;14728:3;14723:2;14712:9;14708:18;14701:31;14755:46;14796:3;14785:9;14781:19;14773:6;14755:46;:::i;:::-;14849:9;14841:6;14837:22;14832:2;14821:9;14817:18;14810:50;14883:33;14909:6;14901;14883:33;:::i;:::-;14869:47;;14964:9;14956:6;14952:22;14947:2;14936:9;14932:18;14925:50;14998:33;15024:6;15016;14998:33;:::i;:::-;14984:47;;15080:9;15072:6;15068:22;15062:3;15051:9;15047:19;15040:51;15114:33;15140:6;15132;15114:33;:::i;:::-;15100:47;;15196:9;15188:6;15184:22;15178:3;15167:9;15163:19;15156:51;15224:33;15250:6;15242;15224:33;:::i;:::-;15216:41;14157:1106;-1:-1:-1;;;;;;;;;14157:1106:14:o;15268:398::-;15510:34;15498:47;;-1:-1:-1;;;15570:2:14;15561:12;;15554:41;15620:2;15611:12;;15604:28;;;;15657:2;15648:12;;15268:398::o;15671:496::-;15850:3;15888:6;15882:13;15904:66;15963:6;15958:3;15951:4;15943:6;15939:17;15904:66;:::i;:::-;16033:13;;15992:16;;;;16055:70;16033:13;15992:16;16102:4;16090:17;;16055:70;:::i;:::-;16141:20;;15671:496;-1:-1:-1;;;;15671:496:14:o;16994:489::-;-1:-1:-1;;;;;17263:15:14;;;17245:34;;17315:15;;17310:2;17295:18;;17288:43;17362:2;17347:18;;17340:34;;;17410:3;17405:2;17390:18;;17383:31;;;17188:4;;17431:46;;17457:19;;17449:6;17431:46;:::i;:::-;17423:54;16994:489;-1:-1:-1;;;;;;16994:489:14:o;17488:249::-;17557:6;17610:2;17598:9;17589:7;17585:23;17581:32;17578:52;;;17626:1;17623;17616:12;17578:52;17658:9;17652:16;17677:30;17701:5;17677:30;:::i", "abi": "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"editor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enumItemBlocks.Role\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"desc\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"family\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"img\",\"type\":\"string\"}],\"name\":\"PassportUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allItemOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"desc\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"family\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"img\",\"type\":\"string\"}],\"name\":\"createPassport\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"createdItems\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"}],\"name\":\"getCreatedItemTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getPassport\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"desc\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"family\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"img\",\"type\":\"string\"}],\"internalType\":\"structItemBlocks.Passport\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getUserHistory\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"userAddress\",\"type\":\"address\"}],\"name\":\"isEligible\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"itemPassports\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"desc\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"family\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"img\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"currentOwnerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nextOwnerAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"updateOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"desc\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"family\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"img\",\"type\":\"string\"}],\"name\":\"updatePassport\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801562000010575f80fd5b506040516200258c3803806200258c83398101604081905262000033916200012c565b806040518060400160405280600f81526020016e4974656d426c6f636b73546573743960881b8152506040518060400160405280600381526020016249423960e81b815250815f9081620000889190620001f9565b506001620000978282620001f9565b5050506001600160a01b038116620000c857604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b620000d381620000db565b5050620002c5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f602082840312156200013d575f80fd5b81516001600160a01b038116811462000154575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200018457607f821691505b602082108103620001a357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001f457805f5260205f20601f840160051c81016020851015620001d05750805b601f840160051c820191505b81811015620001f1575f8155600101620001dc565b50505b505050565b81516001600160401b038111156200021557620002156200015b565b6200022d816200022684546200016f565b84620001a9565b602080601f83116001811462000263575f84156200024b5750858301515b5f19600386901b1c1916600185901b178555620002bd565b5f85815260208120601f198616915b82811015620002935788860151825594840194600190910190840162000272565b5085821015620002b157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b6122b980620002d35f395ff3fe608060405234801561000f575f80fd5b50600436106101a1575f3560e01c806370a08231116100f3578063a144819411610093578063c87b56dd1161006e578063c87b56dd146103ac578063e985e9c5146103bf578063f2a1625e146103d2578063f2fde38b146103f2575f80fd5b8063a144819414610373578063a22cb46514610386578063b88d4fde14610399575f80fd5b8063886ee64e116100ce578063886ee64e146103275780638da5cb5b1461033a57806395d89b411461034b5780639f5679f414610353575f80fd5b806370a08231146102f9578063715018a61461030c578063875185c314610314575f80fd5b80632bf3d8171161015e578063534a3a5c11610139578063534a3a5c1461029c5780635589fe78146102af578063592e0e00146102d35780636352211e146102e6575f80fd5b80632bf3d8171461025557806342842e0e1461026857806348cdcd4d1461027b575f80fd5b806301ffc9a7146101a557806306fdde03146101cd578063081812fc146101e2578063095ea7b31461020d57806310c8b4331461022257806323b872dd14610242575b5f80fd5b6101b86101b3366004611a8d565b610405565b60405190151581526020015b60405180910390f35b6101d5610456565b6040516101c49190611af5565b6101f56101f0366004611b07565b6104e5565b6040516001600160a01b0390911681526020016101c4565b61022061021b366004611b39565b61050c565b005b610235610230366004611b61565b61051b565b6040516101c49190611b7a565b610220610250366004611bbd565b610611565b6101f5610263366004611bf6565b61069a565b610220610276366004611bbd565b6106ce565b61028e610289366004611b39565b6106ed565b6040519081526020016101c4565b6102206102aa366004611bbd565b610718565b6102c26102bd366004611b07565b610761565b6040516101c4959493929190611c16565b6101b86102e1366004611c82565b610a2c565b6101f56102f4366004611b07565b610a8f565b61028e610307366004611b61565b610a99565b610220610ade565b61028e610322366004611d51565b610af1565b61028e610335366004611d51565b610b1f565b6006546001600160a01b03166101f5565b6101d5610ca5565b610366610361366004611b07565b610cb4565b6040516101c49190611e22565b610220610381366004611b39565b611035565b610220610394366004611ebc565b611047565b6102206103a7366004611ef5565b611052565b6101d56103ba366004611b07565b611069565b6101b86103cd366004611f6c565b6110d9565b6103e56103e0366004611b07565b611106565b6040516101c49190611f94565b610220610400366004611b61565b6111d1565b5f6001600160e01b031982166380ac58cd60e01b148061043557506001600160e01b03198216635b5e139f60e01b145b8061045057506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f805461046490611fd4565b80601f016020809104026020016040519081016040528092919081815260200182805461049090611fd4565b80156104db5780601f106104b2576101008083540402835291602001916104db565b820191905f5260205f20905b8154815290600101906020018083116104be57829003601f168201915b5050505050905090565b5f6104ef8261120e565b505f828152600460205260409020546001600160a01b0316610450565b610517828233611246565b5050565b60606001600160a01b0382166105aa5760405162461bcd60e51b815260206004820152604360248201527f596f7520617265206e6f7420616c6c6f77656420746f2073656520746865206360448201527f72656174656420746f6b656e73207769746820616e207a65726f20616464726560648201526239b99760e91b608482015260a4015b60405180910390fd5b6001600160a01b0382165f908152600960209081526040918290208054835181840281018401909452808452909183018282801561060557602002820191905f5260205f20905b8154815260200190600101908083116105f1575b50505050509050919050565b6001600160a01b03821661063a57604051633250574960e11b81525f60048201526024016105a1565b5f610646838333611253565b9050836001600160a01b0316816001600160a01b031614610694576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016105a1565b50505050565b6008602052815f5260405f2081815481106106b3575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6106e883838360405180602001604052805f815250611052565b505050565b6009602052815f5260405f208181548110610706575f80fd5b905f5260205f20015f91509150505481565b6107238383836106ce565b5f9081526008602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b039290921691909117905550565b60076020525f908152604090208054819061077b90611fd4565b80601f01602080910402602001604051908101604052809291908181526020018280546107a790611fd4565b80156107f25780601f106107c9576101008083540402835291602001916107f2565b820191905f5260205f20905b8154815290600101906020018083116107d557829003601f168201915b50505050509080600101805461080790611fd4565b80601f016020809104026020016040519081016040528092919081815260200182805461083390611fd4565b801561087e5780601f106108555761010080835404028352916020019161087e565b820191905f5260205f20905b81548152906001019060200180831161086157829003601f168201915b50505050509080600201805461089390611fd4565b80601f01602080910402602001604051908101604052809291908181526020018280546108bf90611fd4565b801561090a5780601f106108e15761010080835404028352916020019161090a565b820191905f5260205f20905b8154815290600101906020018083116108ed57829003601f168201915b50505050509080600301805461091f90611fd4565b80601f016020809104026020016040519081016040528092919081815260200182805461094b90611fd4565b80156109965780601f1061096d57610100808354040283529160200191610996565b820191905f5260205f20905b81548152906001019060200180831161097957829003601f168201915b5050505050908060040180546109ab90611fd4565b80601f01602080910402602001604051908101604052809291908181526020018280546109d790611fd4565b8015610a225780601f106109f957610100808354040283529160200191610a22565b820191905f5260205f20905b815481529060010190602001808311610a0557829003601f168201915b5050505050905085565b5f610a3683610a8f565b6001600160a01b0316826001600160a01b03161480610a8857505f8381526008602052604081208054909190610a6e57610a6e61200c565b5f918252602090912001546001600160a01b038381169116145b9392505050565b5f6104508261120e565b5f6001600160a01b038216610ac3576040516322718ad960e21b81525f60048201526024016105a1565b506001600160a01b03165f9081526003602052604090205490565b610ae6611345565b610aef5f611372565b565b5f610afc33886113c3565b610b0633886113dc565b610b14878787878787610b1f565b979650505050505050565b5f610b2a8733610a2c565b610b915760405162461bcd60e51b815260206004820152603260248201527f4d75737420626520746865206f776e6572206f6620746865206974656d206f72604482015271081d1a194818dc99585d1bdc881bd9881a5d60721b60648201526084016105a1565b6040805160a081018252878152602080820188905281830187905260608201869052608082018590525f8a815260079091529190912081518190610bd59082612064565b5060208201516001820190610bea9082612064565b5060408201516002820190610bff9082612064565b5060608201516003820190610c149082612064565b5060808201516004820190610c299082612064565b503391508890507f132290b0f8d58f9abffd99c75c46d96d52da97d6c61e23f54ab53dd2f27dc1e3610c5a82610a8f565b6001600160a01b0316336001600160a01b031614610c79576001610c7b565b5f5b8989898989604051610c9296959493929190612124565b60405180910390a3509495945050505050565b60606001805461046490611fd4565b610ce66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b5f828152600260205260408120546001600160a01b03166001600160a01b0316141582604051602001610d1991906121b3565b60405160208183030381529060405290610d465760405162461bcd60e51b81526004016105a19190611af5565b505f8281526007602052604090819020815160a08101909252805482908290610d6e90611fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9a90611fd4565b8015610de55780601f10610dbc57610100808354040283529160200191610de5565b820191905f5260205f20905b815481529060010190602001808311610dc857829003601f168201915b50505050508152602001600182018054610dfe90611fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2a90611fd4565b8015610e755780601f10610e4c57610100808354040283529160200191610e75565b820191905f5260205f20905b815481529060010190602001808311610e5857829003601f168201915b50505050508152602001600282018054610e8e90611fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610eba90611fd4565b8015610f055780601f10610edc57610100808354040283529160200191610f05565b820191905f5260205f20905b815481529060010190602001808311610ee857829003601f168201915b50505050508152602001600382018054610f1e90611fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4a90611fd4565b8015610f955780601f10610f6c57610100808354040283529160200191610f95565b820191905f5260205f20905b815481529060010190602001808311610f7857829003601f168201915b50505050508152602001600482018054610fae90611fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610fda90611fd4565b80156110255780601f10610ffc57610100808354040283529160200191611025565b820191905f5260205f20905b81548152906001019060200180831161100857829003601f168201915b5050505050815250509050919050565b61103d611345565b61051782826113c3565b61051733838361150a565b61105d848484610611565b610694848484846115a8565b60606110748261120e565b505f61108a60408051602081019091525f815290565b90505f8151116110a85760405180602001604052805f815250610a88565b806110b2846116ce565b6040516020016110c39291906121fe565b6040516020818303038152906040529392505050565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f81815260026020526040812054606091906001600160a01b03166001600160a01b031614158260405160200161113d91906121b3565b6040516020818303038152906040529061116a5760405162461bcd60e51b81526004016105a19190611af5565b505f828152600860209081526040918290208054835181840281018401909452808452909183018282801561060557602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116111a85750505050509050919050565b6111d9611345565b6001600160a01b03811661120257604051631e4fbdf760e01b81525f60048201526024016105a1565b61120b81611372565b50565b5f818152600260205260408120546001600160a01b03168061045057604051637e27328960e01b8152600481018490526024016105a1565b6106e8838383600161175e565b5f828152600260205260408120546001600160a01b039081169083161561127f5761127f818486611862565b6001600160a01b038116156112b95761129a5f855f8061175e565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b038516156112e7576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b03163314610aef5760405163118cdaa760e01b81523360048201526024016105a1565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610517828260405180602001604052805f8152506118c6565b5f81815260086020526040902054156114495760405162461bcd60e51b815260206004820152602960248201527f546865726520697320616c726561647920612063726561746f7220666f7220746044820152683434b99034ba32b69760b91b60648201526084016105a1565b6001600160a01b0382166114b35760405162461bcd60e51b815260206004820152602b60248201527f596f7520617265206e6f7420616c6c6f77656420746f20686176652061207a6560448201526a39379030b2323932b9b99760a91b60648201526084016105a1565b5f8181526008602090815260408083208054600181810183559185528385200180546001600160a01b039097166001600160a01b031990971687179055948352600982528220805494850181558252902090910155565b6001600160a01b03821661153c57604051630b61174360e31b81526001600160a01b03831660048201526024016105a1565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561069457604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906115ea90339088908790879060040161222c565b6020604051808303815f875af1925050508015611624575060408051601f3d908101601f1916820190925261162191810190612268565b60015b61168b573d808015611651576040519150601f19603f3d011682016040523d82523d5f602084013e611656565b606091505b5080515f0361168357604051633250574960e11b81526001600160a01b03851660048201526024016105a1565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146116c757604051633250574960e11b81526001600160a01b03851660048201526024016105a1565b5050505050565b60605f6116da836118dc565b60010190505f8167ffffffffffffffff8111156116f9576116f9611cac565b6040519080825280601f01601f191660200182016040528015611723576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461172d57509392505050565b808061177257506001600160a01b03821615155b15611833575f6117818461120e565b90506001600160a01b038316158015906117ad5750826001600160a01b0316816001600160a01b031614155b80156117c057506117be81846110d9565b155b156117e95760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016105a1565b81156118315783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61186d8383836119b3565b6106e8576001600160a01b03831661189b57604051637e27328960e01b8152600481018290526024016105a1565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016105a1565b6118d08383611a17565b6106e85f8484846115a8565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061191a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611946576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061196457662386f26fc10000830492506010015b6305f5e100831061197c576305f5e100830492506008015b612710831061199057612710830492506004015b606483106119a2576064830492506002015b600a83106104505760010192915050565b5f6001600160a01b03831615801590611a0f5750826001600160a01b0316846001600160a01b031614806119ec57506119ec84846110d9565b80611a0f57505f828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216611a4057604051633250574960e11b81525f60048201526024016105a1565b5f611a4c83835f611253565b90506001600160a01b038116156106e8576040516339e3563760e11b81525f60048201526024016105a1565b6001600160e01b03198116811461120b575f80fd5b5f60208284031215611a9d575f80fd5b8135610a8881611a78565b5f5b83811015611ac2578181015183820152602001611aaa565b50505f910152565b5f8151808452611ae1816020860160208601611aa8565b601f01601f19169290920160200192915050565b602081525f610a886020830184611aca565b5f60208284031215611b17575f80fd5b5035919050565b80356001600160a01b0381168114611b34575f80fd5b919050565b5f8060408385031215611b4a575f80fd5b611b5383611b1e565b946020939093013593505050565b5f60208284031215611b71575f80fd5b610a8882611b1e565b602080825282518282018190525f9190848201906040850190845b81811015611bb157835183529284019291840191600101611b95565b50909695505050505050565b5f805f60608486031215611bcf575f80fd5b611bd884611b1e565b9250611be660208501611b1e565b9150604084013590509250925092565b5f8060408385031215611c07575f80fd5b50508035926020909101359150565b60a081525f611c2860a0830188611aca565b8281036020840152611c3a8188611aca565b90508281036040840152611c4e8187611aca565b90508281036060840152611c628186611aca565b90508281036080840152611c768185611aca565b98975050505050505050565b5f8060408385031215611c93575f80fd5b82359150611ca360208401611b1e565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611cda57611cda611cac565b604051601f8501601f19908116603f01168101908282118183101715611d0257611d02611cac565b81604052809350858152868686011115611d1a575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112611d42575f80fd5b610a8883833560208501611cc0565b5f805f805f8060c08789031215611d66575f80fd5b86359550602087013567ffffffffffffffff80821115611d84575f80fd5b611d908a838b01611d33565b96506040890135915080821115611da5575f80fd5b611db18a838b01611d33565b95506060890135915080821115611dc6575f80fd5b611dd28a838b01611d33565b94506080890135915080821115611de7575f80fd5b611df38a838b01611d33565b935060a0890135915080821115611e08575f80fd5b50611e1589828a01611d33565b9150509295509295509295565b602081525f825160a06020840152611e3d60c0840182611aca565b90506020840151601f1980858403016040860152611e5b8383611aca565b92506040860151915080858403016060860152611e788383611aca565b92506060860151915080858403016080860152611e958383611aca565b925060808601519150808584030160a086015250611eb38282611aca565b95945050505050565b5f8060408385031215611ecd575f80fd5b611ed683611b1e565b915060208301358015158114611eea575f80fd5b809150509250929050565b5f805f8060808587031215611f08575f80fd5b611f1185611b1e565b9350611f1f60208601611b1e565b925060408501359150606085013567ffffffffffffffff811115611f41575f80fd5b8501601f81018713611f51575f80fd5b611f6087823560208401611cc0565b91505092959194509250565b5f8060408385031215611f7d575f80fd5b611f8683611b1e565b9150611ca360208401611b1e565b602080825282518282018190525f9190848201906040850190845b81811015611bb15783516001600160a01b031683529284019291840191600101611faf565b600181811c90821680611fe857607f821691505b60208210810361200657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b601f8211156106e857805f5260205f20601f840160051c810160208510156120455750805b601f840160051c820191505b818110156116c7575f8155600101612051565b815167ffffffffffffffff81111561207e5761207e611cac565b6120928161208c8454611fd4565b84612020565b602080601f8311600181146120c5575f84156120ae5750858301515b5f19600386901b1c1916600185901b17855561211c565b5f85815260208120601f198616915b828110156120f3578886015182559484019460019091019084016120d4565b508582101561211057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6002881061214157634e487b7160e01b5f52602160045260245ffd5b87825260c0602083015261215860c0830188611aca565b828103604084015261216a8188611aca565b9050828103606084015261217e8187611aca565b905082810360808401526121928186611aca565b905082810360a08401526121a68185611aca565b9998505050505050505050565b7f54686520746f6b656e206973206e6f742076616c69642e205468657265206973815270206e6f207375636820746f6b656e20617360781b6020820152603181019190915260510190565b5f835161220f818460208801611aa8565b835190830190612223818360208801611aa8565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061225e90830184611aca565b9695505050505050565b5f60208284031215612278575f80fd5b8151610a8881611a7856fea264697066735822122063409611f19ebc54fce45f968778b4d34955a16eb44b103f0635b4a4432dd5f564736f6c63430008160033", "bin-runtime": "608060405234801561000f575f80fd5b50600436106101a1575f3560e01c806370a08231116100f3578063a144819411610093578063c87b56dd1161006e578063c87b56dd146103ac578063e985e9c5146103bf578063f2a1625e146103d2578063f2fde38b146103f2575f80fd5b8063a144819414610373578063a22cb46514610386578063b88d4fde14610399575f80fd5b8063886ee64e116100ce578063886ee64e146103275780638da5cb5b1461033a57806395d89b411461034b5780639f5679f414610353575f80fd5b806370a08231146102f9578063715018a61461030c578063875185c314610314575f80fd5b80632bf3d8171161015e578063534a3a5c11610139578063534a3a5c1461029c5780635589fe78146102af578063592e0e00146102d35780636352211e146102e6575f80fd5b80632bf3d8171461025557806342842e0e1461026857806348cdcd4d1461027b575f80fd5b806301ffc9a7146101a557806306fdde03146101cd578063081812fc146101e2578063095ea7b31461020d57806310c8b4331461022257806323b872dd14610242575b5f80fd5b6101b86101b3366004611a8d565b610405565b60405190151581526020015b60405180910390f35b6101d5610456565b6040516101c49190611af5565b6101f56101f0366004611b07565b6104e5565b6040516001600160a01b0390911681526020016101c4565b61022061021b366004611b39565b61050c565b005b610235610230366004611b61565b61051b565b6040516101c49190611b7a565b610220610250366004611bbd565b610611565b6101f5610263366004611bf6565b61069a565b610220610276366004611bbd565b6106ce565b61028e610289366004611b39565b6106ed565b6040519081526020016101c4565b6102206102aa366004611bbd565b610718565b6102c26102bd366004611b07565b610761565b6040516101c4959493929190611c16565b6101b86102e1366004611c82565b610a2c565b6101f56102f4366004611b07565b610a8f565b61028e610307366004611b61565b610a99565b610220610ade565b61028e610322366004611d51565b610af1565b61028e610335366004611d51565b610b1f565b6006546001600160a01b03166101f5565b6101d5610ca5565b610366610361366004611b07565b610cb4565b6040516101c49190611e22565b610220610381366004611b39565b611035565b610220610394366004611ebc565b611047565b6102206103a7366004611ef5565b611052565b6101d56103ba366004611b07565b611069565b6101b86103cd366004611f6c565b6110d9565b6103e56103e0366004611b07565b611106565b6040516101c49190611f94565b610220610400366004611b61565b6111d1565b5f6001600160e01b031982166380ac58cd60e01b148061043557506001600160e01b03198216635b5e139f60e01b145b8061045057506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f805461046490611fd4565b80601f016020809104026020016040519081016040528092919081815260200182805461049090611fd4565b80156104db5780601f106104b2576101008083540402835291602001916104db565b820191905f5260205f20905b8154815290600101906020018083116104be57829003601f168201915b5050505050905090565b5f6104ef8261120e565b505f828152600460205260409020546001600160a01b0316610450565b610517828233611246565b5050565b60606001600160a01b0382166105aa5760405162461bcd60e51b815260206004820152604360248201527f596f7520617265206e6f7420616c6c6f77656420746f2073656520746865206360448201527f72656174656420746f6b656e73207769746820616e207a65726f20616464726560648201526239b99760e91b608482015260a4015b60405180910390fd5b6001600160a01b0382165f908152600960209081526040918290208054835181840281018401909452808452909183018282801561060557602002820191905f5260205f20905b8154815260200190600101908083116105f1575b50505050509050919050565b6001600160a01b03821661063a57604051633250574960e11b81525f60048201526024016105a1565b5f610646838333611253565b9050836001600160a01b0316816001600160a01b031614610694576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016105a1565b50505050565b6008602052815f5260405f2081815481106106b3575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6106e883838360405180602001604052805f815250611052565b505050565b6009602052815f5260405f208181548110610706575f80fd5b905f5260205f20015f91509150505481565b6107238383836106ce565b5f9081526008602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b039290921691909117905550565b60076020525f908152604090208054819061077b90611fd4565b80601f01602080910402602001604051908101604052809291908181526020018280546107a790611fd4565b80156107f25780601f106107c9576101008083540402835291602001916107f2565b820191905f5260205f20905b8154815290600101906020018083116107d557829003601f168201915b50505050509080600101805461080790611fd4565b80601f016020809104026020016040519081016040528092919081815260200182805461083390611fd4565b801561087e5780601f106108555761010080835404028352916020019161087e565b820191905f5260205f20905b81548152906001019060200180831161086157829003601f168201915b50505050509080600201805461089390611fd4565b80601f01602080910402602001604051908101604052809291908181526020018280546108bf90611fd4565b801561090a5780601f106108e15761010080835404028352916020019161090a565b820191905f5260205f20905b8154815290600101906020018083116108ed57829003601f168201915b50505050509080600301805461091f90611fd4565b80601f016020809104026020016040519081016040528092919081815260200182805461094b90611fd4565b80156109965780601f1061096d57610100808354040283529160200191610996565b820191905f5260205f20905b81548152906001019060200180831161097957829003601f168201915b5050505050908060040180546109ab90611fd4565b80601f01602080910402602001604051908101604052809291908181526020018280546109d790611fd4565b8015610a225780601f106109f957610100808354040283529160200191610a22565b820191905f5260205f20905b815481529060010190602001808311610a0557829003601f168201915b5050505050905085565b5f610a3683610a8f565b6001600160a01b0316826001600160a01b03161480610a8857505f8381526008602052604081208054909190610a6e57610a6e61200c565b5f918252602090912001546001600160a01b038381169116145b9392505050565b5f6104508261120e565b5f6001600160a01b038216610ac3576040516322718ad960e21b81525f60048201526024016105a1565b506001600160a01b03165f9081526003602052604090205490565b610ae6611345565b610aef5f611372565b565b5f610afc33886113c3565b610b0633886113dc565b610b14878787878787610b1f565b979650505050505050565b5f610b2a8733610a2c565b610b915760405162461bcd60e51b815260206004820152603260248201527f4d75737420626520746865206f776e6572206f6620746865206974656d206f72604482015271081d1a194818dc99585d1bdc881bd9881a5d60721b60648201526084016105a1565b6040805160a081018252878152602080820188905281830187905260608201869052608082018590525f8a815260079091529190912081518190610bd59082612064565b5060208201516001820190610bea9082612064565b5060408201516002820190610bff9082612064565b5060608201516003820190610c149082612064565b5060808201516004820190610c299082612064565b503391508890507f132290b0f8d58f9abffd99c75c46d96d52da97d6c61e23f54ab53dd2f27dc1e3610c5a82610a8f565b6001600160a01b0316336001600160a01b031614610c79576001610c7b565b5f5b8989898989604051610c9296959493929190612124565b60405180910390a3509495945050505050565b60606001805461046490611fd4565b610ce66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b5f828152600260205260408120546001600160a01b03166001600160a01b0316141582604051602001610d1991906121b3565b60405160208183030381529060405290610d465760405162461bcd60e51b81526004016105a19190611af5565b505f8281526007602052604090819020815160a08101909252805482908290610d6e90611fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9a90611fd4565b8015610de55780601f10610dbc57610100808354040283529160200191610de5565b820191905f5260205f20905b815481529060010190602001808311610dc857829003601f168201915b50505050508152602001600182018054610dfe90611fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2a90611fd4565b8015610e755780601f10610e4c57610100808354040283529160200191610e75565b820191905f5260205f20905b815481529060010190602001808311610e5857829003601f168201915b50505050508152602001600282018054610e8e90611fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610eba90611fd4565b8015610f055780601f10610edc57610100808354040283529160200191610f05565b820191905f5260205f20905b815481529060010190602001808311610ee857829003601f168201915b50505050508152602001600382018054610f1e90611fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4a90611fd4565b8015610f955780601f10610f6c57610100808354040283529160200191610f95565b820191905f5260205f20905b815481529060010190602001808311610f7857829003601f168201915b50505050508152602001600482018054610fae90611fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610fda90611fd4565b80156110255780601f10610ffc57610100808354040283529160200191611025565b820191905f5260205f20905b81548152906001019060200180831161100857829003601f168201915b5050505050815250509050919050565b61103d611345565b61051782826113c3565b61051733838361150a565b61105d848484610611565b610694848484846115a8565b60606110748261120e565b505f61108a60408051602081019091525f815290565b90505f8151116110a85760405180602001604052805f815250610a88565b806110b2846116ce565b6040516020016110c39291906121fe565b6040516020818303038152906040529392505050565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f81815260026020526040812054606091906001600160a01b03166001600160a01b031614158260405160200161113d91906121b3565b6040516020818303038152906040529061116a5760405162461bcd60e51b81526004016105a19190611af5565b505f828152600860209081526040918290208054835181840281018401909452808452909183018282801561060557602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116111a85750505050509050919050565b6111d9611345565b6001600160a01b03811661120257604051631e4fbdf760e01b81525f60048201526024016105a1565b61120b81611372565b50565b5f818152600260205260408120546001600160a01b03168061045057604051637e27328960e01b8152600481018490526024016105a1565b6106e8838383600161175e565b5f828152600260205260408120546001600160a01b039081169083161561127f5761127f818486611862565b6001600160a01b038116156112b95761129a5f855f8061175e565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b038516156112e7576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b03163314610aef5760405163118cdaa760e01b81523360048201526024016105a1565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610517828260405180602001604052805f8152506118c6565b5f81815260086020526040902054156114495760405162461bcd60e51b815260206004820152602960248201527f546865726520697320616c726561647920612063726561746f7220666f7220746044820152683434b99034ba32b69760b91b60648201526084016105a1565b6001600160a01b0382166114b35760405162461bcd60e51b815260206004820152602b60248201527f596f7520617265206e6f7420616c6c6f77656420746f20686176652061207a6560448201526a39379030b2323932b9b99760a91b60648201526084016105a1565b5f8181526008602090815260408083208054600181810183559185528385200180546001600160a01b039097166001600160a01b031990971687179055948352600982528220805494850181558252902090910155565b6001600160a01b03821661153c57604051630b61174360e31b81526001600160a01b03831660048201526024016105a1565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561069457604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906115ea90339088908790879060040161222c565b6020604051808303815f875af1925050508015611624575060408051601f3d908101601f1916820190925261162191810190612268565b60015b61168b573d808015611651576040519150601f19603f3d011682016040523d82523d5f602084013e611656565b606091505b5080515f0361168357604051633250574960e11b81526001600160a01b03851660048201526024016105a1565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146116c757604051633250574960e11b81526001600160a01b03851660048201526024016105a1565b5050505050565b60605f6116da836118dc565b60010190505f8167ffffffffffffffff8111156116f9576116f9611cac565b6040519080825280601f01601f191660200182016040528015611723576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461172d57509392505050565b808061177257506001600160a01b03821615155b15611833575f6117818461120e565b90506001600160a01b038316158015906117ad5750826001600160a01b0316816001600160a01b031614155b80156117c057506117be81846110d9565b155b156117e95760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016105a1565b81156118315783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61186d8383836119b3565b6106e8576001600160a01b03831661189b57604051637e27328960e01b8152600481018290526024016105a1565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016105a1565b6118d08383611a17565b6106e85f8484846115a8565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061191a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611946576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061196457662386f26fc10000830492506010015b6305f5e100831061197c576305f5e100830492506008015b612710831061199057612710830492506004015b606483106119a2576064830492506002015b600a83106104505760010192915050565b5f6001600160a01b03831615801590611a0f5750826001600160a01b0316846001600160a01b031614806119ec57506119ec84846110d9565b80611a0f57505f828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216611a4057604051633250574960e11b81525f60048201526024016105a1565b5f611a4c83835f611253565b90506001600160a01b038116156106e8576040516339e3563760e11b81525f60048201526024016105a1565b6001600160e01b03198116811461120b575f80fd5b5f60208284031215611a9d575f80fd5b8135610a8881611a78565b5f5b83811015611ac2578181015183820152602001611aaa565b50505f910152565b5f8151808452611ae1816020860160208601611aa8565b601f01601f19169290920160200192915050565b602081525f610a886020830184611aca565b5f60208284031215611b17575f80fd5b5035919050565b80356001600160a01b0381168114611b34575f80fd5b919050565b5f8060408385031215611b4a575f80fd5b611b5383611b1e565b946020939093013593505050565b5f60208284031215611b71575f80fd5b610a8882611b1e565b602080825282518282018190525f9190848201906040850190845b81811015611bb157835183529284019291840191600101611b95565b50909695505050505050565b5f805f60608486031215611bcf575f80fd5b611bd884611b1e565b9250611be660208501611b1e565b9150604084013590509250925092565b5f8060408385031215611c07575f80fd5b50508035926020909101359150565b60a081525f611c2860a0830188611aca565b8281036020840152611c3a8188611aca565b90508281036040840152611c4e8187611aca565b90508281036060840152611c628186611aca565b90508281036080840152611c768185611aca565b98975050505050505050565b5f8060408385031215611c93575f80fd5b82359150611ca360208401611b1e565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611cda57611cda611cac565b604051601f8501601f19908116603f01168101908282118183101715611d0257611d02611cac565b81604052809350858152868686011115611d1a575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112611d42575f80fd5b610a8883833560208501611cc0565b5f805f805f8060c08789031215611d66575f80fd5b86359550602087013567ffffffffffffffff80821115611d84575f80fd5b611d908a838b01611d33565b96506040890135915080821115611da5575f80fd5b611db18a838b01611d33565b95506060890135915080821115611dc6575f80fd5b611dd28a838b01611d33565b94506080890135915080821115611de7575f80fd5b611df38a838b01611d33565b935060a0890135915080821115611e08575f80fd5b50611e1589828a01611d33565b9150509295509295509295565b602081525f825160a06020840152611e3d60c0840182611aca565b90506020840151601f1980858403016040860152611e5b8383611aca565b92506040860151915080858403016060860152611e788383611aca565b92506060860151915080858403016080860152611e958383611aca565b925060808601519150808584030160a086015250611eb38282611aca565b95945050505050565b5f8060408385031215611ecd575f80fd5b611ed683611b1e565b915060208301358015158114611eea575f80fd5b809150509250929050565b5f805f8060808587031215611f08575f80fd5b611f1185611b1e565b9350611f1f60208601611b1e565b925060408501359150606085013567ffffffffffffffff811115611f41575f80fd5b8501601f81018713611f51575f80fd5b611f6087823560208401611cc0565b91505092959194509250565b5f8060408385031215611f7d575f80fd5b611f8683611b1e565b9150611ca360208401611b1e565b602080825282518282018190525f9190848201906040850190845b81811015611bb15783516001600160a01b031683529284019291840191600101611faf565b600181811c90821680611fe857607f821691505b60208210810361200657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b601f8211156106e857805f5260205f20601f840160051c810160208510156120455750805b601f840160051c820191505b818110156116c7575f8155600101612051565b815167ffffffffffffffff81111561207e5761207e611cac565b6120928161208c8454611fd4565b84612020565b602080601f8311600181146120c5575f84156120ae5750858301515b5f19600386901b1c1916600185901b17855561211c565b5f85815260208120601f198616915b828110156120f3578886015182559484019460019091019084016120d4565b508582101561211057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6002881061214157634e487b7160e01b5f52602160045260245ffd5b87825260c0602083015261215860c0830188611aca565b828103604084015261216a8188611aca565b9050828103606084015261217e8187611aca565b905082810360808401526121928186611aca565b905082810360a08401526121a68185611aca565b9998505050505050505050565b7f54686520746f6b656e206973206e6f742076616c69642e205468657265206973815270206e6f207375636820746f6b656e20617360781b6020820152603181019190915260510190565b5f835161220f818460208801611aa8565b835190830190612223818360208801611aa8565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061225e90830184611aca565b9695505050505050565b5f60208284031215612278575f80fd5b8151610a8881611a7856fea264697066735822122063409611f19ebc54fce45f968778b4d34955a16eb44b103f0635b4a4432dd5f564736f6c63430008160033", "userdoc": {"methods": {"getCreatedItemTokens(address)": {"notice": "Function returns a list of user items. "}, "getPassport(uint256)": {"notice": "Function returns a Passport for an item (tokenId)."}, "getUserHistory(uint256)": {"notice": "Function returns a list of addresses that have owner this item. The first address is the item creator and the last is the current owner of the item. "}, "updateOwnership(address,address,uint256)": {"notice": "updateOwnership is a function that we use it change owners of our NFT (item). Also we use it to add the new owner of an NFT in a list of all owners for a specific NFT. "}}, "notice": null}, "devdoc": {"methods": {"approve(address,uint256)": {"author": null, "details": "See {IERC721-approve}.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "See {IERC721-balanceOf}.", "params": {}, "return": null}, "getApproved(uint256)": {"author": null, "details": "See {IERC721-getApproved}.", "params": {}, "return": null}, "getCreatedItemTokens(address)": {"author": null, "details": "fails if the userAdderss is a zero address.", "params": {"userAddress": "the user's Address for whome all the items will be retun. Like user's intentory."}, "return": null}, "getPassport(uint256)": {"author": null, "details": "fails if the tokenId does not exists.", "params": {"tokenId": "the item's Id that we want to retun the Passport."}, "return": null}, "getUserHistory(uint256)": {"author": null, "details": "Fails is tokenId does .", "params": {"tokenId": "id of a nft token"}, "return": null}, "isApprovedForAll(address,address)": {"author": null, "details": "See {IERC721-isApprovedForAll}.", "params": {}, "return": null}, "name()": {"author": null, "details": "See {IERC721Metadata-name}.", "params": {}, "return": null}, "owner()": {"author": null, "details": "Returns the address of the current owner.", "params": {}, "return": null}, "ownerOf(uint256)": {"author": null, "details": "See {IERC721-ownerOf}.", "params": {}, "return": null}, "renounceOwnership()": {"author": null, "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.", "params": {}, "return": null}, "safeTransferFrom(address,address,uint256)": {"author": null, "details": "See {IERC721-safeTransferFrom}.", "params": {}, "return": null}, "safeTransferFrom(address,address,uint256,bytes)": {"author": null, "details": "See {IERC721-safeTransferFrom}.", "params": {}, "return": null}, "setApprovalForAll(address,bool)": {"author": null, "details": "See {IERC721-setApprovalForAll}.", "params": {}, "return": null}, "supportsInterface(bytes4)": {"author": null, "details": "See {IERC165-supportsInterface}.", "params": {}, "return": null}, "symbol()": {"author": null, "details": "See {IERC721Metadata-symbol}.", "params": {}, "return": null}, "tokenURI(uint256)": {"author": null, "details": "See {IERC721Metadata-tokenURI}.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "See {IERC721-transferFrom}.", "params": {}, "return": null}, "transferOwnership(address)": {"author": null, "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.", "params": {}, "return": null}, "updateOwnership(address,address,uint256)": {"author": null, "details": null, "params": {"currentOwnerAddress": "ethereum address of current tokenId owner", "nextOwnerAddress": "ethereum address we want to transfer ownership to", "tokenId": "uint256 id of token we want to update ownership for"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}}} \ No newline at end of file diff --git a/contract/echidna/PropertyTest.sol b/contract/echidna/PropertyTest.sol new file mode 100644 index 0000000..1ba7bef --- /dev/null +++ b/contract/echidna/PropertyTest.sol @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import "../src/ItemBlocks.sol"; + +/** + * @title + * @author + * @notice + * + * @dev There are some specific addresses in Echidna: + 0x30000 calls the constructor. + 0x10000, 0x20000, and 0x30000 randomly call other functions. + */ +contract ItemBlocksPropertyTest is ItemBlocks { + uint256 testTokenId = 0; + + constructor() ItemBlocks(address(0x30000)) { + testTokenId = createPassport(7, "TestItemName", "TestItemDesc", "TestItemFamily", "TestItemUrl","TestItemImg"); + } + + // owner should never be zero address + function echidna_owner_not_zero() public view returns (bool) { + return ownerOf(testTokenId) != address(0); + } + + // item creator should always be the first entry in allItem Owners + function echidna_set_creator() public view returns (bool){ + return allItemOwners[7][0] == address(0x30000); + } + + // it should be possible to create more items + function echidna_create_more() public view returns (bool) { + return createdItems[address(0x30000)].length >= 1; + } + + // if there is a owner in the allItemsOwners array there should be a passport too + function echidna_need_to_create_history_and_passport() public view returns (bool) { + if (allItemOwners[7].length > 0) { + return bytes(itemPassports[7].name).length > 0; + } else { + return true; + } + } + + // current owner should be the last entry in allItemOwners + function echidna_owner_is_last_entry_allItemOwners() public view returns (bool) { + if (allItemOwners[1].length > 0) { + address[] memory test = allItemOwners[1]; + return test[test.length - 1] == ownerOf(1); + } else { + return true; + } + } + +} \ No newline at end of file diff --git a/contract/src/ItemBlocks.sol b/contract/src/ItemBlocks.sol index a220cbb..fce7510 100644 --- a/contract/src/ItemBlocks.sol +++ b/contract/src/ItemBlocks.sol @@ -33,13 +33,13 @@ contract ItemBlocks is ERC721, Ownable { _safeMint(to, tokenId); } - function createPassport(uint tokenId, string calldata name, string calldata desc, string calldata family, string calldata url, string calldata img) public returns(uint256) { + function createPassport(uint tokenId, string memory name, string memory desc, string memory family, string memory url, string memory img) public returns(uint256) { _safeMint(msg.sender, tokenId); setCreator(msg.sender, tokenId); return updatePassport(tokenId, name, desc, family, url, img); } - function updatePassport(uint tokenId, string calldata name, string calldata desc, string calldata family, string calldata url, string calldata img) public returns(uint256) { + function updatePassport(uint tokenId, string memory name, string memory desc, string memory family, string memory url, string memory img) public returns(uint256) { require( isEligible(tokenId, msg.sender), "Must be the owner of the item or the creator of it" ); itemPassports[tokenId] = Passport ({ diff --git a/images/echidna.png b/images/echidna.png new file mode 100644 index 0000000..f7ae092 Binary files /dev/null and b/images/echidna.png differ