deepfos 1.1.7__tar.gz → 1.1.8__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.
- {deepfos-1.1.7 → deepfos-1.1.8}/PKG-INFO +1 -1
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/deepux.py +52 -7
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos.egg-info/PKG-INFO +1 -1
- {deepfos-1.1.7 → deepfos-1.1.8}/setup.py +1 -1
- {deepfos-1.1.7 → deepfos-1.1.8}/MANIFEST.in +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/README.md +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/_version.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/algo/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/algo/graph.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/V1_1/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/V1_1/business_model.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/V1_1/dimension.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/V1_1/models/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/V1_1/models/business_model.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/V1_1/models/dimension.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/V1_2/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/V1_2/dimension.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/V1_2/models/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/V1_2/models/dimension.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/account.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/accounting_engines.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/app.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/approval_process.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/base.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/business_model.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/consolidation.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/datatable.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/deepfos_task.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/dimension.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/financial_model.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/journal_template.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/memory_financial_model.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/account.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/accounting_engines.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/app.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/approval_process.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/base.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/business_model.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/consolidation.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/datatable_mysql.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/deepfos_task.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/dimension.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/financial_model.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/journal_template.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/memory_financial_model.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/platform.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/python.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/reconciliation_engine.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/reconciliation_report.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/role_strategy.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/smartlist.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/space.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/system.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/variable.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/models/workflow.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/platform.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/python.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/reconciliation_engine.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/reconciliation_report.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/role_strategy.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/smartlist.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/space.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/system.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/variable.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/api/workflow.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/boost/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/boost/jstream.c +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/boost/jstream.pyx +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/boost/pandas.c +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/boost/pandas.pyx +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/boost/py_jstream.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/boost/py_pandas.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/cache.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/config.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/cube/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/cube/_base.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/cube/constants.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/cube/cube.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/cube/formula.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/cube/syscube.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/cube/typing.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/cube/utils.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/dimension/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/dimension/_base.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/dimension/dimcreator.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/dimension/dimension.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/dimension/dimexpr.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/dimension/dimmember.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/dimension/eledimension.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/dimension/filters.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/dimension/sysdimension.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/logictable/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/logictable/_cache.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/logictable/_operator.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/logictable/nodemixin.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/logictable/sqlcondition.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/core/logictable/tablemodel.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/cipher.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/clickhouse.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/connector.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/daclickhouse.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/dameng.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/damysql.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/dbkits.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/deepengine.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/gauss.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/kingbase.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/mysql.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/oracle.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/postgresql.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/sqlserver.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/db/utils.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/accounting.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/apvlprocess.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/base.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/bizmodel.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/datatable.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/dimension.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/fact_table.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/finmodel.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/journal_template.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/pyscript.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/reconciliation.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/rolestrategy.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/smartlist.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/variable.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/element/workflow.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/exceptions/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/exceptions/hook.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lazy.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/_javaobj.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/asynchronous.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/concurrency.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/constant.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/decorator.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/deepchart.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/discovery.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/eureka.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/filterparser.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/httpcli.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/jsonstreamer.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/nacos.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/patch.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/redis.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/stopwatch.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/subtask.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/sysutils.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/lib/utils.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/local.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/options.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos/translation.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos.egg-info/SOURCES.txt +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos.egg-info/dependency_links.txt +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos.egg-info/not-zip-safe +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos.egg-info/requires.txt +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/deepfos.egg-info/top_level.txt +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/setup.cfg +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/tests/__init__.py +0 -0
- {deepfos-1.1.7 → deepfos-1.1.8}/versioneer.py +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"""DeepUX组件数据源"""
|
|
2
2
|
import asyncio
|
|
3
3
|
import functools
|
|
4
|
-
from typing import Dict, Type
|
|
4
|
+
from typing import Dict, Type, List
|
|
5
5
|
|
|
6
6
|
import pandas as pd
|
|
7
7
|
|
|
8
8
|
from deepfos import OPTION
|
|
9
9
|
from deepfos.api.models import BaseModel
|
|
10
|
+
from deepfos.api.models.dimension import DimensionMemberBean
|
|
10
11
|
|
|
11
12
|
__all__ = [
|
|
12
13
|
'BaseField',
|
|
@@ -19,6 +20,7 @@ __all__ = [
|
|
|
19
20
|
'UUID',
|
|
20
21
|
'as_datasource',
|
|
21
22
|
'Struct',
|
|
23
|
+
'to_desc'
|
|
22
24
|
]
|
|
23
25
|
|
|
24
26
|
FLAG_FOR_META = 'describe'
|
|
@@ -26,6 +28,7 @@ FIELDS = "fields"
|
|
|
26
28
|
STRUCT_FIELD = "objectInfos"
|
|
27
29
|
ELE_INFO_FIELD = "elementInfo"
|
|
28
30
|
DATA_FIELD = "json"
|
|
31
|
+
DESC_FIELD = "description"
|
|
29
32
|
|
|
30
33
|
|
|
31
34
|
class BaseField(BaseModel):
|
|
@@ -130,12 +133,50 @@ class Struct(metaclass=StructMeta):
|
|
|
130
133
|
}
|
|
131
134
|
|
|
132
135
|
|
|
136
|
+
def to_desc(data: List[DimensionMemberBean]):
|
|
137
|
+
desc = {}
|
|
138
|
+
for dim in data:
|
|
139
|
+
desc[dim.name] = dim.multilingual.get(OPTION.api.header.get('language', 'en'), dim.name)
|
|
140
|
+
return desc
|
|
141
|
+
|
|
142
|
+
|
|
133
143
|
def _resolve_param(args: tuple):
|
|
134
144
|
if len(args) == 2:
|
|
135
145
|
return args[1]
|
|
136
146
|
if len(args) == 1:
|
|
137
147
|
return args[0]
|
|
138
|
-
raise ValueError("
|
|
148
|
+
raise ValueError("main函数入参数非法")
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def _check_str_dict(data: Dict[str, Dict], value_type):
|
|
152
|
+
if any(not isinstance(k, str) for k in data):
|
|
153
|
+
raise ValueError("字段描述格式非法")
|
|
154
|
+
|
|
155
|
+
if any(not isinstance(v, value_type) for v in data.values()):
|
|
156
|
+
raise ValueError("字段描述格式非法")
|
|
157
|
+
|
|
158
|
+
if value_type == str:
|
|
159
|
+
return
|
|
160
|
+
|
|
161
|
+
for v in data.values():
|
|
162
|
+
_check_str_dict(v, str)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def _resolve_return_value(return_value):
|
|
166
|
+
if isinstance(return_value, tuple) and len(return_value) == 2:
|
|
167
|
+
df, desc = return_value
|
|
168
|
+
if not isinstance(desc, dict):
|
|
169
|
+
raise TypeError("预期字段描述为字典")
|
|
170
|
+
|
|
171
|
+
_check_str_dict(desc, dict)
|
|
172
|
+
|
|
173
|
+
elif isinstance(return_value, pd.DataFrame):
|
|
174
|
+
df = return_value
|
|
175
|
+
desc = {}
|
|
176
|
+
else:
|
|
177
|
+
raise ValueError("预期main函数返回值为pandas DataFrame或pandas DataFrame与字段描述的元组")
|
|
178
|
+
|
|
179
|
+
return df, desc
|
|
139
180
|
|
|
140
181
|
|
|
141
182
|
def as_datasource(
|
|
@@ -145,7 +186,7 @@ def as_datasource(
|
|
|
145
186
|
"""用作DeepUX数据源的main函数装饰器
|
|
146
187
|
|
|
147
188
|
Args:
|
|
148
|
-
func: 返回pandas DataFrame
|
|
189
|
+
func: 返回pandas DataFrame和字段描述(可选)的main方法
|
|
149
190
|
struct: 定义字段及其字段类型的类名称,必填
|
|
150
191
|
|
|
151
192
|
.. admonition:: 用法示例
|
|
@@ -182,11 +223,13 @@ def as_datasource(
|
|
|
182
223
|
if param == FLAG_FOR_META:
|
|
183
224
|
return struct.to_dict()
|
|
184
225
|
|
|
185
|
-
|
|
226
|
+
maybe_df_desc = await func(*args)
|
|
227
|
+
|
|
228
|
+
df, desc = _resolve_return_value(maybe_df_desc)
|
|
186
229
|
|
|
187
230
|
assert isinstance(df, pd.DataFrame), '预期main函数返回值为pandas DataFrame'
|
|
188
231
|
|
|
189
|
-
return {DATA_FIELD: df.to_dict('records')}
|
|
232
|
+
return {DATA_FIELD: df.to_dict('records'), DESC_FIELD: desc}
|
|
190
233
|
else:
|
|
191
234
|
def wrapper(*args):
|
|
192
235
|
param = _resolve_param(args)
|
|
@@ -194,10 +237,12 @@ def as_datasource(
|
|
|
194
237
|
if param == FLAG_FOR_META:
|
|
195
238
|
return struct.to_dict()
|
|
196
239
|
|
|
197
|
-
|
|
240
|
+
maybe_df_desc = func(*args)
|
|
241
|
+
|
|
242
|
+
df, desc = _resolve_return_value(maybe_df_desc)
|
|
198
243
|
|
|
199
244
|
assert isinstance(df, pd.DataFrame), '预期main函数返回值为pandas DataFrame'
|
|
200
245
|
|
|
201
|
-
return {DATA_FIELD: df.to_dict('records')}
|
|
246
|
+
return {DATA_FIELD: df.to_dict('records'), DESC_FIELD: desc}
|
|
202
247
|
|
|
203
248
|
return functools.wraps(func)(wrapper)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|