{
  "fileName": "EnumerableMap.sol",
  "contractName": "EnumerableMap",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Library for managing an enumerable variant of Solidity's\n * https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n * type.\n *\n * Maps have the following properties:\n *\n * - Entries are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Entries are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n *     // Add the library methods\n *     using EnumerableMap for EnumerableMap.UintToAddressMap;\n *\n *     // Declare a set state variable\n *     EnumerableMap.UintToAddressMap private myMap;\n * }\n * ```\n *\n * As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n * supported.\n */\nlibrary EnumerableMap {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Map type with\n    // bytes32 keys and values.\n    // The Map implementation uses private functions, and user-facing\n    // implementations (such as Uint256ToAddressMap) are just wrappers around\n    // the underlying Map.\n    // This means that we can only create new EnumerableMaps for types that fit\n    // in bytes32.\n\n    struct MapEntry {\n        bytes32 _key;\n        bytes32 _value;\n    }\n\n    struct Map {\n        // Storage of map keys and values\n        MapEntry[] _entries;\n\n        // Position of the entry defined by a key in the `entries` array, plus 1\n        // because index 0 means a key is not in the map.\n        mapping (bytes32 => uint256) _indexes;\n    }\n\n    /**\n     * @dev Adds a key-value pair to a map, or updates the value for an existing\n     * key. O(1).\n     *\n     * Returns true if the key was added to the map, that is if it was not\n     * already present.\n     */\n    function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) {\n        // We read and store the key's index to prevent multiple reads from the same storage slot\n        uint256 keyIndex = map._indexes[key];\n\n        if (keyIndex == 0) { // Equivalent to !contains(map, key)\n            map._entries.push(MapEntry({ _key: key, _value: value }));\n            // The entry is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            map._indexes[key] = map._entries.length;\n            return true;\n        } else {\n            map._entries[keyIndex - 1]._value = value;\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a key-value pair from a map. O(1).\n     *\n     * Returns true if the key was removed from the map, that is if it was present.\n     */\n    function _remove(Map storage map, bytes32 key) private returns (bool) {\n        // We read and store the key's index to prevent multiple reads from the same storage slot\n        uint256 keyIndex = map._indexes[key];\n\n        if (keyIndex != 0) { // Equivalent to contains(map, key)\n            // To delete a key-value pair from the _entries array in O(1), we swap the entry to delete with the last one\n            // in the array, and then remove the last entry (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 toDeleteIndex = keyIndex - 1;\n            uint256 lastIndex = map._entries.length - 1;\n\n            // When the entry to delete is the last one, the swap operation is unnecessary. However, since this occurs\n            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n            MapEntry storage lastEntry = map._entries[lastIndex];\n\n            // Move the last entry to the index where the entry to delete is\n            map._entries[toDeleteIndex] = lastEntry;\n            // Update the index for the moved entry\n            map._indexes[lastEntry._key] = toDeleteIndex + 1; // All indexes are 1-based\n\n            // Delete the slot where the moved entry was stored\n            map._entries.pop();\n\n            // Delete the index for the deleted slot\n            delete map._indexes[key];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the key is in the map. O(1).\n     */\n    function _contains(Map storage map, bytes32 key) private view returns (bool) {\n        return map._indexes[key] != 0;\n    }\n\n    /**\n     * @dev Returns the number of key-value pairs in the map. O(1).\n     */\n    function _length(Map storage map) private view returns (uint256) {\n        return map._entries.length;\n    }\n\n   /**\n    * @dev Returns the key-value pair stored at position `index` in the map. O(1).\n    *\n    * Note that there are no guarantees on the ordering of entries inside the\n    * array, and it may change when more entries are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) {\n        require(map._entries.length > index, \"EnumerableMap: index out of bounds\");\n\n        MapEntry storage entry = map._entries[index];\n        return (entry._key, entry._value);\n    }\n\n    /**\n     * @dev Returns the value associated with `key`.  O(1).\n     *\n     * Requirements:\n     *\n     * - `key` must be in the map.\n     */\n    function _get(Map storage map, bytes32 key) private view returns (bytes32) {\n        return _get(map, key, \"EnumerableMap: nonexistent key\");\n    }\n\n    /**\n     * @dev Same as {_get}, with a custom error message when `key` is not in the map.\n     */\n    function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) {\n        uint256 keyIndex = map._indexes[key];\n        require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key)\n        return map._entries[keyIndex - 1]._value; // All indexes are 1-based\n    }\n\n    // UintToAddressMap\n\n    struct UintToAddressMap {\n        Map _inner;\n    }\n\n    /**\n     * @dev Adds a key-value pair to a map, or updates the value for an existing\n     * key. O(1).\n     *\n     * Returns true if the key was added to the map, that is if it was not\n     * already present.\n     */\n    function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) {\n        return _set(map._inner, bytes32(key), bytes32(uint256(value)));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the key was removed from the map, that is if it was present.\n     */\n    function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) {\n        return _remove(map._inner, bytes32(key));\n    }\n\n    /**\n     * @dev Returns true if the key is in the map. O(1).\n     */\n    function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) {\n        return _contains(map._inner, bytes32(key));\n    }\n\n    /**\n     * @dev Returns the number of elements in the map. O(1).\n     */\n    function length(UintToAddressMap storage map) internal view returns (uint256) {\n        return _length(map._inner);\n    }\n\n   /**\n    * @dev Returns the element stored at position `index` in the set. O(1).\n    * Note that there are no guarantees on the ordering of values inside the\n    * array, and it may change when more values are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) {\n        (bytes32 key, bytes32 value) = _at(map._inner, index);\n        return (uint256(key), address(uint256(value)));\n    }\n\n    /**\n     * @dev Returns the value associated with `key`.  O(1).\n     *\n     * Requirements:\n     *\n     * - `key` must be in the map.\n     */\n    function get(UintToAddressMap storage map, uint256 key) internal view returns (address) {\n        return address(uint256(_get(map._inner, bytes32(key))));\n    }\n\n    /**\n     * @dev Same as {get}, with a custom error message when `key` is not in the map.\n     */\n    function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) {\n        return address(uint256(_get(map._inner, bytes32(key), errorMessage)));\n    }\n}\n",
  "sourcePath": "contracts/utils/EnumerableMap.sol",
  "sourceMap": "764:7555:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "764:7555:108:-:0;;;;;;;;",
  "abi": [],
  "ast": {
    "absolutePath": "contracts/utils/EnumerableMap.sol",
    "exportedSymbols": {
      "EnumerableMap": [
        13509
      ]
    },
    "id": 13510,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13056,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:23:108"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 13057,
          "nodeType": "StructuredDocumentation",
          "src": "58:705:108",
          "text": " @dev Library for managing an enumerable variant of Solidity's\n https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n type.\n Maps have the following properties:\n - Entries are added, removed, and checked for existence in constant time\n (O(1)).\n - Entries are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableMap for EnumerableMap.UintToAddressMap;\n     // Declare a set state variable\n     EnumerableMap.UintToAddressMap private myMap;\n }\n ```\n As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n supported."
        },
        "fullyImplemented": true,
        "id": 13509,
        "linearizedBaseContracts": [
          13509
        ],
        "name": "EnumerableMap",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "EnumerableMap.MapEntry",
            "id": 13062,
            "members": [
              {
                "constant": false,
                "id": 13059,
                "mutability": "mutable",
                "name": "_key",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 13062,
                "src": "1276:12:108",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 13058,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1276:7:108",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 13061,
                "mutability": "mutable",
                "name": "_value",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 13062,
                "src": "1298:14:108",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 13060,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1298:7:108",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "MapEntry",
            "nodeType": "StructDefinition",
            "scope": 13509,
            "src": "1250:69:108",
            "visibility": "public"
          },
          {
            "canonicalName": "EnumerableMap.Map",
            "id": 13070,
            "members": [
              {
                "constant": false,
                "id": 13065,
                "mutability": "mutable",
                "name": "_entries",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 13070,
                "src": "1388:19:108",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage_ptr",
                  "typeString": "struct EnumerableMap.MapEntry[]"
                },
                "typeName": {
                  "baseType": {
                    "contractScope": null,
                    "id": 13063,
                    "name": "MapEntry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13062,
                    "src": "1388:8:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MapEntry_$13062_storage_ptr",
                      "typeString": "struct EnumerableMap.MapEntry"
                    }
                  },
                  "id": 13064,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1388:10:108",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage_ptr",
                    "typeString": "struct EnumerableMap.MapEntry[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 13069,
                "mutability": "mutable",
                "name": "_indexes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 13070,
                "src": "1557:37:108",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 13068,
                  "keyType": {
                    "id": 13066,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1566:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1557:28:108",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 13067,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1577:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Map",
            "nodeType": "StructDefinition",
            "scope": 13509,
            "src": "1325:276:108",
            "visibility": "public"
          },
          {
            "body": {
              "id": 13131,
              "nodeType": "Block",
              "src": "1910:596:108",
              "statements": [
                {
                  "assignments": [
                    13083
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13083,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13131,
                      "src": "2018:16:108",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13082,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2018:7:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13088,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13084,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13073,
                        "src": "2037:3:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 13085,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13069,
                      "src": "2037:12:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 13087,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13086,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13075,
                      "src": "2050:3:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2037:17:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2018:36:108"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13089,
                      "name": "keyIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13083,
                      "src": "2069:8:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2081:1:108",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2069:13:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 13129,
                    "nodeType": "Block",
                    "src": "2408:92:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13116,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13073,
                                  "src": "2422:3:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                                    "typeString": "struct EnumerableMap.Map storage pointer"
                                  }
                                },
                                "id": 13121,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_entries",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13065,
                                "src": "2422:12:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage",
                                  "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                }
                              },
                              "id": 13122,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 13118,
                                  "name": "keyIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13083,
                                  "src": "2435:8:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 13119,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2446:1:108",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "2435:12:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2422:26:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$13062_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref"
                              }
                            },
                            "id": 13123,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "_value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13061,
                            "src": "2422:33:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 13124,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13077,
                            "src": "2458:5:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2422:41:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 13126,
                        "nodeType": "ExpressionStatement",
                        "src": "2422:41:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 13127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2484:5:108",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 13081,
                        "id": 13128,
                        "nodeType": "Return",
                        "src": "2477:12:108"
                      }
                    ]
                  },
                  "id": 13130,
                  "nodeType": "IfStatement",
                  "src": "2065:435:108",
                  "trueBody": {
                    "id": 13115,
                    "nodeType": "Block",
                    "src": "2084:318:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 13098,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13075,
                                  "src": "2170:3:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 13099,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13077,
                                  "src": "2183:5:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 13097,
                                "name": "MapEntry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13062,
                                "src": "2153:8:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_MapEntry_$13062_storage_ptr_$",
                                  "typeString": "type(struct EnumerableMap.MapEntry storage pointer)"
                                }
                              },
                              "id": 13100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "_key",
                                "_value"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "2153:38:108",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$13062_memory_ptr",
                                "typeString": "struct EnumerableMap.MapEntry memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_MapEntry_$13062_memory_ptr",
                                "typeString": "struct EnumerableMap.MapEntry memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13092,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13073,
                                "src": "2135:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 13095,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13065,
                              "src": "2135:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 13096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2135:17:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_MapEntry_$13062_storage_$returns$__$",
                              "typeString": "function (struct EnumerableMap.MapEntry storage ref)"
                            }
                          },
                          "id": 13101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2135:57:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13102,
                        "nodeType": "ExpressionStatement",
                        "src": "2135:57:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13103,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13073,
                                "src": "2327:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 13106,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13069,
                              "src": "2327:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 13107,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13105,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13075,
                              "src": "2340:3:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2327:17:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13108,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13073,
                                "src": "2347:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 13109,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13065,
                              "src": "2347:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 13110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2347:19:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2327:39:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13112,
                        "nodeType": "ExpressionStatement",
                        "src": "2327:39:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 13113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2387:4:108",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 13081,
                        "id": 13114,
                        "nodeType": "Return",
                        "src": "2380:11:108"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 13071,
              "nodeType": "StructuredDocumentation",
              "src": "1607:216:108",
              "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present."
            },
            "id": 13132,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13078,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13073,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13132,
                  "src": "1842:15:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13072,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13070,
                    "src": "1842:3:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13075,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13132,
                  "src": "1859:11:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13074,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1859:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13077,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13132,
                  "src": "1872:13:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13076,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1872:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1841:45:108"
            },
            "returnParameters": {
              "id": 13081,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13080,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13132,
                  "src": "1904:4:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13079,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1904:4:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1903:6:108"
            },
            "scope": 13509,
            "src": "1828:678:108",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 13212,
              "nodeType": "Block",
              "src": "2744:1447:108",
              "statements": [
                {
                  "assignments": [
                    13143
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13143,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13212,
                      "src": "2852:16:108",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13142,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2852:7:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13148,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13144,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13135,
                        "src": "2871:3:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 13145,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13069,
                      "src": "2871:12:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 13147,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13146,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13137,
                      "src": "2884:3:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2871:17:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2852:36:108"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13149,
                      "name": "keyIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13143,
                      "src": "2903:8:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13150,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2915:1:108",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2903:13:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 13210,
                    "nodeType": "Block",
                    "src": "4148:37:108",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 13208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4169:5:108",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 13141,
                        "id": 13209,
                        "nodeType": "Return",
                        "src": "4162:12:108"
                      }
                    ]
                  },
                  "id": 13211,
                  "nodeType": "IfStatement",
                  "src": "2899:1286:108",
                  "trueBody": {
                    "id": 13207,
                    "nodeType": "Block",
                    "src": "2918:1224:108",
                    "statements": [
                      {
                        "assignments": [
                          13153
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13153,
                            "mutability": "mutable",
                            "name": "toDeleteIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13207,
                            "src": "3259:21:108",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13152,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3259:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13157,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13154,
                            "name": "keyIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13143,
                            "src": "3283:8:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 13155,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3294:1:108",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3283:12:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3259:36:108"
                      },
                      {
                        "assignments": [
                          13159
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13159,
                            "mutability": "mutable",
                            "name": "lastIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13207,
                            "src": "3309:17:108",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13158,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3309:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13165,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13160,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13135,
                                "src": "3329:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 13161,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13065,
                              "src": "3329:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 13162,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3329:19:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 13163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3351:1:108",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3329:23:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3309:43:108"
                      },
                      {
                        "assignments": [
                          13167
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13167,
                            "mutability": "mutable",
                            "name": "lastEntry",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13207,
                            "src": "3592:26:108",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$13062_storage_ptr",
                              "typeString": "struct EnumerableMap.MapEntry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 13166,
                              "name": "MapEntry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 13062,
                              "src": "3592:8:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$13062_storage_ptr",
                                "typeString": "struct EnumerableMap.MapEntry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13172,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13168,
                              "name": "map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13135,
                              "src": "3621:3:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                                "typeString": "struct EnumerableMap.Map storage pointer"
                              }
                            },
                            "id": 13169,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_entries",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13065,
                            "src": "3621:12:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            }
                          },
                          "id": 13171,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 13170,
                            "name": "lastIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13159,
                            "src": "3634:9:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3621:23:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$13062_storage",
                            "typeString": "struct EnumerableMap.MapEntry storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3592:52:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13173,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13135,
                                "src": "3736:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 13176,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13065,
                              "src": "3736:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 13177,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13175,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13153,
                              "src": "3749:13:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3736:27:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$13062_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 13178,
                            "name": "lastEntry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13167,
                            "src": "3766:9:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$13062_storage_ptr",
                              "typeString": "struct EnumerableMap.MapEntry storage pointer"
                            }
                          },
                          "src": "3736:39:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$13062_storage",
                            "typeString": "struct EnumerableMap.MapEntry storage ref"
                          }
                        },
                        "id": 13180,
                        "nodeType": "ExpressionStatement",
                        "src": "3736:39:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13181,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13135,
                                "src": "3841:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 13185,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13069,
                              "src": "3841:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 13186,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13183,
                                "name": "lastEntry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13167,
                                "src": "3854:9:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MapEntry_$13062_storage_ptr",
                                  "typeString": "struct EnumerableMap.MapEntry storage pointer"
                                }
                              },
                              "id": 13184,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_key",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13059,
                              "src": "3854:14:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3841:28:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13189,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 13187,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13153,
                              "src": "3872:13:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 13188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3888:1:108",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "3872:17:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3841:48:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13191,
                        "nodeType": "ExpressionStatement",
                        "src": "3841:48:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13192,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13135,
                                "src": "3995:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 13195,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13065,
                              "src": "3995:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 13196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pop",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3995:16:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 13197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3995:18:108",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13198,
                        "nodeType": "ExpressionStatement",
                        "src": "3995:18:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "4081:24:108",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13199,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13135,
                                "src": "4088:3:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 13200,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13069,
                              "src": "4088:12:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 13202,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13201,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13137,
                              "src": "4101:3:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4088:17:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13204,
                        "nodeType": "ExpressionStatement",
                        "src": "4081:24:108"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 13205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4127:4:108",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 13141,
                        "id": 13206,
                        "nodeType": "Return",
                        "src": "4120:11:108"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 13133,
              "nodeType": "StructuredDocumentation",
              "src": "2512:157:108",
              "text": " @dev Removes a key-value pair from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present."
            },
            "id": 13213,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13135,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13213,
                  "src": "2691:15:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13134,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13070,
                    "src": "2691:3:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13137,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13213,
                  "src": "2708:11:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13136,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2708:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2690:30:108"
            },
            "returnParameters": {
              "id": 13141,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13140,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13213,
                  "src": "2738:4:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13139,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2738:4:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2737:6:108"
            },
            "scope": 13509,
            "src": "2674:1517:108",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 13230,
              "nodeType": "Block",
              "src": "4347:46:108",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13223,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13216,
                          "src": "4364:3:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                            "typeString": "struct EnumerableMap.Map storage pointer"
                          }
                        },
                        "id": 13224,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13069,
                        "src": "4364:12:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 13226,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13225,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13218,
                        "src": "4377:3:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4364:17:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13227,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4385:1:108",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4364:22:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 13222,
                  "id": 13229,
                  "nodeType": "Return",
                  "src": "4357:29:108"
                }
              ]
            },
            "documentation": {
              "id": 13214,
              "nodeType": "StructuredDocumentation",
              "src": "4197:68:108",
              "text": " @dev Returns true if the key is in the map. O(1)."
            },
            "id": 13231,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13216,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13231,
                  "src": "4289:15:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13215,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13070,
                    "src": "4289:3:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13218,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13231,
                  "src": "4306:11:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13217,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4306:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4288:30:108"
            },
            "returnParameters": {
              "id": 13222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13221,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13231,
                  "src": "4341:4:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13220,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4341:4:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4340:6:108"
            },
            "scope": 13509,
            "src": "4270:123:108",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 13243,
              "nodeType": "Block",
              "src": "4548:43:108",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13239,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13234,
                        "src": "4565:3:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 13240,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13065,
                      "src": "4565:12:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                      }
                    },
                    "id": 13241,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4565:19:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13238,
                  "id": 13242,
                  "nodeType": "Return",
                  "src": "4558:26:108"
                }
              ]
            },
            "documentation": {
              "id": 13232,
              "nodeType": "StructuredDocumentation",
              "src": "4399:79:108",
              "text": " @dev Returns the number of key-value pairs in the map. O(1)."
            },
            "id": 13244,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13235,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13234,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13244,
                  "src": "4500:15:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13233,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13070,
                    "src": "4500:3:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4499:17:108"
            },
            "returnParameters": {
              "id": 13238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13237,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13244,
                  "src": "4539:7:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13236,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4539:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4538:9:108"
            },
            "scope": 13509,
            "src": "4483:108:108",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 13278,
              "nodeType": "Block",
              "src": "5019:189:108",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13257,
                              "name": "map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13247,
                              "src": "5037:3:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                                "typeString": "struct EnumerableMap.Map storage pointer"
                              }
                            },
                            "id": 13258,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_entries",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13065,
                            "src": "5037:12:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            }
                          },
                          "id": 13259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5037:19:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 13260,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13249,
                          "src": "5059:5:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5037:27:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473",
                        "id": 13262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5066:36:108",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155",
                          "typeString": "literal_string \"EnumerableMap: index out of bounds\""
                        },
                        "value": "EnumerableMap: index out of bounds"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155",
                          "typeString": "literal_string \"EnumerableMap: index out of bounds\""
                        }
                      ],
                      "id": 13256,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5029:7:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5029:74:108",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13264,
                  "nodeType": "ExpressionStatement",
                  "src": "5029:74:108"
                },
                {
                  "assignments": [
                    13266
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13266,
                      "mutability": "mutable",
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13278,
                      "src": "5114:22:108",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MapEntry_$13062_storage_ptr",
                        "typeString": "struct EnumerableMap.MapEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13265,
                        "name": "MapEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13062,
                        "src": "5114:8:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MapEntry_$13062_storage_ptr",
                          "typeString": "struct EnumerableMap.MapEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13271,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13267,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13247,
                        "src": "5139:3:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 13268,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13065,
                      "src": "5139:12:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                      }
                    },
                    "id": 13270,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13269,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13249,
                      "src": "5152:5:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5139:19:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MapEntry_$13062_storage",
                      "typeString": "struct EnumerableMap.MapEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5114:44:108"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13272,
                          "name": "entry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13266,
                          "src": "5176:5:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$13062_storage_ptr",
                            "typeString": "struct EnumerableMap.MapEntry storage pointer"
                          }
                        },
                        "id": 13273,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_key",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13059,
                        "src": "5176:10:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13274,
                          "name": "entry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13266,
                          "src": "5188:5:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$13062_storage_ptr",
                            "typeString": "struct EnumerableMap.MapEntry storage pointer"
                          }
                        },
                        "id": 13275,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13061,
                        "src": "5188:12:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 13276,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5175:26:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 13255,
                  "id": 13277,
                  "nodeType": "Return",
                  "src": "5168:33:108"
                }
              ]
            },
            "documentation": {
              "id": 13245,
              "nodeType": "StructuredDocumentation",
              "src": "4596:333:108",
              "text": " @dev Returns the key-value pair stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of entries inside the\n array, and it may change when more entries are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 13279,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13250,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13247,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13279,
                  "src": "4947:15:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13246,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13070,
                    "src": "4947:3:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13249,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13279,
                  "src": "4964:13:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13248,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4964:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4946:32:108"
            },
            "returnParameters": {
              "id": 13255,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13252,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13279,
                  "src": "5001:7:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13251,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5001:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13254,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13279,
                  "src": "5010:7:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13253,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5010:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5000:18:108"
            },
            "scope": 13509,
            "src": "4934:274:108",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 13295,
              "nodeType": "Block",
              "src": "5435:72:108",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13290,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13282,
                        "src": "5457:3:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13291,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "5462:3:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579",
                        "id": 13292,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5467:32:108",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072",
                          "typeString": "literal_string \"EnumerableMap: nonexistent key\""
                        },
                        "value": "EnumerableMap: nonexistent key"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072",
                          "typeString": "literal_string \"EnumerableMap: nonexistent key\""
                        }
                      ],
                      "id": 13289,
                      "name": "_get",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        13296,
                        13331
                      ],
                      "referencedDeclaration": 13331,
                      "src": "5452:4:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13070_storage_ptr_$_t_bytes32_$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,string memory) view returns (bytes32)"
                      }
                    },
                    "id": 13293,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5452:48:108",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 13288,
                  "id": 13294,
                  "nodeType": "Return",
                  "src": "5445:55:108"
                }
              ]
            },
            "documentation": {
              "id": 13280,
              "nodeType": "StructuredDocumentation",
              "src": "5214:141:108",
              "text": " @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."
            },
            "id": 13296,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13282,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13296,
                  "src": "5374:15:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13281,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13070,
                    "src": "5374:3:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13284,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13296,
                  "src": "5391:11:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13283,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5391:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5373:30:108"
            },
            "returnParameters": {
              "id": 13288,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13287,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13296,
                  "src": "5426:7:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13286,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5426:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5425:9:108"
            },
            "scope": 13509,
            "src": "5360:147:108",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 13330,
              "nodeType": "Block",
              "src": "5718:212:108",
              "statements": [
                {
                  "assignments": [
                    13309
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13309,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13330,
                      "src": "5728:16:108",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13308,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5728:7:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13314,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13310,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13299,
                        "src": "5747:3:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 13311,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13069,
                      "src": "5747:12:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 13313,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13312,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13301,
                      "src": "5760:3:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5747:17:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5728:36:108"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 13316,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13309,
                          "src": "5782:8:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5794:1:108",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5782:13:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13319,
                        "name": "errorMessage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13303,
                        "src": "5797:12:108",
                        "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": 13315,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5774:7:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5774:36:108",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13321,
                  "nodeType": "ExpressionStatement",
                  "src": "5774:36:108"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13322,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13299,
                          "src": "5863:3:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                            "typeString": "struct EnumerableMap.Map storage pointer"
                          }
                        },
                        "id": 13323,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_entries",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13065,
                        "src": "5863:12:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MapEntry_$13062_storage_$dyn_storage",
                          "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                        }
                      },
                      "id": 13327,
                      "indexExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 13324,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13309,
                          "src": "5876:8:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 13325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5887:1:108",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "5876:12:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5863:26:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MapEntry_$13062_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref"
                      }
                    },
                    "id": 13328,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "_value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 13061,
                    "src": "5863:33:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 13307,
                  "id": 13329,
                  "nodeType": "Return",
                  "src": "5856:40:108"
                }
              ]
            },
            "documentation": {
              "id": 13297,
              "nodeType": "StructuredDocumentation",
              "src": "5513:97:108",
              "text": " @dev Same as {_get}, with a custom error message when `key` is not in the map."
            },
            "id": 13331,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13304,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13299,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13331,
                  "src": "5629:15:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13298,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13070,
                    "src": "5629:3:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13301,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13331,
                  "src": "5646:11:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13300,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5646:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13303,
                  "mutability": "mutable",
                  "name": "errorMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13331,
                  "src": "5659:26:108",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 13302,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5659:6:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5628:58:108"
            },
            "returnParameters": {
              "id": 13307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13306,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13331,
                  "src": "5709:7:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13305,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5709:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5708:9:108"
            },
            "scope": 13509,
            "src": "5615:315:108",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "canonicalName": "EnumerableMap.UintToAddressMap",
            "id": 13334,
            "members": [
              {
                "constant": false,
                "id": 13333,
                "mutability": "mutable",
                "name": "_inner",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 13334,
                "src": "5995:10:108",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                  "typeString": "struct EnumerableMap.Map"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 13332,
                  "name": "Map",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 13070,
                  "src": "5995:3:108",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$13070_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "UintToAddressMap",
            "nodeType": "StructDefinition",
            "scope": 13509,
            "src": "5961:51:108",
            "visibility": "public"
          },
          {
            "body": {
              "id": 13362,
              "nodeType": "Block",
              "src": "6334:79:108",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13347,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13337,
                          "src": "6356:3:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 13348,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13333,
                        "src": "6356:10:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$13070_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13351,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13339,
                            "src": "6376:3:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6368:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 13349,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6368:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 13352,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6368:12:108",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13357,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13341,
                                "src": "6398:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 13356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6390:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 13355,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6390:7:108",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 13358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6390:14:108",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6382:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 13353,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6382:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 13359,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6382:23:108",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$13070_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 13346,
                      "name": "_set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13132,
                      "src": "6351:4:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$13070_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)"
                      }
                    },
                    "id": 13360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6351:55:108",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 13345,
                  "id": 13361,
                  "nodeType": "Return",
                  "src": "6344:62:108"
                }
              ]
            },
            "documentation": {
              "id": 13335,
              "nodeType": "StructuredDocumentation",
              "src": "6018:216:108",
              "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present."
            },
            "id": 13363,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13337,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13363,
                  "src": "6252:28:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13336,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13334,
                    "src": "6252:16:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13339,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13363,
                  "src": "6282:11:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13338,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6282:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13341,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13363,
                  "src": "6295:13:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13340,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6295:7:108",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6251:58:108"
            },
            "returnParameters": {
              "id": 13345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13344,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13363,
                  "src": "6328:4:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13343,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6328:4:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6327:6:108"
            },
            "scope": 13509,
            "src": "6239:174:108",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13382,
              "nodeType": "Block",
              "src": "6655:57:108",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13374,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13366,
                          "src": "6680:3:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 13375,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13333,
                        "src": "6680:10:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$13070_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13378,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13368,
                            "src": "6700:3:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6692:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 13376,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6692:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 13379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6692:12:108",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$13070_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 13373,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13213,
                      "src": "6672:7:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$13070_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 13380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6672:33:108",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 13372,
                  "id": 13381,
                  "nodeType": "Return",
                  "src": "6665:40:108"
                }
              ]
            },
            "documentation": {
              "id": 13364,
              "nodeType": "StructuredDocumentation",
              "src": "6419:148:108",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the key was removed from the map, that is if it was present."
            },
            "id": 13383,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13369,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13366,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13383,
                  "src": "6588:28:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13365,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13334,
                    "src": "6588:16:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13368,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13383,
                  "src": "6618:11:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13367,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6618:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6587:43:108"
            },
            "returnParameters": {
              "id": 13372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13371,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13383,
                  "src": "6649:4:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13370,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6649:4:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6648:6:108"
            },
            "scope": 13509,
            "src": "6572:140:108",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13402,
              "nodeType": "Block",
              "src": "6881:59:108",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13394,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13386,
                          "src": "6908:3:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 13395,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13333,
                        "src": "6908:10:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$13070_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13398,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13388,
                            "src": "6928:3:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6920:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 13396,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6920:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 13399,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6920:12:108",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$13070_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 13393,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13231,
                      "src": "6898:9:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13070_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 13400,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6898:35:108",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 13392,
                  "id": 13401,
                  "nodeType": "Return",
                  "src": "6891:42:108"
                }
              ]
            },
            "documentation": {
              "id": 13384,
              "nodeType": "StructuredDocumentation",
              "src": "6718:68:108",
              "text": " @dev Returns true if the key is in the map. O(1)."
            },
            "id": 13403,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13389,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13386,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13403,
                  "src": "6809:28:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13385,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13334,
                    "src": "6809:16:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13388,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13403,
                  "src": "6839:11:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13387,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6839:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6808:43:108"
            },
            "returnParameters": {
              "id": 13392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13391,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13403,
                  "src": "6875:4:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13390,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6875:4:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6874:6:108"
            },
            "scope": 13509,
            "src": "6791:149:108",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13416,
              "nodeType": "Block",
              "src": "7101:43:108",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13412,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13406,
                          "src": "7126:3:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 13413,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13333,
                        "src": "7126:10:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$13070_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$13070_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      ],
                      "id": 13411,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13244,
                      "src": "7118:7:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13070_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 13414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7118:19:108",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13410,
                  "id": 13415,
                  "nodeType": "Return",
                  "src": "7111:26:108"
                }
              ]
            },
            "documentation": {
              "id": 13404,
              "nodeType": "StructuredDocumentation",
              "src": "6946:72:108",
              "text": " @dev Returns the number of elements in the map. O(1)."
            },
            "id": 13417,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13407,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13406,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13417,
                  "src": "7039:28:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13405,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13334,
                    "src": "7039:16:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7038:30:108"
            },
            "returnParameters": {
              "id": 13410,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13409,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13417,
                  "src": "7092:7:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13408,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7092:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7091:9:108"
            },
            "scope": 13509,
            "src": "7023:121:108",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13452,
              "nodeType": "Block",
              "src": "7570:126:108",
              "statements": [
                {
                  "assignments": [
                    13430,
                    13432
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13430,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13452,
                      "src": "7581:11:108",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 13429,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7581:7:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 13432,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13452,
                      "src": "7594:13:108",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 13431,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7594:7:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13438,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13434,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13420,
                          "src": "7615:3:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 13435,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13333,
                        "src": "7615:10:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$13070_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13436,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13422,
                        "src": "7627:5:108",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$13070_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 13433,
                      "name": "_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13279,
                      "src": "7611:3:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13070_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)"
                      }
                    },
                    "id": 13437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7611:22:108",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7580:53:108"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13441,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13430,
                            "src": "7659:3:108",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7651:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 13439,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7651:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 13442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7651:12:108",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13447,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13432,
                                "src": "7681:5:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 13446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7673:7:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 13445,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7673:7:108",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 13448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7673:14:108",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 13444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7665:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 13443,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7665:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 13449,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7665:23:108",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "id": 13450,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7650:39:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_address_payable_$",
                      "typeString": "tuple(uint256,address payable)"
                    }
                  },
                  "functionReturnParameters": 13428,
                  "id": 13451,
                  "nodeType": "Return",
                  "src": "7643:46:108"
                }
              ]
            },
            "documentation": {
              "id": 13418,
              "nodeType": "StructuredDocumentation",
              "src": "7149:318:108",
              "text": " @dev Returns the element stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 13453,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13423,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13420,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13453,
                  "src": "7484:28:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13419,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13334,
                    "src": "7484:16:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13422,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13453,
                  "src": "7514:13:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13421,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7514:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7483:45:108"
            },
            "returnParameters": {
              "id": 13428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13425,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13453,
                  "src": "7552:7:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13424,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7552:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13427,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13453,
                  "src": "7561:7:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13426,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7561:7:108",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7551:18:108"
            },
            "scope": 13509,
            "src": "7472:224:108",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13478,
              "nodeType": "Block",
              "src": "7936:72:108",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13468,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13456,
                                  "src": "7974:3:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                                    "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                                  }
                                },
                                "id": 13469,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_inner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13333,
                                "src": "7974:10:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 13472,
                                    "name": "key",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13458,
                                    "src": "7994:3:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7986:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 13470,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7986:7:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 13473,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7986:12:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 13467,
                              "name": "_get",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                13296,
                                13331
                              ],
                              "referencedDeclaration": 13296,
                              "src": "7969:4:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13070_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$",
                                "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)"
                              }
                            },
                            "id": 13474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7969:30:108",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7961:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 13465,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7961:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 13475,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7961:39:108",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 13464,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7953:7:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 13463,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7953:7:108",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 13476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7953:48:108",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 13462,
                  "id": 13477,
                  "nodeType": "Return",
                  "src": "7946:55:108"
                }
              ]
            },
            "documentation": {
              "id": 13454,
              "nodeType": "StructuredDocumentation",
              "src": "7702:141:108",
              "text": " @dev Returns the value associated with `key`.  O(1).\n Requirements:\n - `key` must be in the map."
            },
            "id": 13479,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13459,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13456,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13479,
                  "src": "7861:28:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13455,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13334,
                    "src": "7861:16:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13458,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13479,
                  "src": "7891:11:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13457,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7891:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7860:43:108"
            },
            "returnParameters": {
              "id": 13462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13461,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13479,
                  "src": "7927:7:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13460,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7927:7:108",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7926:9:108"
            },
            "scope": 13509,
            "src": "7848:160:108",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13507,
              "nodeType": "Block",
              "src": "8231:86:108",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13496,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13482,
                                  "src": "8269:3:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                                    "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                                  }
                                },
                                "id": 13497,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_inner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13333,
                                "src": "8269:10:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 13500,
                                    "name": "key",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13484,
                                    "src": "8289:3:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13499,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8281:7:108",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 13498,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8281:7:108",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 13501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8281:12:108",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13502,
                                "name": "errorMessage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13486,
                                "src": "8295:12:108",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$13070_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 13495,
                              "name": "_get",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                13296,
                                13331
                              ],
                              "referencedDeclaration": 13331,
                              "src": "8264:4:108",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$13070_storage_ptr_$_t_bytes32_$_t_string_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,string memory) view returns (bytes32)"
                              }
                            },
                            "id": 13503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8264:44:108",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8256:7:108",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 13493,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8256:7:108",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 13504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8256:53:108",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 13492,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8248:7:108",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 13491,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8248:7:108",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 13505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8248:62:108",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 13490,
                  "id": 13506,
                  "nodeType": "Return",
                  "src": "8241:69:108"
                }
              ]
            },
            "documentation": {
              "id": 13480,
              "nodeType": "StructuredDocumentation",
              "src": "8014:96:108",
              "text": " @dev Same as {get}, with a custom error message when `key` is not in the map."
            },
            "id": 13508,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13487,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13482,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13508,
                  "src": "8128:28:108",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13481,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13334,
                    "src": "8128:16:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$13334_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13484,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13508,
                  "src": "8158:11:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13483,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8158:7:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13486,
                  "mutability": "mutable",
                  "name": "errorMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13508,
                  "src": "8171:26:108",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 13485,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8171:6:108",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8127:71:108"
            },
            "returnParameters": {
              "id": 13490,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13489,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13508,
                  "src": "8222:7:108",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13488,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8222:7:108",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8221:9:108"
            },
            "scope": 13509,
            "src": "8115:202:108",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 13510,
        "src": "764:7555:108"
      }
    ],
    "src": "33:8287:108"
  },
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207d98f58166fd536a56fdf85b4c7579c386b4f0f1d1d81ec7da1a60904e4db87164736f6c63430007000033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207d98f58166fd536a56fdf85b4c7579c386b4f0f1d1d81ec7da1a60904e4db87164736f6c63430007000033",
  "compiler": {
    "name": "solc",
    "version": "0.7.0+commit.9e61f92b.Emscripten.clang",
    "optimizer": {
      "enabled": false,
      "runs": 200
    },
    "evmVersion": "petersburg"
  }
}
