sunholo 0.69.16__tar.gz → 0.69.17__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.69.16 → sunholo-0.69.17}/PKG-INFO +2 -2
- {sunholo-0.69.16 → sunholo-0.69.17}/setup.py +1 -1
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/discovery_engine/discovery_engine_client.py +8 -7
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/vertex/init.py +10 -4
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/vertex/memory_tools.py +12 -10
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo.egg-info/PKG-INFO +2 -2
- {sunholo-0.69.16 → sunholo-0.69.17}/LICENSE.txt +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/MANIFEST.in +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/README.md +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/setup.cfg +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/chat_history.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/dispatch_to_qa.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/fastapi/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/fastapi/base.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/fastapi/qna_routes.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/flask/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/flask/base.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/flask/qna_routes.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/flask/vac_routes.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/langserve.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/pubsub.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/route.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/special_commands.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/agents/swagger.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/archive/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/archive/archive.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/auth/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/auth/run.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/bots/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/bots/discord.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/bots/github_webhook.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/bots/webapp.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/chunker/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/chunker/data_to_embed_pubsub.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/chunker/doc_handling.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/chunker/images.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/chunker/loaders.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/chunker/message_data.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/chunker/pdfs.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/chunker/publish.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/chunker/splitter.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/cli/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/cli/chat_vac.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/cli/cli.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/cli/cli_init.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/cli/configs.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/cli/deploy.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/cli/embedder.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/cli/merge_texts.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/cli/run_proxy.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/cli/sun_rich.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/cli/swagger.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/components/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/components/llm.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/components/retriever.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/components/vectorstore.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/alloydb.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/alloydb_client.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/database.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/lancedb.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/sql/sb/create_function.sql +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/sql/sb/create_function_time.sql +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/sql/sb/create_table.sql +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/sql/sb/delete_source_row.sql +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/sql/sb/return_sources.sql +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/sql/sb/setup.sql +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/static_dbs.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/database/uuid.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/discovery_engine/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/discovery_engine/chunker_handler.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/discovery_engine/create_new.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/embedder/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/embedder/embed_chunk.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/gcs/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/gcs/add_file.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/gcs/download_url.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/gcs/metadata.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/langfuse/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/langfuse/callback.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/langfuse/prompts.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/llamaindex/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/llamaindex/generate.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/llamaindex/get_files.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/llamaindex/import_files.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/logging.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/lookup/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/lookup/model_lookup.yaml +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/patches/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/patches/langchain/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/patches/langchain/lancedb.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/patches/langchain/vertexai.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/pubsub/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/pubsub/process_pubsub.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/pubsub/pubsub_manager.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/qna/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/qna/parsers.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/qna/retry.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/streaming/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/streaming/content_buffer.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/streaming/langserve.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/streaming/stream_lookup.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/streaming/streaming.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/summarise/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/summarise/summarise.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/utils/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/utils/api_key.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/utils/big_context.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/utils/config.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/utils/config_schema.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/utils/gcp.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/utils/gcp_project.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/utils/parsers.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/utils/timedelta.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/utils/user_ids.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/utils/version.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/vertex/__init__.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo/vertex/safety.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo.egg-info/SOURCES.txt +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo.egg-info/dependency_links.txt +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo.egg-info/entry_points.txt +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo.egg-info/requires.txt +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/sunholo.egg-info/top_level.txt +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/tests/test_chat_history.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/tests/test_chunker.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/tests/test_config.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/tests/test_dispatch_to_qa.py +0 -0
- {sunholo-0.69.16 → sunholo-0.69.17}/tests/test_swagger.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.69.
|
|
3
|
+
Version: 0.69.17
|
|
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.69.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.69.17.tar.gz
|
|
7
7
|
Author: Holosun ApS
|
|
8
8
|
Author-email: multivac@sunholo.com
|
|
9
9
|
License: Apache License, Version 2.0
|
|
@@ -80,6 +80,13 @@ class DiscoveryEngineClient:
|
|
|
80
80
|
predicate=if_exception_type(ResourceExhausted) # Retry if a ResourceExhausted error occurs
|
|
81
81
|
)
|
|
82
82
|
|
|
83
|
+
def data_store_path(self, collection: str = "default_collection"):
|
|
84
|
+
return self.store_client.collection_path(
|
|
85
|
+
project=self.project_id,
|
|
86
|
+
location=self.location,
|
|
87
|
+
collection=collection,
|
|
88
|
+
)
|
|
89
|
+
|
|
83
90
|
def create_data_store(
|
|
84
91
|
self, chunk_size: int = 500,
|
|
85
92
|
collection: str = "default_collection"
|
|
@@ -121,15 +128,9 @@ class DiscoveryEngineClient:
|
|
|
121
128
|
document_processing_config=doc_config
|
|
122
129
|
)
|
|
123
130
|
|
|
124
|
-
parent = self.store_client.collection_path(
|
|
125
|
-
project=self.project_id,
|
|
126
|
-
location=self.location,
|
|
127
|
-
collection=collection,
|
|
128
|
-
)
|
|
129
|
-
|
|
130
131
|
# https://cloud.google.com/python/docs/reference/discoveryengine/0.11.4/google.cloud.discoveryengine_v1alpha.types.CreateDataStoreRequest
|
|
131
132
|
request = discoveryengine.CreateDataStoreRequest(
|
|
132
|
-
parent=
|
|
133
|
+
parent=self.data_store_path(collection),
|
|
133
134
|
data_store_id=self.data_store_id,
|
|
134
135
|
data_store=data_store,
|
|
135
136
|
# Optional: For Advanced Site Search Only
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from ..logging import log
|
|
2
|
+
from ..utils.gcp_project import get_gcp_project
|
|
2
3
|
|
|
3
|
-
def init_vertex(gcp_config):
|
|
4
|
+
def init_vertex(gcp_config=None, location="eu"):
|
|
4
5
|
"""
|
|
5
6
|
Initializes the Vertex AI environment using the provided Google Cloud Platform configuration.
|
|
6
7
|
|
|
@@ -12,6 +13,7 @@ def init_vertex(gcp_config):
|
|
|
12
13
|
gcp_config (dict): A dictionary containing the Google Cloud Platform configuration with keys:
|
|
13
14
|
- 'project_id': The Google Cloud project ID to configure for Vertex AI.
|
|
14
15
|
- 'location': The Google Cloud region to configure for Vertex AI.
|
|
16
|
+
If default None it will derive it from the environment
|
|
15
17
|
|
|
16
18
|
Raises:
|
|
17
19
|
KeyError: If the necessary keys ('project_id' or 'location') are missing in the gcp_config dictionary.
|
|
@@ -37,7 +39,11 @@ def init_vertex(gcp_config):
|
|
|
37
39
|
|
|
38
40
|
return None
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
if gcp_config:
|
|
43
|
+
# Initialize Vertex AI API once per session
|
|
44
|
+
project_id = gcp_config.get('project_id')
|
|
45
|
+
location = gcp_config.get('location') or location
|
|
46
|
+
else:
|
|
47
|
+
project_id = get_gcp_project()
|
|
48
|
+
|
|
43
49
|
vertexai.init(project=project_id, location=location)
|
|
@@ -8,6 +8,8 @@ from ..logging import log
|
|
|
8
8
|
from ..utils.config import load_config_key
|
|
9
9
|
from ..components import load_memories
|
|
10
10
|
from ..llamaindex.get_files import fetch_corpus
|
|
11
|
+
from ..discovery_engine.discovery_engine_client import DiscoveryEngineClient
|
|
12
|
+
from ..utils.gcp_project import get_gcp_project
|
|
11
13
|
|
|
12
14
|
def get_vertex_memories(vector_name):
|
|
13
15
|
"""
|
|
@@ -42,10 +44,7 @@ def get_vertex_memories(vector_name):
|
|
|
42
44
|
if not rag:
|
|
43
45
|
raise ValueError("Need to install vertexai module via `pip install sunholo[gcp]`")
|
|
44
46
|
|
|
45
|
-
global_project_id = gcp_config.get('project_id')
|
|
46
47
|
global_location = gcp_config.get('location')
|
|
47
|
-
global_rag_id = gcp_config.get('rag_id')
|
|
48
|
-
global_data_store_id = gcp_config.get('data_store_id')
|
|
49
48
|
|
|
50
49
|
memories = load_memories(vector_name)
|
|
51
50
|
tools = []
|
|
@@ -60,12 +59,16 @@ def get_vertex_memories(vector_name):
|
|
|
60
59
|
if vectorstore == "llamaindex":
|
|
61
60
|
log.info(f"Found vectorstore {vectorstore}")
|
|
62
61
|
rag_id = value.get('rag_id')
|
|
62
|
+
if rag_id is None:
|
|
63
|
+
raise ValueError("Must specify rag_id if using vectorstore: llamaindex")
|
|
64
|
+
|
|
63
65
|
project_id = gcp_config.get('project_id')
|
|
64
66
|
location = gcp_config.get('location')
|
|
67
|
+
|
|
65
68
|
corpus = fetch_corpus(
|
|
66
|
-
project_id=project_id or
|
|
69
|
+
project_id=project_id or get_gcp_project(),
|
|
67
70
|
location=location or global_location,
|
|
68
|
-
rag_id=rag_id
|
|
71
|
+
rag_id=rag_id
|
|
69
72
|
)
|
|
70
73
|
corpus_tool = Tool.from_retrieval(
|
|
71
74
|
retrieval=rag.Retrieval(
|
|
@@ -76,13 +79,12 @@ def get_vertex_memories(vector_name):
|
|
|
76
79
|
)
|
|
77
80
|
)
|
|
78
81
|
tools.append(corpus_tool)
|
|
79
|
-
elif vectorstore == "
|
|
82
|
+
elif vectorstore == "discovery_engine" or vectorstore == "vertex_ai_search":
|
|
83
|
+
|
|
84
|
+
de = DiscoveryEngineClient(vector_name, project_id=get_gcp_project())
|
|
80
85
|
log.info(f"Found vectorstore {vectorstore}")
|
|
81
|
-
data_store_id = value.get('data_store_id') or global_data_store_id
|
|
82
|
-
project_id = gcp_config.get('project_id') or global_project_id
|
|
83
|
-
location = gcp_config.get('location') or global_location
|
|
84
|
-
data_store_path=f"projects/{project_id}/locations/{location}/collections/default_collection/dataStores/{data_store_id}"
|
|
85
86
|
|
|
87
|
+
data_store_path = de.data_store_path()
|
|
86
88
|
corpus_tool = Tool.from_retrieval(
|
|
87
89
|
grounding.Retrieval(grounding.VertexAISearch(datastore=data_store_path))
|
|
88
90
|
)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sunholo
|
|
3
|
-
Version: 0.69.
|
|
3
|
+
Version: 0.69.17
|
|
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.69.
|
|
6
|
+
Download-URL: https://github.com/sunholo-data/sunholo-py/archive/refs/tags/v0.69.17.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|