medicafe 0.251027.1__tar.gz → 0.251027.2__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 medicafe might be problematic. Click here for more details.
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot.bat +36 -6
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/__init__.py +1 -1
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/__init__.py +1 -1
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/__main__.py +6 -4
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/error_reporter.py +95 -4
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/__init__.py +1 -1
- {medicafe-0.251027.1/medicafe.egg-info → medicafe-0.251027.2}/PKG-INFO +1 -1
- {medicafe-0.251027.1 → medicafe-0.251027.2/medicafe.egg-info}/PKG-INFO +1 -1
- {medicafe-0.251027.1 → medicafe-0.251027.2}/setup.py +1 -1
- {medicafe-0.251027.1 → medicafe-0.251027.2}/LICENSE +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MANIFEST.in +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_Charges.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_Crosswalk_Library.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_Crosswalk_Utils.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_Notepad_Utils.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_Post.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_Preprocessor.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_Preprocessor_lib.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_UI.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_dataformat_library.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_debug.bat +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_docx_decoder.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/MediBot_smart_import.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/clear_cache.bat +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/crash_diagnostic.bat +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/f_drive_diagnostic.bat +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/full_debug_suite.bat +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/get_medicafe_version.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/process_csvs.bat +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/update_json.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediBot/update_medicafe.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/MediLink_ConfigLoader.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/api_core.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/api_factory.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/api_utils.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/core_utils.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/deductible_utils.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/graphql_utils.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/logging_config.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/logging_demo.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/migration_helpers.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/smart_import.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediCafe/submission_index.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/InsuranceTypeService.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_837p_cob_library.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_837p_encoder.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_837p_encoder_library.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_837p_utilities.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_API_Generator.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Azure.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Charges.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_ClaimStatus.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_DataMgmt.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Decoder.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Deductible.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Deductible_Validator.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Display_Utils.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Down.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Gmail.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Mailer.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Parser.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_PatientProcessor.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Scan.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Scheduler.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_UI.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_Up.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_insurance_utils.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_main.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/MediLink_smart_import.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/Soumit_api.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/gmail_http_utils.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/gmail_oauth_utils.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/openssl.cnf +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/test.py +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/MediLink/webapp.html +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/README.md +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/medicafe.egg-info/SOURCES.txt +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/medicafe.egg-info/dependency_links.txt +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/medicafe.egg-info/entry_points.txt +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/medicafe.egg-info/not-zip-safe +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/medicafe.egg-info/requires.txt +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/medicafe.egg-info/top_level.txt +0 -0
- {medicafe-0.251027.1 → medicafe-0.251027.2}/setup.cfg +0 -0
|
@@ -729,18 +729,20 @@ echo 1. Open Latest Log File
|
|
|
729
729
|
echo 2. Open WinSCP Logs
|
|
730
730
|
echo 3. Clear Python Cache
|
|
731
731
|
echo 4. Toggle Performance Logging ^(session^)
|
|
732
|
-
echo 5.
|
|
733
|
-
echo 6.
|
|
734
|
-
echo 7.
|
|
732
|
+
echo 5. Send TEST error report (email)
|
|
733
|
+
echo 6. Forced MediCafe version rollback
|
|
734
|
+
echo 7. Process CSV Files
|
|
735
|
+
echo 8. Back to Main Menu
|
|
735
736
|
echo.
|
|
736
737
|
set /p tchoice=Enter your choice:
|
|
737
738
|
if "%tchoice%"=="1" goto open_latest_log
|
|
738
739
|
if "%tchoice%"=="2" goto open_winscp_logs
|
|
739
740
|
if "%tchoice%"=="3" goto clear_cache_menu
|
|
740
741
|
if "%tchoice%"=="4" goto toggle_perf_logging
|
|
741
|
-
if "%tchoice%"=="5" goto
|
|
742
|
-
if "%tchoice%"=="6" goto
|
|
743
|
-
if "%tchoice%"=="7" goto
|
|
742
|
+
if "%tchoice%"=="5" goto send_test_error_report
|
|
743
|
+
if "%tchoice%"=="6" goto forced_version_rollback
|
|
744
|
+
if "%tchoice%"=="7" goto process_csvs
|
|
745
|
+
if "%tchoice%"=="8" goto main_menu
|
|
744
746
|
echo Invalid choice. Please try again.
|
|
745
747
|
pause
|
|
746
748
|
goto troubleshooting_menu
|
|
@@ -788,6 +790,34 @@ if "%_winscp_found%"=="0" (
|
|
|
788
790
|
pause >nul
|
|
789
791
|
goto troubleshooting_menu
|
|
790
792
|
|
|
793
|
+
:::: Send TEST error report via MediCafe CLI
|
|
794
|
+
:send_test_error_report
|
|
795
|
+
cls
|
|
796
|
+
echo ========================================
|
|
797
|
+
echo Send TEST Error Report (no real traceback)
|
|
798
|
+
echo ========================================
|
|
799
|
+
echo.
|
|
800
|
+
if "!internet_available!"=="0" (
|
|
801
|
+
echo [WARNING] No internet connection available.
|
|
802
|
+
echo This feature requires internet to email the test report.
|
|
803
|
+
pause >nul
|
|
804
|
+
goto troubleshooting_menu
|
|
805
|
+
)
|
|
806
|
+
echo Building and sending test bundle via MediCafe...
|
|
807
|
+
cd /d "%~dp0.."
|
|
808
|
+
python -m MediCafe send_test_error_report
|
|
809
|
+
if errorlevel 1 (
|
|
810
|
+
echo.
|
|
811
|
+
echo [ERROR] Test error report failed to send.
|
|
812
|
+
echo The bundle, if created, remains in reports_queue for manual retry.
|
|
813
|
+
pause >nul
|
|
814
|
+
goto troubleshooting_menu
|
|
815
|
+
)
|
|
816
|
+
echo.
|
|
817
|
+
echo [OK] Test error report sent.
|
|
818
|
+
pause >nul
|
|
819
|
+
goto troubleshooting_menu
|
|
820
|
+
|
|
791
821
|
::: End Script
|
|
792
822
|
:end_script
|
|
793
823
|
echo Exiting MediBot
|
|
@@ -15,6 +15,7 @@ Commands:
|
|
|
15
15
|
claims_status - Run United Claims Status checker
|
|
16
16
|
deductible - Run United Deductible checker
|
|
17
17
|
download_emails - Run email download functionality
|
|
18
|
+
send_test_error_report - Create and email a TEST support bundle
|
|
18
19
|
version - Show MediCafe version information
|
|
19
20
|
|
|
20
21
|
The entry point preserves user choices and navigational flow from the
|
|
@@ -252,9 +253,6 @@ def run_download_emails():
|
|
|
252
253
|
except ImportError as e:
|
|
253
254
|
print("Error: Unable to import MediLink_Gmail: {}".format(e))
|
|
254
255
|
return 1
|
|
255
|
-
except Exception as e:
|
|
256
|
-
print("Error running email download: {}".format(e))
|
|
257
|
-
return 1
|
|
258
256
|
|
|
259
257
|
def show_version():
|
|
260
258
|
"""Show MediCafe version information"""
|
|
@@ -280,7 +278,7 @@ def main():
|
|
|
280
278
|
|
|
281
279
|
parser.add_argument(
|
|
282
280
|
'command',
|
|
283
|
-
choices=['medibot', 'medilink', 'claims_status', 'deductible', 'download_emails', 'version'],
|
|
281
|
+
choices=['medibot', 'medilink', 'claims_status', 'deductible', 'download_emails', 'send_test_error_report', 'version'],
|
|
284
282
|
help='Command to execute'
|
|
285
283
|
)
|
|
286
284
|
|
|
@@ -309,6 +307,10 @@ def main():
|
|
|
309
307
|
return run_deductible()
|
|
310
308
|
elif args.command == 'download_emails':
|
|
311
309
|
return run_download_emails()
|
|
310
|
+
elif args.command == 'send_test_error_report':
|
|
311
|
+
# Import lazily and call directly to avoid middlemen
|
|
312
|
+
from MediCafe.error_reporter import email_test_error_report_flow
|
|
313
|
+
return email_test_error_report_flow()
|
|
312
314
|
elif args.command == 'version':
|
|
313
315
|
return show_version()
|
|
314
316
|
else:
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import base64
|
|
2
|
-
import hashlib
|
|
3
2
|
import json
|
|
4
3
|
import os
|
|
5
4
|
import platform
|
|
@@ -8,6 +7,7 @@ import time
|
|
|
8
7
|
import zipfile
|
|
9
8
|
|
|
10
9
|
import requests
|
|
10
|
+
import traceback
|
|
11
11
|
|
|
12
12
|
from email.mime.application import MIMEApplication
|
|
13
13
|
from email.mime.multipart import MIMEMultipart
|
|
@@ -127,7 +127,7 @@ def collect_support_bundle(include_traceback=True, max_log_lines=500):
|
|
|
127
127
|
except Exception:
|
|
128
128
|
traceback_txt = ''
|
|
129
129
|
|
|
130
|
-
meta = {
|
|
130
|
+
meta = {
|
|
131
131
|
'app_version': _safe_ascii(_get_version()),
|
|
132
132
|
'python_version': _safe_ascii(sys.version.split(' ')[0]),
|
|
133
133
|
'platform': _safe_ascii(platform.platform()),
|
|
@@ -167,6 +167,79 @@ meta = {
|
|
|
167
167
|
return zip_path
|
|
168
168
|
|
|
169
169
|
|
|
170
|
+
def collect_test_support_bundle(max_log_lines=500):
|
|
171
|
+
"""
|
|
172
|
+
Build a support bundle using the latest available logs and a placeholder
|
|
173
|
+
(fake) traceback to exercise the reporting pipeline without exposing
|
|
174
|
+
real exception data.
|
|
175
|
+
|
|
176
|
+
Returns absolute path to the created ZIP, or None on failure.
|
|
177
|
+
"""
|
|
178
|
+
try:
|
|
179
|
+
config, _ = load_configuration()
|
|
180
|
+
medi = config.get('MediLink_Config', {})
|
|
181
|
+
local_storage_path = medi.get('local_storage_path', '.')
|
|
182
|
+
queue_dir = os.path.join(local_storage_path, 'reports_queue')
|
|
183
|
+
_ensure_dir(queue_dir)
|
|
184
|
+
|
|
185
|
+
stamp = time.strftime('%Y%m%d_%H%M%S')
|
|
186
|
+
bundle_name = 'support_report_TEST_{}.zip'.format(stamp)
|
|
187
|
+
zip_path = os.path.join(queue_dir, bundle_name)
|
|
188
|
+
|
|
189
|
+
# Prepare components
|
|
190
|
+
latest_log = _get_latest_log_path(local_storage_path)
|
|
191
|
+
log_tail = _tail_file(latest_log, max_log_lines) if latest_log else ''
|
|
192
|
+
log_tail = _redact(log_tail)
|
|
193
|
+
|
|
194
|
+
# Build a placeholder traceback - ASCII-only, no real data
|
|
195
|
+
fake_tb = (
|
|
196
|
+
"Traceback (most recent call last):\n"
|
|
197
|
+
" File \"MediCafe/test_runner.py\", line 42, in <module>\n"
|
|
198
|
+
" File \"MediCafe/error_reporter.py\", line 123, in simulate_error\n"
|
|
199
|
+
"Exception: This is a TEST placeholder traceback for pipeline verification only.\n"
|
|
200
|
+
"-- No real patient or PHI data is included. --\n"
|
|
201
|
+
)
|
|
202
|
+
fake_tb = _redact(fake_tb)
|
|
203
|
+
|
|
204
|
+
meta = {
|
|
205
|
+
'app_version': _safe_ascii(_get_version()),
|
|
206
|
+
'python_version': _safe_ascii(sys.version.split(' ')[0]),
|
|
207
|
+
'platform': _safe_ascii(platform.platform()),
|
|
208
|
+
'timestamp': time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime()),
|
|
209
|
+
'error_summary': 'TEST: Placeholder traceback',
|
|
210
|
+
'traceback_present': True,
|
|
211
|
+
'config_flags': {
|
|
212
|
+
'console_logging': bool(medi.get('logging', {}).get('console_output', False)),
|
|
213
|
+
'test_mode': True
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as z:
|
|
218
|
+
z.writestr('meta.json', json.dumps(meta, ensure_ascii=True, indent=2))
|
|
219
|
+
if latest_log and log_tail:
|
|
220
|
+
z.writestr('log_tail.txt', log_tail)
|
|
221
|
+
# Always include the fake traceback for this test bundle
|
|
222
|
+
z.writestr('traceback.txt', fake_tb)
|
|
223
|
+
# Include WinSCP tail if present
|
|
224
|
+
upload_log = os.path.join(local_storage_path, 'winscp_upload.log')
|
|
225
|
+
download_log = os.path.join(local_storage_path, 'winscp_download.log')
|
|
226
|
+
winscp_logs = [(p, os.path.getmtime(p)) for p in [upload_log, download_log] if os.path.exists(p)]
|
|
227
|
+
if winscp_logs:
|
|
228
|
+
latest_winscp = max(winscp_logs, key=lambda x: x[1])[0]
|
|
229
|
+
winscp_tail = _tail_file(latest_winscp, max_log_lines) if latest_winscp else ''
|
|
230
|
+
winscp_tail = _redact(winscp_tail)
|
|
231
|
+
if winscp_tail:
|
|
232
|
+
z.writestr('winscp_log_tail.txt', winscp_tail)
|
|
233
|
+
|
|
234
|
+
return zip_path
|
|
235
|
+
except Exception as e:
|
|
236
|
+
try:
|
|
237
|
+
mc_log('Error creating TEST support bundle: {}'.format(e), level='ERROR')
|
|
238
|
+
except Exception:
|
|
239
|
+
pass
|
|
240
|
+
return None
|
|
241
|
+
|
|
242
|
+
|
|
170
243
|
def _first_line(text):
|
|
171
244
|
try:
|
|
172
245
|
for line in (text or '').splitlines():
|
|
@@ -192,12 +265,11 @@ def capture_unhandled_traceback(exc_type, exc_value, exc_traceback):
|
|
|
192
265
|
medi = config.get('MediLink_Config', {})
|
|
193
266
|
local_storage_path = medi.get('local_storage_path', '.')
|
|
194
267
|
trace_path = os.path.join(local_storage_path, 'traceback.txt')
|
|
195
|
-
import traceback
|
|
196
268
|
text = ''.join(traceback.format_exception(exc_type, exc_value, exc_traceback))
|
|
197
269
|
text = _redact(text)
|
|
198
270
|
with open(trace_path, 'w') as f:
|
|
199
271
|
f.write(text)
|
|
200
|
-
|
|
272
|
+
print("An error occurred. A traceback was saved to {}".format(trace_path))
|
|
201
273
|
except Exception:
|
|
202
274
|
try:
|
|
203
275
|
mc_log('Failed to capture traceback to file', level='WARNING')
|
|
@@ -356,6 +428,25 @@ def email_error_report_flow():
|
|
|
356
428
|
mc_log("[ERROR] Exception during email report flow: {0}".format(e), level="ERROR")
|
|
357
429
|
return 1
|
|
358
430
|
|
|
431
|
+
def email_test_error_report_flow():
|
|
432
|
+
"""
|
|
433
|
+
Create and send a TEST error report bundle, containing a placeholder
|
|
434
|
+
traceback and latest log tails. Intended for troubleshooting the
|
|
435
|
+
submission pipeline only.
|
|
436
|
+
"""
|
|
437
|
+
try:
|
|
438
|
+
zip_path = collect_test_support_bundle()
|
|
439
|
+
if not zip_path:
|
|
440
|
+
return 1
|
|
441
|
+
sent = submit_support_bundle_email(zip_path=zip_path, include_traceback=False)
|
|
442
|
+
return 0 if sent else 1
|
|
443
|
+
except Exception as e:
|
|
444
|
+
try:
|
|
445
|
+
mc_log("[ERROR] Exception during test email report flow: {0}".format(e), level="ERROR")
|
|
446
|
+
except Exception:
|
|
447
|
+
pass
|
|
448
|
+
return 1
|
|
449
|
+
|
|
359
450
|
if __name__ == "__main__":
|
|
360
451
|
raise SystemExit(email_error_report_flow())
|
|
361
452
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|