pycloudlib 1!9.3.2__tar.gz → 1!9.3.3__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.
- {pycloudlib-1!9.3.2/pycloudlib.egg-info → pycloudlib-1!9.3.3}/PKG-INFO +1 -1
- pycloudlib-1!9.3.3/VERSION +1 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ec2/cloud.py +11 -7
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/gce/cloud.py +7 -3
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3/pycloudlib.egg-info}/PKG-INFO +1 -1
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/integration_tests/test_public_api.py +9 -5
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/ec2/test_cloud.py +50 -6
- pycloudlib-1!9.3.2/VERSION +0 -1
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/LICENSE +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/MANIFEST.in +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/README.md +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/azure/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/azure/cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/azure/instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/azure/security_types.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/azure/util.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/config.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/constants.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ec2/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ec2/instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ec2/util.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ec2/vpc.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/errors.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/gce/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/gce/errors.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/gce/instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/gce/util.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ibm/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ibm/_util.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ibm/cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ibm/errors.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ibm/instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ibm_classic/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ibm_classic/cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ibm_classic/errors.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/ibm_classic/instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/key.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/lxd/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/lxd/_images.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/lxd/cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/lxd/defaults.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/lxd/instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/oci/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/oci/cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/oci/instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/oci/utils.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/openstack/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/openstack/cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/openstack/errors.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/openstack/instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/py.typed +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/qemu/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/qemu/cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/qemu/instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/qemu/util.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/result.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/util.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/vmware/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/vmware/cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib/vmware/instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib.egg-info/SOURCES.txt +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib.egg-info/dependency_links.txt +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib.egg-info/requires.txt +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib.egg-info/top_level.txt +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pycloudlib.egg-info/zip-safe +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/pyproject.toml +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/requirements.txt +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/setup.cfg +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/setup.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/test-requirements.txt +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/conftest.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/integration_tests/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/integration_tests/gce/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/integration_tests/gce/test_launch.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/integration_tests/ibm/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/integration_tests/ibm/test_launch.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/integration_tests/test_qemu.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/azure/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/azure/test_cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/azure/test_security_types.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/ec2/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/gce/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/gce/test_cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/ibm/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/ibm/test_cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/ibm/test_instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/ibm/test_util.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/ibm_classic/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/ibm_classic/test_cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/lxd/__init__.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/lxd/test_cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/lxd/test_defaults.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/lxd/test_images.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/lxd/test_instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/test_cloud.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/test_config.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/test_errors.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tests/unit_tests/test_instance.py +0 -0
- {pycloudlib-1!9.3.2 → pycloudlib-1!9.3.3}/tox.ini +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1!9.3.3
|
|
@@ -139,20 +139,24 @@ class EC2(BaseCloud):
|
|
|
139
139
|
):
|
|
140
140
|
disk_type = "hvm-ssd" if release in NO_GP3_RELEASES else "hvm-ssd-gp3"
|
|
141
141
|
if image_type in (ImageType.GENERIC, ImageType.MINIMAL):
|
|
142
|
-
base_location = "ubuntu/{
|
|
143
|
-
|
|
144
|
-
|
|
142
|
+
base_location = "ubuntu{}/{}/{}".format(
|
|
143
|
+
"-minimal" if image_type == ImageType.MINIMAL else "",
|
|
144
|
+
"images-testing" if daily else "images",
|
|
145
|
+
disk_type,
|
|
145
146
|
)
|
|
146
147
|
if release in LTS_RELEASES:
|
|
147
|
-
return "{}/ubuntu-{}{}-*-
|
|
148
|
+
return "{}/ubuntu-{}{}-*-{}-*".format(
|
|
148
149
|
base_location,
|
|
149
150
|
release,
|
|
150
151
|
"-daily" if daily else "",
|
|
151
|
-
"
|
|
152
|
+
"minimal" if image_type == ImageType.MINIMAL else "server",
|
|
152
153
|
)
|
|
153
154
|
|
|
154
|
-
return "{}/ubuntu-{}{}-*".format(
|
|
155
|
-
base_location,
|
|
155
|
+
return "{}/ubuntu-{}{}-*-{}-*".format(
|
|
156
|
+
base_location,
|
|
157
|
+
release,
|
|
158
|
+
"-daily" if daily else "",
|
|
159
|
+
"minimal" if image_type == ImageType.MINIMAL else "server",
|
|
156
160
|
)
|
|
157
161
|
|
|
158
162
|
release_ver = UBUNTU_RELEASE_VERSION_MAP.get(release)
|
|
@@ -125,8 +125,10 @@ class GCE(BaseCloud):
|
|
|
125
125
|
self.instance_counter = count()
|
|
126
126
|
# Prefer service_account_email from pycloudlib.toml and fallback to
|
|
127
127
|
# the credentials listed in GOOGLE_APPLICATION_CREDENTIALS otherwise
|
|
128
|
-
self.service_account_email =
|
|
129
|
-
|
|
128
|
+
self.service_account_email = (
|
|
129
|
+
service_account_email
|
|
130
|
+
or self.config.get("service_account_email")
|
|
131
|
+
or getattr(credentials, "service_account_email", None)
|
|
130
132
|
)
|
|
131
133
|
|
|
132
134
|
def released_image(
|
|
@@ -430,7 +432,9 @@ class GCE(BaseCloud):
|
|
|
430
432
|
config.update(kwargs)
|
|
431
433
|
|
|
432
434
|
if self.service_account_email:
|
|
433
|
-
config["
|
|
435
|
+
config["service_accounts"] = [
|
|
436
|
+
{"email": self.service_account_email}
|
|
437
|
+
]
|
|
434
438
|
|
|
435
439
|
if user_data:
|
|
436
440
|
user_metadata = {"key": "user-data", "value": user_data}
|
|
@@ -24,11 +24,15 @@ def cloud(request):
|
|
|
24
24
|
tag="pycl-test", timestamp_suffix=True
|
|
25
25
|
) as cloud_instance:
|
|
26
26
|
if isinstance(cloud_instance, pycloudlib.EC2):
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
# if key has already been uploaded, skip uploading it again.
|
|
28
|
+
# this is because the cloud instance is shared between tests and
|
|
29
|
+
# so the cloud does not clean up and remove the key between tests
|
|
30
|
+
if cloud_instance.tag not in cloud_instance.list_keys():
|
|
31
|
+
cloud_instance.upload_key(
|
|
32
|
+
public_key_path=cloud_instance.config["public_key_path"],
|
|
33
|
+
private_key_path=cloud_instance.config["private_key_path"],
|
|
34
|
+
name=cloud_instance.tag,
|
|
35
|
+
)
|
|
32
36
|
|
|
33
37
|
yield cloud_instance
|
|
34
38
|
|
|
@@ -25,6 +25,7 @@ class TestEC2:
|
|
|
25
25
|
@pytest.mark.parametrize(
|
|
26
26
|
["release", "image_type", "daily", "expected_name_filter"],
|
|
27
27
|
[
|
|
28
|
+
# Test GENERIC with LTS release and daily = True
|
|
28
29
|
pytest.param(
|
|
29
30
|
"focal",
|
|
30
31
|
ImageType.GENERIC,
|
|
@@ -45,7 +46,7 @@ class TestEC2:
|
|
|
45
46
|
"jammy",
|
|
46
47
|
ImageType.MINIMAL,
|
|
47
48
|
True,
|
|
48
|
-
"ubuntu/images-testing/hvm-ssd/ubuntu-jammy-daily-*-
|
|
49
|
+
"ubuntu-minimal/images-testing/hvm-ssd/ubuntu-jammy-daily-*-minimal-*",
|
|
49
50
|
id="minimal-lts-daily",
|
|
50
51
|
),
|
|
51
52
|
# Test MINIMAL with LTS release and daily = False
|
|
@@ -53,24 +54,56 @@ class TestEC2:
|
|
|
53
54
|
"noble",
|
|
54
55
|
ImageType.MINIMAL,
|
|
55
56
|
False,
|
|
56
|
-
"ubuntu/images/hvm-ssd-gp3/ubuntu-noble-*-
|
|
57
|
+
"ubuntu-minimal/images/hvm-ssd-gp3/ubuntu-noble-*-minimal-*",
|
|
57
58
|
id="minimal-lts-non-daily",
|
|
58
59
|
),
|
|
59
|
-
# Test PRO with
|
|
60
|
+
# Test PRO with LTS release
|
|
60
61
|
pytest.param(
|
|
61
62
|
"jammy",
|
|
62
63
|
ImageType.PRO,
|
|
63
64
|
False,
|
|
64
65
|
"ubuntu-pro-server/images/hvm-ssd/ubuntu-jammy-22.04-*",
|
|
65
|
-
id="pro-
|
|
66
|
+
id="pro-lts",
|
|
66
67
|
),
|
|
67
|
-
# Test PRO_FIPS with
|
|
68
|
+
# Test PRO_FIPS with LTS release
|
|
68
69
|
pytest.param(
|
|
69
70
|
"noble",
|
|
70
71
|
ImageType.PRO_FIPS,
|
|
71
72
|
False,
|
|
72
73
|
"ubuntu-pro-fips*/images/hvm-ssd-gp3/ubuntu-noble-24.04-*",
|
|
73
|
-
id="pro-fips-
|
|
74
|
+
id="pro-fips-lts",
|
|
75
|
+
),
|
|
76
|
+
# Test GENERIC with non-LTS release and daily = False
|
|
77
|
+
pytest.param(
|
|
78
|
+
"oracular",
|
|
79
|
+
ImageType.GENERIC,
|
|
80
|
+
False,
|
|
81
|
+
"ubuntu/images/hvm-ssd-gp3/ubuntu-oracular-*-server-*",
|
|
82
|
+
id="generic-non-lts-non-daily",
|
|
83
|
+
),
|
|
84
|
+
# Test MINIMAL with non-LTS release and daily = False
|
|
85
|
+
pytest.param(
|
|
86
|
+
"oracular",
|
|
87
|
+
ImageType.MINIMAL,
|
|
88
|
+
False,
|
|
89
|
+
"ubuntu-minimal/images/hvm-ssd-gp3/ubuntu-oracular-*-minimal-*",
|
|
90
|
+
id="minimal-non-lts-non-daily",
|
|
91
|
+
),
|
|
92
|
+
# Test GENERIC with non-LTS release and daily = True
|
|
93
|
+
pytest.param(
|
|
94
|
+
"oracular",
|
|
95
|
+
ImageType.GENERIC,
|
|
96
|
+
True,
|
|
97
|
+
"ubuntu/images-testing/hvm-ssd-gp3/ubuntu-oracular-daily-*-server-*",
|
|
98
|
+
id="generic-non-lts-daily",
|
|
99
|
+
),
|
|
100
|
+
# Test MINIMAL with non-LTS release and daily = True
|
|
101
|
+
pytest.param(
|
|
102
|
+
"oracular",
|
|
103
|
+
ImageType.MINIMAL,
|
|
104
|
+
True,
|
|
105
|
+
"ubuntu-minimal/images-testing/hvm-ssd-gp3/ubuntu-oracular-daily-*-minimal-*",
|
|
106
|
+
id="minimal-non-lts-daily",
|
|
74
107
|
),
|
|
75
108
|
],
|
|
76
109
|
)
|
|
@@ -91,6 +124,17 @@ class TestEC2:
|
|
|
91
124
|
)
|
|
92
125
|
assert result == expected_name_filter
|
|
93
126
|
|
|
127
|
+
def test_get_name_for_image_type_invalid_image_type(self):
|
|
128
|
+
"""
|
|
129
|
+
Test the _get_name_for_image_type() method with an invalid ImageType
|
|
130
|
+
"""
|
|
131
|
+
ec2 = FakeEC2()
|
|
132
|
+
with pytest.raises(ValueError) as exc_info:
|
|
133
|
+
ec2._get_name_for_image_type(
|
|
134
|
+
release="focal", image_type=None, daily=True
|
|
135
|
+
)
|
|
136
|
+
assert "Invalid image_type" in str(exc_info.value)
|
|
137
|
+
|
|
94
138
|
def test_get_owner_for_all_image_types(self):
|
|
95
139
|
"""
|
|
96
140
|
Test the _get_project() method against all possible ImageType enum values
|
pycloudlib-1!9.3.2/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1!9.3.2
|
|
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
|