medicafe 0.250813.2__tar.gz → 0.250814.3__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.
- medicafe-0.250814.3/MANIFEST.in +24 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot.bat +1 -1
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot.py +1 -1
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot_Preprocessor_lib.py +21 -5
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot_UI.py +13 -1
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/__init__.py +1 -1
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/update_medicafe.py +69 -7
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/__init__.py +1 -1
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/__init__.py +1 -1
- {medicafe-0.250813.2/medicafe.egg-info → medicafe-0.250814.3}/PKG-INFO +1 -1
- {medicafe-0.250813.2 → medicafe-0.250814.3/medicafe.egg-info}/PKG-INFO +1 -1
- {medicafe-0.250813.2 → medicafe-0.250814.3}/setup.py +2 -2
- medicafe-0.250813.2/MANIFEST.in +0 -4
- {medicafe-0.250813.2 → medicafe-0.250814.3}/LICENSE +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot_Charges.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot_Crosswalk_Library.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot_Crosswalk_Utils.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot_Post.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot_Preprocessor.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot_dataformat_library.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot_docx_decoder.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/MediBot_smart_import.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/get_medicafe_version.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediBot/update_json.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/MediLink_ConfigLoader.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/__main__.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/api_core.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/api_core_backup.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/api_factory.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/api_utils.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/core_utils.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/graphql_utils.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/logging_config.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/logging_demo.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/migration_helpers.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/smart_import.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediCafe/submission_index.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/InsuranceTypeService.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_837p_cob_library.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_837p_encoder.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_837p_encoder_library.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_837p_utilities.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_API_Generator.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Azure.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_ClaimStatus.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_DataMgmt.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Decoder.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Deductible.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Deductible_Validator.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Display_Utils.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Down.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Gmail.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Mailer.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Parser.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_PatientProcessor.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Scan.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Scheduler.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_UI.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_Up.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_insurance_utils.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_main.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/MediLink_smart_import.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/Soumit_api.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/gmail_http_utils.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/gmail_oauth_utils.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/insurance_type_integration_test.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/openssl.cnf +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/test.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/test_cob_library.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/test_timing.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/test_validation.py +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/MediLink/webapp.html +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/README.md +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/medicafe.egg-info/SOURCES.txt +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/medicafe.egg-info/dependency_links.txt +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/medicafe.egg-info/entry_points.txt +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/medicafe.egg-info/not-zip-safe +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/medicafe.egg-info/requires.txt +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/medicafe.egg-info/top_level.txt +0 -0
- {medicafe-0.250813.2 → medicafe-0.250814.3}/setup.cfg +0 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
include MediBot/MediBot.bat
|
2
|
+
include MediLink/openssl.cnf
|
3
|
+
include MediLink/*.html
|
4
|
+
include MediCafe/*.py
|
5
|
+
|
6
|
+
# Exclude CSV files and other data files that slow down the build
|
7
|
+
exclude *.csv
|
8
|
+
exclude *.log
|
9
|
+
exclude *.tmp
|
10
|
+
exclude *.bak
|
11
|
+
exclude __pycache__/*
|
12
|
+
exclude *.pyc
|
13
|
+
exclude *.pyo
|
14
|
+
exclude .git/*
|
15
|
+
exclude .gitignore
|
16
|
+
exclude .DS_Store
|
17
|
+
exclude Thumbs.db
|
18
|
+
exclude archive/*
|
19
|
+
exclude ERA_TEST_DUMP/*
|
20
|
+
exclude input/*
|
21
|
+
exclude tmpdl/*
|
22
|
+
exclude json/*
|
23
|
+
exclude docs/reports/*
|
24
|
+
exclude Installers/*
|
@@ -772,7 +772,7 @@ if "!internet_available!"=="0" (
|
|
772
772
|
pause >nul
|
773
773
|
goto troubleshooting_menu
|
774
774
|
)
|
775
|
-
set "rollback_version=0.
|
775
|
+
set "rollback_version=0.250813.1"
|
776
776
|
echo Forcing reinstall of %medicafe_package%==%rollback_version% with no dependencies...
|
777
777
|
python -m pip install --no-deps --force-reinstall %medicafe_package%==%rollback_version%
|
778
778
|
if errorlevel 1 (
|
@@ -633,7 +633,7 @@ if __name__ == "__main__":
|
|
633
633
|
# Display existing patients table using the enhanced display function
|
634
634
|
MediBot_UI.display_enhanced_patient_table(
|
635
635
|
patient_info,
|
636
|
-
"NOTE: The following patient(s) already EXIST in the system but have new dates of service.\n Their diagnosis codes
|
636
|
+
"NOTE: The following patient(s) already EXIST in the system but may have new dates of service.\n Their diagnosis codes may need to be updated manually by the user to the following list:",
|
637
637
|
show_line_numbers=False
|
638
638
|
)
|
639
639
|
|
@@ -547,7 +547,18 @@ def sort_and_deduplicate(csv_data):
|
|
547
547
|
|
548
548
|
# Store the surgery dates information in the first row of each patient for later access
|
549
549
|
for patient_id, row in unique_patients.items():
|
550
|
-
|
550
|
+
# Convert surgery dates to strings for consistent storage
|
551
|
+
surgery_date_strings = []
|
552
|
+
for date in patient_surgery_dates[patient_id]:
|
553
|
+
if isinstance(date, datetime):
|
554
|
+
if date == datetime.min:
|
555
|
+
surgery_date_strings.append('MISSING')
|
556
|
+
else:
|
557
|
+
surgery_date_strings.append(date.strftime('%m-%d-%Y'))
|
558
|
+
else:
|
559
|
+
surgery_date_strings.append(str(date) if date else 'MISSING')
|
560
|
+
|
561
|
+
row['_all_surgery_dates'] = sorted(surgery_date_strings)
|
551
562
|
row['_primary_surgery_date'] = row['Surgery Date'] # Keep track of which date has the demographics
|
552
563
|
|
553
564
|
# Convert the unique_patients dictionary back to a list and sort it
|
@@ -565,7 +576,7 @@ def combine_fields(csv_data):
|
|
565
576
|
if surgery_date == datetime.min:
|
566
577
|
row['Surgery Date'] = 'MISSING'
|
567
578
|
else:
|
568
|
-
row['Surgery Date'] = surgery_date.strftime('%m
|
579
|
+
row['Surgery Date'] = surgery_date.strftime('%m-%d-%Y')
|
569
580
|
elif surgery_date:
|
570
581
|
# Already a non-empty string
|
571
582
|
row['Surgery Date'] = str(surgery_date)
|
@@ -1162,17 +1173,22 @@ def update_diagnosis_codes(csv_data):
|
|
1162
1173
|
diagnosis_code, medisoft_shorthand), level="WARNING")
|
1163
1174
|
MediLink_ConfigLoader.log("Converted diagnosis code to Medisoft shorthand: {}".format(medisoft_shorthand), level="DEBUG")
|
1164
1175
|
|
1165
|
-
surgery_date_to_diagnosis[
|
1176
|
+
surgery_date_to_diagnosis[surgery_date_str] = medisoft_shorthand
|
1166
1177
|
else:
|
1167
1178
|
MediLink_ConfigLoader.log("No matching surgery date found for Patient ID: {} on date {}.".format(patient_id, surgery_date_str), level="INFO")
|
1168
|
-
surgery_date_to_diagnosis[
|
1179
|
+
surgery_date_to_diagnosis[surgery_date_str] = 'N/A'
|
1169
1180
|
|
1170
1181
|
# Store the diagnosis mapping for all surgery dates
|
1171
1182
|
row['_surgery_date_to_diagnosis'] = surgery_date_to_diagnosis
|
1172
1183
|
|
1173
1184
|
# Set the primary diagnosis code (for the main surgery date)
|
1174
1185
|
primary_surgery_date = row.get('Surgery Date')
|
1175
|
-
|
1186
|
+
# Convert primary surgery date to string for lookup
|
1187
|
+
if isinstance(primary_surgery_date, datetime):
|
1188
|
+
primary_surgery_date_str = primary_surgery_date.strftime('%m-%d-%Y')
|
1189
|
+
else:
|
1190
|
+
primary_surgery_date_str = str(primary_surgery_date)
|
1191
|
+
primary_diagnosis = surgery_date_to_diagnosis.get(primary_surgery_date_str, 'N/A')
|
1176
1192
|
row['Default Diagnosis #1'] = primary_diagnosis
|
1177
1193
|
|
1178
1194
|
updated_count += 1
|
@@ -2,6 +2,7 @@
|
|
2
2
|
import ctypes, time, re
|
3
3
|
from ctypes import wintypes
|
4
4
|
from sys import exit
|
5
|
+
from datetime import datetime
|
5
6
|
|
6
7
|
# Set up paths using core utilities
|
7
8
|
|
@@ -62,7 +63,18 @@ def display_enhanced_patient_table(patient_info, title, show_line_numbers=True):
|
|
62
63
|
for surgery_date, patient_name, patient_id, diagnosis_code, patient_row in patient_info:
|
63
64
|
# Format surgery_date safely whether it's a datetime/date or a string
|
64
65
|
try:
|
65
|
-
|
66
|
+
if isinstance(surgery_date, datetime):
|
67
|
+
formatted_date = surgery_date.strftime('%m-%d')
|
68
|
+
else:
|
69
|
+
# Handle string dates - this should be the Surgery Date Display field
|
70
|
+
formatted_date = str(surgery_date)
|
71
|
+
# If it's a date string like "12-25-2023", format it as "12-25"
|
72
|
+
if '-' in formatted_date and len(formatted_date.split('-')) == 3:
|
73
|
+
try:
|
74
|
+
parts = formatted_date.split('-')
|
75
|
+
formatted_date = "{}-{}".format(parts[0], parts[1])
|
76
|
+
except:
|
77
|
+
pass # Use original string if parsing fails
|
66
78
|
except Exception:
|
67
79
|
formatted_date = str(surgery_date)
|
68
80
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#update_medicafe.py
|
2
|
+
# Version: 1.0.0
|
2
3
|
import subprocess, sys, time, platform, os, shutil, random
|
3
4
|
|
4
5
|
# Safe import for pkg_resources with fallback
|
@@ -305,6 +306,7 @@ def upgrade_package(package, retries=4, delay=2, target_version=None): # Update
|
|
305
306
|
def get_installed_version_fresh(package):
|
306
307
|
"""Get installed version using a fresh subprocess to avoid pkg_resources cache issues."""
|
307
308
|
try:
|
309
|
+
# First try pip show
|
308
310
|
process = subprocess.Popen(
|
309
311
|
[sys.executable, '-m', 'pip', 'show', package],
|
310
312
|
stdout=subprocess.PIPE,
|
@@ -315,6 +317,21 @@ def upgrade_package(package, retries=4, delay=2, target_version=None): # Update
|
|
315
317
|
for line in stdout.decode().splitlines():
|
316
318
|
if line.startswith("Version:"):
|
317
319
|
return line.split(":", 1)[1].strip()
|
320
|
+
|
321
|
+
# If pip show fails, try pkg_resources in a fresh subprocess
|
322
|
+
try:
|
323
|
+
import subprocess
|
324
|
+
process = subprocess.Popen(
|
325
|
+
[sys.executable, '-c', 'import pkg_resources; print(pkg_resources.get_distribution("{}").version)'.format(package)],
|
326
|
+
stdout=subprocess.PIPE,
|
327
|
+
stderr=subprocess.PIPE
|
328
|
+
)
|
329
|
+
stdout, stderr = process.communicate()
|
330
|
+
if process.returncode == 0:
|
331
|
+
return stdout.decode().strip()
|
332
|
+
except Exception:
|
333
|
+
pass
|
334
|
+
|
318
335
|
return None
|
319
336
|
except Exception as e:
|
320
337
|
print("Warning: Could not get fresh version: {}".format(e))
|
@@ -335,17 +352,40 @@ def upgrade_package(package, retries=4, delay=2, target_version=None): # Update
|
|
335
352
|
|
336
353
|
if process.returncode == 0:
|
337
354
|
print(stdout.decode().strip())
|
338
|
-
# Add delay to allow file system to settle
|
339
|
-
|
340
|
-
|
355
|
+
# Add longer delay to allow file system and package metadata to settle
|
356
|
+
print("Waiting for package metadata to update...")
|
357
|
+
time.sleep(3)
|
358
|
+
|
359
|
+
# Try multiple times to get the new version with increasing delays
|
360
|
+
new_version = None
|
361
|
+
for retry in range(3):
|
362
|
+
# Clear pkg_resources cache before each attempt
|
363
|
+
if pkg_resources:
|
364
|
+
try:
|
365
|
+
pkg_resources.working_set = pkg_resources.WorkingSet()
|
366
|
+
except Exception:
|
367
|
+
pass
|
368
|
+
|
369
|
+
new_version = get_installed_version_fresh(package)
|
370
|
+
if new_version:
|
371
|
+
print("Detected new version: {}".format(new_version))
|
372
|
+
break
|
373
|
+
print("Version detection attempt {} failed, retrying...".format(retry + 1))
|
374
|
+
time.sleep(2)
|
375
|
+
|
341
376
|
expected_version = target_version or get_latest_version(package)
|
342
377
|
|
343
378
|
if expected_version and new_version and compare_versions(new_version, expected_version) >= 0:
|
344
379
|
print_status("Attempt {}: Upgrade succeeded with {}!".format(attempt, strategy_name), "SUCCESS")
|
345
380
|
return True
|
381
|
+
elif new_version:
|
382
|
+
print_status("Upgrade may have succeeded but version mismatch. Current: {} Expected: {}".format(
|
383
|
+
new_version, expected_version), "WARNING")
|
384
|
+
# If we got a new version but it doesn't match expected, still consider it a success
|
385
|
+
# as the package was updated
|
386
|
+
return True
|
346
387
|
else:
|
347
|
-
print_status("Upgrade incomplete.
|
348
|
-
new_version or "unknown", expected_version), "WARNING")
|
388
|
+
print_status("Upgrade incomplete. Could not detect new version.", "WARNING")
|
349
389
|
return False
|
350
390
|
else:
|
351
391
|
print(stderr.decode().strip())
|
@@ -604,10 +644,19 @@ def main():
|
|
604
644
|
if upgrade_package(package, target_version=latest_version):
|
605
645
|
# STEP 8: Verify upgrade
|
606
646
|
debug_step(8, "Upgrade Verification")
|
647
|
+
|
648
|
+
# Clear cache and wait for package metadata to settle
|
649
|
+
if pkg_resources:
|
650
|
+
try:
|
651
|
+
pkg_resources.working_set = pkg_resources.WorkingSet()
|
652
|
+
except Exception:
|
653
|
+
pass
|
654
|
+
|
655
|
+
time.sleep(2)
|
607
656
|
new_version = get_installed_version(package)
|
608
657
|
print("New installed version: {}".format(new_version))
|
609
658
|
|
610
|
-
if compare_versions(new_version, latest_version) >= 0:
|
659
|
+
if new_version and compare_versions(new_version, latest_version) >= 0:
|
611
660
|
print_status("Upgrade successful. New version: {}".format(new_version), "SUCCESS")
|
612
661
|
|
613
662
|
# DEBUG STEP 9: Clear cache
|
@@ -619,8 +668,21 @@ def main():
|
|
619
668
|
print_status("Cache clearing failed, but update was successful.", "WARNING")
|
620
669
|
|
621
670
|
print_final_result(True, "Successfully upgraded to version {}".format(new_version))
|
671
|
+
elif new_version:
|
672
|
+
print_status("Upgrade completed but version verification unclear. New version: {}".format(new_version), "WARNING")
|
673
|
+
print_status("The package was updated, but version comparison failed. This may be due to caching issues.", "WARNING")
|
674
|
+
|
675
|
+
# Still clear cache and exit successfully
|
676
|
+
debug_step(9, "Cache Clearing")
|
677
|
+
print_status("Clearing Python cache to prevent import issues...", "INFO")
|
678
|
+
if clear_python_cache():
|
679
|
+
print_status("Cache cleared successfully. Update complete.", "SUCCESS")
|
680
|
+
else:
|
681
|
+
print_status("Cache clearing failed, but update was successful.", "WARNING")
|
682
|
+
|
683
|
+
print_final_result(True, "Package updated (version verification unclear)")
|
622
684
|
else:
|
623
|
-
print_status("Upgrade failed.
|
685
|
+
print_status("Upgrade verification failed. Could not detect new version.", "ERROR")
|
624
686
|
print_final_result(False, "Upgrade verification failed")
|
625
687
|
else:
|
626
688
|
print_final_result(False, "Upgrade process failed")
|
@@ -54,7 +54,7 @@ if long_description_text is None:
|
|
54
54
|
|
55
55
|
setup(
|
56
56
|
name='medicafe',
|
57
|
-
version="0.
|
57
|
+
version="0.250814.3",
|
58
58
|
description='MediCafe',
|
59
59
|
long_description=long_description_text,
|
60
60
|
long_description_content_type='text/markdown',
|
@@ -74,7 +74,7 @@ setup(
|
|
74
74
|
'Operating System :: OS Independent',
|
75
75
|
],
|
76
76
|
packages=find_packages(include=['MediCafe', 'MediCafe.*', 'MediBot', 'MediBot.*', 'MediLink', 'MediLink.*']),
|
77
|
-
include_package_data=
|
77
|
+
include_package_data=False, # Disable automatic inclusion to prevent CSV files from being included
|
78
78
|
package_data={
|
79
79
|
'MediBot': ['MediBot.bat'],
|
80
80
|
'MediLink': ['openssl.cnf', '*.html']
|
medicafe-0.250813.2/MANIFEST.in
DELETED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|