sovai 0.2.56__tar.gz → 0.2.57__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.
- {sovai-0.2.56 → sovai-0.2.57}/PKG-INFO +1 -1
- {sovai-0.2.56 → sovai-0.2.57}/pyproject.toml +1 -1
- sovai-0.2.57/sovai/__init__.py +167 -0
- sovai-0.2.56/sovai/__init__.py +0 -39
- {sovai-0.2.56 → sovai-0.2.57}/LICENSE +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/README.md +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/data/codes.parq +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/data/tickers.parq +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/.DS_Store +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/api_config.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/assets/dropdown.css +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/assets/features_mapping.parq +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/basic_auth.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/computations/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/computations/functions.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/errors/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/errors/sovai_errors.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/anomalies.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/ask_df_llm.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/change_point_generator.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/clustering.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/core_kshape.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/cum_sum_torch.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/cusum.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/dimensionality_reduction.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/feature_extraction.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/feature_importance.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/feature_neutralizer.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/filter_df.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/fractional_differencing.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/nowcasting.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/pairwise.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/pandas_extensions.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/parallel_functions.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/pfa_feature_selector.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/regime_change.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/regime_change_pca.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/shapley_global_importance.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/shapley_importance.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/signal_evaluation.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/technical_indicators.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/time_decomposition.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/extensions/weight_optimization.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/get_compute.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/get_data copy.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/get_data.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/get_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/get_reports.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/get_tools.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/accounting/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/accounting/accounting_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/allocation/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/allocation/allocation_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/bankruptcy/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/bankruptcy/bankruptcy_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/breakout/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/breakout/breakout_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/corp_risk/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/corp_risk/corp_risk_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/earnings_surprise/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/earnings_surprise/earnings_surprise_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/insider/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/insider/insider_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/institutional/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/institutional/institutional_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/news/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/news/news_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/ratios/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/plots/ratios/ratios_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/accounting/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/accounting/accounting_balance_sheet.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/bankruptcy/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/bankruptcy/bankruptcy_monthly_top.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/general/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/general/general_plots.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/news/__inti__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/reports/news/news_econometric_analysis.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/studies/nowcasting.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/token_auth.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/authentication/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/authentication/authentication.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/sec/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/sec/graphs.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/sec/llm_code_generator.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/sec/sec_10_k_8_k_filings.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/tools/sec/sec_edgar_search.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/__init__.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/client_side.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/client_side_s3.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/client_side_s3_part_high copy 2.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/client_side_s3_part_high copy.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/client_side_s3_part_high.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/converter.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/datetime_formats.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/file_management.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/get_tickers.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/helpers.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/pandas_extensions copy.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/plot.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/port_manager.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/stream.py +0 -0
- {sovai-0.2.56 → sovai-0.2.57}/sovai/utils/verbose_utils.py +0 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Main SovAI SDK Tool Kit package
|
|
3
|
+
"""
|
|
4
|
+
from .api_config import read_key, save_key, ApiConfig
|
|
5
|
+
from .basic_auth import basic_auth
|
|
6
|
+
from .token_auth import token_auth
|
|
7
|
+
from .utils.file_management import update_data_files # Keep update_data_files import
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
import warnings
|
|
11
|
+
warnings.filterwarnings("ignore")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
try:
|
|
15
|
+
from importlib.metadata import version
|
|
16
|
+
__version__ = version("sovai")
|
|
17
|
+
except:
|
|
18
|
+
__version__ = "0.2.49" # Fallback to current version in pyproject.toml
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
# Lazy loading for core modules
|
|
22
|
+
_data_module = None
|
|
23
|
+
|
|
24
|
+
def data(*args, **kwargs):
|
|
25
|
+
"""Lazy-loaded access to the data function."""
|
|
26
|
+
global _data_module
|
|
27
|
+
if _data_module is None:
|
|
28
|
+
from .get_data import data as _loaded_data
|
|
29
|
+
_data_module = _loaded_data
|
|
30
|
+
return _data_module(*args, **kwargs)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# Lazy loading for full installation modules
|
|
34
|
+
HAS_FULL_INSTALL = False
|
|
35
|
+
_plot_module = None
|
|
36
|
+
_report_module = None
|
|
37
|
+
_compute_module = None
|
|
38
|
+
_nowcast_module = None
|
|
39
|
+
_extension_module = None
|
|
40
|
+
_sec_search_module = None
|
|
41
|
+
_sec_filing_module = None
|
|
42
|
+
_code_module = None
|
|
43
|
+
_sec_graph_module = None
|
|
44
|
+
|
|
45
|
+
try:
|
|
46
|
+
# Attempt to import a module from the full installation to check if it's installed
|
|
47
|
+
# This import is just to check for ImportError, the actual function is lazy-loaded below
|
|
48
|
+
from .get_plots import plot as _ # Use _ to indicate this import is just for the check
|
|
49
|
+
HAS_FULL_INSTALL = True
|
|
50
|
+
|
|
51
|
+
def plot(*args, **kwargs):
|
|
52
|
+
"""Lazy-loaded access to the plot function."""
|
|
53
|
+
global _plot_module
|
|
54
|
+
if _plot_module is None:
|
|
55
|
+
from .get_plots import plot as _loaded_plot
|
|
56
|
+
_plot_module = _loaded_plot
|
|
57
|
+
return _plot_module(*args, **kwargs)
|
|
58
|
+
|
|
59
|
+
def report(*args, **kwargs):
|
|
60
|
+
"""Lazy-loaded access to the report function."""
|
|
61
|
+
global _report_module
|
|
62
|
+
if _report_module is None:
|
|
63
|
+
from .get_reports import report as _loaded_report
|
|
64
|
+
_report_module = _loaded_report
|
|
65
|
+
return _report_module(*args, **kwargs)
|
|
66
|
+
|
|
67
|
+
def compute(*args, **kwargs):
|
|
68
|
+
"""Lazy-loaded access to the compute function."""
|
|
69
|
+
global _compute_module
|
|
70
|
+
if _compute_module is None:
|
|
71
|
+
from .get_compute import compute as _loaded_compute
|
|
72
|
+
_compute_module = _loaded_compute
|
|
73
|
+
return _compute_module(*args, **kwargs)
|
|
74
|
+
|
|
75
|
+
def nowcast(*args, **kwargs):
|
|
76
|
+
"""Lazy-loaded access to the nowcast function."""
|
|
77
|
+
global _nowcast_module
|
|
78
|
+
if _nowcast_module is None:
|
|
79
|
+
from .studies.nowcasting import nowcast as _loaded_nowcast
|
|
80
|
+
_nowcast_module = _loaded_nowcast
|
|
81
|
+
return _nowcast_module(*args, **kwargs)
|
|
82
|
+
|
|
83
|
+
# extension is likely a class, so the lazy loader needs to return the class itself
|
|
84
|
+
def extension(*args, **kwargs):
|
|
85
|
+
"""Lazy-loaded access to the CustomDataFrame extension class."""
|
|
86
|
+
global _extension_module
|
|
87
|
+
if _extension_module is None:
|
|
88
|
+
from .extensions.pandas_extensions import CustomDataFrame as _loaded_extension
|
|
89
|
+
_extension_module = _loaded_extension
|
|
90
|
+
# If called with args/kwargs, assume it's being instantiated
|
|
91
|
+
if args or kwargs:
|
|
92
|
+
return _extension_module(*args, **kwargs)
|
|
93
|
+
# Otherwise, return the class itself (e.g., for type checking or accessing class methods)
|
|
94
|
+
return _extension_module
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def sec_search(*args, **kwargs):
|
|
98
|
+
"""Lazy-loaded access to the sec_search function."""
|
|
99
|
+
global _sec_search_module
|
|
100
|
+
if _sec_search_module is None:
|
|
101
|
+
from .get_tools import sec_search as _loaded_sec_search
|
|
102
|
+
_sec_search_module = _loaded_sec_search
|
|
103
|
+
return _sec_search_module(*args, **kwargs)
|
|
104
|
+
|
|
105
|
+
def sec_filing(*args, **kwargs):
|
|
106
|
+
"""Lazy-loaded access to the sec_filing function."""
|
|
107
|
+
global _sec_filing_module
|
|
108
|
+
if _sec_filing_module is None:
|
|
109
|
+
from .get_tools import sec_filing as _loaded_sec_filing
|
|
110
|
+
_sec_filing_module = _loaded_sec_filing
|
|
111
|
+
return _sec_filing_module(*args, **kwargs)
|
|
112
|
+
|
|
113
|
+
def code(*args, **kwargs):
|
|
114
|
+
"""Lazy-loaded access to the code function."""
|
|
115
|
+
global _code_module
|
|
116
|
+
if _code_module is None:
|
|
117
|
+
from .get_tools import code as _loaded_code
|
|
118
|
+
_code_module = _loaded_code
|
|
119
|
+
return _code_module(*args, **kwargs)
|
|
120
|
+
|
|
121
|
+
def sec_graph(*args, **kwargs):
|
|
122
|
+
"""Lazy-loaded access to the sec_graph function."""
|
|
123
|
+
global _sec_graph_module
|
|
124
|
+
if _sec_graph_module is None:
|
|
125
|
+
from .get_tools import sec_graph as _loaded_sec_graph
|
|
126
|
+
_sec_graph_module = _loaded_sec_graph
|
|
127
|
+
return _sec_graph_module(*args, **kwargs)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
except ImportError as e:
|
|
131
|
+
print("this is the lean installation, for full use sovai[full]")
|
|
132
|
+
# print(f"ImportError: {e}")
|
|
133
|
+
HAS_FULL_INSTALL = False
|
|
134
|
+
|
|
135
|
+
# Define dummy functions/objects for lean installation to avoid AttributeErrors
|
|
136
|
+
def plot(*args, **kwargs):
|
|
137
|
+
raise ImportError("Plotting requires the full installation. Install with 'pip install sovai[full]'")
|
|
138
|
+
def report(*args, **kwargs):
|
|
139
|
+
raise ImportError("Reporting requires the full installation. Install with 'pip install sovai[full]'")
|
|
140
|
+
def compute(*args, **kwargs):
|
|
141
|
+
raise ImportError("Compute requires the full installation. Install with 'pip install sovai[full]'")
|
|
142
|
+
def nowcast(*args, **kwargs):
|
|
143
|
+
raise ImportError("Nowcasting requires the full installation. Install with 'pip install sovai[full]'")
|
|
144
|
+
def extension(*args, **kwargs):
|
|
145
|
+
raise ImportError("Extensions require the full installation. Install with 'pip install sovai[full]'")
|
|
146
|
+
def sec_search(*args, **kwargs):
|
|
147
|
+
raise ImportError("SEC tools require the full installation. Install with 'pip install sovai[full]'")
|
|
148
|
+
def sec_filing(*args, **kwargs):
|
|
149
|
+
raise ImportError("SEC tools require the full installation. Install with 'pip install sovai[full]'")
|
|
150
|
+
def code(*args, **kwargs):
|
|
151
|
+
raise ImportError("SEC tools require the full installation. Install with 'pip install sovai[full]'")
|
|
152
|
+
def sec_graph(*args, **kwargs):
|
|
153
|
+
raise ImportError("SEC tools require the full installation. Install with 'pip install sovai[full]'")
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
__all__ = [
|
|
157
|
+
'read_key', 'save_key', 'ApiConfig', 'basic_auth', 'token_auth',
|
|
158
|
+
'update_data_files', # Keep update_data_files in __all__
|
|
159
|
+
'data', # Add data to __all__
|
|
160
|
+
]
|
|
161
|
+
|
|
162
|
+
# Add full installation lazy-loaded attributes to __all__ if available
|
|
163
|
+
if HAS_FULL_INSTALL:
|
|
164
|
+
__all__ += [
|
|
165
|
+
'plot', 'report', 'compute', 'nowcast', 'extension',
|
|
166
|
+
'sec_search', 'sec_filing', 'code', 'sec_graph'
|
|
167
|
+
]
|
sovai-0.2.56/sovai/__init__.py
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Main SovAI SDK Tool Kit package
|
|
3
|
-
"""
|
|
4
|
-
from .api_config import read_key, save_key, ApiConfig
|
|
5
|
-
from .get_data import data
|
|
6
|
-
from .basic_auth import basic_auth
|
|
7
|
-
from .token_auth import token_auth
|
|
8
|
-
from .utils.file_management import save_or_update_tickers, save_or_update_codes, update_data_files
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import warnings
|
|
12
|
-
warnings.filterwarnings("ignore")
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
try:
|
|
16
|
-
from importlib.metadata import version
|
|
17
|
-
__version__ = version("sovai")
|
|
18
|
-
except:
|
|
19
|
-
__version__ = "0.2.49" # Fallback to current version in pyproject.toml
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
try:
|
|
23
|
-
from .get_plots import plot
|
|
24
|
-
from .get_reports import report
|
|
25
|
-
from .get_compute import compute
|
|
26
|
-
from .studies.nowcasting import nowcast
|
|
27
|
-
from .extensions.pandas_extensions import CustomDataFrame as extension
|
|
28
|
-
from .get_tools import sec_search, sec_filing, code, sec_graph
|
|
29
|
-
HAS_FULL_INSTALL = True
|
|
30
|
-
except ImportError as e:
|
|
31
|
-
print("this is the lean installation, for full use sovai[full]")
|
|
32
|
-
# print(f"ImportError: {e}")
|
|
33
|
-
HAS_FULL_INSTALL = False
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
__all__ = ['read_key', 'save_key', 'ApiConfig', 'data', 'basic_auth', 'token_auth', 'update_data_files']
|
|
37
|
-
|
|
38
|
-
if HAS_FULL_INSTALL:
|
|
39
|
-
__all__ += ['plot', 'report', 'compute', 'nowcast', 'extension', 'sec_search', 'sec_filing', 'code', 'sec_graph']
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|