sunholo 0.64.8__tar.gz → 0.64.10__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.
- {sunholo-0.64.8 → sunholo-0.64.10}/PKG-INFO +2 -2
- {sunholo-0.64.8 → sunholo-0.64.10}/setup.py +1 -1
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/route.py +4 -2
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/swagger.py +16 -6
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/logging.py +4 -2
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo.egg-info/PKG-INFO +2 -2
- {sunholo-0.64.8 → sunholo-0.64.10}/LICENSE.txt +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/MANIFEST.in +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/README.md +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/setup.cfg +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/chat_history.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/dispatch_to_qa.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/fastapi/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/fastapi/base.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/fastapi/qna_routes.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/flask/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/flask/base.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/flask/qna_routes.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/langserve.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/pubsub.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/agents/special_commands.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/archive/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/archive/archive.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/auth/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/auth/run.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/bots/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/bots/discord.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/bots/github_webhook.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/bots/webapp.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/chunker/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/chunker/doc_handling.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/chunker/images.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/chunker/loaders.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/chunker/message_data.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/chunker/pdfs.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/chunker/publish.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/chunker/splitter.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/cli/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/cli/chat_vac.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/cli/cli.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/cli/cli_init.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/cli/configs.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/cli/deploy.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/cli/embedder.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/cli/merge_texts.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/cli/run_proxy.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/cli/sun_rich.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/cli/swagger.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/components/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/components/llm.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/components/retriever.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/components/vectorstore.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/alloydb.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/database.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/lancedb.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/sql/sb/create_function.sql +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/sql/sb/create_function_time.sql +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/sql/sb/create_table.sql +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/sql/sb/return_sources.sql +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/sql/sb/setup.sql +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/static_dbs.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/database/uuid.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/embedder/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/embedder/embed_chunk.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/gcs/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/gcs/add_file.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/gcs/download_url.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/gcs/metadata.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/langfuse/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/langfuse/callback.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/langfuse/prompts.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/llamaindex/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/llamaindex/generate.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/llamaindex/get_files.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/llamaindex/import_files.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/lookup/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/lookup/model_lookup.yaml +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/patches/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/patches/langchain/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/patches/langchain/lancedb.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/patches/langchain/vertexai.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/pubsub/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/pubsub/process_pubsub.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/pubsub/pubsub_manager.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/qna/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/qna/parsers.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/qna/retry.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/streaming/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/streaming/content_buffer.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/streaming/langserve.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/streaming/stream_lookup.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/streaming/streaming.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/summarise/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/summarise/summarise.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/utils/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/utils/big_context.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/utils/config.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/utils/config_schema.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/utils/gcp.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/utils/gcp_project.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/utils/parsers.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/utils/timedelta.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/utils/user_ids.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/utils/version.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/vertex/__init__.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/vertex/init.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/vertex/memory_tools.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo/vertex/safety.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo.egg-info/SOURCES.txt +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo.egg-info/dependency_links.txt +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo.egg-info/entry_points.txt +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo.egg-info/requires.txt +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/sunholo.egg-info/top_level.txt +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/tests/test_chat_history.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/tests/test_chunker.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/tests/test_config.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/tests/test_dispatch_to_qa.py +0 -0
- {sunholo-0.64.8 → sunholo-0.64.10}/tests/test_swagger.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.64.
|
|
3
|
+
Version: 0.64.10
|
|
4
4
|
Summary: Large Language Model DevOps - a package to help deploy LLMs to the Cloud.
|
|
5
5
|
Home-page: https://github.com/sunholo-data/sunholo-py
|
|
6
|
-
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.64.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.64.10.tar.gz
|
|
7
7
|
Author: Holosun ApS
|
|
8
8
|
Author-email: multivac@sunholo.com
|
|
9
9
|
License: Apache License, Version 2.0
|
|
@@ -14,8 +14,10 @@
|
|
|
14
14
|
from ..logging import log
|
|
15
15
|
from ..utils import load_config_key, load_config
|
|
16
16
|
|
|
17
|
-
def route_vac(vector_name):
|
|
18
|
-
|
|
17
|
+
def route_vac(vector_name: str) -> str :
|
|
18
|
+
"""
|
|
19
|
+
Considers what VAC this vector_name belongs to
|
|
20
|
+
"""
|
|
19
21
|
agent_url = load_config_key('agent_url', vector_name=vector_name, kind="vacConfig")
|
|
20
22
|
if agent_url:
|
|
21
23
|
log.info('agent_url found in llm_config.yaml')
|
|
@@ -138,7 +138,7 @@ def generate_swagger(vac_config, agent_config):
|
|
|
138
138
|
agent_config_paths = agent_config['agents'].get(agent_type, {})
|
|
139
139
|
log.info(f'Configuring swagger for agent_type: {agent_type} for vector_name: {vector_name}')
|
|
140
140
|
try:
|
|
141
|
-
stem = route_vac(vector_name)
|
|
141
|
+
stem = route_vac(vector_name).strip()
|
|
142
142
|
except ValueError:
|
|
143
143
|
stem = f"${{{agent_type.upper()}_BACKEND_URL}}"
|
|
144
144
|
log.warning(f"Failed to find URL stem for {vector_name}/{agent_type} - using {stem} instead")
|
|
@@ -148,14 +148,19 @@ def generate_swagger(vac_config, agent_config):
|
|
|
148
148
|
log.warning(f"Skipping {endpoints}")
|
|
149
149
|
continue
|
|
150
150
|
for endpoint_key, endpoint_template in endpoints.items():
|
|
151
|
-
|
|
151
|
+
endpoint_template = endpoint_template.strip()
|
|
152
|
+
endpoint_address = endpoint_template.replace("{stem}", stem).replace("{vector_name}", vector_name).strip()
|
|
153
|
+
endpoint_path = endpoint_template.replace("{stem}", f"/{agent_type}").replace("{vector_name}", vector_name).strip()
|
|
154
|
+
log.debug(f"Endpoint_template: {endpoint_template}")
|
|
155
|
+
log.debug(f"endpoint address: {endpoint_address}")
|
|
156
|
+
log.debug(f"endpoint_path: {endpoint_path}")
|
|
152
157
|
if endpoint_path not in swagger_template['paths']:
|
|
153
158
|
swagger_template['paths'][endpoint_path] = {}
|
|
154
159
|
swagger_template['paths'][endpoint_path][method] = {
|
|
155
160
|
'summary': f"{method.capitalize()} {vector_name}",
|
|
156
161
|
'operationId': f"{method}_{agent_type}_{endpoint_key}",
|
|
157
162
|
'x-google-backend': {
|
|
158
|
-
'address':
|
|
163
|
+
'address': endpoint_address,
|
|
159
164
|
'protocol': 'h2'
|
|
160
165
|
},
|
|
161
166
|
'responses': copy.deepcopy(agent_config_paths.get('response', {}).get(endpoint_key, {
|
|
@@ -176,7 +181,7 @@ def generate_swagger(vac_config, agent_config):
|
|
|
176
181
|
continue
|
|
177
182
|
log.info(f'Applying default configuration for agent_type: {agent_type} for vector_name: {vector_name}')
|
|
178
183
|
try:
|
|
179
|
-
stem = route_vac(vector_name)
|
|
184
|
+
stem = route_vac(vector_name).strip()
|
|
180
185
|
except ValueError:
|
|
181
186
|
stem = f"${{{agent_type.upper()}_BACKEND_URL}}"
|
|
182
187
|
log.warning(f"Failed to find URL stem for {vector_name}/{agent_type} - using {stem} instead")
|
|
@@ -185,14 +190,19 @@ def generate_swagger(vac_config, agent_config):
|
|
|
185
190
|
if method not in ['get', 'post']:
|
|
186
191
|
continue
|
|
187
192
|
for endpoint_key, endpoint_template in endpoints.items():
|
|
188
|
-
|
|
193
|
+
endpoint_template = endpoint_template.strip()
|
|
194
|
+
endpoint_address = endpoint_template.replace("{stem}", stem).replace("{vector_name}", vector_name).strip()
|
|
195
|
+
endpoint_path = endpoint_template.replace("{stem}", f"/{agent_type}").replace("{vector_name}", vector_name).strip()
|
|
196
|
+
log.debug(f"default Endpoint_template: {endpoint_template}")
|
|
197
|
+
log.debug(f"default endpoint address: {endpoint_address}")
|
|
198
|
+
log.debug(f"default endpoint_path: {endpoint_path}")
|
|
189
199
|
if endpoint_path not in swagger_template['paths']:
|
|
190
200
|
swagger_template['paths'][endpoint_path] = {}
|
|
191
201
|
swagger_template['paths'][endpoint_path][method] = {
|
|
192
202
|
'summary': f"{method.capitalize()} {agent_type}",
|
|
193
203
|
'operationId': f"{method}_{agent_type}_{endpoint_key}",
|
|
194
204
|
'x-google-backend': {
|
|
195
|
-
'address':
|
|
205
|
+
'address': endpoint_path,
|
|
196
206
|
'protocol': 'h2'
|
|
197
207
|
},
|
|
198
208
|
'responses': copy.deepcopy(default_agent_config.get('response', {}).get(endpoint_key, {
|
|
@@ -18,6 +18,7 @@ try:
|
|
|
18
18
|
except ImportError:
|
|
19
19
|
Client = None
|
|
20
20
|
|
|
21
|
+
from .utils.version import sunholo_version
|
|
21
22
|
import logging
|
|
22
23
|
import inspect
|
|
23
24
|
import os
|
|
@@ -44,6 +45,7 @@ class GoogleCloudLogging:
|
|
|
44
45
|
self.logger_name = logger_name
|
|
45
46
|
self.log_level = log_level
|
|
46
47
|
self.initialized = True # Mark as initialized
|
|
48
|
+
self.version = sunholo_version()
|
|
47
49
|
print(f"Initialized logging object for logger_name: {logger_name}")
|
|
48
50
|
|
|
49
51
|
|
|
@@ -106,9 +108,9 @@ class GoogleCloudLogging:
|
|
|
106
108
|
if not is_running_on_gcp() and not is_gcp_logged_in():
|
|
107
109
|
log.basicConfig(level=log.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
|
108
110
|
if log_text:
|
|
109
|
-
log.info(f"[{severity}][{logger_name or self.logger_name}] - {log_text}")
|
|
111
|
+
log.info(f"[{severity}][{logger_name or self.logger_name}][{self.version}] - {log_text}")
|
|
110
112
|
elif log_struct:
|
|
111
|
-
log.info(f"[{severity}][{logger_name or self.logger_name}] - {str(log_struct)}")
|
|
113
|
+
log.info(f"[{severity}][{logger_name or self.logger_name}][{self.version}] - {str(log_struct)}")
|
|
112
114
|
|
|
113
115
|
logger = self.client.logger(logger_name or self.logger_name)
|
|
114
116
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.64.
|
|
3
|
+
Version: 0.64.10
|
|
4
4
|
Summary: Large Language Model DevOps - a package to help deploy LLMs to the Cloud.
|
|
5
5
|
Home-page: https://github.com/sunholo-data/sunholo-py
|
|
6
|
-
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.64.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.64.10.tar.gz
|
|
7
7
|
Author: Holosun ApS
|
|
8
8
|
Author-email: multivac@sunholo.com
|
|
9
9
|
License: Apache License, Version 2.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|