tallyfy 1.0.6__tar.gz → 1.0.7__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.
Potentially problematic release.
This version of tallyfy might be problematic. Click here for more details.
- {tallyfy-1.0.6 → tallyfy-1.0.7}/CHANGELOG.md +1 -1
- {tallyfy-1.0.6/tallyfy.egg-info → tallyfy-1.0.7}/PKG-INFO +2 -2
- {tallyfy-1.0.6 → tallyfy-1.0.7}/README.md +1 -1
- {tallyfy-1.0.6 → tallyfy-1.0.7}/pyproject.toml +1 -1
- {tallyfy-1.0.6 → tallyfy-1.0.7}/setup.py +1 -1
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/__init__.py +4 -1
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/core.py +6 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/models.py +240 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7/tallyfy.egg-info}/PKG-INFO +2 -2
- {tallyfy-1.0.6 → tallyfy-1.0.7}/.github/workflows/build-whl.yml +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/LICENSE +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/setup.cfg +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/form_fields_management/__init__.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/form_fields_management/base.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/form_fields_management/crud_operations.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/form_fields_management/options_management.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/form_fields_management/suggestions.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/task_management/__init__.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/task_management/base.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/task_management/creation.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/task_management/retrieval.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/task_management/search.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/template_management/__init__.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/template_management/analysis.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/template_management/automation.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/template_management/base.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/template_management/basic_operations.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/template_management/health_assessment.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/user_management/__init__.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/user_management/base.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/user_management/invitation.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy/user_management/retrieval.py +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy.egg-info/SOURCES.txt +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy.egg-info/dependency_links.txt +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy.egg-info/not-zip-safe +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy.egg-info/requires.txt +0 -0
- {tallyfy-1.0.6 → tallyfy-1.0.7}/tallyfy.egg-info/top_level.txt +0 -0
|
@@ -5,7 +5,7 @@ All notable changes to the Tallyfy SDK will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [1.0.
|
|
8
|
+
## [1.0.7] - 2025-07-29
|
|
9
9
|
|
|
10
10
|
### Changed
|
|
11
11
|
- **BREAKING**: Refactored user management from monolithic to modular architecture
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tallyfy
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.7
|
|
4
4
|
Summary: A comprehensive Python SDK for interacting with the Tallyfy API
|
|
5
5
|
Home-page: https://github.com/tallyfy/tallyfy-sdk
|
|
6
6
|
Author: Tallyfy
|
|
@@ -738,5 +738,5 @@ For bugs, feature requests, or questions:
|
|
|
738
738
|
2. Contact us at: support@tallyfy.com
|
|
739
739
|
---
|
|
740
740
|
|
|
741
|
-
**Version:** 1.0.
|
|
741
|
+
**Version:** 1.0.7
|
|
742
742
|
**Last Updated:** 2025
|
|
@@ -8,6 +8,7 @@ from .user_management import UserManager, UserManagement
|
|
|
8
8
|
from .task_management import TaskManager, TaskManagement
|
|
9
9
|
from .template_management import TemplateManager, TemplateManagement
|
|
10
10
|
from .form_fields_management import FormFieldManager, FormFieldManagement
|
|
11
|
+
from .organization_management import OrganizationManager, OrganizationManagement
|
|
11
12
|
|
|
12
13
|
__version__ = "1.0.0"
|
|
13
14
|
__all__ = [
|
|
@@ -20,5 +21,7 @@ __all__ = [
|
|
|
20
21
|
"TemplateManager",
|
|
21
22
|
"TemplateManagement",
|
|
22
23
|
"FormFieldManager",
|
|
23
|
-
"FormFieldManagement"
|
|
24
|
+
"FormFieldManagement",
|
|
25
|
+
"OrganizationManager",
|
|
26
|
+
"OrganizationManagement"
|
|
24
27
|
]
|
|
@@ -152,15 +152,21 @@ class TallyfySDK(BaseSDK):
|
|
|
152
152
|
from .task_management import TaskManager
|
|
153
153
|
from .template_management import TemplateManager
|
|
154
154
|
from .form_fields_management import FormFieldManager
|
|
155
|
+
from .organization_management import OrganizationManager
|
|
155
156
|
|
|
156
157
|
self.users = UserManager(self)
|
|
157
158
|
self.tasks = TaskManager(self)
|
|
158
159
|
self.templates = TemplateManager(self)
|
|
159
160
|
self.form_fields = FormFieldManager(self)
|
|
161
|
+
self.organizations = OrganizationManager(self)
|
|
160
162
|
|
|
161
163
|
def get_current_user_info(self, org_id: str):
|
|
162
164
|
"""Get current user information."""
|
|
163
165
|
return self.users.get_current_user_info(org_id)
|
|
166
|
+
|
|
167
|
+
def get_current_user_organizations(self, page: int = 1, per_page: int = 10):
|
|
168
|
+
"""Get all organizations the current member is a part of."""
|
|
169
|
+
return self.organizations.get_current_user_organizations(page, per_page)
|
|
164
170
|
# Backward compatibility methods - delegate to management modules
|
|
165
171
|
def get_organization_users(self, org_id: str, with_groups: bool = False):
|
|
166
172
|
"""Get all organization members with full profile data."""
|
|
@@ -1056,6 +1056,246 @@ class PaginationMeta:
|
|
|
1056
1056
|
)
|
|
1057
1057
|
|
|
1058
1058
|
|
|
1059
|
+
@dataclass
|
|
1060
|
+
class OrganizationWorkingDays:
|
|
1061
|
+
"""Organization working days configuration"""
|
|
1062
|
+
Monday: Optional[Dict[str, Any]] = None
|
|
1063
|
+
Tuesday: Optional[Dict[str, Any]] = None
|
|
1064
|
+
Wednesday: Optional[Dict[str, Any]] = None
|
|
1065
|
+
Thursday: Optional[Dict[str, Any]] = None
|
|
1066
|
+
Friday: Optional[Dict[str, Any]] = None
|
|
1067
|
+
Saturday: Optional[Dict[str, Any]] = None
|
|
1068
|
+
Sunday: Optional[Dict[str, Any]] = None
|
|
1069
|
+
|
|
1070
|
+
@classmethod
|
|
1071
|
+
def from_dict(cls, data: Dict[str, Any]) -> 'OrganizationWorkingDays':
|
|
1072
|
+
"""Create OrganizationWorkingDays instance from dictionary"""
|
|
1073
|
+
return cls(
|
|
1074
|
+
Monday=data.get('Monday'),
|
|
1075
|
+
Tuesday=data.get('Tuesday'),
|
|
1076
|
+
Wednesday=data.get('Wednesday'),
|
|
1077
|
+
Thursday=data.get('Thursday'),
|
|
1078
|
+
Friday=data.get('Friday'),
|
|
1079
|
+
Saturday=data.get('Saturday'),
|
|
1080
|
+
Sunday=data.get('Sunday')
|
|
1081
|
+
)
|
|
1082
|
+
|
|
1083
|
+
|
|
1084
|
+
@dataclass
|
|
1085
|
+
class OrganizationDefaultDeadline:
|
|
1086
|
+
"""Organization default deadline configuration"""
|
|
1087
|
+
type: str = "days"
|
|
1088
|
+
value: int = 5
|
|
1089
|
+
|
|
1090
|
+
@classmethod
|
|
1091
|
+
def from_dict(cls, data: Dict[str, Any]) -> 'OrganizationDefaultDeadline':
|
|
1092
|
+
"""Create OrganizationDefaultDeadline instance from dictionary"""
|
|
1093
|
+
return cls(
|
|
1094
|
+
type=data.get('type', 'days'),
|
|
1095
|
+
value=data.get('value', 5)
|
|
1096
|
+
)
|
|
1097
|
+
|
|
1098
|
+
|
|
1099
|
+
@dataclass
|
|
1100
|
+
class OrganizationAutoArchive:
|
|
1101
|
+
"""Organization auto archive configuration"""
|
|
1102
|
+
unit: str = "weeks"
|
|
1103
|
+
value: int = 52
|
|
1104
|
+
|
|
1105
|
+
@classmethod
|
|
1106
|
+
def from_dict(cls, data: Dict[str, Any]) -> 'OrganizationAutoArchive':
|
|
1107
|
+
"""Create OrganizationAutoArchive instance from dictionary"""
|
|
1108
|
+
return cls(
|
|
1109
|
+
unit=data.get('unit', 'weeks'),
|
|
1110
|
+
value=data.get('value', 52)
|
|
1111
|
+
)
|
|
1112
|
+
|
|
1113
|
+
|
|
1114
|
+
@dataclass
|
|
1115
|
+
class Organization:
|
|
1116
|
+
"""Organization data model"""
|
|
1117
|
+
id: str
|
|
1118
|
+
name: str
|
|
1119
|
+
industry: Optional[str] = None
|
|
1120
|
+
description: Optional[str] = None
|
|
1121
|
+
address1: Optional[str] = None
|
|
1122
|
+
address2: Optional[str] = None
|
|
1123
|
+
created_on: Optional[str] = None
|
|
1124
|
+
last_updated: Optional[str] = None
|
|
1125
|
+
live_support_enabled: int = 0
|
|
1126
|
+
org_logo: Optional[str] = None
|
|
1127
|
+
settings: Optional[str] = None
|
|
1128
|
+
country: Optional[str] = None
|
|
1129
|
+
state: Optional[str] = None
|
|
1130
|
+
city: Optional[str] = None
|
|
1131
|
+
zipcode: Optional[str] = None
|
|
1132
|
+
users_count: int = 0
|
|
1133
|
+
payment_state: Optional[str] = None
|
|
1134
|
+
team_size: Optional[List[int]] = None
|
|
1135
|
+
signup_survey: Optional[str] = None
|
|
1136
|
+
in_trial: bool = False
|
|
1137
|
+
analytics_enabled: bool = True
|
|
1138
|
+
limit_trial_features: bool = False
|
|
1139
|
+
real_time_billing: bool = True
|
|
1140
|
+
saml_enabled: bool = False
|
|
1141
|
+
saml_login_url: Optional[str] = None
|
|
1142
|
+
sso_default_role: Optional[str] = None
|
|
1143
|
+
preferred_trial_plan: Optional[str] = None
|
|
1144
|
+
google_analytics_id: Optional[str] = None
|
|
1145
|
+
mixpanel_token: Optional[str] = None
|
|
1146
|
+
plan_code: Optional[str] = None
|
|
1147
|
+
auto_join_signups: bool = False
|
|
1148
|
+
home_bg: Optional[str] = None
|
|
1149
|
+
guest_onboarding_snippet: Optional[str] = None
|
|
1150
|
+
maximum_group_assignment_limit: int = 0
|
|
1151
|
+
allow_user_invite: bool = True
|
|
1152
|
+
allow_manage_groups: bool = True
|
|
1153
|
+
working_days: Optional[OrganizationWorkingDays] = None
|
|
1154
|
+
deadline_setting: Optional[str] = None
|
|
1155
|
+
wyiwyg: bool = True
|
|
1156
|
+
cadence_days: Optional[List[str]] = None
|
|
1157
|
+
guest_cadence_days: Optional[List[str]] = None
|
|
1158
|
+
timezone: Optional[str] = None
|
|
1159
|
+
default_deadline: Optional[OrganizationDefaultDeadline] = None
|
|
1160
|
+
auto_archive: bool = False
|
|
1161
|
+
auto_complete_tasks: bool = True
|
|
1162
|
+
auto_complete_task_months: int = 18
|
|
1163
|
+
light_role_error_snippet: Optional[str] = None
|
|
1164
|
+
azure_cognitive_service: Optional[str] = None
|
|
1165
|
+
global_css: Optional[str] = None
|
|
1166
|
+
error_404_template: Optional[str] = None
|
|
1167
|
+
enable_custom_404_error: bool = False
|
|
1168
|
+
enable_custom_smtp: bool = False
|
|
1169
|
+
onboarding_template_id: Optional[str] = None
|
|
1170
|
+
enable_onboarding_template: bool = True
|
|
1171
|
+
disable_min_members_billing: bool = False
|
|
1172
|
+
enable_light_users_billing: bool = False
|
|
1173
|
+
webhook_date_field_format: str = "yyyy-MM-ddTHH:mm:ssZ"
|
|
1174
|
+
purpose: Optional[str] = None
|
|
1175
|
+
process_today: Optional[str] = None
|
|
1176
|
+
restrict_blueprint_permissions: bool = False
|
|
1177
|
+
auto_archive_processes_after: Optional[OrganizationAutoArchive] = None
|
|
1178
|
+
use_generative_ai: bool = True
|
|
1179
|
+
homepage_snippet: Optional[str] = None
|
|
1180
|
+
onboarding_snippet: Optional[str] = None
|
|
1181
|
+
disabled_on: Optional[str] = None
|
|
1182
|
+
last_accessed: Optional[str] = None
|
|
1183
|
+
user_role: Optional[str] = None
|
|
1184
|
+
|
|
1185
|
+
def __post_init__(self):
|
|
1186
|
+
"""Initialize empty lists if None"""
|
|
1187
|
+
if self.team_size is None:
|
|
1188
|
+
self.team_size = []
|
|
1189
|
+
if self.cadence_days is None:
|
|
1190
|
+
self.cadence_days = []
|
|
1191
|
+
if self.guest_cadence_days is None:
|
|
1192
|
+
self.guest_cadence_days = []
|
|
1193
|
+
|
|
1194
|
+
@classmethod
|
|
1195
|
+
def from_dict(cls, data: Dict[str, Any]) -> 'Organization':
|
|
1196
|
+
"""Create Organization instance from dictionary"""
|
|
1197
|
+
working_days_data = data.get('working_days')
|
|
1198
|
+
working_days = OrganizationWorkingDays.from_dict(working_days_data) if working_days_data else None
|
|
1199
|
+
|
|
1200
|
+
default_deadline_data = data.get('default_deadline')
|
|
1201
|
+
default_deadline = OrganizationDefaultDeadline.from_dict(default_deadline_data) if default_deadline_data else None
|
|
1202
|
+
|
|
1203
|
+
auto_archive_processes_after_data = data.get('auto_archive_processes_after')
|
|
1204
|
+
auto_archive_processes_after = OrganizationAutoArchive.from_dict(auto_archive_processes_after_data) if auto_archive_processes_after_data else None
|
|
1205
|
+
|
|
1206
|
+
return cls(
|
|
1207
|
+
id=data.get('id', ''),
|
|
1208
|
+
name=data.get('name', ''),
|
|
1209
|
+
industry=data.get('industry'),
|
|
1210
|
+
description=data.get('description'),
|
|
1211
|
+
address1=data.get('address1'),
|
|
1212
|
+
address2=data.get('address2'),
|
|
1213
|
+
created_on=data.get('created_on'),
|
|
1214
|
+
last_updated=data.get('last_updated'),
|
|
1215
|
+
live_support_enabled=data.get('live_support_enabled', 0),
|
|
1216
|
+
org_logo=data.get('org_logo'),
|
|
1217
|
+
settings=data.get('settings'),
|
|
1218
|
+
country=data.get('country'),
|
|
1219
|
+
state=data.get('state'),
|
|
1220
|
+
city=data.get('city'),
|
|
1221
|
+
zipcode=data.get('zipcode'),
|
|
1222
|
+
users_count=data.get('users_count', 0),
|
|
1223
|
+
payment_state=data.get('payment_state'),
|
|
1224
|
+
team_size=data.get('team_size', []),
|
|
1225
|
+
signup_survey=data.get('signup_survey'),
|
|
1226
|
+
in_trial=data.get('in_trial', False),
|
|
1227
|
+
analytics_enabled=data.get('analytics_enabled', True),
|
|
1228
|
+
limit_trial_features=data.get('limit_trial_features', False),
|
|
1229
|
+
real_time_billing=data.get('real_time_billing', True),
|
|
1230
|
+
saml_enabled=data.get('saml_enabled', False),
|
|
1231
|
+
saml_login_url=data.get('saml_login_url'),
|
|
1232
|
+
sso_default_role=data.get('sso_default_role'),
|
|
1233
|
+
preferred_trial_plan=data.get('preferred_trial_plan'),
|
|
1234
|
+
google_analytics_id=data.get('google_analytics_id'),
|
|
1235
|
+
mixpanel_token=data.get('mixpanel_token'),
|
|
1236
|
+
plan_code=data.get('plan_code'),
|
|
1237
|
+
auto_join_signups=data.get('auto_join_signups', False),
|
|
1238
|
+
home_bg=data.get('home_bg'),
|
|
1239
|
+
guest_onboarding_snippet=data.get('guest_onboarding_snippet'),
|
|
1240
|
+
maximum_group_assignment_limit=data.get('maximum_group_assignment_limit', 0),
|
|
1241
|
+
allow_user_invite=data.get('allow_user_invite', True),
|
|
1242
|
+
allow_manage_groups=data.get('allow_manage_groups', True),
|
|
1243
|
+
working_days=working_days,
|
|
1244
|
+
deadline_setting=data.get('deadline_setting'),
|
|
1245
|
+
wyiwyg=data.get('wyiwyg', True),
|
|
1246
|
+
cadence_days=data.get('cadence_days', []),
|
|
1247
|
+
guest_cadence_days=data.get('guest_cadence_days', []),
|
|
1248
|
+
timezone=data.get('timezone'),
|
|
1249
|
+
default_deadline=default_deadline,
|
|
1250
|
+
auto_archive=data.get('auto_archive', False),
|
|
1251
|
+
auto_complete_tasks=data.get('auto_complete_tasks', True),
|
|
1252
|
+
auto_complete_task_months=data.get('auto_complete_task_months', 18),
|
|
1253
|
+
light_role_error_snippet=data.get('light_role_error_snippet'),
|
|
1254
|
+
azure_cognitive_service=data.get('azure_cognitive_service'),
|
|
1255
|
+
global_css=data.get('global_css'),
|
|
1256
|
+
error_404_template=data.get('error_404_template'),
|
|
1257
|
+
enable_custom_404_error=data.get('enable_custom_404_error', False),
|
|
1258
|
+
enable_custom_smtp=data.get('enable_custom_smtp', False),
|
|
1259
|
+
onboarding_template_id=data.get('onboarding_template_id'),
|
|
1260
|
+
enable_onboarding_template=data.get('enable_onboarding_template', True),
|
|
1261
|
+
disable_min_members_billing=data.get('disable_min_members_billing', False),
|
|
1262
|
+
enable_light_users_billing=data.get('enable_light_users_billing', False),
|
|
1263
|
+
webhook_date_field_format=data.get('webhook_date_field_format', 'yyyy-MM-ddTHH:mm:ssZ'),
|
|
1264
|
+
purpose=data.get('purpose'),
|
|
1265
|
+
process_today=data.get('process_today'),
|
|
1266
|
+
restrict_blueprint_permissions=data.get('restrict_blueprint_permissions', False),
|
|
1267
|
+
auto_archive_processes_after=auto_archive_processes_after,
|
|
1268
|
+
use_generative_ai=data.get('use_generative_ai', True),
|
|
1269
|
+
homepage_snippet=data.get('homepage_snippet'),
|
|
1270
|
+
onboarding_snippet=data.get('onboarding_snippet'),
|
|
1271
|
+
disabled_on=data.get('disabled_on'),
|
|
1272
|
+
last_accessed=data.get('last_accessed'),
|
|
1273
|
+
user_role=data.get('user_role')
|
|
1274
|
+
)
|
|
1275
|
+
|
|
1276
|
+
|
|
1277
|
+
@dataclass
|
|
1278
|
+
class OrganizationsList:
|
|
1279
|
+
"""Organizations list response with pagination"""
|
|
1280
|
+
data: List[Organization]
|
|
1281
|
+
meta: PaginationMeta
|
|
1282
|
+
|
|
1283
|
+
@classmethod
|
|
1284
|
+
def from_dict(cls, data: Dict[str, Any]) -> 'OrganizationsList':
|
|
1285
|
+
"""Create OrganizationsList instance from dictionary"""
|
|
1286
|
+
organizations_data = data.get('data', [])
|
|
1287
|
+
organizations = [Organization.from_dict(org_data) for org_data in organizations_data]
|
|
1288
|
+
|
|
1289
|
+
meta_data = data.get('meta', {})
|
|
1290
|
+
pagination_meta = meta_data.get('pagination', {})
|
|
1291
|
+
meta = PaginationMeta.from_dict(pagination_meta)
|
|
1292
|
+
|
|
1293
|
+
return cls(
|
|
1294
|
+
data=organizations,
|
|
1295
|
+
meta=meta
|
|
1296
|
+
)
|
|
1297
|
+
|
|
1298
|
+
|
|
1059
1299
|
@dataclass
|
|
1060
1300
|
class TemplatesList:
|
|
1061
1301
|
"""Templates list response with pagination"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tallyfy
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.7
|
|
4
4
|
Summary: A comprehensive Python SDK for interacting with the Tallyfy API
|
|
5
5
|
Home-page: https://github.com/tallyfy/tallyfy-sdk
|
|
6
6
|
Author: Tallyfy
|
|
@@ -738,5 +738,5 @@ For bugs, feature requests, or questions:
|
|
|
738
738
|
2. Contact us at: support@tallyfy.com
|
|
739
739
|
---
|
|
740
740
|
|
|
741
|
-
**Version:** 1.0.
|
|
741
|
+
**Version:** 1.0.7
|
|
742
742
|
**Last Updated:** 2025
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|