sxs 2024.0.32__tar.gz → 2024.0.34__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.
- {sxs-2024.0.32 → sxs-2024.0.34}/CITATION.cff +2 -2
- {sxs-2024.0.32 → sxs-2024.0.34}/PKG-INFO +1 -1
- sxs-2024.0.34/sxs/__version__.py +1 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/simulations/local.py +46 -6
- sxs-2024.0.32/sxs/__version__.py +0 -1
- {sxs-2024.0.32 → sxs-2024.0.34}/.codecov.yml +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/.github/dependabot.yml +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/.github/scripts/parse_bump_rule.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/.github/workflows/build.yml +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/.github/workflows/pr_rtd_link.yml +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/.gitignore +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/.readthedocs.yaml +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/LICENSE +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/README.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/catalog.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/horizons.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/load.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/metadata.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/simulation.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/simulations.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/time_series.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/api/waveforms.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/html/main.html +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/images/favicon.ico +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/index.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/javascript/mathjax.js +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/julia.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/mathematica.md +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/stylesheets/extra.css +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/00-Introduction.ipynb +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/01-Simulations_and_Metadata.ipynb +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/02-Simulation.ipynb +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/03-Horizons.ipynb +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/04-Waveforms.ipynb +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/docs/tutorials/05-PreprocessingForFFTs.ipynb +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/mkdocs.yml +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/pyproject.toml +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/caltechdata/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/caltechdata/catalog.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/caltechdata/login.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/catalog/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/catalog/catalog.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/catalog/create.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/catalog/description.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/handlers.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/horizons/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/horizons/spec_horizons_h5.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/horizons/xor_multishuffle_bzip2.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/julia/GWFrames.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/julia/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/juliapkg.json +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/metadata/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/metadata/metadata.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/simulations/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/simulations/simulation.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/simulations/simulations.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/time_series.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/bitwise.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/decimation/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/decimation/greedy_spline.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/decimation/linear_bisection.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/decimation/peak_greed.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/decimation/suppression.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/dicts.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/downloads.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/files.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/formats.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/inspire.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/comparisons.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/conversion.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/dataset.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/horizons.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/metadata.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/waveform_amp_phase.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/lvcnr/waveforms.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/monotonicity.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/pretty_print.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/ads.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/arxiv.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/fairchild_report.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/inspire.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/journal_abbreviations.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/references/references.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/select.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/smooth_functions.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/sxs_directories.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/sxs_identifiers.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/utilities/url.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/alignment.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/grathena.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/lvc.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/nrar.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/rotating_paired_diff_multishuffle_bzip2.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/rotating_paired_xor_multishuffle_bzip2.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/format_handlers/spectre_cce_v1.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/memory.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/mode_utilities.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/transformations.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/waveform_grid.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/waveform_mixin.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/waveform_modes.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/waveforms/waveform_signal.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/api/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/api/deposit.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/api/login.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/api/records.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/catalog.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/creators.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/simannex.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/sxs/zenodo/surrogatemodeling.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/__init__.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/conftest.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_catalog.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_horizons.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_julia.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_loader.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_metadata.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_simulation.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_time_series.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_transformations.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_utilities.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_waveform_rotations.py +0 -0
- {sxs-2024.0.32 → sxs-2024.0.34}/tests/test_waveforms.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sxs
|
|
3
|
-
Version: 2024.0.
|
|
3
|
+
Version: 2024.0.34
|
|
4
4
|
Summary: Interface to data produced by the Simulating eXtreme Spacetimes collaboration
|
|
5
5
|
Project-URL: Homepage, https://github.com/sxs-collaboration/sxs
|
|
6
6
|
Project-URL: Documentation, https://sxs.readthedocs.io/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2024.0.34"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
from .. import sxs_id, Metadata, sxs_directory
|
|
3
3
|
from ..utilities import sxs_identifier_re
|
|
4
|
-
from ..zenodo import path_to_invenio
|
|
4
|
+
from ..zenodo import path_to_invenio
|
|
5
5
|
|
|
6
6
|
def file_upload_allowed(file, directory_listing):
|
|
7
7
|
"""Return True if the file should be uploaded
|
|
@@ -65,7 +65,7 @@ def extract_id_from_common_metadata(file, annex_dir):
|
|
|
65
65
|
return key
|
|
66
66
|
|
|
67
67
|
|
|
68
|
-
def local_simulations(annex_dir):
|
|
68
|
+
def local_simulations(annex_dir, compute_md5=False, show_progress=False):
|
|
69
69
|
"""
|
|
70
70
|
Walk the annex directory to find and process all simulations
|
|
71
71
|
|
|
@@ -88,6 +88,11 @@ def local_simulations(annex_dir):
|
|
|
88
88
|
----------
|
|
89
89
|
annex_dir : (str or Path)
|
|
90
90
|
The path to the annex directory to be processed.
|
|
91
|
+
compute_md5 : bool, optional
|
|
92
|
+
Whether to compute the MD5 hash of each file. Default is
|
|
93
|
+
False.
|
|
94
|
+
show_progress : bool, optional
|
|
95
|
+
Whether to show a progress bar. Default is False.
|
|
91
96
|
|
|
92
97
|
Returns
|
|
93
98
|
-------
|
|
@@ -95,10 +100,25 @@ def local_simulations(annex_dir):
|
|
|
95
100
|
A dictionary containing the processed metadata.
|
|
96
101
|
"""
|
|
97
102
|
from os import walk
|
|
103
|
+
from ..utilities import md5checksum
|
|
104
|
+
from tqdm import tqdm
|
|
98
105
|
|
|
99
106
|
simulations = {}
|
|
100
107
|
annex_dir = Path(annex_dir).resolve()
|
|
101
108
|
|
|
109
|
+
if show_progress: # Count the number of common-metadata.txt files
|
|
110
|
+
num_files = 0
|
|
111
|
+
for dirpath, dirnames, filenames in walk(annex_dir, topdown=True):
|
|
112
|
+
if Path(dirpath).name.startswith("."):
|
|
113
|
+
dirnames[:] = []
|
|
114
|
+
continue
|
|
115
|
+
if "common-metadata.txt" in filenames:
|
|
116
|
+
if not any(d.startswith("Lev") for d in dirnames):
|
|
117
|
+
continue
|
|
118
|
+
num_files += 1
|
|
119
|
+
dirnames[:] = []
|
|
120
|
+
progress_bar = tqdm(total=num_files, desc="Processing simulations")
|
|
121
|
+
|
|
102
122
|
# The `walk` method can be made *much* faster than the `glob` method
|
|
103
123
|
for dirpath, dirnames, filenames in walk(annex_dir, topdown=True):
|
|
104
124
|
dirpath = Path(dirpath)
|
|
@@ -112,6 +132,9 @@ def local_simulations(annex_dir):
|
|
|
112
132
|
if not any(d.startswith("Lev") for d in dirnames):
|
|
113
133
|
continue
|
|
114
134
|
|
|
135
|
+
if show_progress:
|
|
136
|
+
progress_bar.update(1)
|
|
137
|
+
|
|
115
138
|
key = extract_id_from_common_metadata(dirpath / "common-metadata.txt", annex_dir)
|
|
116
139
|
|
|
117
140
|
# Find the highest Lev directory and extract the metadata
|
|
@@ -121,8 +144,14 @@ def local_simulations(annex_dir):
|
|
|
121
144
|
metadata = Metadata.load(dirpath / highest_lev / "metadata")
|
|
122
145
|
metadata = metadata.add_standard_parameters()
|
|
123
146
|
|
|
147
|
+
metadata["directory"] = str(dirpath.relative_to(annex_dir))
|
|
148
|
+
|
|
124
149
|
metadata["files"] = {
|
|
125
|
-
|
|
150
|
+
path_to_invenio(file.relative_to(dirpath)): {
|
|
151
|
+
"link": str(file),
|
|
152
|
+
"size": file.stat().st_size,
|
|
153
|
+
"checksum": md5checksum(file) if compute_md5 else "",
|
|
154
|
+
}
|
|
126
155
|
for file in files_to_upload(dirpath, annex_dir)
|
|
127
156
|
}
|
|
128
157
|
|
|
@@ -133,9 +162,12 @@ def local_simulations(annex_dir):
|
|
|
133
162
|
return simulations
|
|
134
163
|
|
|
135
164
|
|
|
136
|
-
def write_local_simulations(annex_dir, output_file=None):
|
|
165
|
+
def write_local_simulations(annex_dir, output_file=None, compute_md5=False, show_progress=False):
|
|
137
166
|
"""Write the local simulations to a file for use when loading `Simulations`
|
|
138
167
|
|
|
168
|
+
This function calls `local_simulations` to obtain the dictionary,
|
|
169
|
+
but also writes the dictionary to a JSON file.
|
|
170
|
+
|
|
139
171
|
Parameters
|
|
140
172
|
----------
|
|
141
173
|
annex_dir : (str or Path)
|
|
@@ -145,15 +177,21 @@ def write_local_simulations(annex_dir, output_file=None):
|
|
|
145
177
|
written to `sxs_directory("cache") / "local_simulations.json"`.
|
|
146
178
|
N.B.: If you specify a different file, `sxs.load` will not
|
|
147
179
|
automatically find it.
|
|
180
|
+
compute_md5 : bool, optional
|
|
181
|
+
Whether to compute the MD5 hash of each file. Default is
|
|
182
|
+
False.
|
|
183
|
+
show_progress : bool, optional
|
|
184
|
+
Whether to show a progress bar. Default is False.
|
|
148
185
|
|
|
149
186
|
Returns
|
|
150
187
|
-------
|
|
151
|
-
|
|
188
|
+
dict :
|
|
189
|
+
A dictionary containing the processed metadata.
|
|
152
190
|
"""
|
|
153
191
|
from json import dump
|
|
154
192
|
|
|
155
193
|
# Process the annex directory to find all simulations
|
|
156
|
-
simulations = local_simulations(annex_dir)
|
|
194
|
+
simulations = local_simulations(annex_dir, compute_md5=compute_md5, show_progress=show_progress)
|
|
157
195
|
|
|
158
196
|
# Write the simulations to file
|
|
159
197
|
if output_file is None:
|
|
@@ -163,3 +201,5 @@ def write_local_simulations(annex_dir, output_file=None):
|
|
|
163
201
|
output_file.parent.mkdir(parents=True, exist_ok=True)
|
|
164
202
|
with output_file.open("w") as f:
|
|
165
203
|
dump(simulations, f, indent=2, separators=(",", ": "), ensure_ascii=True)
|
|
204
|
+
|
|
205
|
+
return simulations
|
sxs-2024.0.32/sxs/__version__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2024.0.32"
|
|
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
|
|
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
|