bec-lib 4.4.1__tar.gz → 4.4.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.
- {bec_lib-4.4.1 → bec_lib-4.4.2}/PKG-INFO +1 -1
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/redis_connector/managed_redis_connection.py +5 -5
- {bec_lib-4.4.1 → bec_lib-4.4.2}/pyproject.toml +1 -1
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_redis_connector_fakeredis.py +30 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/.gitignore +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/README.md +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/__init__.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/_print_versions.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/acl_login.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/actors.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/alarm_handler.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/atlas_models.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/bec_errors.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/bec_service.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/bec_yaml_loader.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/bl_state_manager.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/bl_states.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/builtin_actor_hli.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/callback_handler.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/channel_monitor.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/client.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/codecs.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/config_helper.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/config_values.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/configs/__init__.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/configs/demo_config.yaml +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/configs/openapi_schema.json +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/connector.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/dap_plugin_objects.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/dap_plugins.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/device.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/devicemanager.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/endpoints.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/file_utils.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/live_scan_data.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/lmfit_serializer.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/logger.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/macro_update_handler.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/messages.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/messaging_hooks.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/messaging_services.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/metadata_schema.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/numpy_encoder.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/observer.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/path_optimization.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/pdf_writer.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/plugin_helper.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/position_generators.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/procedures/__init__.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/procedures/helper.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/procedures/hli.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/procedures/status.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/queue_items.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/redis_connector/__init__.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/redis_connector/constants.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/redis_connector/hli.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/redis_connector/streams.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/redis_connector/validation.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/request_context.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/request_items.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scan_args.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scan_data_container.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scan_history.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scan_input_validator.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scan_items.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scan_manager.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scan_number_container.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scan_preview.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scan_repeat.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scan_report.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scans.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/scibec_validator.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/script_executor.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/serialization.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/serialization_registry.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/service_config.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/signature_serializer.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/tests/__init__.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/tests/fixtures.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/tests/test_config.yaml +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/tests/test_service_config.yaml +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/tests/utils.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/user_macros.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/__init__.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/copier_jinja_filters.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/deprecation.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/import_utils.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/json_extended.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/__init__.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/_constants.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/_util.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/create/__init__.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/create/device.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/create/scan.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/create/templates/scan.py.jinja +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/plugin_manager/main.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/proxy.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/pydantic_pretty_print.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/rpc_utils.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/scan_utils.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/threading_utils.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/bec_lib/utils/user_acls_test.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/__init__.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/_additional_for_signature_serializer_test.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/conftest.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_acl_login.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_alarm_handler.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_atlas_models.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_beamline_states.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_bec_logger.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_bec_messages.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_bec_service.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_callback_handler.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_channel_monitor.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_client.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_config_helper.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_core_utils.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_dap_plugins.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_data_container.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_deprecation.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_device_hashing.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_device_manager.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_devices.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_file_utils.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_hli_connector_fakeredis.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_hli_redis_connector.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_import_utils.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_jinja_plugins.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_lmfit_serializer.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_managed_config_values.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_managed_redis_connection.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_messaging_hooks.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_messaging_service.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_metadata_schema.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_observer.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_path_optimization.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_pdf_writer.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_plugin_helper.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_plugin_manager.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_plugin_system.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_position_generators.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_procedure_submission.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_pydantic_pretty_print.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_queue_items.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_roi_endpoints.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_roi_messages.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_scan_context.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_scan_data.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_scan_history.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_scan_items.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_scan_manager.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_scan_object.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_scan_preview.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_scan_repeat.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_scan_report.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_scibec_validator.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_script_executor.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_serializer.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_service_config.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_signature_serializer.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_signature_serializer_with_future_import.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_stream_subs.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_user_macros.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_utils.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/tests/test_yaml_loader.py +0 -0
- {bec_lib-4.4.1 → bec_lib-4.4.2}/util_scripts/init_config.py +0 -0
|
@@ -510,10 +510,7 @@ class ManagedRedisConnection:
|
|
|
510
510
|
[(t, self._redis_conn.xrange(t, "-", end)) for t, end in topics_ids.items()],
|
|
511
511
|
None,
|
|
512
512
|
)
|
|
513
|
-
return (
|
|
514
|
-
self._redis_conn.xread(topics_ids, block=200) or [],
|
|
515
|
-
None,
|
|
516
|
-
) # type: ignore strs are fine key and id types
|
|
513
|
+
return (self._redis_conn.xread(topics_ids, block=200) or [], None) # type: ignore strs are fine key and id types
|
|
517
514
|
except redis.exceptions.ConnectionError:
|
|
518
515
|
return None, self.connection_error_str
|
|
519
516
|
except redis.exceptions.NoPermissionError:
|
|
@@ -556,11 +553,14 @@ class ManagedRedisConnection:
|
|
|
556
553
|
# Then read all the normal streams
|
|
557
554
|
with self._stream_subs.lock:
|
|
558
555
|
normal_topics = self._stream_subs.topic_ids()
|
|
559
|
-
normal_subs = self._stream_subs.normal_subs
|
|
560
556
|
normal_error = None
|
|
561
557
|
if normal_topics:
|
|
562
558
|
response, normal_error = self._try_read_streams(normal_topics)
|
|
563
559
|
if normal_error is None:
|
|
560
|
+
# Take the subscribers after the blocking read so that sub changes during the
|
|
561
|
+
# read take immediate effect
|
|
562
|
+
with self._stream_subs.lock:
|
|
563
|
+
normal_subs = self._stream_subs.normal_subs
|
|
564
564
|
updated_ids = self._handle_stream_msg_list(response, normal_subs)
|
|
565
565
|
else:
|
|
566
566
|
updated_ids = {}
|
|
@@ -427,6 +427,36 @@ def test_redis_connector_register_stream(connected_connector):
|
|
|
427
427
|
assert connector._stream_subs.all_topics == []
|
|
428
428
|
|
|
429
429
|
|
|
430
|
+
@pytest.mark.timeout(5)
|
|
431
|
+
def test_redis_connector_stream_cb_swapped_during_blocking_read(connected_connector):
|
|
432
|
+
"""Callbacks (un)registered while the listener is blocked in xread must (not) receive the
|
|
433
|
+
messages that read returns."""
|
|
434
|
+
connector = connected_connector
|
|
435
|
+
cb_mock1 = mock.Mock(spec=[])
|
|
436
|
+
cb_mock2 = mock.Mock(spec=[])
|
|
437
|
+
in_read = threading.Event()
|
|
438
|
+
proceed = threading.Event()
|
|
439
|
+
orig_read = connector._try_read_streams
|
|
440
|
+
|
|
441
|
+
def blocking_read(topics_ids, from_start=False):
|
|
442
|
+
if not from_start:
|
|
443
|
+
in_read.set()
|
|
444
|
+
proceed.wait(timeout=2)
|
|
445
|
+
return orig_read(topics_ids, from_start)
|
|
446
|
+
|
|
447
|
+
with mock.patch.object(connector, "_try_read_streams", blocking_read):
|
|
448
|
+
connector.register(TestStreamEndpoint, cb=cb_mock1, start_thread=False)
|
|
449
|
+
assert in_read.wait(timeout=2)
|
|
450
|
+
connector.unregister("test", cb=cb_mock1)
|
|
451
|
+
connector.register(TestStreamEndpoint, cb=cb_mock2, start_thread=False)
|
|
452
|
+
connector.xadd("test", {"data": 1})
|
|
453
|
+
proceed.set()
|
|
454
|
+
# raises TimeoutError if the message was dropped instead of delivered to cb_mock2
|
|
455
|
+
connector.poll_messages(timeout=2)
|
|
456
|
+
cb_mock1.assert_not_called()
|
|
457
|
+
cb_mock2.assert_called_once_with({"data": 1})
|
|
458
|
+
|
|
459
|
+
|
|
430
460
|
@pytest.mark.timeout(10)
|
|
431
461
|
def test_redis_connector_register_stream_identical(connected_connector):
|
|
432
462
|
connector = connected_connector
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|