PyLibMS 4.1.3__tar.gz → 4.1.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pylibms-4.1.3 → pylibms-4.1.5}/PKG-INFO +6 -2
- {pylibms-4.1.3 → pylibms-4.1.5}/PyLibMS.egg-info/PKG-INFO +6 -2
- {pylibms-4.1.3 → pylibms-4.1.5}/README.md +1 -1
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/common/field/lms_datatype.py +25 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/common/field/lms_field.py +2 -27
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/flowchart/definitions/node.py +33 -1
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/Tomodachi Life NA-EU.yaml +0 -1
- {pylibms-4.1.3 → pylibms-4.1.5}/pyproject.toml +8 -1
- {pylibms-4.1.3 → pylibms-4.1.5}/LICENSE +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/MANIFEST.in +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/PyLibMS.egg-info/SOURCES.txt +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/PyLibMS.egg-info/dependency_links.txt +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/PyLibMS.egg-info/requires.txt +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/PyLibMS.egg-info/top_level.txt +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/common/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/common/field/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/common/field/io.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/common/lms_constants.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/common/lms_exceptions.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/common/lms_fileinfo.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/common/stream/fileinfo.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/common/stream/hashtable.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/common/stream/section.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/fileio/encoding.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/fileio/io.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/flowchart/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/flowchart/definitions/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/flowchart/definitions/flowchart.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/flowchart/definitions/lms_nodeexceptions.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/flowchart/definitions/node_type.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/flowchart/flw3.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/flowchart/msbf.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/flowchart/msbfio.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/definitions/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/definitions/field/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/lms_messagetext.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/msbt.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/msbtentry.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/msbtio.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/section/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/section/atr1.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/section/nli1.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/section/tsy1.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/section/txt2.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/tag/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/tag/io/param_io.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/tag/io/tag_io.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/tag/lms_tag.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/message/tag/lms_tagexceptions.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/definitions/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/definitions/attribute.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/definitions/color.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/definitions/style.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/definitions/tag.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/msbp.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/msbpread.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/section/ali2.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/section/ati2.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/section/clr1.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/section/string.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/section/syl3.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/section/tag2.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/section/tgg2.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/project/section/tgp2.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/config.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/definitions/__init__.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/definitions/attribute.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/definitions/nodes.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/definitions/tags.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/definitions/value.py +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/Badge Arcade.yaml +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/Brain Age Concentration Training.yaml +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/Kirby Planet Robobot.yaml +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/Super Mario 3D Land.yaml +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/Super Mario 3D World + Bowsers Fury.yaml +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/Super Mario Odyssey.yaml +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/The Legend of Zelda Echos of Wisdom.yaml +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/The Legend of Zelda a Link Between Worlds.yaml +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/Tomodachi Life Living The Dream.yaml +0 -0
- {pylibms-4.1.3 → pylibms-4.1.5}/setup.cfg +0 -0
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyLibMS
|
|
3
|
-
Version: 4.1.
|
|
3
|
+
Version: 4.1.5
|
|
4
4
|
Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
|
|
5
5
|
Author: AbdyyEee
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Documentation, https://github.com/AbdyyEee/PylibMS/wiki
|
|
8
8
|
Project-URL: Repository, https://github.com/AbdyyEee/PylibMS
|
|
9
9
|
Keywords: nintendo,msbf,msbt,msbp,modding,lms,libmessagestudio,flw3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
10
14
|
Requires-Python: >=3.12
|
|
11
15
|
Description-Content-Type: text/markdown
|
|
12
16
|
License-File: LICENSE
|
|
@@ -14,7 +18,7 @@ Requires-Dist: PyYAML>=6.0.1
|
|
|
14
18
|
Requires-Dist: requests>=2.34.0
|
|
15
19
|
Dynamic: license-file
|
|
16
20
|
|
|
17
|
-
#
|
|
21
|
+
# PyLibMS
|
|
18
22
|
|
|
19
23
|
PylibMS is a library built in Python 3.12+ for the libMessageStudio (LMS) proprietary file formats (`msbt`, `msbp`,
|
|
20
24
|
`msbf`) from Nintendo. It supports the following:
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyLibMS
|
|
3
|
-
Version: 4.1.
|
|
3
|
+
Version: 4.1.5
|
|
4
4
|
Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
|
|
5
5
|
Author: AbdyyEee
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Documentation, https://github.com/AbdyyEee/PylibMS/wiki
|
|
8
8
|
Project-URL: Repository, https://github.com/AbdyyEee/PylibMS
|
|
9
9
|
Keywords: nintendo,msbf,msbt,msbp,modding,lms,libmessagestudio,flw3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
10
14
|
Requires-Python: >=3.12
|
|
11
15
|
Description-Content-Type: text/markdown
|
|
12
16
|
License-File: LICENSE
|
|
@@ -14,7 +18,7 @@ Requires-Dist: PyYAML>=6.0.1
|
|
|
14
18
|
Requires-Dist: requests>=2.34.0
|
|
15
19
|
Dynamic: license-file
|
|
16
20
|
|
|
17
|
-
#
|
|
21
|
+
# PyLibMS
|
|
18
22
|
|
|
19
23
|
PylibMS is a library built in Python 3.12+ for the libMessageStudio (LMS) proprietary file formats (`msbt`, `msbp`,
|
|
20
24
|
`msbf`) from Nintendo. It supports the following:
|
|
@@ -3,6 +3,9 @@ from __future__ import annotations
|
|
|
3
3
|
from enum import Enum
|
|
4
4
|
from typing import Type, TypeGuard
|
|
5
5
|
|
|
6
|
+
FLOAT32_MIN = -3.4028235e38
|
|
7
|
+
FLOAT32_MAX = 3.4028235e38
|
|
8
|
+
|
|
6
9
|
ALIAS_MAP = {
|
|
7
10
|
"u8": "UINT8",
|
|
8
11
|
"u16": "UINT16",
|
|
@@ -132,3 +135,25 @@ class LMS_DataType(Enum):
|
|
|
132
135
|
return cls[alias_member]
|
|
133
136
|
else:
|
|
134
137
|
raise ValueError(f"Unknown value of '{string}' was provided!")
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def verify_number_from_datatype(
|
|
141
|
+
value: int | float,
|
|
142
|
+
datatype: LMS_DataType,
|
|
143
|
+
):
|
|
144
|
+
if datatype is LMS_DataType.FLOAT32:
|
|
145
|
+
max_value = FLOAT32_MAX
|
|
146
|
+
min_value = FLOAT32_MIN
|
|
147
|
+
else:
|
|
148
|
+
bits = datatype.stream_size * 8
|
|
149
|
+
if datatype.signed:
|
|
150
|
+
max_value = 2 ** (bits - 1)
|
|
151
|
+
min_value = -max_value
|
|
152
|
+
else:
|
|
153
|
+
min_value, max_value = 0, (2 ** bits) - 1
|
|
154
|
+
|
|
155
|
+
if not min_value <= value <= max_value:
|
|
156
|
+
raise ValueError(
|
|
157
|
+
f"""The value '{value}' of type '{datatype.name}' provided
|
|
158
|
+
is out of range of ({min_value}, {max_value})"""
|
|
159
|
+
)
|
|
@@ -3,12 +3,9 @@ from __future__ import annotations
|
|
|
3
3
|
from collections.abc import Iterator
|
|
4
4
|
from dataclasses import dataclass
|
|
5
5
|
|
|
6
|
-
from lms.common.field.lms_datatype import LMS_DataType
|
|
6
|
+
from lms.common.field.lms_datatype import LMS_DataType, verify_number_from_datatype
|
|
7
7
|
from lms.titleconfig.definitions.value import ValueDefinition
|
|
8
8
|
|
|
9
|
-
FLOAT32_MIN = -3.4028235e38
|
|
10
|
-
FLOAT32_MAX = 3.4028235e38
|
|
11
|
-
|
|
12
9
|
type FieldValue = int | str | float | bool | bytes
|
|
13
10
|
|
|
14
11
|
|
|
@@ -164,31 +161,9 @@ def _verify_value_from_definition(
|
|
|
164
161
|
else:
|
|
165
162
|
return
|
|
166
163
|
case _ if isinstance(value, int):
|
|
167
|
-
|
|
164
|
+
verify_number_from_datatype(value, definition.datatype)
|
|
168
165
|
return
|
|
169
166
|
|
|
170
167
|
raise TypeError(
|
|
171
168
|
f"The value provided for '{definition.name}' type '{type(value)}' should be '{datatype.builtin_type}' (DATATYPE {definition.datatype})."
|
|
172
169
|
)
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
def _verify_number_datatype(
|
|
176
|
-
value: int | float,
|
|
177
|
-
datatype: LMS_DataType,
|
|
178
|
-
):
|
|
179
|
-
if datatype is LMS_DataType.FLOAT32:
|
|
180
|
-
max_value = FLOAT32_MAX
|
|
181
|
-
min_value = FLOAT32_MIN
|
|
182
|
-
else:
|
|
183
|
-
bits = datatype.stream_size * 8
|
|
184
|
-
if datatype.signed:
|
|
185
|
-
max_value = 2 ** (bits - 1)
|
|
186
|
-
min_value = -max_value
|
|
187
|
-
else:
|
|
188
|
-
min_value, max_value = 0, (2 ** bits) - 1
|
|
189
|
-
|
|
190
|
-
if not min_value <= value <= max_value:
|
|
191
|
-
raise ValueError(
|
|
192
|
-
f"""The value '{value}' of type '{datatype.name}' provided for this field
|
|
193
|
-
is out of range of ({min_value}, {max_value})"""
|
|
194
|
-
)
|
|
@@ -5,7 +5,8 @@ from types import MappingProxyType
|
|
|
5
5
|
from typing import Generator
|
|
6
6
|
|
|
7
7
|
import lms.flowchart.definitions.lms_nodeexceptions as node_exceptions
|
|
8
|
-
from lms.common.field.
|
|
8
|
+
from lms.common.field.lms_datatype import LMS_DataType
|
|
9
|
+
from lms.common.field.lms_field import LMS_FieldMap, verify_number_from_datatype
|
|
9
10
|
from lms.common.lms_exceptions import LMS_Error
|
|
10
11
|
from lms.flowchart.definitions.node_type import LMS_NodeType, LMS_NodeParameterType
|
|
11
12
|
from lms.message.msbt import MSBT
|
|
@@ -64,6 +65,37 @@ class LMS_BaseNode:
|
|
|
64
65
|
"""The parameter value of the node."""
|
|
65
66
|
return self._parameter_value
|
|
66
67
|
|
|
68
|
+
@parameter_value.setter
|
|
69
|
+
def parameter_value(self, value: LMS_NodeParameter):
|
|
70
|
+
if self._parameter_type == LMS_NodeParameterType.NONE:
|
|
71
|
+
raise TypeError("Unable to set parameter values when there is no parameter!")
|
|
72
|
+
|
|
73
|
+
if isinstance(self._parameter_value, LMS_FieldMap):
|
|
74
|
+
raise ValueError("Edit a parameter value through the value property of a field!")
|
|
75
|
+
|
|
76
|
+
if not isinstance(value, self._parameter_type.builtin_type):
|
|
77
|
+
raise TypeError(f"Wrong value provided! Expected {self._parameter_type.builtin_type} got {type(value)}")
|
|
78
|
+
|
|
79
|
+
sliced_datatype = {
|
|
80
|
+
LMS_NodeParameterType.PARAM_16_16: (LMS_DataType.UINT16, LMS_DataType.UINT16),
|
|
81
|
+
LMS_NodeParameterType.PARAM_16_8_8: (LMS_DataType.UINT16, LMS_DataType.UINT8, LMS_DataType.UINT8),
|
|
82
|
+
LMS_NodeParameterType.PARAM_8_8_16: (LMS_DataType.UINT8, LMS_DataType.UINT8, LMS_DataType.UINT16),
|
|
83
|
+
LMS_NodeParameterType.PARAM_8_8_8_8: (LMS_DataType.UINT8, LMS_DataType.UINT8, LMS_DataType.UINT8,
|
|
84
|
+
LMS_DataType.UINT8)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
match self._parameter_type:
|
|
88
|
+
case LMS_NodeParameterType.STRING:
|
|
89
|
+
self._parameter_value = value
|
|
90
|
+
case LMS_NodeParameterType.PARAM_32_0 | LMS_NodeParameterType.PARAM_32_1:
|
|
91
|
+
verify_number_from_datatype(value, LMS_DataType.UINT32)
|
|
92
|
+
self._parameter_value = value
|
|
93
|
+
case _:
|
|
94
|
+
for i, parameter in enumerate(value):
|
|
95
|
+
verify_number_from_datatype(parameter, sliced_datatype[self._parameter_type][i])
|
|
96
|
+
|
|
97
|
+
self._parameter_value = value
|
|
98
|
+
|
|
67
99
|
def set_next_node(self, node: LMS_BaseNode | None) -> LMS_BaseNode | None:
|
|
68
100
|
"""Set the next node for the instance.
|
|
69
101
|
|
|
@@ -7,7 +7,7 @@ include = ["lms*"]
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "PyLibMS"
|
|
10
|
-
version = "4.1.
|
|
10
|
+
version = "4.1.5"
|
|
11
11
|
requires-python = ">=3.12"
|
|
12
12
|
description = "Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF."
|
|
13
13
|
readme = "README.md"
|
|
@@ -15,6 +15,13 @@ authors = [{ name = "AbdyyEee" }]
|
|
|
15
15
|
keywords = ["nintendo", "msbf", "msbt", "msbp", "modding", "lms", "libmessagestudio", "flw3"]
|
|
16
16
|
license = "MIT"
|
|
17
17
|
license-files = ["LICENSE*"]
|
|
18
|
+
classifiers = [
|
|
19
|
+
"Programming Language :: Python :: 3.10",
|
|
20
|
+
"Programming Language :: Python :: 3.11",
|
|
21
|
+
"Programming Language :: Python :: 3.12",
|
|
22
|
+
"Programming Language :: Python :: 3.13"
|
|
23
|
+
|
|
24
|
+
]
|
|
18
25
|
dependencies = [
|
|
19
26
|
"PyYAML>=6.0.1",
|
|
20
27
|
"requests>=2.34.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/Brain Age Concentration Training.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/Super Mario 3D World + Bowsers Fury.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/The Legend of Zelda Echos of Wisdom.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{pylibms-4.1.3 → pylibms-4.1.5}/lms/titleconfig/presets/Tomodachi Life Living The Dream.yaml
RENAMED
|
File without changes
|
|
File without changes
|