sunholo 0.62.7__tar.gz → 0.62.9__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.62.7 → sunholo-0.62.9}/PKG-INFO +2 -2
- {sunholo-0.62.7 → sunholo-0.62.9}/setup.py +1 -1
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/chunker/publish.py +3 -3
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/components/retriever.py +1 -1
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/logging.py +8 -3
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/pubsub/pubsub_manager.py +1 -1
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/utils/config.py +2 -2
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/utils/gcp_project.py +7 -5
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo.egg-info/PKG-INFO +2 -2
- {sunholo-0.62.7 → sunholo-0.62.9}/LICENSE.txt +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/MANIFEST.in +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/README.md +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/setup.cfg +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/chat_history.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/dispatch_to_qa.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/fastapi/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/fastapi/base.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/fastapi/qna_routes.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/flask/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/flask/base.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/flask/qna_routes.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/langserve.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/pubsub.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/route.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/agents/special_commands.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/archive/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/archive/archive.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/auth/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/auth/run.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/bots/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/bots/discord.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/bots/github_webhook.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/bots/webapp.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/chunker/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/chunker/doc_handling.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/chunker/images.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/chunker/loaders.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/chunker/message_data.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/chunker/pdfs.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/chunker/splitter.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/cli/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/cli/chat_vac.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/cli/cli.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/cli/cli_init.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/cli/configs.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/cli/deploy.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/cli/embedder.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/cli/merge_texts.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/cli/run_proxy.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/cli/sun_rich.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/components/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/components/llm.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/components/vectorstore.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/alloydb.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/database.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/lancedb.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/sql/sb/create_function.sql +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/sql/sb/create_function_time.sql +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/sql/sb/create_table.sql +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/sql/sb/return_sources.sql +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/sql/sb/setup.sql +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/static_dbs.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/database/uuid.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/embedder/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/embedder/embed_chunk.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/gcs/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/gcs/add_file.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/gcs/download_url.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/gcs/metadata.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/langfuse/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/langfuse/callback.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/langfuse/prompts.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/llamaindex/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/llamaindex/generate.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/llamaindex/get_files.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/llamaindex/import_files.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/lookup/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/lookup/model_lookup.yaml +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/patches/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/patches/langchain/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/patches/langchain/lancedb.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/patches/langchain/vertexai.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/pubsub/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/pubsub/process_pubsub.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/qna/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/qna/parsers.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/qna/retry.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/streaming/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/streaming/content_buffer.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/streaming/langserve.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/streaming/stream_lookup.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/streaming/streaming.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/summarise/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/summarise/summarise.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/utils/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/utils/big_context.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/utils/config_schema.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/utils/gcp.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/utils/parsers.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/utils/timedelta.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/utils/user_ids.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/vertex/__init__.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/vertex/init.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo/vertex/memory_tools.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo.egg-info/SOURCES.txt +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo.egg-info/dependency_links.txt +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo.egg-info/entry_points.txt +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo.egg-info/requires.txt +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/sunholo.egg-info/top_level.txt +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/tests/test_chat_history.py +0 -0
- {sunholo-0.62.7 → sunholo-0.62.9}/tests/test_config.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.62.
|
|
3
|
+
Version: 0.62.9
|
|
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.62.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.62.9.tar.gz
|
|
7
7
|
Author: Holosun ApS
|
|
8
8
|
Author-email: multivac@sunholo.com
|
|
9
9
|
License: Apache License, Version 2.0
|
|
@@ -19,7 +19,7 @@ def publish_if_urls(the_content, vector_name):
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
def publish_chunks(chunks: list[Document], vector_name: str):
|
|
22
|
-
project = get_gcp_project()
|
|
22
|
+
project = get_gcp_project(include_config=True)
|
|
23
23
|
if not project:
|
|
24
24
|
log.warning("No GCP project found for PubSub, no message sent")
|
|
25
25
|
|
|
@@ -42,7 +42,7 @@ def publish_chunks(chunks: list[Document], vector_name: str):
|
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
def publish_text(text:str, vector_name: str):
|
|
45
|
-
project = get_gcp_project()
|
|
45
|
+
project = get_gcp_project(include_config=True)
|
|
46
46
|
if not project:
|
|
47
47
|
log.warning("No GCP project found for PubSub, no message sent")
|
|
48
48
|
|
|
@@ -56,7 +56,7 @@ def publish_text(text:str, vector_name: str):
|
|
|
56
56
|
pubsub_manager.publish_message(text)
|
|
57
57
|
|
|
58
58
|
def process_docs_chunks_vector_name(chunks, vector_name, metadata):
|
|
59
|
-
project = get_gcp_project()
|
|
59
|
+
project = get_gcp_project(include_config=True)
|
|
60
60
|
if not project:
|
|
61
61
|
log.warning("No GCP project found for PubSub, no message sent")
|
|
62
62
|
|
|
@@ -57,7 +57,7 @@ def pick_retriever(vector_name, embeddings=None):
|
|
|
57
57
|
if value.get('provider') == "GoogleCloudEnterpriseSearchRetriever":
|
|
58
58
|
log.info(f"Found GoogleCloudEnterpriseSearchRetriever {value['provider']}")
|
|
59
59
|
gcp_retriever = GoogleCloudEnterpriseSearchRetriever(
|
|
60
|
-
project_id=get_gcp_project(),
|
|
60
|
+
project_id=get_gcp_project(include_config=True),
|
|
61
61
|
search_engine_id=value["db_id"],
|
|
62
62
|
location_id=value.get("location", "global"),
|
|
63
63
|
engine_data_type=1 if value.get("type","unstructured") == "structured" else 0,
|
|
@@ -18,17 +18,16 @@ try:
|
|
|
18
18
|
except ImportError:
|
|
19
19
|
Client = None
|
|
20
20
|
|
|
21
|
-
from .utils.gcp_project import get_gcp_project
|
|
22
|
-
from .utils.gcp import is_running_on_gcp, is_gcp_logged_in
|
|
23
21
|
import logging
|
|
24
22
|
import inspect
|
|
25
23
|
import os
|
|
26
24
|
|
|
27
|
-
|
|
28
25
|
class GoogleCloudLogging:
|
|
29
26
|
|
|
30
27
|
_instances = {} # Dictionary to hold instances keyed by a tuple of (project_id, logger_name)
|
|
31
28
|
|
|
29
|
+
|
|
30
|
+
|
|
32
31
|
def __new__(cls, project_id=None, log_level=logging.INFO, logger_name=None):
|
|
33
32
|
key = (project_id, logger_name)
|
|
34
33
|
if key not in cls._instances:
|
|
@@ -37,6 +36,9 @@ class GoogleCloudLogging:
|
|
|
37
36
|
|
|
38
37
|
def __init__(self, project_id=None, log_level=logging.INFO, logger_name=None):
|
|
39
38
|
if not hasattr(self, 'initialized'): # Avoid re-initialization
|
|
39
|
+
from .utils.gcp_project import get_gcp_project # circular import if outside
|
|
40
|
+
from .utils.gcp import is_gcp_logged_in
|
|
41
|
+
|
|
40
42
|
self.project_id = project_id or get_gcp_project()
|
|
41
43
|
self.client = Client(project=self.project_id) if is_gcp_logged_in() else None
|
|
42
44
|
self.logger_name = logger_name
|
|
@@ -53,6 +55,7 @@ class GoogleCloudLogging:
|
|
|
53
55
|
|
|
54
56
|
try:
|
|
55
57
|
caller_info = self._get_caller_info()
|
|
58
|
+
from .utils.gcp import is_running_on_gcp, is_gcp_logged_in
|
|
56
59
|
if not is_running_on_gcp() and not is_gcp_logged_in():
|
|
57
60
|
import logging
|
|
58
61
|
logging.basicConfig(level=self.log_level, format='%(asctime)s - %(levelname)s - %(message)s')
|
|
@@ -99,6 +102,7 @@ class GoogleCloudLogging:
|
|
|
99
102
|
if not logger_name and not self.logger_name:
|
|
100
103
|
raise ValueError("Must provide a logger name e.g. 'run.googleapis.com%2Fstderr'")
|
|
101
104
|
|
|
105
|
+
from .utils.gcp import is_running_on_gcp, is_gcp_logged_in
|
|
102
106
|
if not is_running_on_gcp() and not is_gcp_logged_in():
|
|
103
107
|
log.basicConfig(level=log.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
|
104
108
|
if log_text:
|
|
@@ -223,6 +227,7 @@ def setup_logging(logger_name=None, log_level=logging.INFO, project_id=None):
|
|
|
223
227
|
|
|
224
228
|
if Client and os.environ.get('GOOGLE_CLOUD_LOGGING') == "1":
|
|
225
229
|
if project_id is None:
|
|
230
|
+
from .utils.gcp_project import get_gcp_project
|
|
226
231
|
project_id = get_gcp_project()
|
|
227
232
|
# Instantiate the GoogleCloudLogging class
|
|
228
233
|
gc_logger = GoogleCloudLogging(project_id, log_level=log_level, logger_name=logger_name)
|
|
@@ -43,7 +43,7 @@ class PubSubManager:
|
|
|
43
43
|
# Get the project ID from the default Google Cloud settings or the environment variable
|
|
44
44
|
if self.project_id is None:
|
|
45
45
|
_, project_id = default()
|
|
46
|
-
self.project_id = project_id or get_gcp_project()
|
|
46
|
+
self.project_id = project_id or get_gcp_project(include_config=True)
|
|
47
47
|
|
|
48
48
|
if self.project_id:
|
|
49
49
|
log.info(f"Pubsub Project ID: {self.project_id}")
|
|
@@ -192,8 +192,8 @@ def load_config_key(key: str, vector_name: str, kind: str):
|
|
|
192
192
|
print(f'API URL: {api_url}')
|
|
193
193
|
```
|
|
194
194
|
"""
|
|
195
|
-
|
|
196
|
-
|
|
195
|
+
# can't use sunholo.logging due to circular import
|
|
196
|
+
from ..logging import log
|
|
197
197
|
|
|
198
198
|
if kind != 'agentConfig':
|
|
199
199
|
assert isinstance(key, str), f"key must be a string got a {type(key)}"
|
|
@@ -12,17 +12,19 @@ def get_env_project_id():
|
|
|
12
12
|
"""
|
|
13
13
|
return os.environ.get('GCP_PROJECT') or os.environ.get('GOOGLE_CLOUD_PROJECT')
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
|
|
16
|
+
def get_gcp_project(include_config=False):
|
|
16
17
|
"""
|
|
17
18
|
Retrieve the GCP project ID from environment variables or the GCP metadata server.
|
|
18
19
|
|
|
19
20
|
Returns:
|
|
20
21
|
str or None: The project ID if found, None otherwise.
|
|
21
22
|
"""
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if gcp_config
|
|
25
|
-
|
|
23
|
+
if include_config: # to avoid circular imports, must be specified
|
|
24
|
+
gcp_config = load_config_key("gcp_config", "global", "vacConfig")
|
|
25
|
+
if gcp_config:
|
|
26
|
+
if gcp_config.get('project_id'):
|
|
27
|
+
return gcp_config.get('project_id')
|
|
26
28
|
|
|
27
29
|
project_id = get_env_project_id()
|
|
28
30
|
if project_id:
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.62.
|
|
3
|
+
Version: 0.62.9
|
|
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.62.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.62.9.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
|