From 30f54ca8a746c5ca05fd715c20dba6a7f32c0c31 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Mon, 13 May 2024 13:38:42 -0500 Subject: [PATCH 01/59] initial version of dynamic file list classes --- docs/reference.rst | 1 + docs/userguide/data.rst | 262 ++++++++++-- parsl/data_provider/dynamic_files.py | 474 +++++++++++++++++++++ parsl/tests/test_data/test_dynamic_file.py | 340 +++++++++++++++ 4 files changed, 1031 insertions(+), 46 deletions(-) create mode 100644 parsl/data_provider/dynamic_files.py create mode 100644 parsl/tests/test_data/test_dynamic_file.py diff --git a/docs/reference.rst b/docs/reference.rst index ec6f7f9bfa..96eb1c24ed 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -54,6 +54,7 @@ Data management parsl.app.futures.DataFuture parsl.data_provider.data_manager.DataManager + parsl.data_provider.dynamic_files.DynamicFileList parsl.data_provider.staging.Staging parsl.data_provider.files.File parsl.data_provider.ftp.FTPSeparateTaskStaging diff --git a/docs/userguide/data.rst b/docs/userguide/data.rst index 9350a6d96f..c0a09f0a3b 100644 --- a/docs/userguide/data.rst +++ b/docs/userguide/data.rst @@ -3,7 +3,7 @@ Passing Python objects ====================== -Parsl apps can communicate via standard Python function parameter passing +Parsl apps can communicate via standard Python function parameter passing and return statements. The following example shows how a Python string can be passed to, and returned from, a Parsl app. @@ -12,21 +12,21 @@ can be passed to, and returned from, a Parsl app. @python_app def example(name): return 'hello {0}'.format(name) - + r = example('bob') print(r.result()) -Parsl uses the dill and pickle libraries to serialize Python objects +Parsl uses the dill and pickle libraries to serialize Python objects into a sequence of bytes that can be passed over a network from the submitting machine to executing workers. -Thus, Parsl apps can receive and return standard Python data types +Thus, Parsl apps can receive and return standard Python data types such as booleans, integers, tuples, lists, and dictionaries. However, not -all objects can be serialized with these methods (e.g., closures, generators, +all objects can be serialized with these methods (e.g., closures, generators, and system objects), and so those objects cannot be used with all executors. -Parsl will raise a `SerializationError` if it encounters an object that it cannot -serialize. This applies to objects passed as arguments to an app, as well as objects +Parsl will raise a `SerializationError` if it encounters an object that it cannot +serialize. This applies to objects passed as arguments to an app, as well as objects returned from an app. See :ref:`label_serialization_error`. @@ -34,9 +34,9 @@ Staging data files ================== Parsl apps can take and return data files. A file may be passed as an input -argument to an app, or returned from an app after execution. Parsl -provides support to automatically transfer (stage) files between -the main Parsl program, worker nodes, and external data storage systems. +argument to an app, or returned from an app after execution. Parsl +provides support to automatically transfer (stage) files between +the main Parsl program, worker nodes, and external data storage systems. Input files can be passed as regular arguments, or a list of them may be specified in the special ``inputs`` keyword argument to an app invocation. @@ -69,13 +69,13 @@ interface. Parsl files ----------- -Parsl uses a custom :py:class:`~parsl.data_provider.files.File` to provide a -location-independent way of referencing and accessing files. -Parsl files are defined by specifying the URL *scheme* and a path to the file. +Parsl uses a custom :py:class:`~parsl.data_provider.files.File` to provide a +location-independent way of referencing and accessing files. +Parsl files are defined by specifying the URL *scheme* and a path to the file. Thus a file may represent an absolute path on the submit-side file system or a URL to an external file. -The scheme defines the protocol via which the file may be accessed. +The scheme defines the protocol via which the file may be accessed. Parsl supports the following schemes: file, ftp, http, https, and globus. If no scheme is specified Parsl will default to the file scheme. @@ -89,8 +89,8 @@ README file. File('https://github.com/Parsl/parsl/blob/master/README.rst') -Parsl automatically translates the file's location relative to the -environment in which it is accessed (e.g., the Parsl program or an app). +Parsl automatically translates the file's location relative to the +environment in which it is accessed (e.g., the Parsl program or an app). The following example shows how a file can be accessed in the app irrespective of where that app executes. @@ -113,22 +113,192 @@ As described below, the method by which this files are transferred depends on the scheme and the staging providers specified in the Parsl configuration. +Dynamic File Lists +------------------ + +When Parsl constructs the DAG for a workflow, it needs to know the input and output files +for each app. This works well when the number of files is known in advance, and the lists of files +are fully constructed before the workflow is submitted. However, in some cases, the number of files +produced by an app is not know until the app executes. In these cases, Parsl provides a mechanism called +:py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` to dynamically construct the list of files. +This class inherits from both the Python `Future `_ and `list `_ classes, but differs from traditional lists in the a few notable ways: + +1. It can only contain :py:class:`~parsl.data_provider.files.File` and :py:class:`~parsl.app.futures.DataFuture` objects. +2. It is truly dynamic, meaning that you can access an item in the list which is beyond the current length of the list. The list will grow to accomodate the request and return a future that will be resolved when the item is available. (see `Dynamic Scaling`_ for more details) + + +Dynamic Scaling +^^^^^^^^^^^^^^^ + +The :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` is designed to be used in cases where the number of +files produced by an app is not known until the app executes. In these cases, the list can be accessed beyond its current +length, and the list will grow to accomodate the request. In addition to the traditional methods of expanding a list +(via ``append`` or ``extend``, the :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` will grow when assigning +a member by index to a position beyond its current length or when accessing a member by index beyond the current length. +In each of these cases the list is expanded and filled with :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` +objects that are initialized with ``None``. When the file is available, the ``None`` is replaced with the actual file. This +behavior allows for the following code to work: + +.. code-block:: python + + from parsl.app.app import python_app + from parsl.data_provider.dynamic_files import DynamicFileList + from parsl.data_provider.files import File + + + dfl = DynamicFileList() # dfl = [] + # A B C + dfl[2] = File('file://path/to/file') # dfl = [File(), File(), File('file://path/to/file')] + + myfile = dfl[0] # myfile is a reference to the File() labeled A in dfl + + dfl[0] = File('file://path/to/file.2') # dfl = [File('file://path/to/file.2'), File(), + # File('file://path/to/file')] + # but myfile still points to the File() labeled A + + fh = open(myfile, 'r') # works + + dfl[3] = File('file://path/to/file.3') # dfl = [File('file://path/to/file.2'), File(), + # File('file://path/to/file'), File('file://path/to/file.3')] + + myfile2 = dfl[1] # myfile2 is a reference to the File() labeled B in dfl + + dfl[1] = File('file://path/to/file.4') # dfl = [File('file://path/to/file.2'), File('file://path/to/file.4'), + # File('file://path/to/file'), File('file://path/to/file.3')] + # myfile2 still points to the File() labeled B + + fh2 = open(myfile2, 'r') # works + + dfl[5] = File('file://path/to/file.5') # dfl = [File('file://path/to/file.2'), File('file://path/to/file.4'), + # File('file://path/to/file'), File('file://path/to/file.3'), + # None, File('file://path/to/file.5')] + + myfile3 = dfl[4] # myfile3 is a reference to the DynamicFile() labeled None in dfl + + dfl[4] = File('file://path/to/file.6') # dfl = [File('file://path/to/file.2'), File('file://path/to + +Specifically, the behavior will allow Parsl Apps to use as input files which do not exist at the time the App is created, but are produced by other Apps in the workflow, even when the number of output files is not know beforehand. For example: + +.. code-block:: python + + from parsl.app.app import python_app + from parsl.data_provider.dynamic_files import DynamicFileList + from parsl.data_provider.files import File + + @python_app + def produce(outputs=[]): + from random import random + from parsl.data_provider.files import File + + def analyze(i): + f = File(f'file://path/to/file{i}.log}') + with open(f.filepath, 'w') as out: + # do some kind of anaylsis + # write out log messages + return f + + count = int(random() * 10) + fl = File(f'file://path/to/master.log') + outputs.append(fl) + with open(fl.filepath, 'w') as log: + log.write(f'Producing {count} files\n') + for i in range(count): + log.write(f"Running analysis {i}\n") + outputs.append(analyze(i)) + + @python_app + def consume(inputs=[]): + for i in range(len(inputs)): + with open(inputs[i].filepath, 'r') as inp: + content = inp.read() + # do something with the log content + + dfl = DynamicFileList() # dfl = [] + + f = produce(dfl) # dfl starts out empty, but is populated by produce + + r = consume(inputs=[dfl[1:]]) # consume waits to run until files are available, + # then does its work on the selected log files + r.result() + +Without a :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList`, the above code would not work because when the DAG is constructed, the ``inputs`` to ``consume`` +is a slice of an empty list. However, the :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` will populate the ``dfl`` list with two empty :ref:`DynamicFile ` +objects (indicies 0 and 1) and then fill them in with the actual files produced by ``produce`` when they are available. +The ``consume`` app will then wait until the files are available before running. + +Dynamic Files +^^^^^^^^^^^^^ + +Technically the :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` holds instances of +:py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile`, a `Future `_, which itself wraps the +:py:class:`~parsl.data_provider.files.File` and :py:class:`~parsl.app.futures.DataFuture` objects. +However, this class is not intended to be used directly, and is only mentioned here for completeness. +This wrapping is done automatically when you add an item to the list by direct assignment, ``append``, or +``extend``. Any access to the members of the list is passed by the :py:class:`~parsl.data_provider +.dynamic_files.DynamicFileList.DynamicFile` instance directly to the underlying object, thus making it +an invisible layer to the user. + +The :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` can also be instantiated with `None`, +creating a placeholder for a :py:class:`~parsl.data_provider.files.File` or :py:class:`~parsl.app.futures.DataFuture`. +This was done to resolve any indexing issues arrising from the dynamic nature of the list. For example, without wrapping +items in a :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` the following code will not work: + +.. code-block:: python + + from parsl.data_provider.dynamic_files import DynamicFileList + from parsl.data_provider.files import File + + dfl = DynamicFileList() # dfl = [] + # A B C + dfl[2] = File('file://path/to/file') # dfl = [File(), File(), File('file://path/to/file')] + + myfile = dfl[0] # myfile is a reference to the File() labeled A in dfl + + dfl[0] = File('file://path/to/file.2') # dfl = [File('file://path/to/file.2'), File(), + # File('file://path/to/file')] + # but myfile still points to the File() labeled A + + fh = open(myfile, 'r') # fails because myfile points to an empty File + + +But by utilizing the :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` to wrap items, the code +will now work: + +.. code-block:: python + + from parsl.data_provider.dynamic_files import DynamicFileList + from parsl.data_provider.files import File + + dfl = DynamicFileList() # dfl = [] + # A B C + dfl[2] = File('file://path/to/file') # dfl = [DynamicFile(), DynamicFile(), DynamicFile(File('file://path/to/file'))] + + myfile = dfl[0] # myfile is a reference to the DynamicFile() labeled A in dfl + + dfl[0] = File('file://path/to/file.2') # dfl = [DynamicFile(File('file://path/to/file.2')), + # File(), + # File('file://path/to/file')] + # myfile still points to the DynamicFile() labeled A, which now contains a file + + fh = open(myfile, 'r') # works + + Staging providers ----------------- -Parsl is able to transparently stage files between at-rest locations and +Parsl is able to transparently stage files between at-rest locations and execution locations by specifying a list of -:py:class:`~parsl.data_provider.staging.Staging` instances for an executor. +:py:class:`~parsl.data_provider.staging.Staging` instances for an executor. These staging instances define how to transfer files in and out of an execution location. This list should be supplied as the ``storage_access`` -parameter to an executor when it is constructed. +parameter to an executor when it is constructed. -Parsl includes several staging providers for moving files using the +Parsl includes several staging providers for moving files using the schemes defined above. By default, Parsl executors are created with -three common staging providers: +three common staging providers: the NoOpFileStaging provider for local and shared file systems and the HTTP(S) and FTP staging providers for transferring -files to and from remote storage locations. The following +files to and from remote storage locations. The following example shows how to explicitly set the default staging providers. .. code-block:: python @@ -146,12 +316,12 @@ example shows how to explicitly set the default staging providers. ) ] ) - - -Parsl further differentiates when staging occurs relative to -the app invocation that requires or produces files. + + +Parsl further differentiates when staging occurs relative to +the app invocation that requires or produces files. Staging either occurs with the executing task (*in-task staging*) -or as a separate task (*separate task staging*) before app execution. +or as a separate task (*separate task staging*) before app execution. In-task staging uses a wrapper that is executed around the Parsl task and thus occurs on the resource on which the task is executed. Separate @@ -167,9 +337,9 @@ NoOpFileStaging for Local/Shared File Systems The NoOpFileStaging provider assumes that files specified either with a path or with the ``file`` URL scheme are available both on the submit and execution side. This occurs, for example, when there is a -shared file system. In this case, files will not moved, and the +shared file system. In this case, files will not moved, and the File object simply presents the same file path to the Parsl program -and any executing tasks. +and any executing tasks. Files defined as follows will be handled by the NoOpFileStaging provider. @@ -207,14 +377,14 @@ will be executed as a separate Parsl task that will complete before the corresponding app executes. These providers cannot be used to stage out output files. -The following example defines a file accessible on a remote FTP server. +The following example defines a file accessible on a remote FTP server. .. code-block:: python File('ftp://www.iana.org/pub/mirror/rirstats/arin/ARIN-STATS-FORMAT-CHANGE.txt') When such a file object is passed as an input to an app, Parsl will download the file to whatever location is selected for the app to execute. -The following example illustrates how the remote file is implicitly downloaded from an FTP server and then converted. Note that the app does not need to know the location of the downloaded file on the remote computer, as Parsl abstracts this translation. +The following example illustrates how the remote file is implicitly downloaded from an FTP server and then converted. Note that the app does not need to know the location of the downloaded file on the remote computer, as Parsl abstracts this translation. .. code-block:: python @@ -234,8 +404,8 @@ The following example illustrates how the remote file is implicitly downloaded f # call the convert app with the Parsl file f = convert(inputs=[inp], outputs=[out]) f.result() - -HTTP and FTP separate task staging providers can be configured as follows. + +HTTP and FTP separate task staging providers can be configured as follows. .. code-block:: python @@ -243,7 +413,7 @@ HTTP and FTP separate task staging providers can be configured as follows. from parsl.executors import HighThroughputExecutor from parsl.data_provider.http import HTTPSeparateTaskStaging from parsl.data_provider.ftp import FTPSeparateTaskStaging - + config = Config( executors=[ HighThroughputExecutor( @@ -263,10 +433,10 @@ task staging providers described above, but will do so in a wrapper around individual app invocations, which guarantees that they will stage files to a file system visible to the app. -A downside of this staging approach is that the staging tasks are less visible +A downside of this staging approach is that the staging tasks are less visible to Parsl, as they are not performed as separate Parsl tasks. -In-task staging providers can be configured as follows. +In-task staging providers can be configured as follows. .. code-block:: python @@ -345,16 +515,16 @@ In some cases, for example when using a Globus `shared endpoint bool: + """Return whether the file_obj state is `done`. + + Returns: + - bool : True if the file_obj is `done`, False otherwise + """ + if self._is_df: + return self.file_obj.done() + return True # Files are always done + + @property + def tid(self): + """Returns the task_id of the task that will resolve this DataFuture.""" + if self._is_df: + return self.file_obj.tid + + @property + def filepath(self): + """Filepath of the File object this datafuture represents.""" + return self.file_obj.filepath + + @property + def filename(self): + """Filename of the File object this datafuture represents.""" + if self.file_obj is None: + return None + return self.file_obj.filepath + + def cancel(self): + """Not implemented""" + raise NotImplementedError("Cancel not implemented") + + def cancelled(self) -> bool: + """Return False""" + return False + + def running(self) -> bool: + """Return whether the parent future is running""" + if self.parent is not None: + return self.parent.running() + else: + return False + + def exception(self, timeout=None): + """Return None""" + return None + + def __repr__(self) -> str: + return self.file_obj.__repr__() + + def parent_callback(self, parent_fu): + """Callback from executor future to update the parent. + + Updates the future with the result (the File object) or the parent future's + exception. + + Args: + - parent_fu (Future): Future returned by the executor along with callback + + Returns: + - None + """ + def _stub(): + return + e = parent_fu.exception() + if e: + self.set_exception(e) + else: + for idx, f in enumerate(self): + if isinstance(f, File): ### TODO: and not self.dataflow.check_staging_inhibited() + f_copy = f.cleancopy() + logger.debug("Submitting stage out for output file {}".format(repr(f))) + stageout_fut = self.dataflow.data_manager.stage_out(f_copy, self.executor, parent_fu) + if stageout_fut: + logger.debug("Adding a dependency on stageout future for {}".format(repr(f))) + parent_fu._outputs.append(DataFuture(stageout_fut, f, tid=parent_fu.tid)) + else: + logger.debug("No stageout dependency for {}".format(repr(f))) + parent_fu._outputs.append(DataFuture(parent_fu, f, tid=parent_fu.tid)) + + # this is a hook for post-task stageout + # note that nothing depends on the output - which is maybe a bug + # in the not-very-tested stageout system? + func = self.dataflow.data_manager.replace_task_stage_out(f_copy, _stub, self.executor) + func() + elif isinstance(f, DataFuture): + logger.debug("Not performing output staging for: {}".format(repr(f))) + parent_fu._outputs.append(DataFuture(parent_fu, f, tid=parent_fu.tid)) + + self.set_result(self) + + ''''' + def file_callback(self, file_fu: Future): + """Callback from executor future to update the file. + + Updates the future with the result (the File object) or the parent future's + exception. + + Args: + - file_fu (Future): Future returned by the executor along with callback + + Returns: + - None + """ + + e = file_fu.exception() + if e: + self.files_done[file_fu.filename] = False + else: + self.files_done[file_fu.filename] = file_fu.done() + ''' + @typeguard.typechecked + def __init__(self, files: Optional[List[Union[File, DataFuture, DynamicFile]]] = None, fut: Optional[Future] = None): + """Construct a DynamicFileList instance + + Args: + - files (List[File/DataFuture]) : List of files to initialize the DynamicFileList with + - fut (Future) : Future to set as the parent + """ + super().__init__() + self.files_done = {} #: dict mapping file names to their "done" status True/False + self._last_idx = -1 + self.executor = None + self.parent = fut + self.dataflow = None + self._sub_callbacks = [] + self._in_callback = False + if files is not None: + self.extend(files) + if fut is not None: + self.parent.add_done_callback(self.parent_callback) + + def add_done_func(self, name: str, func: Callable): + """ Add a function to the files_done dict, specifically for when an empty DynamicFile + is updated to contain a real File. + + Args: + - name (str) : Name of the file to add the function for + - func (Callable) : Function to add + """ + self.files_done[name] = func + + def wrap(self, file_obj: Union[File, DataFuture, None]): + """ Wrap a file object in a DynamicFile + + Args: + - file_obj (File/DataFuture) : File or DataFuture to wrap + """ + return self.DynamicFile(self, file_obj) + + def set_dataflow(self, dataflow, executor: str): + """ Set the dataflow and executor for this instance + + Args: + - dataflow (DataFlowKernel) : Dataflow kernel that this instance is associated with + - executor (str) : Executor that this instance is associated with + """ + self.executor = executor + self.dataflow = dataflow + + def set_parent(self, fut: Future): + """ Set the parent future for this instance + + Args: + - fut (Future) : Future to set as the parent + """ + if self.parent is not None: + raise ValueError("Parent future already set") + self.parent = fut + self.parent.add_done_callback(self.parent_callback) + + def cancel(self): + """ Not implemented """ + raise NotImplementedError("Cancel not implemented") + + def cancelled(self): + """ Not implemented """ + return False + + def running(self): + """ Returns True if the parent future is running """ + if self.parent is not None: + return self.parent.running() + else: + return False + + def result(self, timeout=None): + """ Return self, which is the results of the file list """ + return self + + def exception(self, timeout=None): + """ No-op""" + return None + + def done(self): + """ Return True if all files are done """ + for element in self.files_done.values(): + if not element(): + return False + return True + + @typeguard.typechecked + def append(self, __object: Union[File, DataFuture, 'DynamicFileList.DynamicFile']): + """ Append a file to the list and update the files_done dict + + Args: + - __object (File/DataFuture) : File or DataFuture to append + """ + if not isinstance(__object, DynamicFileList.DynamicFile): + __object = self.wrap(__object) + if self._last_idx == len(self) - 1: + super().append(__object) + else: + # must assume the object is empty, but exists + super().__getitem__(self._last_idx + 1).set(__object) + self.files_done[__object.filename] = super().__getitem__(self._last_idx + 1).done + self._last_idx += 1 + self._call_callbacks() + + def extend(self, __iterable): + """ Extend the list with the contents of the iterable and update the files_done dict + + Args: + - __iterable (Iterable) : Iterable to extend the list with + """ + items = [] + for f in __iterable: + if not isinstance(f, (DynamicFileList.DynamicFile, File, DataFuture)): + raise ValueError("DynamicFileList can only contain Files or DataFutures") + if not isinstance(f, DynamicFileList.DynamicFile): + f = self.wrap(f) + self.files_done[f.filename] = f.done + items.append(f) + if self._last_idx == len(self) - 1: + super().extend(items) + self._last_idx += len(items) + self._call_callbacks() + return + diff = len(self) - 1 - self._last_idx - len(items) + if diff < 0: + super().extend([self.wrap(None)] * abs(diff)) + for item in items: + self._last_idx += 1 + self[self._last_idx].set(item) + self.files_done[item.filename] = super().__getitem__(self._last_idx).done + self._call_callbacks() + + def insert(self, __index: int, __object: Union[File, DataFuture, DynamicFile]): + """ Insert a file into the list at the given index and update the files_done dict + + Args: + - __index (int) : Index to insert the file at + - __object (File/DataFuture) : File or DataFuture to insert + """ + if __index > self._last_idx: + raise ValueError("Cannot insert at index greater than the last index") + if not isinstance(__object, self.DynamicFile): + __object = self.wrap(__object) + self.files_done[__object.filename] = __object.done + super().insert(__index, __object) + self._last_idx += 1 + self._call_callbacks() + + def remove(self, __value): + """ Remove a file from the list and update the files_done dict + + Args: + - __value (File/DataFuture) : File or DataFuture to remove + """ + del self.files_done[__value.filename] + super().remove(__value) + self._last_idx -= 1 + self._call_callbacks() + + def pop(self, __index: int = -1) -> Union[File, DataFuture]: + """ Pop a file from the list and update the files_done dict + + Args: + - __index (int) : Index to pop the file at + + Returns: + - File/DataFuture : File or DataFuture that was popped + """ + if __index == -1: + value = super().pop(self._last_idx) + elif __index <= self._last_idx: + value = super().pop(__index) + else: + raise IndexError("Index out of range") + del self.files_done[value.filename] + self._last_idx -= 1 + self._call_callbacks() + return value.file_obj + + def clear(self): + """ Clear the list and the files_done dict """ + self.files_done.clear() + self._last_idx = -1 + super().clear() + # detach all the callbacks so that sublists can still be used + self._sub_callbacks.clear() + + def _call_callbacks(self): + """ Call the callbacks for the sublists """ + if self._in_callback: + return + self._in_callback = True + for cb in self._sub_callbacks: + cb() + self._in_callback = False + + def _expand(self, idx): + for _ in range(idx - len(self) + 1): + super().append(self.wrap(None)) + + @typeguard.typechecked + def __setitem__(self, key: int, value: Union[File, DataFuture, 'DynamicFileList.DynamicFile']): + if self[key].filename in self.files_done: + del self.files_done[self[key].filename] + if super().__getitem__(key).empty: + super().__getitem__(key).set(value) + self.files_done[super().__getitem__(key).filename] = super().__getitem__(key).done + self._last_idx = max(self._last_idx, key) + else: + if not isinstance(value, self.DynamicFile): + value = self.wrap(value) + super().__setitem__(key, value) + self.files_done[value.filename] = value.done + self._call_callbacks() + + def __getitem__(self, key): + # make sure the list will be long enough when it is filled, so we can return a future + if isinstance(key, slice): + if key.start is None: + pass + elif key.start >= len(self): + for i in range(len(self), key.start + 1): + self.append(self.wrap(None)) + if key.stop is not None and key.stop > len(self): + for i in range(len(self), key.stop): + self.append(self.wrap(None)) + ret = DynamicFileSubList(key, super().__getitem__(key), self) + self._sub_callbacks.append(ret.callback) + return ret + else: + if key >= len(self): + self._expand(key) + return super().__getitem__(key) + + def get_update(self, key: slice): + """Get an updated slice for the sublist. + + Args: + - key (slice) : Slice to update + + Returns: + - List[DynamicFile] : Updated slice + """ + return super().__getitem__(key) + + def __delitem__(self, key): + del self.files_done[self[key].filename] + super().__delitem__(key) + self._call_callbacks() + + def __repr__(self): + type_ = type(self) + module = type_.__module__ + qualname = type_.__qualname__ + if self.done(): + done = "done" + else: + done = "not done" + return f"<{module}.{qualname} object at {hex(id(self))} containing {len(self)} objects {done}>" + + +class DynamicFileSubList(DynamicFileList): + @typeguard.typechecked + def __init__(self, key: slice, files: Optional[List[DynamicFileList.DynamicFile]], parent: DynamicFileList): + super().__init__(files=files) + self.parent = parent + self.slice = key + self.fixed_size = key.stop is not None and key.start is not None + + def callback(self): + """Callback for updating the sublist when the parent list is updated.""" + self.clear() + self.extend(self.parent.get_update(self.slice)) diff --git a/parsl/tests/test_data/test_dynamic_file.py b/parsl/tests/test_data/test_dynamic_file.py new file mode 100644 index 0000000000..966486e964 --- /dev/null +++ b/parsl/tests/test_data/test_dynamic_file.py @@ -0,0 +1,340 @@ +from concurrent.futures import Future +import pytest + +from parsl.data_provider.dynamic_files import DynamicFileList as DFL +from parsl.data_provider.files import File +from parsl.app.futures import DataFuture + + +def test_dynamic_file_empty(): + fut = DFL(fut=Future()) + df = DFL.DynamicFile(fut, None) + assert df.file_obj is None + assert df.empty is True + + +def test_dynamic_file_File(): + fut = DFL(fut=Future()) + fl = File('test.txt') + df = DFL.DynamicFile(fut, fl) + assert df.file_obj == fl + assert df.empty is False + assert df.done() is True + assert df.filename.endswith('test.txt') + + +def test_dynamic_file_DataFuture(): + fut = Future() + fl = DataFuture(fut, File('test2.txt')) + df = DFL.DynamicFile(DFL(fut=fut), fl) + assert df.file_obj == fl + assert df.empty is False + assert df.done() is False + assert df.tid is None + assert df.filepath.endswith('test2.txt') + + +def test_dynamic_file_set(): + fut = DFL(fut=Future()) + df = DFL.DynamicFile(fut, None) + assert df.file_obj is None + assert df.empty is True + fl = File('test.txt') + df.set(fl) + assert df.file_obj == fl + assert df.empty is False + + +def test_dynamic_file_not_implemented(): + fut = DFL(fut=Future()) + fl = DataFuture(fut, File('test2.txt')) + df = DFL.DynamicFile(fut, fl) + with pytest.raises(NotImplementedError): + df.cancel() + assert df.cancelled() is False + assert df.exception() is None + + +def test_dynamic_file_passthrough(): + f = Future() + fut = DFL(fut=f) + dfl = DataFuture(fut, File('test3.txt')) + df = DFL.DynamicFile(fut, dfl) + f.set_running_or_notify_cancel() + assert df.running() is True + + +def test_dynamic_file_callback(): + fut = DFL(fut=Future()) + dfl = DataFuture(fut, File('test3.txt')) + df = DFL.DynamicFile(fut, dfl) + with pytest.raises(Exception): + df.result(1) + fut.set_running_or_notify_cancel() + fut.set_result(5) + assert df.done() is True + assert isinstance(df.result(), Future) + + +def test_dynamic_file_list(): + fut = Future() + dfl = DFL(fut=fut) + assert len(dfl) == 0 + + +def test_dynamic_file_list_append(): + fut = Future() + dfl = DFL(fut=fut) + assert len(dfl) == 0 + + dfl.append(File('test.txt')) + dfl.append(File('test2.txt')) + assert len(dfl) == 2 + + +def test_dynamic_file_list_extend(): + fut = Future() + dfl = DFL(fut=fut) + assert len(dfl) == 0 + + dfl.extend([File('test.txt'), File('test2.txt')]) + assert len(dfl) == 2 + + +def test_dynamic_file_list_dynamics(): + fut = Future() + dfl = DFL(fut=fut) + assert len(dfl) == 0 + + dfl[5] = File('test4.txt') + assert len(dfl) == 6 + + tempid = id(dfl[3]) + dfl[3] = File('test3.txt') + assert len(dfl) == 6 + assert id(dfl[3]) == tempid + + dfl[3] = dfl[5] + assert len(dfl) == 6 + assert id(dfl[3]) != tempid + tempid = id(dfl[5]) + dfl[5] = File('another.test.dat') + assert len(dfl) == 6 + assert tempid != id(dfl[5]) + + +def test_dynamic_file_list_no_op(): + fut = Future() + dfl = DFL(fut=fut) + with pytest.raises(Exception): + dfl.cancel() + assert dfl.cancelled() is False + + +def test_dynamic_file_list_dynamic_append(): + fut = Future() + dfl = DFL(fut=fut) + fl = dfl[5] + assert len(dfl) == 6 + f0 = File('tester5.dat') + dfl[0] = f0 + assert dfl[1].empty + tempid = id(dfl[1]) + f1 = File('tester2.dat') + dfl.append(f1) + assert len(dfl) == 6 + assert dfl[0].filename == f0.filename + assert dfl[1].filename == f1.filename + assert tempid == id(dfl[1]) + assert dfl[2].empty + + +def test_dynamic_file_list_dynamic_extend(): + fut = Future() + dfl = DFL(fut=fut) + fl = dfl[5] + assert len(dfl) == 6 + f0 = File('tester5.dat') + dfl[0] = f0 + assert dfl[1].empty + tempids = [id(dfl[0]), id(dfl[1]), id(dfl[2]), id(dfl[3])] + f1 = File('tester2.dat') + f2 = File('tester3.dat') + dfl.extend([f1, f2]) + assert len(dfl) == 6 + assert dfl[0].filename == f0.filename + assert tempids[0] == id(dfl[0]) + assert dfl[1].filename == f1.filename + assert tempids[1] == id(dfl[1]) + assert dfl[2].filename == f2.filename + assert tempids[2] == id(dfl[2]) + assert dfl[3].empty + assert tempids[3] == id(dfl[3]) + f3 = File('tester4.dat') + f4 = File('tester5.dat') + f5 = File('tester6.dat') + f6 = File('tester7.dat') + dfl.extend([f3, f4, f5, f6]) + assert len(dfl) == 7 + + +def test_dynamic_file_list_insert_and_remove(): + fut = Future() + f = [File(f'tester{i}.dat') for i in range(10)] + dfl = DFL(f, fut=fut) + assert len(dfl) == 10 + dfl.insert(4, File('tester99.dat')) + assert len(dfl) == 11 + assert dfl[4].filename == 'tester99.dat' + assert dfl[5].filename == 'tester4.dat' + + dfl.remove(dfl[5]) + assert len(dfl) == 10 + assert dfl[4].filename == 'tester99.dat' + assert dfl[5].filename == 'tester5.dat' + + dfl.append(File('tester100.dat')) + assert len(dfl) == 11 + + +def test_dynamic_file_list_clear(): + fut = Future() + f = [File(f'tester{i}.dat') for i in range(10)] + dfl = DFL(f, fut=fut) + assert len(dfl) == 10 + dfl.clear() + assert len(dfl) == 0 + + +def test_dynamic_file_list_pop(): + fut = Future() + f = [File(f'tester{i}.dat') for i in range(10)] + dfl = DFL(f, fut=fut) + assert len(dfl) == 10 + assert dfl.pop().filename == 'tester9.dat' + assert len(dfl) == 9 + assert dfl.pop(3).filename == 'tester3.dat' + assert len(dfl) == 8 + _ = dfl[15] + dfl.append(File('tester10.dat')) + assert dfl[0].filename == 'tester0.dat' + assert dfl[7].filename == 'tester8.dat' + assert dfl[8].filename == 'tester10.dat' + assert dfl[9].empty + assert dfl._last_idx == 8 + assert len(dfl) == 16 + assert dfl.pop().filename == 'tester10.dat' + + +def test_dynamic_file_sub_list_fixed_size(): + fut = Future() + f = [File(f'tester{i}.dat') for i in range(10)] + dfl = DFL(f, fut=fut) + assert len(dfl) == 10 + dfsl = dfl[2:5] + assert len(dfsl) == 3 + assert dfsl[0].filename == 'tester2.dat' + assert dfsl[2].filename == 'tester4.dat' + dfl.insert(3, File('testBig.dat')) + assert len(dfl) == 11 + assert len(dfsl) == 3 + assert dfsl[0].filename == 'tester2.dat' + assert dfsl[1].filename == 'testBig.dat' + assert dfsl[2].filename == 'tester3.dat' + + dfl.insert(0, File('testSmall.dat')) + assert len(dfl) == 12 + assert len(dfsl) == 3 + assert dfsl[0].filename == 'tester1.dat' + assert dfsl[1].filename == 'tester2.dat' + assert dfsl[2].filename == 'testBig.dat' + + dfl.append(File('testBig3.dat')) + assert len(dfl) == 13 + assert len(dfsl) == 3 + assert dfsl[0].filename == 'tester1.dat' + assert dfsl[1].filename == 'tester2.dat' + assert dfsl[2].filename == 'testBig.dat' + + +def test_dynamic_file_sub_list_dynamic_size_upper(): + fut = Future() + f = [File(f'tester{i}.dat') for i in range(10)] + dfl = DFL(f, fut=fut) + assert len(dfl) == 10 + dfsl = dfl[2:] + assert len(dfsl) == 8 + dfl.insert(3, File('testBig.dat')) + assert len(dfl) == 11 + assert len(dfsl) == 9 + assert dfsl[0].filename == 'tester2.dat' + assert dfsl[1].filename == 'testBig.dat' + assert dfsl[2].filename == 'tester3.dat' + + dfl.insert(0, File('testSmall.dat')) + assert len(dfl) == 12 + assert len(dfsl) == 10 + assert dfsl[0].filename == 'tester1.dat' + assert dfsl[1].filename == 'tester2.dat' + assert dfsl[2].filename == 'testBig.dat' + + dfl.append(File('testBig3.dat')) + assert len(dfl) == 13 + assert len(dfsl) == 11 + assert dfsl[0].filename == 'tester1.dat' + assert dfsl[1].filename == 'tester2.dat' + assert dfsl[2].filename == 'testBig.dat' + + +def test_dynamic_file_sub_list_dynamic_size_lower(): + fut = Future() + f = [File(f'tester{i}.dat') for i in range(10)] + dfl = DFL(f, fut=fut) + assert len(dfl) == 10 + dfsl = dfl[:5] + assert len(dfsl) == 5 + dfl.insert(3, File('testBig.dat')) + assert len(dfl) == 11 + assert len(dfsl) == 5 + assert dfsl[2].filename == 'tester2.dat' + assert dfsl[3].filename == 'testBig.dat' + assert dfsl[4].filename == 'tester3.dat' + + dfl.insert(0, File('testSmall.dat')) + assert len(dfl) == 12 + assert len(dfsl) == 5 + assert dfsl[0].filename == 'testSmall.dat' + assert dfsl[1].filename == 'tester0.dat' + assert dfsl[2].filename == 'tester1.dat' + + dfl.append(File('testBig3.dat')) + assert len(dfl) == 13 + assert len(dfsl) == 5 + assert dfsl[0].filename == 'testSmall.dat' + assert dfsl[1].filename == 'tester0.dat' + assert dfsl[2].filename == 'tester1.dat' + + +def test_dynamic_file_sub_list_dynamic_size_creation(): + fut = Future() + dfl = DFL(fut=fut) + assert len(dfl) == 0 + dfsl = dfl[2:] + assert len(dfl) == 3 + assert len(dfsl) == 1 + + dfl2 = DFL(fut=fut) + assert len(dfl2) == 0 + dfsl2 = dfl2[2:5] + assert len(dfl2) == 5 + assert len(dfsl2) == 3 + + dfl3 = DFL(fut=fut) + assert len(dfl3) == 0 + dfsl3 = dfl3[:5] + assert len(dfl3) == 5 + assert len(dfsl3) == 5 + + +if __name__ == '__main__': + ret = pytest.main(['-v', __file__, '--config', '/home/friedel/devel/parsl/parsl/tests/configs/local_threads.py', '--random-order']) From 69d8f02b8853eeef8c163c35d03a5828a7d3e62d Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 21 May 2024 09:51:15 -0500 Subject: [PATCH 02/59] integrated dynamic file into output file handling --- parsl/data_provider/data_manager.py | 15 +- parsl/data_provider/dynamic_files.py | 151 +++++++++++++------ parsl/dataflow/dflow.py | 8 +- parsl/tests/test_data/test_dynamic_file.py | 165 +++++++++++++++------ test-requirements.txt | 1 + 5 files changed, 248 insertions(+), 92 deletions(-) diff --git a/parsl/data_provider/data_manager.py b/parsl/data_provider/data_manager.py index 3fa9204b5e..bc6f70b352 100644 --- a/parsl/data_provider/data_manager.py +++ b/parsl/data_provider/data_manager.py @@ -8,6 +8,7 @@ from parsl.data_provider.ftp import FTPSeparateTaskStaging from parsl.data_provider.http import HTTPSeparateTaskStaging from parsl.data_provider.staging import Staging +from parsl.data_provider.dynamic_files import DynamicFileList if TYPE_CHECKING: from parsl.dataflow.dflow import DataFlowKernel @@ -57,7 +58,19 @@ def replace_task_stage_out(self, file: File, func: Callable, executor: str) -> C raise ValueError("Executor {} cannot stage file {}".format(executor, repr(file))) def optionally_stage_in(self, input, func, executor): - if isinstance(input, DataFuture): + if isinstance(input, DynamicFileList.DynamicFile): + if input.empty: + file = DynamicFileList.DynamicFile + # TODO NEED TO TRACK FILE IF IT IS EMPTY + pass + else: + file = input.file_obj.file_obj.cleancopy() + # replace the input DataFuture with a new DataFuture which will complete at + # the same time as the original one, but will contain the newly + # copied file + input = DataFuture(input, file, tid=input.tid) + return (input, func) + elif isinstance(input, DataFuture): file = input.file_obj.cleancopy() # replace the input DataFuture with a new DataFuture which will complete at # the same time as the original one, but will contain the newly diff --git a/parsl/data_provider/dynamic_files.py b/parsl/data_provider/dynamic_files.py index 2651852d0e..f25c5b32ba 100644 --- a/parsl/data_provider/dynamic_files.py +++ b/parsl/data_provider/dynamic_files.py @@ -9,13 +9,14 @@ """ from __future__ import annotations from concurrent.futures import Future -from typing import List, Optional, Union, Callable +from typing import List, Optional, Union, Callable, Dict import typeguard import logging from parsl.data_provider.files import File from parsl.app.futures import DataFuture +from parsl.dataflow.futures import AppFuture logger = logging.getLogger(__name__) @@ -57,13 +58,19 @@ def __init__(self, fut: DynamicFileList, file_obj: Optional[Union[File, DataFutu Args: - fut (AppFuture) : AppFuture that this DynamicFile will track - file_obj (File/DataFuture obj) : Something representing file(s) - """ + """ # TODO need to be able to link output and input dynamic file objects and update when the output changes super().__init__() self._is_df = isinstance(file_obj, DataFuture) self.parent = fut self.file_obj = file_obj self.parent.add_done_callback(self.parent_callback) self._empty = file_obj is None #: Tracks whether this wrapper is empty + self._staged_out = False + + @property + def staged(self): + """Return whether this file has been staged out.""" + return self._staged_out @property def empty(self): @@ -84,6 +91,12 @@ def set(self, file_obj: Union[File, DataFuture, 'DynamicFileList.DynamicFile']): self._is_df = isinstance(self.file_obj, DataFuture) self.parent.add_done_func(self.file_obj.filename, self.done) + def convert_to_df(self): + """Convert the file_obj to a DataFuture.""" + if not self._is_df: + self.file_obj = DataFuture(self.parent, self.file_obj, tid=self.parent._output_task_id) + self._is_df = True + def done(self) -> bool: """Return whether the file_obj state is `done`. @@ -94,6 +107,11 @@ def done(self) -> bool: return self.file_obj.done() return True # Files are always done + @property + def is_df(self) -> bool: + """Return whether this instance wraps a DataFuture.""" + return self._is_df + @property def tid(self): """Returns the task_id of the task that will resolve this DataFuture.""" @@ -146,33 +164,11 @@ def parent_callback(self, parent_fu): Returns: - None """ - def _stub(): - return e = parent_fu.exception() if e: self.set_exception(e) else: - for idx, f in enumerate(self): - if isinstance(f, File): ### TODO: and not self.dataflow.check_staging_inhibited() - f_copy = f.cleancopy() - logger.debug("Submitting stage out for output file {}".format(repr(f))) - stageout_fut = self.dataflow.data_manager.stage_out(f_copy, self.executor, parent_fu) - if stageout_fut: - logger.debug("Adding a dependency on stageout future for {}".format(repr(f))) - parent_fu._outputs.append(DataFuture(stageout_fut, f, tid=parent_fu.tid)) - else: - logger.debug("No stageout dependency for {}".format(repr(f))) - parent_fu._outputs.append(DataFuture(parent_fu, f, tid=parent_fu.tid)) - - # this is a hook for post-task stageout - # note that nothing depends on the output - which is maybe a bug - # in the not-very-tested stageout system? - func = self.dataflow.data_manager.replace_task_stage_out(f_copy, _stub, self.executor) - func() - elif isinstance(f, DataFuture): - logger.debug("Not performing output staging for: {}".format(repr(f))) - parent_fu._outputs.append(DataFuture(parent_fu, f, tid=parent_fu.tid)) - + self.parent._outputs = self self.set_result(self) ''''' @@ -196,7 +192,7 @@ def file_callback(self, file_fu: Future): self.files_done[file_fu.filename] = file_fu.done() ''' @typeguard.typechecked - def __init__(self, files: Optional[List[Union[File, DataFuture, DynamicFile]]] = None, fut: Optional[Future] = None): + def __init__(self, files: Optional[List[Union[File, DataFuture, DynamicFile]]] = None): """Construct a DynamicFileList instance Args: @@ -204,17 +200,17 @@ def __init__(self, files: Optional[List[Union[File, DataFuture, DynamicFile]]] = - fut (Future) : Future to set as the parent """ super().__init__() - self.files_done = {} #: dict mapping file names to their "done" status True/False + self.files_done: Dict[str, Callable] = {} #: dict mapping file names to their "done" status True/False self._last_idx = -1 - self.executor = None - self.parent = fut + self.executor: str = '' + self.parent: Union[AppFuture, None] = None self.dataflow = None - self._sub_callbacks = [] + self._sub_callbacks: List[Callable] = [] self._in_callback = False + self._staging_inhibited = False + self._output_task_id = None if files is not None: self.extend(files) - if fut is not None: - self.parent.add_done_callback(self.parent_callback) def add_done_func(self, name: str, func: Callable): """ Add a function to the files_done dict, specifically for when an empty DynamicFile @@ -226,6 +222,44 @@ def add_done_func(self, name: str, func: Callable): """ self.files_done[name] = func + def stage_file(self, idx: int): + """ Stage a file at the given index, we do this now becuase so that the app and dataflow + can act accordingly when the app finishes. + + Args: + - idx (int) : Index of the file to stage + """ + if self.dataflow is None: + return + out_file = self[idx] + if out_file.empty or out_file.staged: + return + if self.parent is None or not out_file.is_df: + return + if self._staging_inhibited: + logger.debug("Not performing output staging for: {}".format(repr(out_file.file_obj))) + else: + f_copy = out_file.file_obj.file_obj.cleancopy() + self[idx].file_obj.file_obj = f_copy + logger.debug("Submitting stage out for output file {}".format(repr(out_file.file_obj))) + stageout_fut = self.dataflow.data_manager.stage_out(f_copy, self.executor, self.parent) + if stageout_fut: + logger.debug("Adding a dependency on stageout future for {}".format(repr(out_file))) + self[idx].file_obj.parent = stageout_fut + self[idx].file_obj._tid = self.parent.tid + else: + logger.debug("No stageout dependency for {}".format(repr(f_copy))) + # self.parent._outputs.append(DataFuture(self.parent, out_file.file_obj.file_obj, tid=self.parent.tid)) + func = self.dataflow.tasks[self._output_task_id]['func'] + # this is a hook for post-task stage-out + # note that nothing depends on the output - which is maybe a bug + # in the not-very-tested stage-out system? + func = self.dataflow.data_manager.replace_task_stage_out(f_copy, func, self.executor) + self.dataflow.tasks[self._output_task_id]['func'] = func + self.parent._outputs = self + self._call_callbacks() + # TODO dfk._gather_all_deps + def wrap(self, file_obj: Union[File, DataFuture, None]): """ Wrap a file object in a DynamicFile @@ -234,17 +268,22 @@ def wrap(self, file_obj: Union[File, DataFuture, None]): """ return self.DynamicFile(self, file_obj) - def set_dataflow(self, dataflow, executor: str): + def set_dataflow(self, dataflow, executor: str, st_inhibited: bool, task_id: int): """ Set the dataflow and executor for this instance Args: - dataflow (DataFlowKernel) : Dataflow kernel that this instance is associated with - executor (str) : Executor that this instance is associated with + - st_inhibited (bool) : Whether staging is inhibited """ self.executor = executor self.dataflow = dataflow + self._staging_inhibited = st_inhibited + self._output_task_id = task_id + for idx in range(self._last_idx + 1): + self.stage_file(idx) - def set_parent(self, fut: Future): + def set_parent(self, fut: AppFuture): """ Set the parent future for this instance Args: @@ -254,6 +293,10 @@ def set_parent(self, fut: Future): raise ValueError("Parent future already set") self.parent = fut self.parent.add_done_callback(self.parent_callback) + for idx in range(self._last_idx + 1): + self[idx].convert_to_df() + self.stage_file(idx) + self._call_callbacks() def cancel(self): """ Not implemented """ @@ -293,6 +336,8 @@ def append(self, __object: Union[File, DataFuture, 'DynamicFileList.DynamicFile' - __object (File/DataFuture) : File or DataFuture to append """ if not isinstance(__object, DynamicFileList.DynamicFile): + if self.parent is not None and isinstance(__object, File): + __object = DataFuture(self.parent, __object, tid=self._output_task_id) __object = self.wrap(__object) if self._last_idx == len(self) - 1: super().append(__object) @@ -301,6 +346,7 @@ def append(self, __object: Union[File, DataFuture, 'DynamicFileList.DynamicFile' super().__getitem__(self._last_idx + 1).set(__object) self.files_done[__object.filename] = super().__getitem__(self._last_idx + 1).done self._last_idx += 1 + self.stage_file(self._last_idx) self._call_callbacks() def extend(self, __iterable): @@ -314,12 +360,16 @@ def extend(self, __iterable): if not isinstance(f, (DynamicFileList.DynamicFile, File, DataFuture)): raise ValueError("DynamicFileList can only contain Files or DataFutures") if not isinstance(f, DynamicFileList.DynamicFile): + if self.parent is not None and isinstance(f, File): + f = DataFuture(self.parent, f, tid=self._output_task_id) f = self.wrap(f) self.files_done[f.filename] = f.done items.append(f) if self._last_idx == len(self) - 1: super().extend(items) - self._last_idx += len(items) + for i in range(len(items)): + self._last_idx += 1 + self.stage_file(self._last_idx) self._call_callbacks() return diff = len(self) - 1 - self._last_idx - len(items) @@ -329,6 +379,7 @@ def extend(self, __iterable): self._last_idx += 1 self[self._last_idx].set(item) self.files_done[item.filename] = super().__getitem__(self._last_idx).done + self.stage_file(self._last_idx) self._call_callbacks() def insert(self, __index: int, __object: Union[File, DataFuture, DynamicFile]): @@ -341,9 +392,12 @@ def insert(self, __index: int, __object: Union[File, DataFuture, DynamicFile]): if __index > self._last_idx: raise ValueError("Cannot insert at index greater than the last index") if not isinstance(__object, self.DynamicFile): + if self.parent is not None and isinstance(__object, File): + __object = DataFuture(self.parent, __object, tid=self._output_task_id) __object = self.wrap(__object) self.files_done[__object.filename] = __object.done super().insert(__index, __object) + self.stage_file(__index) self._last_idx += 1 self._call_callbacks() @@ -358,7 +412,7 @@ def remove(self, __value): self._last_idx -= 1 self._call_callbacks() - def pop(self, __index: int = -1) -> Union[File, DataFuture]: + def pop(self, __index: int = -1) -> DataFuture: """ Pop a file from the list and update the files_done dict Args: @@ -383,7 +437,7 @@ def clear(self): self.files_done.clear() self._last_idx = -1 super().clear() - # detach all the callbacks so that sublists can still be used + # detach all the callbacks so that sub-lists can still be used self._sub_callbacks.clear() def _call_callbacks(self): @@ -404,15 +458,21 @@ def __setitem__(self, key: int, value: Union[File, DataFuture, 'DynamicFileList. if self[key].filename in self.files_done: del self.files_done[self[key].filename] if super().__getitem__(key).empty: + if self.parent is not None and isinstance(value, File): + value = DataFuture(self.parent, value, tid=self._output_task_id) super().__getitem__(key).set(value) self.files_done[super().__getitem__(key).filename] = super().__getitem__(key).done self._last_idx = max(self._last_idx, key) + self._call_callbacks() + self.stage_file(key) else: - if not isinstance(value, self.DynamicFile): - value = self.wrap(value) - super().__setitem__(key, value) - self.files_done[value.filename] = value.done - self._call_callbacks() + raise ValueError("Cannot set a value that is not empty") + # if not isinstance(value, self.DynamicFile): + # if isinstance(value, File): + # value = DataFuture(self.parent, value, tid=self._output_task_id) + # value = self.wrap(value) + # super().__setitem__(key, value) + # self.files_done[value.filename] = value.done def __getitem__(self, key): # make sure the list will be long enough when it is filled, so we can return a future @@ -445,9 +505,10 @@ def get_update(self, key: slice): return super().__getitem__(key) def __delitem__(self, key): - del self.files_done[self[key].filename] - super().__delitem__(key) - self._call_callbacks() + raise Exception("Cannot delete from a DynamicFileList") + # del self.files_done[self[key].filename] + # super().__delitem__(key) + # self._call_callbacks() def __repr__(self): type_ = type(self) diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 707e2abc23..5b660e3bce 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -760,9 +760,15 @@ def _add_input_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, return tuple(newargs), kwargs, func - def _add_output_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, Any], app_fut: AppFuture, func: Callable) -> Callable: + def _add_output_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, Any], app_fut: AppFuture, func: Callable, task_id: int) -> Callable: logger.debug("Adding output dependencies") outputs = kwargs.get('outputs', []) + if isinstance(outputs, DynamicFileList): + outputs.set_dataflow(self, executor, self.check_staging_inhibited(kwargs), task_id) + outputs.set_parent(app_fut) + app_fut._outputs = outputs + return func + app_fut._outputs = [] for idx, f in enumerate(outputs): if isinstance(f, File) and not self.check_staging_inhibited(kwargs): diff --git a/parsl/tests/test_data/test_dynamic_file.py b/parsl/tests/test_data/test_dynamic_file.py index 966486e964..0b5e293732 100644 --- a/parsl/tests/test_data/test_dynamic_file.py +++ b/parsl/tests/test_data/test_dynamic_file.py @@ -1,20 +1,31 @@ from concurrent.futures import Future import pytest +#from pytest_mock import mocker +from parsl.data_provider.data_manager import DataManager from parsl.data_provider.dynamic_files import DynamicFileList as DFL from parsl.data_provider.files import File from parsl.app.futures import DataFuture +from parsl.dataflow.futures import AppFuture + + +class MockDFK: + def __init__(self, tasks): + self.executors = {'tester': 'test'} + self.storage_access = [] + self.data_manager = DataManager(self) + self.tasks = {tasks['id']: tasks} def test_dynamic_file_empty(): - fut = DFL(fut=Future()) + fut = DFL() df = DFL.DynamicFile(fut, None) assert df.file_obj is None assert df.empty is True def test_dynamic_file_File(): - fut = DFL(fut=Future()) + fut = DFL() fl = File('test.txt') df = DFL.DynamicFile(fut, fl) assert df.file_obj == fl @@ -26,7 +37,7 @@ def test_dynamic_file_File(): def test_dynamic_file_DataFuture(): fut = Future() fl = DataFuture(fut, File('test2.txt')) - df = DFL.DynamicFile(DFL(fut=fut), fl) + df = DFL.DynamicFile(DFL(), fl) assert df.file_obj == fl assert df.empty is False assert df.done() is False @@ -35,7 +46,7 @@ def test_dynamic_file_DataFuture(): def test_dynamic_file_set(): - fut = DFL(fut=Future()) + fut = DFL() df = DFL.DynamicFile(fut, None) assert df.file_obj is None assert df.empty is True @@ -46,7 +57,7 @@ def test_dynamic_file_set(): def test_dynamic_file_not_implemented(): - fut = DFL(fut=Future()) + fut = DFL() fl = DataFuture(fut, File('test2.txt')) df = DFL.DynamicFile(fut, fl) with pytest.raises(NotImplementedError): @@ -56,16 +67,19 @@ def test_dynamic_file_not_implemented(): def test_dynamic_file_passthrough(): - f = Future() - fut = DFL(fut=f) + fut = DFL() dfl = DataFuture(fut, File('test3.txt')) df = DFL.DynamicFile(fut, dfl) - f.set_running_or_notify_cancel() + assert df.running() is False + af = AppFuture({}) + fut.set_parent(af) + assert df.running() is False + af.set_running_or_notify_cancel() assert df.running() is True def test_dynamic_file_callback(): - fut = DFL(fut=Future()) + fut = DFL() dfl = DataFuture(fut, File('test3.txt')) df = DFL.DynamicFile(fut, dfl) with pytest.raises(Exception): @@ -77,14 +91,12 @@ def test_dynamic_file_callback(): def test_dynamic_file_list(): - fut = Future() - dfl = DFL(fut=fut) + dfl = DFL() assert len(dfl) == 0 def test_dynamic_file_list_append(): - fut = Future() - dfl = DFL(fut=fut) + dfl = DFL() assert len(dfl) == 0 dfl.append(File('test.txt')) @@ -93,8 +105,7 @@ def test_dynamic_file_list_append(): def test_dynamic_file_list_extend(): - fut = Future() - dfl = DFL(fut=fut) + dfl = DFL() assert len(dfl) == 0 dfl.extend([File('test.txt'), File('test2.txt')]) @@ -102,8 +113,7 @@ def test_dynamic_file_list_extend(): def test_dynamic_file_list_dynamics(): - fut = Future() - dfl = DFL(fut=fut) + dfl = DFL() assert len(dfl) == 0 dfl[5] = File('test4.txt') @@ -114,27 +124,26 @@ def test_dynamic_file_list_dynamics(): assert len(dfl) == 6 assert id(dfl[3]) == tempid - dfl[3] = dfl[5] + dfl[2] = dfl[5] assert len(dfl) == 6 - assert id(dfl[3]) != tempid + assert id(dfl[2]) != tempid tempid = id(dfl[5]) - dfl[5] = File('another.test.dat') + with pytest.raises(ValueError): + dfl[5] = File('another.test.dat') assert len(dfl) == 6 - assert tempid != id(dfl[5]) + assert tempid == id(dfl[5]) def test_dynamic_file_list_no_op(): - fut = Future() - dfl = DFL(fut=fut) + dfl = DFL() with pytest.raises(Exception): dfl.cancel() assert dfl.cancelled() is False def test_dynamic_file_list_dynamic_append(): - fut = Future() - dfl = DFL(fut=fut) - fl = dfl[5] + dfl = DFL() + _ = dfl[5] assert len(dfl) == 6 f0 = File('tester5.dat') dfl[0] = f0 @@ -150,9 +159,8 @@ def test_dynamic_file_list_dynamic_append(): def test_dynamic_file_list_dynamic_extend(): - fut = Future() - dfl = DFL(fut=fut) - fl = dfl[5] + dfl = DFL() + _ = dfl[5] assert len(dfl) == 6 f0 = File('tester5.dat') dfl[0] = f0 @@ -179,9 +187,8 @@ def test_dynamic_file_list_dynamic_extend(): def test_dynamic_file_list_insert_and_remove(): - fut = Future() f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f, fut=fut) + dfl = DFL(f) assert len(dfl) == 10 dfl.insert(4, File('tester99.dat')) assert len(dfl) == 11 @@ -198,18 +205,16 @@ def test_dynamic_file_list_insert_and_remove(): def test_dynamic_file_list_clear(): - fut = Future() f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f, fut=fut) + dfl = DFL(f) assert len(dfl) == 10 dfl.clear() assert len(dfl) == 0 def test_dynamic_file_list_pop(): - fut = Future() f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f, fut=fut) + dfl = DFL(f) assert len(dfl) == 10 assert dfl.pop().filename == 'tester9.dat' assert len(dfl) == 9 @@ -227,9 +232,8 @@ def test_dynamic_file_list_pop(): def test_dynamic_file_sub_list_fixed_size(): - fut = Future() f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f, fut=fut) + dfl = DFL(f) assert len(dfl) == 10 dfsl = dfl[2:5] assert len(dfsl) == 3 @@ -258,9 +262,8 @@ def test_dynamic_file_sub_list_fixed_size(): def test_dynamic_file_sub_list_dynamic_size_upper(): - fut = Future() f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f, fut=fut) + dfl = DFL(f) assert len(dfl) == 10 dfsl = dfl[2:] assert len(dfsl) == 8 @@ -287,9 +290,8 @@ def test_dynamic_file_sub_list_dynamic_size_upper(): def test_dynamic_file_sub_list_dynamic_size_lower(): - fut = Future() f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f, fut=fut) + dfl = DFL(f) assert len(dfl) == 10 dfsl = dfl[:5] assert len(dfsl) == 5 @@ -316,25 +318,98 @@ def test_dynamic_file_sub_list_dynamic_size_lower(): def test_dynamic_file_sub_list_dynamic_size_creation(): - fut = Future() - dfl = DFL(fut=fut) + dfl = DFL() assert len(dfl) == 0 dfsl = dfl[2:] assert len(dfl) == 3 assert len(dfsl) == 1 - dfl2 = DFL(fut=fut) + dfl2 = DFL() assert len(dfl2) == 0 dfsl2 = dfl2[2:5] assert len(dfl2) == 5 assert len(dfsl2) == 3 - dfl3 = DFL(fut=fut) + dfl3 = DFL() assert len(dfl3) == 0 dfsl3 = dfl3[:5] assert len(dfl3) == 5 assert len(dfsl3) == 5 +def test_dynamic_file_list_set_parent(): + dfl = DFL() + assert dfl.parent is None + af = AppFuture({}) + dfl.set_parent(af) + assert dfl.parent == af + af1 = AppFuture({}) + with pytest.raises(ValueError): + dfl.set_parent(af1) + + +def test_dynamic_file_list_set_dataflow(): + dfl = DFL() + tr = {'id': 101, 'func': None} + af = AppFuture(tr) + dfl.set_parent(af) + dflow = MockDFK(tr) + dfl.set_dataflow(dflow, 'tester', False, 101) + assert dfl.dataflow == dflow + assert dfl.parent._outputs == dfl + + +def test_dynamic_file_list_staging_with_files(): + dfl = DFL([File(f'tester{i}.dat') for i in range(10)]) + tr = {'id': 101, 'func': None} + af = AppFuture(tr) + dfl.set_parent(af) + dflow = MockDFK(tr) + dfl.set_dataflow(dflow, 'tester', False, 101) + assert dfl.dataflow == dflow + assert dfl.parent._outputs == dfl + + +def test_dynamic_file_list_staging_with_df(): + tr = {'id': 101, 'func': None} + af = AppFuture(tr) + dfl = DFL([DataFuture(af, File(f'tester{i}.dat')) for i in range(10)]) + dfl.set_parent(af) + dflow = MockDFK(tr) + dfl.set_dataflow(dflow, 'tester', False, 101) + assert dfl.dataflow == dflow + assert dfl.parent._outputs == dfl + + +def test_dynamic_filer_list_staging_mix(): + dfl = DFL([File(f'tester{i}.dat') for i in range(10)]) + tr = {'id': 101, 'func': None} + af = AppFuture(tr) + dfl.set_parent(af) + dflow = MockDFK(tr) + dfl.set_dataflow(dflow, 'tester', False, 101) + assert dfl.dataflow == dflow + assert dfl.parent._outputs == dfl + dfl.append(File('newtester.dat')) + + +def stub_func(): + pass + + +def test_dynamic_file_list_mock(mocker): + path = 'parsl.data_provider.data_manager.DataManager' + mocker.patch(f"{path}.stage_out", return_value=stub_func) + dfl = DFL([File(f'tester{i}.dat') for i in range(10)]) + tr = {'id': 101, 'func': None} + af = AppFuture(tr) + dfl.set_parent(af) + dflow = MockDFK(tr) + dfl.set_dataflow(dflow, 'tester', False, 101) + assert dfl.dataflow == dflow + assert dfl.parent._outputs == dfl + dfl.append(File('newtester.dat')) + + if __name__ == '__main__': ret = pytest.main(['-v', __file__, '--config', '/home/friedel/devel/parsl/parsl/tests/configs/local_threads.py', '--random-order']) diff --git a/test-requirements.txt b/test-requirements.txt index 050c8e829b..087b31a8f8 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -3,6 +3,7 @@ ipyparallel pandas pytest>=7.4.0,<8 pytest-cov +pytest-mock pytest-random-order nbsphinx sphinx_rtd_theme From 882e3ba4a9ad63afb1c2b8a80970863fa317d347 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Fri, 7 Jun 2024 11:17:06 -0500 Subject: [PATCH 03/59] data flow kernel changes to accommodate dynamic file lists --- parsl/dataflow/dflow.py | 12 +++++++++--- parsl/version.py | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 5b660e3bce..7510d2e170 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -26,6 +26,7 @@ from parsl.config import Config from parsl.data_provider.data_manager import DataManager from parsl.data_provider.files import File +from parsl.data_provider.dynamic_files import DynamicFileList from parsl.dataflow.errors import BadCheckpoint, DependencyError, JoinError from parsl.dataflow.futures import AppFuture from parsl.dataflow.memoization import Memoizer @@ -826,8 +827,13 @@ def check_dep(d: Any) -> None: check_dep(dep) # Check for futures in inputs=[...] - for dep in kwargs.get('inputs', []): - check_dep(dep) + inp = kwargs.get('inputs', []) + if isinstance(inp, DynamicFileList): + check_dep(inp) + else: + for dep in inp: + print(f" checking inputs: {dep}") + check_dep(dep) return depends @@ -1006,7 +1012,7 @@ def submit(self, # Transform remote input files to data futures app_args, app_kwargs, func = self._add_input_deps(executor, app_args, app_kwargs, func) - func = self._add_output_deps(executor, app_args, app_kwargs, app_fu, func) + func = self._add_output_deps(executor, app_args, app_kwargs, app_fu, func, task_id) task_record.update({ 'args': app_args, diff --git a/parsl/version.py b/parsl/version.py index 0ba4a3c991..6503d18e3e 100644 --- a/parsl/version.py +++ b/parsl/version.py @@ -1,3 +1,3 @@ """Set module version. """ -VERSION = '1.3.0-dev' +VERSION = '1.3.1-dev' From 7138adc03709c4727f40c27194ce829adc695fb0 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Fri, 7 Jun 2024 13:03:16 -0500 Subject: [PATCH 04/59] Auto stash before checking out "HEAD" --- parsl/monitoring/db_manager.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 9f19cd9f4d..e6100de1df 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -233,6 +233,8 @@ class Block(Base): PrimaryKeyConstraint('run_id', 'block_id', 'executor_label', 'timestamp'), ) + class File(Base): + __tablename__ = FILE class Resource(Base): __tablename__ = RESOURCE try_id = Column('try_id', Integer, nullable=False) From 5bff70f599bb3a07b3605edd06b216181133a7a1 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Fri, 7 Jun 2024 15:17:06 -0500 Subject: [PATCH 05/59] creation of file tale in the monitoring initial code to handle file related monitoring messages --- parsl/app/futures.py | 14 ++++++++- parsl/data_provider/dynamic_files.py | 15 +++++++++ parsl/data_provider/files.py | 16 ++++++++-- parsl/dataflow/dflow.py | 24 +++++++++++++- parsl/monitoring/db_manager.py | 47 ++++++++++++++++++++++++++-- parsl/monitoring/message_type.py | 3 ++ parsl/monitoring/router.py | 2 ++ 7 files changed, 114 insertions(+), 7 deletions(-) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index f3bc067c84..3bd86a7349 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -3,7 +3,7 @@ import logging from concurrent.futures import Future from typing import Optional - +from datetime import datetime, timezone import typeguard from parsl.data_provider.files import File @@ -36,6 +36,7 @@ def parent_callback(self, parent_fu): if e: self.set_exception(e) else: + self._done_timestamp = datetime.now(timezone.utc) self.set_result(self.file_obj) @typeguard.typechecked @@ -60,6 +61,7 @@ def __init__(self, fut: Future, file_obj: File, tid: Optional[int] = None) -> No self.parent = fut self.parent.add_done_callback(self.parent_callback) + self._done_timestamp = None logger.debug("Creating DataFuture with parent: %s and file: %s", self.parent, repr(self.file_obj)) @@ -78,6 +80,16 @@ def filename(self): """Filepath of the File object this datafuture represents.""" return self.filepath + @property + def uuid(self): + """UUID of the File object this datafuture represents.""" + return self.file_obj.uuid + + @property + def timestamp(self): + """Timestamp when the future was marked done.""" + return self._done_timestamp + def cancel(self): raise NotImplementedError("Cancel not implemented") diff --git a/parsl/data_provider/dynamic_files.py b/parsl/data_provider/dynamic_files.py index f25c5b32ba..db8921bbc3 100644 --- a/parsl/data_provider/dynamic_files.py +++ b/parsl/data_provider/dynamic_files.py @@ -66,6 +66,7 @@ def __init__(self, fut: DynamicFileList, file_obj: Optional[Union[File, DataFutu self.parent.add_done_callback(self.parent_callback) self._empty = file_obj is None #: Tracks whether this wrapper is empty self._staged_out = False + self._timestamp = None @property def staged(self): @@ -77,6 +78,20 @@ def empty(self): """Return whether this is an empty wrapper.""" return self._empty + @property + def uuid(self): + """Return the uuid of the file object this datafuture represents.""" + if self._empty: + return None + return self.file_obj.uuid + + @property + def timestamp(self): + """Return the timestamp of the file object this datafuture represents.""" + if self._empty: + return None + return self.file_obj.timestamp + @typeguard.typechecked def set(self, file_obj: Union[File, DataFuture, 'DynamicFileList.DynamicFile']): """Set the file_obj for this instance. diff --git a/parsl/data_provider/files.py b/parsl/data_provider/files.py index 4263753dce..1f10595c57 100644 --- a/parsl/data_provider/files.py +++ b/parsl/data_provider/files.py @@ -9,6 +9,7 @@ import os from typing import Optional, Union from urllib.parse import urlparse +import uuid import typeguard @@ -28,7 +29,7 @@ class File: """ @typeguard.typechecked - def __init__(self, url: Union[os.PathLike, str]): + def __init__(self, url: Union[os.PathLike, str], uu_id: Union[uuid.UUID, None] = None): """Construct a File object from a url string. Args: @@ -46,6 +47,10 @@ def __init__(self, url: Union[os.PathLike, str]): self.path = parsed_url.path self.filename = os.path.basename(self.path) self.local_path: Optional[str] = None + if uu_id is not None: + self.uuid = uu_id + else: + self.uuid = uuid.uuid1() def cleancopy(self) -> "File": """Returns a copy of the file containing only the global immutable state, @@ -53,7 +58,7 @@ def cleancopy(self) -> "File": object will be as the original object was when it was constructed. """ logger.debug("Making clean copy of File object {}".format(repr(self))) - return File(self.url) + return File(self.url, self.uuid) def __str__(self) -> str: return self.filepath @@ -67,7 +72,8 @@ def __repr__(self) -> str: f"netloc={self.netloc}", f"path={self.path}", f"filename={self.filename}", - ] + f"uuid={self.uuid}", + ] if self.local_path is not None: content.append(f"local_path={self.local_path}") @@ -96,3 +102,7 @@ def filepath(self) -> str: return self.path else: raise ValueError("No local_path set for {}".format(repr(self))) + + @property + def timesatmp(self) -> Optional[str]: + return None diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 7d02e95405..af6c0259fc 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -227,6 +227,28 @@ def _send_task_log_info(self, task_record: TaskRecord) -> None: task_log_info = self._create_task_log_info(task_record) self.monitoring.send(MessageType.TASK_INFO, task_log_info) + def _send_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.DynamicFile], + task_record: TaskRecord) -> None: + if self.monitoring: + file_log_info = self._create_file_log_info(file, task_record) + self.monitoring.send(MessageType.FILE_INFO, file_log_info) + + def _create_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.DynamicFile], + task_record: TaskRecord) -> Dict[str, Any]: + """ + Create the dictionary that will be included in the log. + """ + info_to_monitor = ['file_name', 'file_id', 'run_id', 'task_id', 'timestamp'] + + file_log_info = {'file_name': file.filename, + 'file_id': file.uuid, + 'run_id': self.run_id, + 'task_id': task_record['id'], + 'try_id': task_record['try_id'], + 'timestamp': file.timestamp + } + return file_log_info + def _create_task_log_info(self, task_record: TaskRecord) -> Dict[str, Any]: """ Create the dictionary that will be included in the log. @@ -238,7 +260,7 @@ def _create_task_log_info(self, task_record: TaskRecord) -> Dict[str, Any]: # They are valid if all entries in info_to_monitor are declared in the definition of TaskRecord # This type: ignore[literal-required] asserts that fact. task_log_info = {"task_" + k: task_record[k] for k in info_to_monitor} # type: ignore[literal-required] - + # TODO: MUST ADD ENV AND ARGS INFO task_log_info['run_id'] = self.run_id task_log_info['try_id'] = task_record['try_id'] task_log_info['timestamp'] = datetime.datetime.now() diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index e6100de1df..96612d1a2b 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -45,6 +45,7 @@ RESOURCE = 'resource' # Resource table includes task resource utilization NODE = 'node' # Node table include node info BLOCK = 'block' # Block table include the status for block polling +FILES = 'files' # Files table include file info class Database: @@ -161,9 +162,11 @@ class Task(Base): task_hashsum = Column('task_hashsum', Text, nullable=True, index=True) task_inputs = Column('task_inputs', Text, nullable=True) task_outputs = Column('task_outputs', Text, nullable=True) + task_args = Column('task_args', Text, nullable=True) task_stdin = Column('task_stdin', Text, nullable=True) task_stdout = Column('task_stdout', Text, nullable=True) task_stderr = Column('task_stderr', Text, nullable=True) + task_env = Column('task_env', Text, nullable=True) task_time_invoked = Column( 'task_time_invoked', DateTime, nullable=True) @@ -233,8 +236,20 @@ class Block(Base): PrimaryKeyConstraint('run_id', 'block_id', 'executor_label', 'timestamp'), ) - class File(Base): - __tablename__ = FILE + class Files(Base): + __tablename__ = FILES + file_name = Column('file_name', Text, index=True, nullable=False) + file_id = Column('file_id', Text, index=True, nullable=False) + task_run_id = Column('run_id', Text, ForeignKey(TASK + ".run_id"), + nullable=False) + task_id = Column('task_id', Integer, ForeignKey(TASK + ".task_id"), + nullable=False) + try_id = Column('try_id', Integer, ForeignKey(TRY + ".try_id"), + nullable=False) + timestamp = Column('timestamp', DateTime, nullable=True) + Index("files_task_run_id_idx", "task_run_id", "task_id", "try_id") + __table_args__ = (PrimaryKeyConstraint('file_id')) + class Resource(Base): __tablename__ = RESOURCE try_id = Column('try_id', Integer, nullable=False) @@ -360,6 +375,11 @@ def start(self, """ inserted_tries = set() # type: Set[Any] + """ + like inserted_tasks but for Files + """ + inserted_files = set() # type: Set[Any] + # for any task ID, we can defer exactly one message, which is the # assumed-to-be-unique first message (with first message flag set). # The code prior to this patch will discard previous message in @@ -405,6 +425,7 @@ def start(self, "Got {} messages from priority queue".format(len(priority_messages))) task_info_update_messages, task_info_insert_messages, task_info_all_messages = [], [], [] try_update_messages, try_insert_messages, try_all_messages = [], [], [] + file_update_messages, file_insert_messages, file_all_messages = [], [], [] for msg_type, msg in priority_messages: if msg_type == MessageType.WORKFLOW_INFO: if "python_version" in msg: # workflow start message @@ -441,6 +462,14 @@ def start(self, if task_try_id in deferred_resource_messages: reprocessable_first_resource_messages.append( deferred_resource_messages.pop(task_try_id)) + elif msg_type == MessageType.FILES_INFO: + file_id = msg['file_id'] + file_all_messages.append(msg) + if file_id in inserted_files: + file_update_messages.append(msg) + else: + inserted_files.add(file_id) + file_insert_messages.append(msg) else: raise RuntimeError("Unexpected message type {} received on priority queue".format(msg_type)) @@ -471,6 +500,17 @@ def start(self, self._insert(table=STATUS, messages=task_info_all_messages) + if file_insert_messages: + logger.debug("Inserting {} FILES_INFO to files table".format(len(file_insert_messages))) + self._insert(table=FILES, messages=file_insert_messages) + logger.debug( + "There are {} inserted file records".format(len(inserted_files))) + + if file_update_messages: + logger.debug("Updating {} FILES_INFO into files table".format(len(file_update_messages))) + self._update(table=FILES, + columns=['timestamp'], + messages=file_update_messages) if try_insert_messages: logger.debug("Inserting {} TASK_INFO to try table".format(len(try_insert_messages))) self._insert(table=TRY, messages=try_insert_messages) @@ -626,6 +666,9 @@ def _dispatch_to_internal(self, x: Tuple) -> None: elif x[0] == MessageType.BLOCK_INFO: logger.info("Will put {} to pending block queue".format(x[1])) self.pending_block_queue.put(x[-1]) + elif x[0] == MessageType.FILE_INFO: + logger.info("Will put {} to pending file queue".format(x[1])) + self.pending_file_queue.put(x[-1]) else: logger.error("Discarding message of unknown type {}".format(x[0])) diff --git a/parsl/monitoring/message_type.py b/parsl/monitoring/message_type.py index 366b61bd42..e177a33cf2 100644 --- a/parsl/monitoring/message_type.py +++ b/parsl/monitoring/message_type.py @@ -17,3 +17,6 @@ class MessageType(Enum): # Reports of the block info BLOCK_INFO = 4 + + # Reports file info + FILE_INFO = 5 diff --git a/parsl/monitoring/router.py b/parsl/monitoring/router.py index 70b4862295..8a233e6c0d 100644 --- a/parsl/monitoring/router.py +++ b/parsl/monitoring/router.py @@ -134,6 +134,8 @@ def start(self, priority_msgs.put(msg_0) elif msg[0] == MessageType.WORKFLOW_INFO: priority_msgs.put(msg_0) + elif msg[0] == MessageType.FILE_INFO: + priority_msgs.put(msg_0) else: # There is a type: ignore here because if msg[0] # is of the correct type, this code is unreachable, From 602569104f1b345521e0502e9da028e1f944b295 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Fri, 14 Jun 2024 14:24:28 -0500 Subject: [PATCH 06/59] added initial file provenance data in database --- parsl/app/futures.py | 10 ++-- parsl/data_provider/dynamic_files.py | 8 +++- parsl/data_provider/files.py | 7 ++- parsl/dataflow/dflow.py | 60 +++++++++++++++++++---- parsl/monitoring/db_manager.py | 71 +++++++++++++++++++++++++--- parsl/monitoring/message_type.py | 2 + 6 files changed, 136 insertions(+), 22 deletions(-) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index 3bd86a7349..a08d3c3b0a 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -3,7 +3,7 @@ import logging from concurrent.futures import Future from typing import Optional -from datetime import datetime, timezone +from datetime import datetime import typeguard from parsl.data_provider.files import File @@ -36,7 +36,6 @@ def parent_callback(self, parent_fu): if e: self.set_exception(e) else: - self._done_timestamp = datetime.now(timezone.utc) self.set_result(self.file_obj) @typeguard.typechecked @@ -61,7 +60,6 @@ def __init__(self, fut: Future, file_obj: File, tid: Optional[int] = None) -> No self.parent = fut self.parent.add_done_callback(self.parent_callback) - self._done_timestamp = None logger.debug("Creating DataFuture with parent: %s and file: %s", self.parent, repr(self.file_obj)) @@ -88,7 +86,11 @@ def uuid(self): @property def timestamp(self): """Timestamp when the future was marked done.""" - return self._done_timestamp + return self.file_obj.timestamp + + @timestamp.setter + def timestamp(self, value: Optional[datetime]) -> None: + self.file_obj.timestamp = value def cancel(self): raise NotImplementedError("Cancel not implemented") diff --git a/parsl/data_provider/dynamic_files.py b/parsl/data_provider/dynamic_files.py index db8921bbc3..d4d170ef75 100644 --- a/parsl/data_provider/dynamic_files.py +++ b/parsl/data_provider/dynamic_files.py @@ -9,6 +9,7 @@ """ from __future__ import annotations from concurrent.futures import Future +from datetime import datetime, timezone from typing import List, Optional, Union, Callable, Dict import typeguard @@ -48,6 +49,8 @@ def parent_callback(self, parent_fu: Future): if e: self.set_exception(e) else: + self.file_obj.timestamp = datetime.now(timezone.utc) + self.parent.dataflow.register_as_output(self.file_obj, self.parent.task_record) self.set_result(self.file_obj) def __init__(self, fut: DynamicFileList, file_obj: Optional[Union[File, DataFuture]] = None): @@ -66,7 +69,6 @@ def __init__(self, fut: DynamicFileList, file_obj: Optional[Union[File, DataFutu self.parent.add_done_callback(self.parent_callback) self._empty = file_obj is None #: Tracks whether this wrapper is empty self._staged_out = False - self._timestamp = None @property def staged(self): @@ -224,6 +226,7 @@ def __init__(self, files: Optional[List[Union[File, DataFuture, DynamicFile]]] = self._in_callback = False self._staging_inhibited = False self._output_task_id = None + self.task_record = None if files is not None: self.extend(files) @@ -283,7 +286,7 @@ def wrap(self, file_obj: Union[File, DataFuture, None]): """ return self.DynamicFile(self, file_obj) - def set_dataflow(self, dataflow, executor: str, st_inhibited: bool, task_id: int): + def set_dataflow(self, dataflow, executor: str, st_inhibited: bool, task_id: int, task_record: dict): """ Set the dataflow and executor for this instance Args: @@ -295,6 +298,7 @@ def set_dataflow(self, dataflow, executor: str, st_inhibited: bool, task_id: int self.dataflow = dataflow self._staging_inhibited = st_inhibited self._output_task_id = task_id + self.task_record = task_record for idx in range(self._last_idx + 1): self.stage_file(idx) diff --git a/parsl/data_provider/files.py b/parsl/data_provider/files.py index 1f10595c57..c00d21e3c8 100644 --- a/parsl/data_provider/files.py +++ b/parsl/data_provider/files.py @@ -7,6 +7,7 @@ """ import logging import os +import datetime from typing import Optional, Union from urllib.parse import urlparse import uuid @@ -29,7 +30,8 @@ class File: """ @typeguard.typechecked - def __init__(self, url: Union[os.PathLike, str], uu_id: Union[uuid.UUID, None] = None): + def __init__(self, url: Union[os.PathLike, str], uu_id: Union[uuid.UUID, None] = None, + timestamp: Optional[datetime.datetime] = None): """Construct a File object from a url string. Args: @@ -46,6 +48,7 @@ def __init__(self, url: Union[os.PathLike, str], uu_id: Union[uuid.UUID, None] = self.netloc = parsed_url.netloc self.path = parsed_url.path self.filename = os.path.basename(self.path) + self.timestamp = timestamp self.local_path: Optional[str] = None if uu_id is not None: self.uuid = uu_id @@ -58,7 +61,7 @@ def cleancopy(self) -> "File": object will be as the original object was when it was constructed. """ logger.debug("Making clean copy of File object {}".format(repr(self))) - return File(self.url, self.uuid) + return File(self.url, self.uuid, self.timestamp) def __str__(self) -> str: return self.filepath diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index af6c0259fc..d0c08ed445 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -249,18 +249,46 @@ def _create_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.Dy } return file_log_info + def register_as_input(self, f: Union(DynamicFileList.DynamicFile, File, DataFuture), + task_record: TaskRecord): + if self.monitoring: + self._send_file_log_info(f, task_record) + file_input_info = self._create_file_io_info(f, task_record) + self.monitoring.send(MessageType.INPUT_FILE, file_input_info) + + def register_as_output(self, f: Union(DynamicFileList.DynamicFile, File, DataFuture), + task_record: TaskRecord): + if self.monitoring: + self._send_file_log_info(f, task_record) + file_output_info = self._create_file_io_info(f, task_record) + self.monitoring.send(MessageType.OUTPUT_FILE, file_output_info) + + def _create_file_io_info(self, file: Union[File, DataFuture, DynamicFileList.DynamicFile], + task_record: TaskRecord) -> Dict[str, Any]: + """ + Create the dictionary that will be included in the log. + """ + file_io_info = {'file_id': file.uuid, + 'run_id': self.run_id, + 'task_id': task_record['id'], + 'try_id': task_record['try_id'], + } + return file_io_info + def _create_task_log_info(self, task_record: TaskRecord) -> Dict[str, Any]: """ Create the dictionary that will be included in the log. """ info_to_monitor = ['func_name', 'memoize', 'hashsum', 'fail_count', 'fail_cost', 'status', - 'id', 'time_invoked', 'try_time_launched', 'time_returned', 'try_time_returned', 'executor'] + 'id', 'time_invoked', 'try_time_launched', 'time_returned', 'try_time_returned', 'executor', + 'env'] # mypy cannot verify that these task_record[k] references are valid: # They are valid if all entries in info_to_monitor are declared in the definition of TaskRecord # This type: ignore[literal-required] asserts that fact. task_log_info = {"task_" + k: task_record[k] for k in info_to_monitor} # type: ignore[literal-required] - # TODO: MUST ADD ENV AND ARGS INFO + task_log_info['task_args'] = str(task_record['args']) + task_log_info['task_kwargs'] = str(task_record['kwargs']) task_log_info['run_id'] = self.run_id task_log_info['try_id'] = task_record['try_id'] task_log_info['timestamp'] = datetime.datetime.now() @@ -780,7 +808,8 @@ def launch_task(self, task_record: TaskRecord) -> Future: return exec_fu - def _add_input_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, Any], func: Callable) -> Tuple[Sequence[Any], Dict[str, Any], + def _add_input_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, Any], func: Callable, + task_record: TaskRecord) -> Tuple[Sequence[Any], Dict[str, Any], Callable]: """Look for inputs of the app that are files. Give the data manager the opportunity to replace a file with a data future for that file, @@ -801,6 +830,7 @@ def _add_input_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, inputs = kwargs.get('inputs', []) for idx, f in enumerate(inputs): (inputs[idx], func) = self.data_manager.optionally_stage_in(f, func, executor) + self.register_as_input(f, task_record) for kwarg, f in kwargs.items(): # stdout and stderr files should not be staging in (they will be staged *out* @@ -808,18 +838,23 @@ def _add_input_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, if kwarg in ['stdout', 'stderr']: continue (kwargs[kwarg], func) = self.data_manager.optionally_stage_in(f, func, executor) + if isinstance(f, (DynamicFileList.DynamicFile, File, DataFuture)): + self.register_as_input(f, task_record) newargs = list(args) for idx, f in enumerate(newargs): (newargs[idx], func) = self.data_manager.optionally_stage_in(f, func, executor) + if isinstance(f, (DynamicFileList.DynamicFile, File, DataFuture)): + self.register_as_input(f, task_record) return tuple(newargs), kwargs, func - def _add_output_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, Any], app_fut: AppFuture, func: Callable, task_id: int) -> Callable: + def _add_output_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, Any], app_fut: AppFuture, + func: Callable, task_id: int, task_record: TaskRecord) -> Callable: logger.debug("Adding output dependencies") outputs = kwargs.get('outputs', []) if isinstance(outputs, DynamicFileList): - outputs.set_dataflow(self, executor, self.check_staging_inhibited(kwargs), task_id) + outputs.set_dataflow(self, executor, self.check_staging_inhibited(kwargs), task_id, task_record) outputs.set_parent(app_fut) app_fut._outputs = outputs return func @@ -1054,7 +1089,16 @@ def submit(self, 'time_returned': None, 'try_time_launched': None, 'try_time_returned': None, - 'resource_specification': resource_specification} + 'resource_specification': resource_specification, + 'env': None} + + exec_instance = self.executors[executor] + provider = getattr(exec_instance, 'provider', None) + if provider is not None: + worker_init = getattr(provider, 'worker_init', None) + if worker_init is not None: + task_record['env'] = worker_init + self.update_task_state(task_record, States.unsched) @@ -1072,9 +1116,9 @@ def submit(self, task_record['app_fu'] = app_fu # Transform remote input files to data futures - app_args, app_kwargs, func = self._add_input_deps(executor, app_args, app_kwargs, func) + app_args, app_kwargs, func = self._add_input_deps(executor, app_args, app_kwargs, func, task_record) - func = self._add_output_deps(executor, app_args, app_kwargs, app_fu, func, task_id) + func = self._add_output_deps(executor, app_args, app_kwargs, app_fu, func, task_id, task_record) logger.debug("Added output dependencies") diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 96612d1a2b..d6d5c2014e 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -46,7 +46,8 @@ NODE = 'node' # Node table include node info BLOCK = 'block' # Block table include the status for block polling FILES = 'files' # Files table include file info - +INPUT_FILES = 'input_files' # Input files table include input file info +OUTPUT_FILES = 'output_files' # Output files table include output file info class Database: @@ -163,6 +164,7 @@ class Task(Base): task_inputs = Column('task_inputs', Text, nullable=True) task_outputs = Column('task_outputs', Text, nullable=True) task_args = Column('task_args', Text, nullable=True) + task_kwargs = Column('task_kwargs', Text, nullable=True) task_stdin = Column('task_stdin', Text, nullable=True) task_stdout = Column('task_stdout', Text, nullable=True) task_stderr = Column('task_stderr', Text, nullable=True) @@ -240,15 +242,39 @@ class Files(Base): __tablename__ = FILES file_name = Column('file_name', Text, index=True, nullable=False) file_id = Column('file_id', Text, index=True, nullable=False) - task_run_id = Column('run_id', Text, ForeignKey(TASK + ".run_id"), + task_run_id = Column('run_id', Text, sa.ForeignKey(TASK + ".run_id"), nullable=False) - task_id = Column('task_id', Integer, ForeignKey(TASK + ".task_id"), + task_id = Column('task_id', Integer, sa.ForeignKey(TASK + ".task_id"), nullable=False) - try_id = Column('try_id', Integer, ForeignKey(TRY + ".try_id"), + try_id = Column('try_id', Integer, sa.ForeignKey(TRY + ".try_id"), nullable=False) timestamp = Column('timestamp', DateTime, nullable=True) - Index("files_task_run_id_idx", "task_run_id", "task_id", "try_id") - __table_args__ = (PrimaryKeyConstraint('file_id')) + sa.Index("files_task_run_id_idx", "task_run_id", "task_id", "try_id") + __table_args__ = (PrimaryKeyConstraint('file_id'),) + + class InputFiles(Base): + __tablename__ = INPUT_FILES + file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), + nullable=False) + task_run_id = Column('run_id', Text, sa.ForeignKey(TASK + ".run_id"), + nullable=False) + task_id = Column('task_id', Integer, sa.ForeignKey(TASK + ".task_id"), + nullable=False) + try_id = Column('try_id', Integer, sa.ForeignKey(TRY + ".try_id"), + nullable=False) + __table_args__ = (PrimaryKeyConstraint('file_id'),) + + class OutputFiles(Base): + __tablename__ = OUTPUT_FILES + file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), + nullable=False) + task_run_id = Column('run_id', Text, sa.ForeignKey(TASK + ".run_id"), + nullable=False) + task_id = Column('task_id', Integer, sa.ForeignKey(TASK + ".task_id"), + nullable=False) + try_id = Column('try_id', Integer, sa.ForeignKey(TRY + ".try_id"), + nullable=False) + __table_args__ = (PrimaryKeyConstraint('file_id'),) class Resource(Base): __tablename__ = RESOURCE @@ -379,6 +405,8 @@ def start(self, like inserted_tasks but for Files """ inserted_files = set() # type: Set[Any] + input_inserted_files = dict() # type: Dict[Str, List[Str]] + output_inserted_files = dict() # type: Dict[Str, List[Str]] # for any task ID, we can defer exactly one message, which is the # assumed-to-be-unique first message (with first message flag set). @@ -426,6 +454,8 @@ def start(self, task_info_update_messages, task_info_insert_messages, task_info_all_messages = [], [], [] try_update_messages, try_insert_messages, try_all_messages = [], [], [] file_update_messages, file_insert_messages, file_all_messages = [], [], [] + input_file_update_messages, input_file_insert_messages, input_file_all_messages = [], [], [] + output_file_update_messages, output_file_insert_messages, output_file_all_messages = [], [], [] for msg_type, msg in priority_messages: if msg_type == MessageType.WORKFLOW_INFO: if "python_version" in msg: # workflow start message @@ -470,6 +500,24 @@ def start(self, else: inserted_files.add(file_id) file_insert_messages.append(msg) + elif msg_type == MessageType.INPUT_FILE: + file_id = msg['file_id'] + input_file_all_messages.append(msg) + identifier = f"{msg['run_it']}.{msg['task_id']}.{msg['try_id']}" + if file_id not in input_inserted_files: + input_inserted_files[file_id] = [] + if identifier not in input_inserted_files[file_id]: + input_inserted_files[file_id].append(identifier) + input_file_insert_messages.append(msg) + elif msg_type == MessageType.OUTPUT_FILE: + file_id = msg['file_id'] + output_file_all_messages.append(msg) + identifier = f"{msg['run_it']}.{msg['task_id']}.{msg['try_id']}" + if file_id not in output_inserted_files: + output_inserted_files[file_id] = [] + if identifier not in output_inserted_files[file_id]: + output_inserted_files[file_id].append(identifier) + output_file_insert_messages.append(msg) else: raise RuntimeError("Unexpected message type {} received on priority queue".format(msg_type)) @@ -511,6 +559,17 @@ def start(self, self._update(table=FILES, columns=['timestamp'], messages=file_update_messages) + + if input_file_insert_messages: + logger.debug("Inserting {} INPUT_FILE to input_files table".format(len(input_file_insert_messages))) + self._insert(table=INPUT_FILES, messages=input_file_insert_messages) + logger.debug("There are {} inserted input file records".format(len(input_inserted_files))) + + if output_file_insert_messages: + logger.debug("Inserting {} OUTPUT_FILE to output_files table".format(len(output_file_insert_messages))) + self._insert(table=OUTPUT_FILES, messages=output_file_insert_messages) + logger.debug("There are {} inserted output file records".format(len(output_inserted_files))) + if try_insert_messages: logger.debug("Inserting {} TASK_INFO to try table".format(len(try_insert_messages))) self._insert(table=TRY, messages=try_insert_messages) diff --git a/parsl/monitoring/message_type.py b/parsl/monitoring/message_type.py index e177a33cf2..46d840a5b6 100644 --- a/parsl/monitoring/message_type.py +++ b/parsl/monitoring/message_type.py @@ -20,3 +20,5 @@ class MessageType(Enum): # Reports file info FILE_INFO = 5 + INPUT_FILE = 6 + OUTPUT_FILE = 7 From efc3b14bd280f1b479a3668ade2f763074fbf9c9 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Mon, 17 Jun 2024 13:23:18 -0500 Subject: [PATCH 07/59] fixed error where uuid's were not strings --- parsl/dataflow/dflow.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index d0c08ed445..b89cf0a65b 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -85,7 +85,6 @@ def __init__(self, config: Config) -> None: A specification of all configuration options. For more details see the :class:~`parsl.config.Config` documentation. """ - # this will be used to check cleanup only happens once self.cleanup_called = False @@ -241,7 +240,7 @@ def _create_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.Dy info_to_monitor = ['file_name', 'file_id', 'run_id', 'task_id', 'timestamp'] file_log_info = {'file_name': file.filename, - 'file_id': file.uuid, + 'file_id': str(file.uuid), 'run_id': self.run_id, 'task_id': task_record['id'], 'try_id': task_record['try_id'], @@ -268,7 +267,7 @@ def _create_file_io_info(self, file: Union[File, DataFuture, DynamicFileList.Dyn """ Create the dictionary that will be included in the log. """ - file_io_info = {'file_id': file.uuid, + file_io_info = {'file_id': str(file.uuid), 'run_id': self.run_id, 'task_id': task_record['id'], 'try_id': task_record['try_id'], From 222166a505549627e2a5530ef5c05f3e212a8b22 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Mon, 17 Jun 2024 13:25:59 -0500 Subject: [PATCH 08/59] fixed typos in names --- parsl/monitoring/db_manager.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index d6d5c2014e..9ed9ad9b37 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -492,7 +492,7 @@ def start(self, if task_try_id in deferred_resource_messages: reprocessable_first_resource_messages.append( deferred_resource_messages.pop(task_try_id)) - elif msg_type == MessageType.FILES_INFO: + elif msg_type == MessageType.FILE_INFO: file_id = msg['file_id'] file_all_messages.append(msg) if file_id in inserted_files: @@ -503,7 +503,7 @@ def start(self, elif msg_type == MessageType.INPUT_FILE: file_id = msg['file_id'] input_file_all_messages.append(msg) - identifier = f"{msg['run_it']}.{msg['task_id']}.{msg['try_id']}" + identifier = f"{msg['run_id']}.{msg['task_id']}.{msg['try_id']}" if file_id not in input_inserted_files: input_inserted_files[file_id] = [] if identifier not in input_inserted_files[file_id]: @@ -512,7 +512,7 @@ def start(self, elif msg_type == MessageType.OUTPUT_FILE: file_id = msg['file_id'] output_file_all_messages.append(msg) - identifier = f"{msg['run_it']}.{msg['task_id']}.{msg['try_id']}" + identifier = f"{msg['run_id']}.{msg['task_id']}.{msg['try_id']}" if file_id not in output_inserted_files: output_inserted_files[file_id] = [] if identifier not in output_inserted_files[file_id]: @@ -555,7 +555,7 @@ def start(self, "There are {} inserted file records".format(len(inserted_files))) if file_update_messages: - logger.debug("Updating {} FILES_INFO into files table".format(len(file_update_messages))) + logger.debug("Updating {} FILE_INFO into files table".format(len(file_update_messages))) self._update(table=FILES, columns=['timestamp'], messages=file_update_messages) @@ -712,7 +712,7 @@ def _migrate_logs_to_internal(self, logs_queue: queue.Queue, queue_tag: str, kil logger.error(f"Discarding because unknown queue tag '{queue_tag}', message: {x}") def _dispatch_to_internal(self, x: Tuple) -> None: - if x[0] in [MessageType.WORKFLOW_INFO, MessageType.TASK_INFO]: + if x[0] in [MessageType.WORKFLOW_INFO, MessageType.TASK_INFO, MessageType.FILE_INFO, MessageType.INPUT_FILE]: self.pending_priority_queue.put(cast(Any, x)) elif x[0] == MessageType.RESOURCE_INFO: body = x[1] @@ -725,9 +725,6 @@ def _dispatch_to_internal(self, x: Tuple) -> None: elif x[0] == MessageType.BLOCK_INFO: logger.info("Will put {} to pending block queue".format(x[1])) self.pending_block_queue.put(x[-1]) - elif x[0] == MessageType.FILE_INFO: - logger.info("Will put {} to pending file queue".format(x[1])) - self.pending_file_queue.put(x[-1]) else: logger.error("Discarding message of unknown type {}".format(x[0])) From 92597f663d1ec1099c149b8dc99343080e23dedb Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 18 Jun 2024 10:22:48 -0500 Subject: [PATCH 09/59] initial working version --- parsl/app/futures.py | 15 +++++++++++---- parsl/dataflow/dflow.py | 6 +++--- parsl/monitoring/db_manager.py | 27 ++++++++++++++------------- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index a08d3c3b0a..fea427eccf 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -2,7 +2,7 @@ """ import logging from concurrent.futures import Future -from typing import Optional +from typing import Optional, Any from datetime import datetime import typeguard @@ -31,15 +31,18 @@ def parent_callback(self, parent_fu): Returns: - None """ - e = parent_fu._exception if e: self.set_exception(e) else: self.set_result(self.file_obj) + self.file_obj.timestamp = datetime.now() + if self.data_flow_kernel: + self.data_flow_kernel.register_as_output(self.file_obj, self.app_fut.task_record) @typeguard.typechecked - def __init__(self, fut: Future, file_obj: File, tid: Optional[int] = None) -> None: + def __init__(self, fut: Future, file_obj: File, tid: Optional[int] = None, app_fut: Optional[Future] = None, + dfk: Optional[Any] = None) -> None: """Construct the DataFuture object. If the file_obj is a string convert to a File. @@ -58,7 +61,11 @@ def __init__(self, fut: Future, file_obj: File, tid: Optional[int] = None) -> No else: raise ValueError("DataFuture must be initialized with a File, not {}".format(type(file_obj))) self.parent = fut - + if app_fut: + self.app_fut = app_fut + else: + self.app_fut = fut + self.data_flow_kernel = dfk self.parent.add_done_callback(self.parent_callback) logger.debug("Creating DataFuture with parent: %s and file: %s", self.parent, repr(self.file_obj)) diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index b89cf0a65b..d8fdd7de13 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -882,10 +882,10 @@ def stageout_one_file(file: File, rewritable_func: Callable): stageout_fut = self.data_manager.stage_out(f_copy, executor, app_fut) if stageout_fut: logger.debug("Adding a dependency on stageout future for {}".format(repr(file))) - df = DataFuture(stageout_fut, file, tid=app_fut.tid) + df = DataFuture(stageout_fut, file, tid=app_fut.tid, app_fut=app_fut, dfk=self) else: logger.debug("No stageout dependency for {}".format(repr(file))) - df = DataFuture(app_fut, file, tid=app_fut.tid) + df = DataFuture(app_fut, file, tid=app_fut.tid, app_fut=app_fut, dfk=self) # this is a hook for post-task stageout # note that nothing depends on the output - which is maybe a bug @@ -894,7 +894,7 @@ def stageout_one_file(file: File, rewritable_func: Callable): return rewritable_func, f_copy, df else: logger.debug("Not performing output staging for: {}".format(repr(file))) - return rewritable_func, file, DataFuture(app_fut, file, tid=app_fut.tid) + return rewritable_func, file, DataFuture(app_fut, file, tid=app_fut.tid, app_fut=app_fut, dfk=self) for idx, file in enumerate(outputs): func, outputs[idx], o = stageout_one_file(file, func) diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 9ed9ad9b37..071e4c8d74 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -242,11 +242,11 @@ class Files(Base): __tablename__ = FILES file_name = Column('file_name', Text, index=True, nullable=False) file_id = Column('file_id', Text, index=True, nullable=False) - task_run_id = Column('run_id', Text, sa.ForeignKey(TASK + ".run_id"), + run_id = Column('run_id', Text, nullable=False) - task_id = Column('task_id', Integer, sa.ForeignKey(TASK + ".task_id"), + task_id = Column('task_id', Integer, nullable=False) - try_id = Column('try_id', Integer, sa.ForeignKey(TRY + ".try_id"), + try_id = Column('try_id', Integer, nullable=False) timestamp = Column('timestamp', DateTime, nullable=True) sa.Index("files_task_run_id_idx", "task_run_id", "task_id", "try_id") @@ -256,11 +256,11 @@ class InputFiles(Base): __tablename__ = INPUT_FILES file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), nullable=False) - task_run_id = Column('run_id', Text, sa.ForeignKey(TASK + ".run_id"), + run_id = Column('run_id', Text, nullable=False) - task_id = Column('task_id', Integer, sa.ForeignKey(TASK + ".task_id"), + task_id = Column('task_id', Integer, nullable=False) - try_id = Column('try_id', Integer, sa.ForeignKey(TRY + ".try_id"), + try_id = Column('try_id', Integer, nullable=False) __table_args__ = (PrimaryKeyConstraint('file_id'),) @@ -268,11 +268,11 @@ class OutputFiles(Base): __tablename__ = OUTPUT_FILES file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), nullable=False) - task_run_id = Column('run_id', Text, sa.ForeignKey(TASK + ".run_id"), + run_id = Column('run_id', Text, nullable=False) - task_id = Column('task_id', Integer, sa.ForeignKey(TASK + ".task_id"), + task_id = Column('task_id', Integer, nullable=False) - try_id = Column('try_id', Integer, sa.ForeignKey(TRY + ".try_id"), + try_id = Column('try_id', Integer, nullable=False) __table_args__ = (PrimaryKeyConstraint('file_id'),) @@ -404,7 +404,7 @@ def start(self, """ like inserted_tasks but for Files """ - inserted_files = set() # type: Set[Any] + inserted_files = dict() # type: Dict[Str, DateTime] input_inserted_files = dict() # type: Dict[Str, List[Str]] output_inserted_files = dict() # type: Dict[Str, List[Str]] @@ -495,10 +495,11 @@ def start(self, elif msg_type == MessageType.FILE_INFO: file_id = msg['file_id'] file_all_messages.append(msg) - if file_id in inserted_files: + if file_id in inserted_files and inserted_files[file_id] is None: + inserted_files[file_id] = msg['timestamp'] file_update_messages.append(msg) else: - inserted_files.add(file_id) + inserted_files[file_id] = None file_insert_messages.append(msg) elif msg_type == MessageType.INPUT_FILE: file_id = msg['file_id'] @@ -712,7 +713,7 @@ def _migrate_logs_to_internal(self, logs_queue: queue.Queue, queue_tag: str, kil logger.error(f"Discarding because unknown queue tag '{queue_tag}', message: {x}") def _dispatch_to_internal(self, x: Tuple) -> None: - if x[0] in [MessageType.WORKFLOW_INFO, MessageType.TASK_INFO, MessageType.FILE_INFO, MessageType.INPUT_FILE]: + if x[0] in [MessageType.WORKFLOW_INFO, MessageType.TASK_INFO, MessageType.FILE_INFO, MessageType.INPUT_FILE, MessageType.OUTPUT_FILE]: self.pending_priority_queue.put(cast(Any, x)) elif x[0] == MessageType.RESOURCE_INFO: body = x[1] From 632890b584da7213b2784a4c7c4f038571975c21 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Thu, 27 Jun 2024 15:26:08 -0500 Subject: [PATCH 10/59] added flask-wtf to monitoring requirements for form processing --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index dae3e64ca4..558dea00b0 100755 --- a/setup.py +++ b/setup.py @@ -15,6 +15,7 @@ 'networkx>=2.5,<2.6', 'Flask>=1.0.2', 'flask_sqlalchemy', + 'Flask-WTF', 'pandas<2.2', 'plotly', 'python-daemon' From 17e5c43ce4f5f681c880eadf8ce23e17de616fca Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Thu, 27 Jun 2024 15:29:12 -0500 Subject: [PATCH 11/59] added file size and md5sum tracking for files --- parsl/app/futures.py | 4 ++++ parsl/data_provider/files.py | 2 ++ parsl/dataflow/dflow.py | 6 +++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index fea427eccf..afaa2d60b8 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -1,6 +1,8 @@ """This module implements DataFutures. """ +from hashlib import md5 import logging +from os import stat from concurrent.futures import Future from typing import Optional, Any from datetime import datetime @@ -37,6 +39,8 @@ def parent_callback(self, parent_fu): else: self.set_result(self.file_obj) self.file_obj.timestamp = datetime.now() + self.file_obj.size = stat(self.file_obj.filepath).st_size + self.file_obj.md5sum = md5(open(self.file_obj, 'rb').read()).hexdigest() if self.data_flow_kernel: self.data_flow_kernel.register_as_output(self.file_obj, self.app_fut.task_record) diff --git a/parsl/data_provider/files.py b/parsl/data_provider/files.py index c00d21e3c8..961b6415d2 100644 --- a/parsl/data_provider/files.py +++ b/parsl/data_provider/files.py @@ -49,6 +49,8 @@ def __init__(self, url: Union[os.PathLike, str], uu_id: Union[uuid.UUID, None] = self.path = parsed_url.path self.filename = os.path.basename(self.path) self.timestamp = timestamp + self.size = None + self.md5sum = None self.local_path: Optional[str] = None if uu_id is not None: self.uuid = uu_id diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index d8fdd7de13..35ffdff61c 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -237,14 +237,14 @@ def _create_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.Dy """ Create the dictionary that will be included in the log. """ - info_to_monitor = ['file_name', 'file_id', 'run_id', 'task_id', 'timestamp'] - file_log_info = {'file_name': file.filename, 'file_id': str(file.uuid), 'run_id': self.run_id, 'task_id': task_record['id'], 'try_id': task_record['try_id'], - 'timestamp': file.timestamp + 'timestamp': file.timestamp, + 'size': file.size, + 'md5sum': file.md5sum } return file_log_info From d8df5fed51f8d6e3356dccccafcf563241d2b024 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Thu, 27 Jun 2024 15:29:39 -0500 Subject: [PATCH 12/59] fixed issue with clean_copy in dynamic files --- parsl/data_provider/data_manager.py | 2 +- parsl/data_provider/dynamic_files.py | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/parsl/data_provider/data_manager.py b/parsl/data_provider/data_manager.py index f6789c39a6..cc76b6b35a 100644 --- a/parsl/data_provider/data_manager.py +++ b/parsl/data_provider/data_manager.py @@ -65,7 +65,7 @@ def optionally_stage_in(self, input, func, executor): # TODO NEED TO TRACK FILE IF IT IS EMPTY pass else: - file = input.file_obj.file_obj.cleancopy() + file = input.cleancopy() # replace the input DataFuture with a new DataFuture which will complete at # the same time as the original one, but will contain the newly # copied file diff --git a/parsl/data_provider/dynamic_files.py b/parsl/data_provider/dynamic_files.py index d4d170ef75..be050b94a4 100644 --- a/parsl/data_provider/dynamic_files.py +++ b/parsl/data_provider/dynamic_files.py @@ -108,6 +108,11 @@ def set(self, file_obj: Union[File, DataFuture, 'DynamicFileList.DynamicFile']): self._is_df = isinstance(self.file_obj, DataFuture) self.parent.add_done_func(self.file_obj.filename, self.done) + def cleancopy(self): + if self._is_df: + return self.file_obj.file_obj.cleancopy() + return self.file_obj.cleancopy() + def convert_to_df(self): """Convert the file_obj to a DataFuture.""" if not self._is_df: @@ -147,6 +152,22 @@ def filename(self): return None return self.file_obj.filepath + @property + def size(self): + if self._empty: + return None + if self._is_df: + return self.file_obj.file_obj.size + return self.file_obj.size + + @property + def md5sum(self): + if self._empty: + return None + if self._is_df: + return self.file_obj.file_obj.md5sum + return self.file_obj.md5sum + def cancel(self): """Not implemented""" raise NotImplementedError("Cancel not implemented") @@ -484,6 +505,11 @@ def __setitem__(self, key: int, value: Union[File, DataFuture, 'DynamicFileList. self._last_idx = max(self._last_idx, key) self._call_callbacks() self.stage_file(key) + elif value.uuid == super().__getitem__(key).uuid: + if isinstance(value, DynamicFileList.DynamicFile): + super().__getitem__(key).set(value.file_obj) + else: + super().__getitem__(key).set(value) else: raise ValueError("Cannot set a value that is not empty") # if not isinstance(value, self.DynamicFile): From b16cad6b400c60ded61377b566caa52e4baad999 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Thu, 27 Jun 2024 15:33:57 -0500 Subject: [PATCH 13/59] added initial provenance interface to flask pages --- .gitignore | 10 +++ parsl/monitoring/db_manager.py | 17 +++- parsl/monitoring/visualization/app.py | 1 + parsl/monitoring/visualization/form_fields.py | 8 ++ parsl/monitoring/visualization/models.py | 32 ++++++++ .../visualization/templates/file_detail.html | 27 +++++++ .../visualization/templates/files.html | 45 +++++++++++ .../templates/files_workflow.html | 47 +++++++++++ .../visualization/templates/layout.html | 1 + .../templates/workflows_summary.html | 2 + parsl/monitoring/visualization/views.py | 77 +++++++++++++++++-- 11 files changed, 257 insertions(+), 10 deletions(-) create mode 100644 parsl/monitoring/visualization/form_fields.py create mode 100644 parsl/monitoring/visualization/templates/file_detail.html create mode 100644 parsl/monitoring/visualization/templates/files.html create mode 100644 parsl/monitoring/visualization/templates/files_workflow.html diff --git a/.gitignore b/.gitignore index acdb6254d1..3e0d85f0bc 100644 --- a/.gitignore +++ b/.gitignore @@ -120,3 +120,13 @@ ENV/ # emacs buffers \#* + +runinfo* +parsl/tests/.pytest* + +# documentation generation +docs/stubs/* +docs/1-parsl-introduction.ipynb + +/tmp +parsl/data_provider/dyn.new.py diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 071e4c8d74..d693843ae1 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -249,6 +249,8 @@ class Files(Base): try_id = Column('try_id', Integer, nullable=False) timestamp = Column('timestamp', DateTime, nullable=True) + size = Column('size', BigInteger, nullable=True) + md5sum = Column('md5sum', Text, nullable=True) sa.Index("files_task_run_id_idx", "task_run_id", "task_id", "try_id") __table_args__ = (PrimaryKeyConstraint('file_id'),) @@ -404,7 +406,7 @@ def start(self, """ like inserted_tasks but for Files """ - inserted_files = dict() # type: Dict[Str, DateTime] + inserted_files = dict() # type: Dict[Str, Dict[Str, Union[None, datetime.datetime, Str, int]]] input_inserted_files = dict() # type: Dict[Str, List[Str]] output_inserted_files = dict() # type: Dict[Str, List[Str]] @@ -495,11 +497,18 @@ def start(self, elif msg_type == MessageType.FILE_INFO: file_id = msg['file_id'] file_all_messages.append(msg) - if file_id in inserted_files and inserted_files[file_id] is None: - inserted_files[file_id] = msg['timestamp'] + if file_id in inserted_files: + if inserted_files[file_id]['timestamp'] is None: + inserted_files[file_id] = msg['timestamp'] + if inserted_files[file_id]['size'] is None: + inserted_files[file_id] = msg['size'] + if inserted_files[file_id]['md5sum'] is None: + inserted_files[file_id] = msg['md5sum'] file_update_messages.append(msg) else: - inserted_files[file_id] = None + inserted_files[file_id] = {'size': msg['size'], + 'md5sum': msg['md5sum'], + 'timestamp': msg['timestamp']} file_insert_messages.append(msg) elif msg_type == MessageType.INPUT_FILE: file_id = msg['file_id'] diff --git a/parsl/monitoring/visualization/app.py b/parsl/monitoring/visualization/app.py index e0c9510ee8..069eb2f598 100644 --- a/parsl/monitoring/visualization/app.py +++ b/parsl/monitoring/visualization/app.py @@ -23,6 +23,7 @@ def cli_run(): app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = args.db_path app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False + app.config['SECRET_KEY'] = os.urandom(24) db.init_app(app) with app.app_context(): diff --git a/parsl/monitoring/visualization/form_fields.py b/parsl/monitoring/visualization/form_fields.py new file mode 100644 index 0000000000..d19123b079 --- /dev/null +++ b/parsl/monitoring/visualization/form_fields.py @@ -0,0 +1,8 @@ +from flask_wtf import FlaskForm +from wtforms import StringField, SubmitField +from wtforms.validators import DataRequired + + +class FileForm(FlaskForm): + file_name = StringField('File Name', validators=[DataRequired()]) + submit = SubmitField('Submit') diff --git a/parsl/monitoring/visualization/models.py b/parsl/monitoring/visualization/models.py index dd39c1d961..306ae05ebc 100644 --- a/parsl/monitoring/visualization/models.py +++ b/parsl/monitoring/visualization/models.py @@ -67,11 +67,43 @@ class Task(db.Model): task_stdin = db.Column('task_stdin', db.Text, nullable=True) task_stdout = db.Column('task_stdout', db.Text, nullable=True) task_stderr = db.Column('task_stderr', db.Text, nullable=True) + task_env = db.Column('task_env', db.Text, nullable=True) __table_args__ = ( db.PrimaryKeyConstraint('task_id', 'run_id'), ) +class Files(db.Model): + __tablename__ = 'files' + file_name = db.Column('file_name', db.Text, index=True, nullable=False) + file_id = db.Column('file_id', db.Text, index=True, nullable=False) + run_id = db.Column('run_id', db.Text, nullable=False) + task_id = db.Column('task_id', db.Integer, nullable=False) + try_id = db.Column('try_id', db.Integer, nullable=False) + timestamp = db.Column('timestamp', db.DateTime, nullable=True) + size = db.Column('size', db.BigInteger, nullable=True) + md5sum = db.Column('md5sum', db.Text, nullable=True) + __table_args__ = (db.PrimaryKeyConstraint('file_id'),) + + +class InputFiles(db.Model): + __tablename__ = 'input_files' + file_id = db.Column('file_id', db.Text, nullable=False) + run_id = db.Column('run_id', db.Text, nullable=False) + task_id = db.Column('task_id', db.Integer, nullable=False) + try_id = db.Column('try_id', db.Integer, nullable=False) + __table_args__ = (db.PrimaryKeyConstraint('file_id'),) + + +class OutputFiles(db.Model): + __tablename__ = 'output_files' + file_id = db.Column('file_id', db.Text, nullable=False) + run_id = db. Column('run_id', db.Text, nullable=False) + task_id = db.Column('task_id', db.Integer, nullable=False) + try_id = db.Column('try_id', db.Integer, nullable=False) + __table_args__ = (db.PrimaryKeyConstraint('file_id'),) + + class Resource(db.Model): __tablename__ = RESOURCE task_id = db.Column('task_id', db.Integer, db.ForeignKey( diff --git a/parsl/monitoring/visualization/templates/file_detail.html b/parsl/monitoring/visualization/templates/file_detail.html new file mode 100644 index 0000000000..5602696f61 --- /dev/null +++ b/parsl/monitoring/visualization/templates/file_detail.html @@ -0,0 +1,27 @@ +{% extends "layout.html" %} + +{% block content %} + +
+

File Details

+ + + + + + {% if file_details['timestamp'] %} + + {% endif %} + + {% if output_file %} + + {% endif %} + {% if input_files %} + + {% endif %} +
Name:{{ file_details['file_name'] }}
Id:{{ file_details['file_id'] }}
Size:{{ file_details['file_size'] }}
md5sum:{{ file_details['md5sum'] }}
Creation date:{{ file_details['timestamp'] | timeformat }}
Workflow:{{ workflow.workflow_name }}
Created by:{{ tasks[output_file['task_id']]['task_func_name'] }}
Used by: + {% for input in input_files %} + {{ tasks[input['task_id']]['task_func_name'] }}
+ {% endfor %} +
+{% endblock %} \ No newline at end of file diff --git a/parsl/monitoring/visualization/templates/files.html b/parsl/monitoring/visualization/templates/files.html new file mode 100644 index 0000000000..a03115737e --- /dev/null +++ b/parsl/monitoring/visualization/templates/files.html @@ -0,0 +1,45 @@ +{% extends "layout.html" %} + +{% block content %} + +
+

File Provenance

+ + Files by workflow. +

+ Search for a specific file: +

+ {{ form.hidden_tag() }} + {{ form.file_name.label }} {{ form.file_name(size=32) }} + {{ form.submit() }} +
+ {% if form.file_name.errors %} +
    + {% for error in form.file_name.errors %} +
  • {{ error }}
  • + {% endfor %} +
+{% endif %} +{% if file_list is defined and file_list %} + + + + + + + + + + {% for file in file_list %} + + + + + + {% endfor %} + +
File NameFile SizeCreated
{{ file['file_name'] }}{{ file['file_size'] }}{{ file['timestamp'] | timeformat }}
+ +{% endif %} + +{% endblock %} \ No newline at end of file diff --git a/parsl/monitoring/visualization/templates/files_workflow.html b/parsl/monitoring/visualization/templates/files_workflow.html new file mode 100644 index 0000000000..a31684df73 --- /dev/null +++ b/parsl/monitoring/visualization/templates/files_workflow.html @@ -0,0 +1,47 @@ +{% extends "layout.html" %} + +{% block content %} + +
+ +

Files for Workflow {{ workflow['name'] }}

+ + + + + + + + + + + + {% for tid, task in tasks | dictsort %} + + + + + + + {% endfor %} + + +
TaskTask IdInput FilesOutput Files
{{ task['task_func_name'] }}{{ task['task_id'] }} + {% if task['task_inputs'] %} + {% for input in task_files[tid]['inputs'] %} + {{ input['file_name'] }}
+ {% endfor %} + {% else %} + None + {% endif %} +
+ {% if task['task_outputs'] %} + {% for output in task_files[tid]['outputs'] %} + {{ output['file_name'] }}
+ {% endfor %} + {% else %} + None + {% endif %} +
+ +{% endblock %} \ No newline at end of file diff --git a/parsl/monitoring/visualization/templates/layout.html b/parsl/monitoring/visualization/templates/layout.html index 0b25df42b5..dc03c4f54a 100644 --- a/parsl/monitoring/visualization/templates/layout.html +++ b/parsl/monitoring/visualization/templates/layout.html @@ -36,6 +36,7 @@ Workflows (current) + File Provenance Documentation diff --git a/parsl/monitoring/visualization/templates/workflows_summary.html b/parsl/monitoring/visualization/templates/workflows_summary.html index 277e2fea70..f1dde49a87 100644 --- a/parsl/monitoring/visualization/templates/workflows_summary.html +++ b/parsl/monitoring/visualization/templates/workflows_summary.html @@ -14,6 +14,7 @@

Workflows

Status Runtime (s) Tasks + Files @@ -29,6 +30,7 @@

Workflows

{{ w['tasks_failed_count'] }} + files {% endfor %} diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index 8e34119143..b41c2e6ccf 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -1,27 +1,37 @@ import pandas as pd from flask import current_app as app -from flask import render_template +from flask import render_template, request import parsl.monitoring.queries.pandas as queries -from parsl.monitoring.visualization.models import Status, Task, Workflow, db +from parsl.monitoring.visualization.models import ( + Status, + Task, + Workflow, + db, + Files, + InputFiles, + OutputFiles + ) from parsl.monitoring.visualization.plots.default.task_plots import ( time_series_memory_per_task_plot, -) + ) from parsl.monitoring.visualization.plots.default.workflow_plots import ( task_gantt_plot, task_per_app_plot, workflow_dag_plot, -) + ) from parsl.monitoring.visualization.plots.default.workflow_resource_plots import ( resource_distribution_plot, resource_efficiency, worker_efficiency, -) + ) -dummy = True +from parsl.monitoring.visualization.form_fields import FileForm import datetime +dummy = True + def format_time(value): if value is None: @@ -59,6 +69,61 @@ def index(): return render_template('workflows_summary.html', workflows=workflows) +@app.route('/files//') +def file(file_id): + file_details = Files.query.filter_by(file_id=file_id).first() + input_files = InputFiles.query.filter_by(file_id=file_id).all() + output_file = OutputFiles.query.filter_by(file_id=file_id).first() + task_ids = set() + for f in input_files: + task_ids.add(f.task_id) + if output_file: + task_ids.add(output_file.task_id) + tasks = {} + for tid in task_ids: + tasks[tid] = Task.query.filter_by(run_id=file_details.run_id, task_id=tid).first() + workflow_details = Workflow.query.filter_by(run_id=file_details.run_id).first() + + return render_template('file_detail.html', file_details=file_details, + input_files=input_files, output_file=output_file, + tasks=tasks, workflow=workflow_details) + + +@app.route('/files', methods=['GET', 'POST']) +def files(): + form = FileForm() + if request.method == 'POST': + file_list = [] + if form.validate_on_submit(): + if '%' in form.file_name.data: + file_list = Files.query.filter(Files.file_name.like(form.file_name.data)).all() + else: + file_list = Files.query.filter_by(file_name=form.file_name.data).all() + return render_template('files.html', form=form, file_list=file_list) + return render_template('files.html', form=form) + + +@app.route('/files/workflow//') +def files_workflow(workflow_id): + workflow_files = Files.query.filter_by(run_id=workflow_id).all() + workflow_details = Workflow.query.filter_by(run_id=workflow_id).first() + task_ids = set() + files_by_task = {} + file_details = {} + for wf in workflow_files: + file_details[wf.file_id] = wf + task_ids.add(wf.task_id) + tasks = {} + + for tid in task_ids: + tasks[tid] = Task.query.filter_by(run_id=workflow_id, task_id=tid).first() + files_by_task[tid] = {'inputs': InputFiles.query.filter_by(run_id=workflow_id, task_id=tid).all(), + 'outputs': OutputFiles.query.filter_by(run_id=workflow_id, task_id=tid).all()} + + return render_template('files_workflow.html', workflow=workflow_details, + task_files=files_by_task, tasks=tasks) + + @app.route('/workflow//') def workflow(workflow_id): workflow_details = Workflow.query.filter_by(run_id=workflow_id).first() From 0275b28546d8869843099ab7f618b4a07be88ae3 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Mon, 1 Jul 2024 09:50:18 -0500 Subject: [PATCH 14/59] indentation fix --- parsl/dataflow/dflow.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 35ffdff61c..18132ab959 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -264,15 +264,15 @@ def register_as_output(self, f: Union(DynamicFileList.DynamicFile, File, DataFut def _create_file_io_info(self, file: Union[File, DataFuture, DynamicFileList.DynamicFile], task_record: TaskRecord) -> Dict[str, Any]: - """ - Create the dictionary that will be included in the log. - """ + """ + Create the dictionary that will be included in the log. + """ file_io_info = {'file_id': str(file.uuid), 'run_id': self.run_id, 'task_id': task_record['id'], 'try_id': task_record['try_id'], } - return file_io_info + return file_io_info def _create_task_log_info(self, task_record: TaskRecord) -> Dict[str, Any]: """ From 3a1238bcf03d5abb6d79b04bf44851e7d15a2204 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Mon, 1 Jul 2024 10:42:03 -0500 Subject: [PATCH 15/59] fixed database code for provenance tracking --- parsl/app/futures.py | 27 +++++++++++++++++++++++---- parsl/monitoring/db_manager.py | 15 ++++++++++----- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index afaa2d60b8..a5f3070fb8 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -1,8 +1,9 @@ """This module implements DataFutures. """ +import os.path from hashlib import md5 import logging -from os import stat +from os import stat, path from concurrent.futures import Future from typing import Optional, Any from datetime import datetime @@ -38,9 +39,12 @@ def parent_callback(self, parent_fu): self.set_exception(e) else: self.set_result(self.file_obj) - self.file_obj.timestamp = datetime.now() - self.file_obj.size = stat(self.file_obj.filepath).st_size - self.file_obj.md5sum = md5(open(self.file_obj, 'rb').read()).hexdigest() + if not self.file_obj.timestamp: + self.file_obj.timestamp = datetime.now() + if not self.file_obj.size: + self.file_obj.size = stat(self.file_obj.filepath).st_size + if not self.file_obj.md5sum: + self.file_obj.md5sum = md5(open(self.file_obj, 'rb').read()).hexdigest() if self.data_flow_kernel: self.data_flow_kernel.register_as_output(self.file_obj, self.app_fut.task_record) @@ -71,6 +75,11 @@ def __init__(self, fut: Future, file_obj: File, tid: Optional[int] = None, app_f self.app_fut = fut self.data_flow_kernel = dfk self.parent.add_done_callback(self.parent_callback) + if os.path.exists(file_obj.path): + file_stat = os.stat(file_obj.path) + self.file_obj.timestamp = file_stat.st_ctime + self.file_obj.size = file_stat.st_size + self.file_obj.md5sum = md5(open(self.file_obj, 'rb').read()).hexdigest() logger.debug("Creating DataFuture with parent: %s and file: %s", self.parent, repr(self.file_obj)) @@ -103,6 +112,16 @@ def timestamp(self): def timestamp(self, value: Optional[datetime]) -> None: self.file_obj.timestamp = value + @property + def size(self): + """Size of the file.""" + return self.file_obj.size + + @property + def md5sum(self): + """MD5 sum of the file.""" + return self.file_obj.md5sum + def cancel(self): raise NotImplementedError("Cancel not implemented") diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index d693843ae1..2dc4b873e0 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -498,13 +498,18 @@ def start(self, file_id = msg['file_id'] file_all_messages.append(msg) if file_id in inserted_files: + changed = False if inserted_files[file_id]['timestamp'] is None: - inserted_files[file_id] = msg['timestamp'] + inserted_files[file_id]['timestamp'] = msg['timestamp'] + changed = True if inserted_files[file_id]['size'] is None: - inserted_files[file_id] = msg['size'] + inserted_files[file_id]['size'] = msg['size'] + changed = True if inserted_files[file_id]['md5sum'] is None: - inserted_files[file_id] = msg['md5sum'] - file_update_messages.append(msg) + inserted_files[file_id]['md5sum'] = msg['md5sum'] + changed = True + if changed: + file_update_messages.append(msg) else: inserted_files[file_id] = {'size': msg['size'], 'md5sum': msg['md5sum'], @@ -567,7 +572,7 @@ def start(self, if file_update_messages: logger.debug("Updating {} FILE_INFO into files table".format(len(file_update_messages))) self._update(table=FILES, - columns=['timestamp'], + columns=['timestamp', 'size', 'md5sum', 'file_id'], messages=file_update_messages) if input_file_insert_messages: From bb013fe5c6a0ee086cedcff73f486da88cc7e686 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 9 Jul 2024 08:59:47 -0500 Subject: [PATCH 16/59] added environment tracking to monitoring --- parsl/app/futures.py | 4 +-- parsl/dataflow/dflow.py | 36 +++++++++++++------ parsl/executors/base.py | 2 ++ parsl/monitoring/db_manager.py | 32 +++++++++++++++-- parsl/monitoring/message_type.py | 1 + parsl/monitoring/queries/pandas.py | 32 +++++++++++++++++ parsl/monitoring/visualization/models.py | 14 +++++++- .../visualization/templates/env.html | 29 +++++++++++++++ .../visualization/templates/file_detail.html | 2 +- .../visualization/templates/files.html | 7 ++-- .../visualization/templates/task.html | 29 +++++++++++++-- parsl/monitoring/visualization/views.py | 25 +++++++++---- 12 files changed, 184 insertions(+), 29 deletions(-) create mode 100644 parsl/monitoring/visualization/templates/env.html diff --git a/parsl/app/futures.py b/parsl/app/futures.py index a5f3070fb8..42237d3887 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -3,7 +3,7 @@ import os.path from hashlib import md5 import logging -from os import stat, path +from os import stat from concurrent.futures import Future from typing import Optional, Any from datetime import datetime @@ -18,7 +18,7 @@ class DataFuture(Future): """A datafuture points at an AppFuture. We are simply wrapping a AppFuture, and adding the specific case where, if - the future is resolved i.e file exists, then the DataFuture is assumed to be + the future is resolved i.e. file exists, then the DataFuture is assumed to be resolved. """ diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 18132ab959..0cf3394291 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -248,6 +248,28 @@ def _create_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.Dy } return file_log_info + def _create_env_log_info(self, environ: ParslExecutor) -> Dict[str, Any]: + """ + Create the dictionary that will be included in the log. + """ + env_log_info = {'run_id': environ.run_id, + 'environment_id': str(environ.uu_id), + 'label': environ.label + } + + env_log_info['address'] = getattr(environ, 'address', None) + provider= getattr(environ, 'provider', None) + if provider is not None: + env_log_info['provider'] = provider.label + env_log_info['launcher'] = type(getattr(provider, 'launcher', None)) + env_log_info['worker_init'] = getattr(provider, 'worker_init', None) + return env_log_info + + def _register_env(self, environ: ParslExecutor) -> None: + if self.monitoring: + environ_info = self._create_env_log_info(environ) + self.monitoring.send(MessageType.ENVIRONMENT_INFO, environ_info) + def register_as_input(self, f: Union(DynamicFileList.DynamicFile, File, DataFuture), task_record: TaskRecord): if self.monitoring: @@ -280,7 +302,7 @@ def _create_task_log_info(self, task_record: TaskRecord) -> Dict[str, Any]: """ info_to_monitor = ['func_name', 'memoize', 'hashsum', 'fail_count', 'fail_cost', 'status', 'id', 'time_invoked', 'try_time_launched', 'time_returned', 'try_time_returned', 'executor', - 'env'] + 'environment'] # mypy cannot verify that these task_record[k] references are valid: # They are valid if all entries in info_to_monitor are declared in the definition of TaskRecord @@ -1089,16 +1111,8 @@ def submit(self, 'try_time_launched': None, 'try_time_returned': None, 'resource_specification': resource_specification, - 'env': None} - - exec_instance = self.executors[executor] - provider = getattr(exec_instance, 'provider', None) - if provider is not None: - worker_init = getattr(provider, 'worker_init', None) - if worker_init is not None: - task_record['env'] = worker_init - - + 'environment': str(self.executors[executor].uu_id)} + self._register_env(self.executors[executor]) self.update_task_state(task_record, States.unsched) for kw in ['stdout', 'stderr']: diff --git a/parsl/executors/base.py b/parsl/executors/base.py index b00aa55680..49c41ba6a7 100644 --- a/parsl/executors/base.py +++ b/parsl/executors/base.py @@ -2,6 +2,7 @@ from abc import ABCMeta, abstractmethod from concurrent.futures import Future from typing import Any, Callable, Dict, Optional +import uuid from typing_extensions import Literal, Self @@ -61,6 +62,7 @@ def __init__( self.monitoring_radio = monitoring_radio self.run_dir = os.path.abspath(run_dir) self.run_id = run_id + self.uu_id = uuid.uuid1() def __enter__(self) -> Self: return self diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 2dc4b873e0..9be500e93c 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -48,6 +48,7 @@ FILES = 'files' # Files table include file info INPUT_FILES = 'input_files' # Input files table include input file info OUTPUT_FILES = 'output_files' # Output files table include output file info +ENVIRONMENT = 'environment' # Executor table include executor info class Database: @@ -168,7 +169,7 @@ class Task(Base): task_stdin = Column('task_stdin', Text, nullable=True) task_stdout = Column('task_stdout', Text, nullable=True) task_stderr = Column('task_stderr', Text, nullable=True) - task_env = Column('task_env', Text, nullable=True) + task_environment = Column('task_environment', Text, nullable=True) task_time_invoked = Column( 'task_time_invoked', DateTime, nullable=True) @@ -241,6 +242,7 @@ class Block(Base): class Files(Base): __tablename__ = FILES file_name = Column('file_name', Text, index=True, nullable=False) + file_path = Column('file_path', Text, nullable=True) file_id = Column('file_id', Text, index=True, nullable=False) run_id = Column('run_id', Text, nullable=False) @@ -254,6 +256,18 @@ class Files(Base): sa.Index("files_task_run_id_idx", "task_run_id", "task_id", "try_id") __table_args__ = (PrimaryKeyConstraint('file_id'),) + class Environment(Base): + __tablename__ = ENVIRONMENT + environment_id = Column('environment_id', Text, nullable=False) + run_id = Column('run_id', Text, nullable=False) + label = Column('label', Text, nullable=False) + address = Column('address', Text, nullable=True) + provider = Column('provider', Text, nullable=True) + launcher = Column('launcher', Text, nullable=True) + worker_init = Column('worker_init', Text, nullable=True) + __table_args__ = (PrimaryKeyConstraint('environment_id'),) + + class InputFiles(Base): __tablename__ = INPUT_FILES file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), @@ -409,6 +423,7 @@ def start(self, inserted_files = dict() # type: Dict[Str, Dict[Str, Union[None, datetime.datetime, Str, int]]] input_inserted_files = dict() # type: Dict[Str, List[Str]] output_inserted_files = dict() # type: Dict[Str, List[Str]] + inserted_envs = set() # type: Set[object] # for any task ID, we can defer exactly one message, which is the # assumed-to-be-unique first message (with first message flag set). @@ -458,6 +473,7 @@ def start(self, file_update_messages, file_insert_messages, file_all_messages = [], [], [] input_file_update_messages, input_file_insert_messages, input_file_all_messages = [], [], [] output_file_update_messages, output_file_insert_messages, output_file_all_messages = [], [], [] + environment_insert_messages = [] for msg_type, msg in priority_messages: if msg_type == MessageType.WORKFLOW_INFO: if "python_version" in msg: # workflow start message @@ -514,7 +530,13 @@ def start(self, inserted_files[file_id] = {'size': msg['size'], 'md5sum': msg['md5sum'], 'timestamp': msg['timestamp']} + file_insert_messages.append(msg) + elif msg_type == MessageType.ENVIRONMENT_INFO: + if msg['environment_id'] not in inserted_envs: + environment_insert_messages.append(msg) + inserted_envs.add(msg['environment_id']) + elif msg_type == MessageType.INPUT_FILE: file_id = msg['file_id'] input_file_all_messages.append(msg) @@ -569,6 +591,12 @@ def start(self, logger.debug( "There are {} inserted file records".format(len(inserted_files))) + if environment_insert_messages: + logger.debug("Inserting {} ENVIRONMENT_INFO to environment table".format(len(environment_insert_messages))) + self._insert(table=ENVIRONMENT, messages=environment_insert_messages) + logger.debug( + "There are {} inserted environment records".format(len(inserted_envs))) + if file_update_messages: logger.debug("Updating {} FILE_INFO into files table".format(len(file_update_messages))) self._update(table=FILES, @@ -727,7 +755,7 @@ def _migrate_logs_to_internal(self, logs_queue: queue.Queue, queue_tag: str, kil logger.error(f"Discarding because unknown queue tag '{queue_tag}', message: {x}") def _dispatch_to_internal(self, x: Tuple) -> None: - if x[0] in [MessageType.WORKFLOW_INFO, MessageType.TASK_INFO, MessageType.FILE_INFO, MessageType.INPUT_FILE, MessageType.OUTPUT_FILE]: + if x[0] in [MessageType.WORKFLOW_INFO, MessageType.TASK_INFO, MessageType.FILE_INFO, MessageType.INPUT_FILE, MessageType.OUTPUT_FILE, MessageType.ENVIRONMENT_INFO]: self.pending_priority_queue.put(cast(Any, x)) elif x[0] == MessageType.RESOURCE_INFO: body = x[1] diff --git a/parsl/monitoring/message_type.py b/parsl/monitoring/message_type.py index 46d840a5b6..80e4caa0fd 100644 --- a/parsl/monitoring/message_type.py +++ b/parsl/monitoring/message_type.py @@ -22,3 +22,4 @@ class MessageType(Enum): FILE_INFO = 5 INPUT_FILE = 6 OUTPUT_FILE = 7 + ENVIRONMENT_INFO = 8 diff --git a/parsl/monitoring/queries/pandas.py b/parsl/monitoring/queries/pandas.py index 9bda8422e7..7dcc9ad885 100644 --- a/parsl/monitoring/queries/pandas.py +++ b/parsl/monitoring/queries/pandas.py @@ -8,6 +8,38 @@ DB = Any +def input_files_for_task(workflow_id: Any, task_id: Any, db: DB) -> pd.DataFrame: + return pd.read_sql_query(""" + SELECT * + FROM input_files, files + WHERE input_files.run_id='%s' AND input_files.task_id='%s' + AND input_files.file_id = files.file_id; + """ % (workflow_id, task_id), db) + + +def output_files_for_task(workflow_id: Any, task_id: Any, db: DB) -> pd.DataFrame: + return pd.read_sql_query(""" + SELECT * + FROM output_files, files + WHERE output_files.run_id='%s' AND output_files.task_id='%s' + AND output_files.file_id = files.file_id; + """ % (workflow_id, task_id), db) + + +def full_task_info(workflow_id: Any, task_id: Any, db: DB) -> pd.DataFrame: + task_details = pd.read_sql_query(""" + SELECT * + FROM task + WHERE run_id='%s' AND task_id='%s'; + """ % (workflow_id, task_id), db) + print(task_details) + if not task_details.empty: + task_details = task_details.iloc[0] + task_details['task_inputs'] = input_files_for_task(workflow_id, task_id, db) + task_details['task_outputs'] = output_files_for_task(workflow_id, task_id, db) + return task_details + + def app_counts_for_workflow(workflow_id: Any, db: DB) -> pd.DataFrame: return pd.read_sql_query(""" SELECT task_func_name, count(*) as 'frequency' diff --git a/parsl/monitoring/visualization/models.py b/parsl/monitoring/visualization/models.py index 306ae05ebc..758f43053c 100644 --- a/parsl/monitoring/visualization/models.py +++ b/parsl/monitoring/visualization/models.py @@ -67,7 +67,7 @@ class Task(db.Model): task_stdin = db.Column('task_stdin', db.Text, nullable=True) task_stdout = db.Column('task_stdout', db.Text, nullable=True) task_stderr = db.Column('task_stderr', db.Text, nullable=True) - task_env = db.Column('task_env', db.Text, nullable=True) + task_environment = db.Column('task_environment', db.Text, nullable=True) __table_args__ = ( db.PrimaryKeyConstraint('task_id', 'run_id'), ) @@ -86,6 +86,18 @@ class Files(db.Model): __table_args__ = (db.PrimaryKeyConstraint('file_id'),) +class Environment(db.Model): + __tablename__ = 'environment' + environment_id = db.Column('environment_id', db.Text, nullable=False) + run_id = db.Column('run_id', db.Text, nullable=False) + label = db.Column('label', db.Text, nullable=False) + address = db.Column('address', db.Text, nullable=True) + provider = db.Column('provider', db.Text, nullable=True) + launcher = db.Column('launcher', db.Text, nullable=True) + worker_init = db.Column('worker_init', db.Text, nullable=True) + __table_args__ = (db.PrimaryKeyConstraint('environment_id'),) + + class InputFiles(db.Model): __tablename__ = 'input_files' file_id = db.Column('file_id', db.Text, nullable=False) diff --git a/parsl/monitoring/visualization/templates/env.html b/parsl/monitoring/visualization/templates/env.html new file mode 100644 index 0000000000..7bab6d89d2 --- /dev/null +++ b/parsl/monitoring/visualization/templates/env.html @@ -0,0 +1,29 @@ +{% extends "layout.html" %} + +{% block content %} + +
+

Executor ({{ environment_details['environment_id'] }})

+
+
+
+
+
    +
  • Environment label: {{ environment_details['workflow_name'] }}
  • +
  • Workflow id: {{ environment_details['run_id'] }}
  • + {% if environment_details['address'] %} +
  • Address: {{ environment_details['address'] }}
  • + {% endif %} + {% if environment_details['provider'] %} +
  • Provider: {{ environment_details['provider'] }}
  • + {% endif %} + {% if environment_details['launcher'] %} +
  • Launcher: {{ environment_details['launcher'] }}
  • + {% endif %} + {% if environment_details['worker_init'] %} +
  • Worker init: {{ environment_details['worker_init'] }}
  • + {% endif %} +
+
+
+{% endblock %} diff --git a/parsl/monitoring/visualization/templates/file_detail.html b/parsl/monitoring/visualization/templates/file_detail.html index 5602696f61..274238a789 100644 --- a/parsl/monitoring/visualization/templates/file_detail.html +++ b/parsl/monitoring/visualization/templates/file_detail.html @@ -7,7 +7,7 @@

File Details

- + {% if file_details['timestamp'] %} diff --git a/parsl/monitoring/visualization/templates/files.html b/parsl/monitoring/visualization/templates/files.html index a03115737e..31f87f8928 100644 --- a/parsl/monitoring/visualization/templates/files.html +++ b/parsl/monitoring/visualization/templates/files.html @@ -20,7 +20,8 @@

File Provenance

{% endfor %} {% endif %} -{% if file_list is defined and file_list %} +{% if file_list is defined %} + {% if file_list %}
Name:{{ file_details['file_name'] }}
Id:{{ file_details['file_id'] }}
Size:{{ file_details['file_size'] }}
Size:{{ file_details['size'] }} bytes
md5sum:{{ file_details['md5sum'] }}
Creation date:{{ file_details['timestamp'] | timeformat }}
@@ -39,7 +40,9 @@

File Provenance

{% endfor %}
- + {% else %} +

No files found.

+ {% endif %} {% endif %} {% endblock %} \ No newline at end of file diff --git a/parsl/monitoring/visualization/templates/task.html b/parsl/monitoring/visualization/templates/task.html index 3e763401f3..5920e6db10 100644 --- a/parsl/monitoring/visualization/templates/task.html +++ b/parsl/monitoring/visualization/templates/task.html @@ -9,13 +9,14 @@

{{ task_details['task_func_name'] }} ({{ task_details['task_id'] }})

    -
  • Workflow name: {{ workflow_details['workflow_name'] }}
  • +
  • Workflow name: {{ workflow_details['workflow_name'] }}
  • Started: {{ workflow_details['time_began'] | timeformat }}
  • Completed: {{ workflow_details['time_completed'] | timeformat }}
  • Workflow duration: {{ (workflow_details['time_began'], workflow_details['time_completed']) | durationformat }}
  • Owner: {{ workflow_details['user'] }}
  • task_func_name: {{ task_details['task_func_name'] }}
  • task_id: {{ task_details['task_id'] }}
  • +
  • Task executor: {{ task_details['task_environment'] }}
  • task_depends: {% if task_details['task_depends'] %} {% for id in task_details['task_depends'].split(",") %} @@ -27,8 +28,30 @@

    {{ task_details['task_func_name'] }} ({{ task_details['task_id'] }})

  • task_time_invoked: {{ task_details['task_time_invoked'] | timeformat }}
  • task_time_returned: {{ task_details['task_time_returned'] | timeformat }}
  • -
  • task_inputs: {{ task_details['task_inputs'] }}
  • -
  • task_outputs: {{ task_details['task_outputs'] }}
  • +
  • File inputs: + {% if not task_details['task_inputs'].empty %} + + {% else %} + None + {% endif %} +
  • +
  • File outputs: + {% if not task_details['task_outputs'].empty %} +
      + {% for ofile in task_details['task_outputs'].itertuples() %} +
    • {{ ofile.file_name }}
    • + {% endfor %} +
    + {% else %} + None + {% endif %} +
  • +
  • task_args: {{ task_details['task_args'] }}
  • +
  • task_kwargs: {{ task_details['task_kwargs'] }}
  • task_stdin: {{ task_details['task_stdin'] }}
  • task_stdout: {{ task_details['task_stdout'] }}
  • task_stderr: {{ task_details['task_stderr'] }}
  • diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index b41c2e6ccf..c4428a4a9b 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -10,7 +10,8 @@ db, Files, InputFiles, - OutputFiles + OutputFiles, + Environment ) from parsl.monitoring.visualization.plots.default.task_plots import ( time_series_memory_per_task_plot, @@ -95,10 +96,14 @@ def files(): if request.method == 'POST': file_list = [] if form.validate_on_submit(): - if '%' in form.file_name.data: - file_list = Files.query.filter(Files.file_name.like(form.file_name.data)).all() + if not form.file_name.data.startswith('%'): + filename = '%' + form.file_name.data else: - file_list = Files.query.filter_by(file_name=form.file_name.data).all() + filename = form.file_name.data + #if '%' in form.file_name.data: + file_list = Files.query.filter(Files.file_name.like(filename)).all() + #else: + # file_list = Files.query.filter_by(file_name=form.file_name.data).all() return render_template('files.html', form=form, file_list=file_list) return render_template('files.html', form=form) @@ -143,6 +148,12 @@ def workflow(workflow_id): task_per_app=task_per_app_plot(df_task_tries, df_status, time_completed=workflow_details.time_completed)) +@app.route('/workflow//environment/') +def environment(workflow_id, environment_id): + environment_details = Environment.query.filter_by(environment_id=environment_id).first() + return render_template('env.html', environment_details=environment_details) + + @app.route('/workflow//app/') def parsl_app(workflow_id, app_name): workflow_details = Workflow.query.filter_by(run_id=workflow_id).first() @@ -179,11 +190,11 @@ def task(workflow_id, task_id): if workflow_details is None: return render_template('error.html', message="Workflow %s could not be found" % workflow_id) - task_details = Task.query.filter_by( - run_id=workflow_id, task_id=task_id).first() + task_details = queries.full_task_info(workflow_id, task_id, db.engine) task_status = Status.query.filter_by( run_id=workflow_id, task_id=task_id).order_by(Status.timestamp) + print(task_details['task_inputs']) df_resources = queries.resources_for_task(workflow_id, task_id, db.engine) return render_template('task.html', @@ -191,7 +202,7 @@ def task(workflow_id, task_id): task_details=task_details, task_status=task_status, time_series_memory_resident=time_series_memory_per_task_plot( - df_resources, 'psutil_process_memory_resident', 'Memory Usage'), + df_resources, 'psutil_process_memory_resident', 'Memory Usage') ) From 45af5f9642075c17a55647447d817f827ba0db1b Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:48:59 -0500 Subject: [PATCH 17/59] added file provenance tracking as an option to monitoring framework --- parsl/dataflow/dflow.py | 10 +++++----- parsl/monitoring/monitoring.py | 8 +++++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 90b929a6ba..339c9635df 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -236,13 +236,13 @@ def __exit__(self, exc_type, exc_value, traceback) -> None: raise InternalConsistencyError(f"Exit case for {mode} should be unreachable, validated by typeguard on Config()") def _send_task_log_info(self, task_record: TaskRecord) -> None: - if self.monitoring: + if self.monitoring and self.monitoring.capture_file_provenance: task_log_info = self._create_task_log_info(task_record) self.monitoring.send(MessageType.TASK_INFO, task_log_info) def _send_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.DynamicFile], task_record: TaskRecord) -> None: - if self.monitoring: + if self.monitoring and self.monitoring.capture_file_provenance: file_log_info = self._create_file_log_info(file, task_record) self.monitoring.send(MessageType.FILE_INFO, file_log_info) @@ -280,20 +280,20 @@ def _create_env_log_info(self, environ: ParslExecutor) -> Dict[str, Any]: return env_log_info def _register_env(self, environ: ParslExecutor) -> None: - if self.monitoring: + if self.monitoring and self.monitoring.capture_file_provenance: environ_info = self._create_env_log_info(environ) self.monitoring.send(MessageType.ENVIRONMENT_INFO, environ_info) def register_as_input(self, f: Union(DynamicFileList.DynamicFile, File, DataFuture), task_record: TaskRecord): - if self.monitoring: + if self.monitoring and self.monitoring.capture_file_provenance: self._send_file_log_info(f, task_record) file_input_info = self._create_file_io_info(f, task_record) self.monitoring.send(MessageType.INPUT_FILE, file_input_info) def register_as_output(self, f: Union(DynamicFileList.DynamicFile, File, DataFuture), task_record: TaskRecord): - if self.monitoring: + if self.monitoring and self.monitoring.capture_file_provenance: self._send_file_log_info(f, task_record) file_output_info = self._create_file_io_info(f, task_record) self.monitoring.send(MessageType.OUTPUT_FILE, file_output_info) diff --git a/parsl/monitoring/monitoring.py b/parsl/monitoring/monitoring.py index f86bf81e87..63a2a5dacc 100644 --- a/parsl/monitoring/monitoring.py +++ b/parsl/monitoring/monitoring.py @@ -47,7 +47,8 @@ def __init__(self, logdir: Optional[str] = None, monitoring_debug: bool = False, resource_monitoring_enabled: bool = True, - resource_monitoring_interval: float = 30): # in seconds + resource_monitoring_interval: float = 30, + capture_file_provenance: bool = False): # in seconds """ Parameters ---------- @@ -86,6 +87,9 @@ def __init__(self, If set to 0, only start and end information will be logged, and no periodic monitoring will be made. Default: 30 seconds + capture_file_provenance : bool + Set this field to True to enable logging of file provenance information. + Default: False """ if _db_manager_excepts: @@ -105,6 +109,8 @@ def __init__(self, self.resource_monitoring_enabled = resource_monitoring_enabled self.resource_monitoring_interval = resource_monitoring_interval + self.capture_file_provenance = capture_file_provenance + def start(self, run_id: str, dfk_run_dir: str, config_run_dir: Union[str, os.PathLike]) -> None: logger.debug("Starting MonitoringHub") From cd99828391ce0657378524d7e3385fca4f3b7945 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:50:32 -0500 Subject: [PATCH 18/59] better reporting on environment --- .../visualization/templates/env.html | 37 ++++++++++++++----- parsl/monitoring/visualization/views.py | 11 +++++- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/parsl/monitoring/visualization/templates/env.html b/parsl/monitoring/visualization/templates/env.html index 7bab6d89d2..52292d252c 100644 --- a/parsl/monitoring/visualization/templates/env.html +++ b/parsl/monitoring/visualization/templates/env.html @@ -9,21 +9,40 @@

    Executor ({{ environment_details['environment_id'] }})

      -
    • Environment label: {{ environment_details['workflow_name'] }}
    • -
    • Workflow id: {{ environment_details['run_id'] }}
    • - {% if environment_details['address'] %} +
    • Environment label: {{ environment_details['label'] }}
    • +
    • Workflow id: {{ workflow['workflow_name'] }}
    • Address: {{ environment_details['address'] }}
    • - {% endif %} - {% if environment_details['provider'] %}
    • Provider: {{ environment_details['provider'] }}
    • - {% endif %} - {% if environment_details['launcher'] %}
    • Launcher: {{ environment_details['launcher'] }}
    • - {% endif %} - {% if environment_details['worker_init'] %}
    • Worker init: {{ environment_details['worker_init'] }}
    • + {% if tasks %} +
    • Used by Tasks: + + + + + + + + + {% for name, ids in tasks.items() %} + + + + {% endfor %} + +
      IdName
      {% set first = True %} + {% for i in ids %} + {% if not first %}, {% endif %} + {{ i }} + {% set first = False %} + {% endfor %} + {{ name }}
      + +
    • {% endif %}
    +
{% endblock %} diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index c4428a4a9b..82682a4e38 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -151,7 +151,16 @@ def workflow(workflow_id): @app.route('/workflow//environment/') def environment(workflow_id, environment_id): environment_details = Environment.query.filter_by(environment_id=environment_id).first() - return render_template('env.html', environment_details=environment_details) + workflow = Workflow.query.filter_by(run_id=workflow_id).first() + task_list = Task.query.filter_by(task_environment=environment_id).all() + tasks = {} + for task in task_list: + if task.task_func_name not in tasks: + tasks[task.task_func_name] = [] + tasks[task.task_func_name].append(task.task_id) + + return render_template('env.html', environment_details=environment_details, + workflow=workflow, tasks=tasks) @app.route('/workflow//app/') From 558d1704c4ef1aa2951c1356d79e998882cfc294 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:54:00 -0500 Subject: [PATCH 19/59] ensure that files are tagged with the task id that generated them, not the one that used them last --- parsl/dataflow/dflow.py | 17 +++++++++------- parsl/monitoring/db_manager.py | 37 +++++++++++++++++++++++++++++----- 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 339c9635df..55fb17f27d 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -241,9 +241,12 @@ def _send_task_log_info(self, task_record: TaskRecord) -> None: self.monitoring.send(MessageType.TASK_INFO, task_log_info) def _send_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.DynamicFile], - task_record: TaskRecord) -> None: + task_record: TaskRecord, is_output:bool) -> None: if self.monitoring and self.monitoring.capture_file_provenance: file_log_info = self._create_file_log_info(file, task_record) + # make sure the task_id is None for inputs + if not is_output: + file_log_info['task_id'] = None self.monitoring.send(MessageType.FILE_INFO, file_log_info) def _create_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.DynamicFile], @@ -287,14 +290,14 @@ def _register_env(self, environ: ParslExecutor) -> None: def register_as_input(self, f: Union(DynamicFileList.DynamicFile, File, DataFuture), task_record: TaskRecord): if self.monitoring and self.monitoring.capture_file_provenance: - self._send_file_log_info(f, task_record) + self._send_file_log_info(f, task_record, False) file_input_info = self._create_file_io_info(f, task_record) self.monitoring.send(MessageType.INPUT_FILE, file_input_info) def register_as_output(self, f: Union(DynamicFileList.DynamicFile, File, DataFuture), task_record: TaskRecord): if self.monitoring and self.monitoring.capture_file_provenance: - self._send_file_log_info(f, task_record) + self._send_file_log_info(f, task_record, True) file_output_info = self._create_file_io_info(f, task_record) self.monitoring.send(MessageType.OUTPUT_FILE, file_output_info) @@ -304,10 +307,10 @@ def _create_file_io_info(self, file: Union[File, DataFuture, DynamicFileList.Dyn Create the dictionary that will be included in the log. """ file_io_info = {'file_id': str(file.uuid), - 'run_id': self.run_id, - 'task_id': task_record['id'], - 'try_id': task_record['try_id'], - } + 'run_id': self.run_id, + 'task_id': task_record['id'], + 'try_id': task_record['try_id'], + } return file_io_info def _create_task_log_info(self, task_record: TaskRecord) -> Dict[str, Any]: diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 9be500e93c..36bb54cb27 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -247,9 +247,9 @@ class Files(Base): run_id = Column('run_id', Text, nullable=False) task_id = Column('task_id', Integer, - nullable=False) + nullable=True) try_id = Column('try_id', Integer, - nullable=False) + nullable=True) timestamp = Column('timestamp', DateTime, nullable=True) size = Column('size', BigInteger, nullable=True) md5sum = Column('md5sum', Text, nullable=True) @@ -515,22 +515,49 @@ def start(self, file_all_messages.append(msg) if file_id in inserted_files: changed = False + # once certain items are set, they should not be changed if inserted_files[file_id]['timestamp'] is None: + if msg['timestamp'] is not None: inserted_files[file_id]['timestamp'] = msg['timestamp'] changed = True + else: + msg['timestamp'] = inserted_files[file_id]['timestamp'] if inserted_files[file_id]['size'] is None: + if msg['size'] is not None: inserted_files[file_id]['size'] = msg['size'] changed = True + else: + msg['size'] = inserted_files[file_id]['size'] if inserted_files[file_id]['md5sum'] is None: + if msg['md5sum'] is not None: inserted_files[file_id]['md5sum'] = msg['md5sum'] changed = True + else: + msg['md5sum'] = inserted_files[file_id]['md5sum'] + if inserted_files[file_id]['task_id'] is None: + if msg['task_id'] is not None: + inserted_files[file_id]['task_id'] = msg['task_id'] + inserted_files[file_id]['try_id'] = msg['try_id'] + changed = True + else: + if msg['task_id'] == inserted_files[file_id]['task_id']: + if inserted_files[file_id]['try_id'] is None: + inserted_files[file_id]['try_id'] = msg['try_id'] + changed = True + elif msg['try_id'] > inserted_files[file_id]['try_id']: + inserted_files[file_id]['try_id'] = msg['try_id'] + changed = True + else: + msg['task_id'] = inserted_files[file_id]['task_id'] + msg['try_id'] = inserted_files[file_id]['try_id'] if changed: file_update_messages.append(msg) else: inserted_files[file_id] = {'size': msg['size'], 'md5sum': msg['md5sum'], - 'timestamp': msg['timestamp']} - + 'timestamp': msg['timestamp'], + 'task_id': msg['task_id'], + 'try_id': msg['try_id']} file_insert_messages.append(msg) elif msg_type == MessageType.ENVIRONMENT_INFO: if msg['environment_id'] not in inserted_envs: @@ -600,7 +627,7 @@ def start(self, if file_update_messages: logger.debug("Updating {} FILE_INFO into files table".format(len(file_update_messages))) self._update(table=FILES, - columns=['timestamp', 'size', 'md5sum', 'file_id'], + columns=['timestamp', 'size', 'md5sum', 'file_id', 'task_id', 'try_id'], messages=file_update_messages) if input_file_insert_messages: From 05caec814b78d2b6c000d2bb80e836edf616e934 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:54:53 -0500 Subject: [PATCH 20/59] get the task reporting the environment correctly --- parsl/monitoring/db_manager.py | 12 ++++++------ parsl/monitoring/visualization/templates/task.html | 2 +- parsl/monitoring/visualization/views.py | 7 ++++++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 36bb54cb27..58f7852fa9 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -518,20 +518,20 @@ def start(self, # once certain items are set, they should not be changed if inserted_files[file_id]['timestamp'] is None: if msg['timestamp'] is not None: - inserted_files[file_id]['timestamp'] = msg['timestamp'] - changed = True + inserted_files[file_id]['timestamp'] = msg['timestamp'] + changed = True else: msg['timestamp'] = inserted_files[file_id]['timestamp'] if inserted_files[file_id]['size'] is None: if msg['size'] is not None: - inserted_files[file_id]['size'] = msg['size'] - changed = True + inserted_files[file_id]['size'] = msg['size'] + changed = True else: msg['size'] = inserted_files[file_id]['size'] if inserted_files[file_id]['md5sum'] is None: if msg['md5sum'] is not None: - inserted_files[file_id]['md5sum'] = msg['md5sum'] - changed = True + inserted_files[file_id]['md5sum'] = msg['md5sum'] + changed = True else: msg['md5sum'] = inserted_files[file_id]['md5sum'] if inserted_files[file_id]['task_id'] is None: diff --git a/parsl/monitoring/visualization/templates/task.html b/parsl/monitoring/visualization/templates/task.html index 5920e6db10..2054134ac2 100644 --- a/parsl/monitoring/visualization/templates/task.html +++ b/parsl/monitoring/visualization/templates/task.html @@ -16,7 +16,7 @@

{{ task_details['task_func_name'] }} ({{ task_details['task_id'] }})

  • Owner: {{ workflow_details['user'] }}
  • task_func_name: {{ task_details['task_func_name'] }}
  • task_id: {{ task_details['task_id'] }}
  • -
  • Task executor: {{ task_details['task_environment'] }}
  • +
  • Task executor: {{ environments[task_details['task_environment']] }}
  • task_depends: {% if task_details['task_depends'] %} {% for id in task_details['task_depends'].split(",") %} diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index 82682a4e38..75f824e147 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -205,13 +205,18 @@ def task(workflow_id, task_id): print(task_details['task_inputs']) df_resources = queries.resources_for_task(workflow_id, task_id, db.engine) + environments = Environment.query.filter_by(run_id=workflow_id).all() + environs = {} + for env in environments: + environs[env.environment_id] = env.label return render_template('task.html', workflow_details=workflow_details, task_details=task_details, task_status=task_status, time_series_memory_resident=time_series_memory_per_task_plot( - df_resources, 'psutil_process_memory_resident', 'Memory Usage') + df_resources, 'psutil_process_memory_resident', 'Memory Usage'), + environments=environs ) From 8f212ba999f041d3915682823daf65ccc0a914be Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:55:59 -0500 Subject: [PATCH 21/59] only provide file link if files were actually used in the workflow --- parsl/monitoring/visualization/templates/workflow.html | 4 +++- parsl/monitoring/visualization/views.py | 10 +++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/parsl/monitoring/visualization/templates/workflow.html b/parsl/monitoring/visualization/templates/workflow.html index d8b78a1851..5bd35195f7 100644 --- a/parsl/monitoring/visualization/templates/workflow.html +++ b/parsl/monitoring/visualization/templates/workflow.html @@ -48,7 +48,9 @@
    App Summary
    View workflow DAG -- colored by apps
    View workflow DAG -- colored by task states
    View workflow resource usage - + {% if have_files %} +
    View workflow file provenance + {% endif %} {{ task_gantt | safe }} {{ task_per_app |safe }} diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index 75f824e147..608cbbf229 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -140,12 +140,17 @@ def workflow(workflow_id): df_task = queries.completion_times_for_workflow(workflow_id, db.engine) df_task_tries = queries.tries_for_workflow(workflow_id, db.engine) task_summary = queries.app_counts_for_workflow(workflow_id, db.engine) - + file_list = Files.query.filter_by(run_id=workflow_id).first() + if file_list: + have_files = True + else: + have_files = False return render_template('workflow.html', workflow_details=workflow_details, task_summary=task_summary, task_gantt=task_gantt_plot(df_task, df_status, time_completed=workflow_details.time_completed), - task_per_app=task_per_app_plot(df_task_tries, df_status, time_completed=workflow_details.time_completed)) + task_per_app=task_per_app_plot(df_task_tries, df_status, time_completed=workflow_details.time_completed), + have_files=have_files) @app.route('/workflow//environment/') @@ -203,7 +208,6 @@ def task(workflow_id, task_id): task_status = Status.query.filter_by( run_id=workflow_id, task_id=task_id).order_by(Status.timestamp) - print(task_details['task_inputs']) df_resources = queries.resources_for_task(workflow_id, task_id, db.engine) environments = Environment.query.filter_by(run_id=workflow_id).all() environs = {} From 3ade95af7082dc4a02cc367bc404577564d1cada Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:56:50 -0500 Subject: [PATCH 22/59] only provide file link if there were files --- .../visualization/templates/workflows_summary.html | 4 ++++ parsl/monitoring/visualization/views.py | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/parsl/monitoring/visualization/templates/workflows_summary.html b/parsl/monitoring/visualization/templates/workflows_summary.html index f1dde49a87..c993f43006 100644 --- a/parsl/monitoring/visualization/templates/workflows_summary.html +++ b/parsl/monitoring/visualization/templates/workflows_summary.html @@ -30,7 +30,11 @@

    Workflows

    {{ w['tasks_failed_count'] }} + {% if w['run_id'] in have_files %} files + {% else %} + + {% endif %} {% endfor %} diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index 608cbbf229..7524fcf8f3 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -63,11 +63,15 @@ def format_duration(value): @app.route('/') def index(): workflows = Workflow.query.all() + have_files = [] for workflow in workflows: workflow.status = 'Running' if workflow.time_completed is not None: workflow.status = 'Completed' - return render_template('workflows_summary.html', workflows=workflows) + file_list = Files.query.filter_by(run_id=workflow.run_id).first() + if file_list: + have_files.append(workflow.run_id) + return render_template('workflows_summary.html', workflows=workflows, have_files=have_files) @app.route('/files//') From 7501cc37a85b5a5fa23c6486c8260ae559f5fc1c Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:57:23 -0500 Subject: [PATCH 23/59] properly report environment with file details --- parsl/monitoring/visualization/templates/file_detail.html | 5 +++++ parsl/monitoring/visualization/views.py | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/parsl/monitoring/visualization/templates/file_detail.html b/parsl/monitoring/visualization/templates/file_detail.html index 274238a789..cbf30cbe3d 100644 --- a/parsl/monitoring/visualization/templates/file_detail.html +++ b/parsl/monitoring/visualization/templates/file_detail.html @@ -23,5 +23,10 @@

    File Details

    {% endfor %} {% endif %} + {% if environment %} + Environment: +{{ environment['label'] }} + + {% endif %} {% endblock %} \ No newline at end of file diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index 7524fcf8f3..fb3158a74e 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -80,6 +80,8 @@ def file(file_id): input_files = InputFiles.query.filter_by(file_id=file_id).all() output_file = OutputFiles.query.filter_by(file_id=file_id).first() task_ids = set() + environment = None + for f in input_files: task_ids.add(f.task_id) if output_file: @@ -88,10 +90,12 @@ def file(file_id): for tid in task_ids: tasks[tid] = Task.query.filter_by(run_id=file_details.run_id, task_id=tid).first() workflow_details = Workflow.query.filter_by(run_id=file_details.run_id).first() + if output_file: + environment = Environment.query.filter_by(environment_id=tasks[output_file.task_id].task_environment).first() return render_template('file_detail.html', file_details=file_details, input_files=input_files, output_file=output_file, - tasks=tasks, workflow=workflow_details) + tasks=tasks, workflow=workflow_details, environment=environment) @app.route('/files', methods=['GET', 'POST']) From 66238e5be2c92c69b7df52a1c0c8067b31bfc523 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:58:37 -0500 Subject: [PATCH 24/59] properly format and report files --- .../visualization/templates/files_workflow.html | 10 +++++----- parsl/monitoring/visualization/views.py | 9 ++++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/parsl/monitoring/visualization/templates/files_workflow.html b/parsl/monitoring/visualization/templates/files_workflow.html index a31684df73..beebfc8c13 100644 --- a/parsl/monitoring/visualization/templates/files_workflow.html +++ b/parsl/monitoring/visualization/templates/files_workflow.html @@ -4,7 +4,7 @@
    -

    Files for Workflow {{ workflow['name'] }}

    +

    Files for Workflow {{ workflow['workflow_name'] }}

    @@ -18,12 +18,12 @@

    Files for Workflow {{ workflow['name'] }}

    {% for tid, task in tasks | dictsort %} - - + + - + {% endfor %} From 76b80086e10573cd5450ae1407b2c0383f6c3dea Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:59:44 -0500 Subject: [PATCH 27/59] documentation on file provenance --- docs/images/mon_env_detail.png | Bin 0 -> 249813 bytes docs/images/mon_file_detail.png | Bin 0 -> 180225 bytes docs/images/mon_file_provenance.png | Bin 0 -> 108346 bytes docs/images/mon_task_detail.png | Bin 0 -> 457796 bytes docs/images/mon_workflow_files.png | Bin 0 -> 199563 bytes docs/images/mon_workflows_page.png | Bin 58385 -> 74833 bytes docs/userguide/monitoring.rst | 55 ++++++++++++++++++++++++++-- 7 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 docs/images/mon_env_detail.png create mode 100644 docs/images/mon_file_detail.png create mode 100644 docs/images/mon_file_provenance.png create mode 100644 docs/images/mon_task_detail.png create mode 100644 docs/images/mon_workflow_files.png diff --git a/docs/images/mon_env_detail.png b/docs/images/mon_env_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..2eab8b94a4223e5e5df657d11e0b75c1c7f2be24 GIT binary patch literal 249813 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

    W7lBah?%jHY@7ay2T`zA{2iWJ=iZj;P(H@CL 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

    {% for file in file_list %} - + diff --git a/parsl/monitoring/visualization/templates/file_detail.html b/parsl/monitoring/visualization/templates/file_detail.html index cbf30cbe3d..3582d02b75 100644 --- a/parsl/monitoring/visualization/templates/file_detail.html +++ b/parsl/monitoring/visualization/templates/file_detail.html @@ -13,8 +13,8 @@

    File Details

    {% endif %} - {% if output_file %} - + {% if output_files %} + {% endif %} {% if input_files %} {% for file in file_list %} - + diff --git a/parsl/monitoring/visualization/templates/file_detail.html b/parsl/monitoring/visualization/templates/file_detail.html index 3582d02b75..b79d54510b 100644 --- a/parsl/monitoring/visualization/templates/file_detail.html +++ b/parsl/monitoring/visualization/templates/file_detail.html @@ -6,13 +6,16 @@

    File Details

    {{ task['task_func_name'] }}{{ task['task_id'] }}{{ task['task_func_name'] }}{{ task['task_id'] }} {% if task['task_inputs'] %} {% for input in task_files[tid]['inputs'] %} - {{ input['file_name'] }}
    + {{ file_map[input['file_id']] }}
    {% endfor %} {% else %} None @@ -32,7 +32,7 @@

    Files for Workflow {{ workflow['name'] }}

    {% if task['task_outputs'] %} {% for output in task_files[tid]['outputs'] %} - {{ output['file_name'] }}
    + {{ file_map[output['file_id']] }}
    {% endfor %} {% else %} None diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index fb3158a74e..bf218ab100 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -1,6 +1,7 @@ import pandas as pd from flask import current_app as app from flask import render_template, request +import os.path as ospath import parsl.monitoring.queries.pandas as queries from parsl.monitoring.visualization.models import ( @@ -108,10 +109,7 @@ def files(): filename = '%' + form.file_name.data else: filename = form.file_name.data - #if '%' in form.file_name.data: file_list = Files.query.filter(Files.file_name.like(filename)).all() - #else: - # file_list = Files.query.filter_by(file_name=form.file_name.data).all() return render_template('files.html', form=form, file_list=file_list) return render_template('files.html', form=form) @@ -119,6 +117,7 @@ def files(): @app.route('/files/workflow//') def files_workflow(workflow_id): workflow_files = Files.query.filter_by(run_id=workflow_id).all() + file_map = {} workflow_details = Workflow.query.filter_by(run_id=workflow_id).first() task_ids = set() files_by_task = {} @@ -126,15 +125,15 @@ def files_workflow(workflow_id): for wf in workflow_files: file_details[wf.file_id] = wf task_ids.add(wf.task_id) + file_map[wf.file_id] = ospath.basename(wf.file_name) tasks = {} for tid in task_ids: tasks[tid] = Task.query.filter_by(run_id=workflow_id, task_id=tid).first() files_by_task[tid] = {'inputs': InputFiles.query.filter_by(run_id=workflow_id, task_id=tid).all(), 'outputs': OutputFiles.query.filter_by(run_id=workflow_id, task_id=tid).all()} - return render_template('files_workflow.html', workflow=workflow_details, - task_files=files_by_task, tasks=tasks) + task_files=files_by_task, tasks=tasks, file_map=file_map) @app.route('/workflow//') From 00ffa6f523d4c7be10f9638c06d8ad12aa4bfb76 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:58:55 -0500 Subject: [PATCH 25/59] make header responsive to url --- parsl/monitoring/visualization/templates/layout.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/parsl/monitoring/visualization/templates/layout.html b/parsl/monitoring/visualization/templates/layout.html index dc03c4f54a..3be3f30f50 100644 --- a/parsl/monitoring/visualization/templates/layout.html +++ b/parsl/monitoring/visualization/templates/layout.html @@ -33,10 +33,10 @@ From da73f91f33c5475668e326190f58ab46930c009c Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:59:13 -0500 Subject: [PATCH 26/59] fix bug in file size reporting --- parsl/monitoring/visualization/templates/files.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/parsl/monitoring/visualization/templates/files.html b/parsl/monitoring/visualization/templates/files.html index 31f87f8928..62404e41d3 100644 --- a/parsl/monitoring/visualization/templates/files.html +++ b/parsl/monitoring/visualization/templates/files.html @@ -7,7 +7,7 @@

    File Provenance

    Files by workflow.

    - Search for a specific file: + Search for a specific file (use % as a wildcard):

    {{ form.hidden_tag() }} {{ form.file_name.label }} {{ form.file_name(size=32) }} @@ -34,7 +34,7 @@

    File Provenance

    {% for file in file_list %}
    {{ file['file_name'] }}{{ file['file_size'] }}{{ file['size'] }} {{ file['timestamp'] | timeformat }}
    2{a0T(s2vyxZrmoM0do zyv|theNWbBD$yGX48V*!^Qzg-(Cgqif<2z|27qpEV5xlw~uY!G_QKw4k-=X+S& zyc&bLZi_?JmTj}uM$ZBCq@1o^I?=PbDFGblO&SwZ4Ep9T64vlJfiY z0E4A4SRa5uFxr6io&qWaop!!Q!oWAvsjOpU;*_9|7sWsmfxe)C)>d$_Oy_m;HFtl_ z&YURoSRyFM$#h`(T$MSIrL%|Md*hvMcf3aQqMhGW2V_22bX2&!)Pq&&Um13;Qr!v( zUL$-2kfiDFzs{xKRjCC8(5o3(Nzt6)dY#?&-ES0T)K^W(%q+UAN{(7gO6bHF3hoVc z7+dY_-vCyb5BxlP^CZEqxJ3tkmq+RM5}D)U6M6^wVx%t>o`?YqL4v~Jv^QBHwyA{$O(Oa zdUn_n#5~@`4f(dK^Ah_jE5YY_g@|A>1CC@%%XNqXo~!BH7Q^8G5M;OfLz95GM;p< zo?{aVq9B~zjxJ|AguD9s>6!GBk}$RlcEpswtx`dZ^>?Wf^b;u>7QDS0Cru@*sHoHI zIF@k{@@v8W<*%`QJkXpL>sA!!*71sewM#3@kP zbV{)2zhh*fWntJFC^K;hW)#wjIxVh!jilb4rKhb*pFY+v6|@|?z%Fp9CxMFU+rGO1 z>QmRo=8F2&KdV)>^jkdX3JNpK@zS!gxTYrkUaky<8MmI($HRSPWTxZuTcuwK6m&oS z-KT?7q|TTsEKI{eg@R;74ZLPx&84H}vI+g6g;wi43giNqLLj|zF*-#czJT-0Zk85Lc(3iM=8AtQ9@&$Yk$T7i*IIT0-Ygbw0DuLCLw;83X^F@l|zpC>0+`Ix2+l@JzalKUuaYm zUg&ECqH1h%V$|_wV0PychOM&w;4n|dDybq`J{XM z>evqrNvynpuMoWm#1E2;FZUz{+rmMofZNb6dI8P3M3ePL@4w%-;J8i+U#I2#pgF`Z z%c$Zv;fpg%bMrR?G=Doi1d9hbN_PEizELXO3dF#s)YOvz7jwu4z&_)llZdcv-qo}9 zQMyIP#6=X5=-KF5&`i{StdF0vBEz}kx;0Hmil+hOkq7VPW#x2hUHiW8pc0Opd}V>{ zfcKx(kt3l~@h^C^7Z;F^lZo{NQ*@3wp5QFn0(?<_9N!*5rl-q$#dq53$y zYQx2k-Z5#Dpb(gr{$xMzz{-rO&pjCTqb8%Q+*|a!O4`LEXD{OV<~G3KJ5@ePH?xxg z=>WE@IDJedqop&(8V69%m>N18g*(&I@|h)3=En7Rv|%aorX{{_^J$4XcxXrvWK=xA zt0T&SgMvJ!%M5ELrcdm>#G_~MXd$8TaA@>z$IFXG%eK>l^;k11j|oCBGpYmItL5bc zs5AAGQpoIeR}ycYL3O2l!33lL0D6LPheVoI$LQ`e)JS{F75=LrHgQ>al;AvY^ z?z>HDcQSECdPcW+>FfI-L@a0MIX2Mj=S{C4pV4*W#zQl!hc6+B+d(}3sHDcu;0@DG z2dmukXFbiql8+F=^>VZrzdO*l8q)`m%Gf4u0}(6ep}Q4jw(gI=v0IP?JS{ivE1dp3 z4WXCg{9D-1{~2@YP)M8KwHFQw%(u8my2gqY`Eu)*8Y@~~Uzc{XW1gbn${Z6P{b_vS zi?wx9uqRu7S5K^5G;_8SC){!tpi8~K|9r=O(wxl#tQrjL(VS`xpx>_1Q`y$GKUcRu z^v)ftk>W>0j|#zk>tVvv8?TU=)>D_QG&;xLpMMM}GUCQj@p6Htf>i+{;X7KDxnWjj z=GW2L!(WV?k4<2#K|3M93r=jW4_*dj9SNN;g65tU`|iaB4pz*sRcFfs&$upuORh0# z1_VN);(T&rb-~Yv;;`)+7Mcik9CQj(HXf3^H`o5M@C1QD6`DmG`I0uUZUSE>MXT0S z&0DvaMyEiUO1sKbUeRs_st05Ev}j1`suO4wKO*J(y0VYsNFbx~^41L$5uV8U#v6z) zdnV!FxWji%vAosbcxwBqbBy95Dx8(uHeNXJ(>+AkwJNi`3gLP;pjBU;Aa|bD?sph- z`T5Q-=18CWXSU2h?flT=#^3aXlxY+-H^RT9=?3CMnH>*MHoB~rtBhpP#1fh5db-m( z2yDY7vSB-y*Cs(TkY*yrMXVP#Jql+uO(;C{DzUS=ahZ{%G&Zxr1a4&c+WD z^#@m}7w0*h@~apK|J>iT)4%Fgt0N#J-fEX8!(e1&UfU);?r9{ArfR)>6!>L9=lIvZ z<2Y)MhVd$u+ib*&@I^#Kr~{s3gi{m@#HljhBdJj7*)4tnB2sioWz_ci&yqubkkKrK zs)fLx^9%ZVQ{?#S7e?6Kt7|E6m%pH{umrtEDbxHcmovCE?&d#*#(Bxe6FG;mXwTOk znrVn{n&~%<#~pX4Vz8{aft=lGy6Q3S9b~yGbx&UxAHZZTl3P@$OFtI%boKdGzDElr z1BM=;nONDfZ7nU9^iA-?3_*24gpYrITO2jVmRjJ3zbNz74;?#b+rKNo97n({6q!Y` zLdDVdM*M4Es=i*c=fT_DZ*)}b0wgR>(@g+K^sRJB9kz6O_2a7mN&lF=T+-x@Fs4}YjS9O^YB`#4N=KLeQV-1gaApIv*9lIHZ)`5 zJ-ic?_xPR*-&Cof7pJzM+0sef5Hyo=rP^HA5Ec>yw@1P1R53M1uJstyzx&C zIbG&_9?JqNJY=YBrAvma`0(MXE)1L=?d=-e-@b{T#cqahS7^SAk3Rv}lTU+*j@=d6 zN(TQ{G3r-dHnx6&`}?fefs@RNA#t>w1MoD%7o<|$BDcHrt{MXs8)2&Ud&g&&ERP-DJ)Sk<=37%C8t}KdBeE;zH!`r3Xb~;UQTg}-KpQo zUcTt4NIw`ani|H{YSzM9)AOead-{h>EH%K;llS1VwUpw?4K!34^9w)+-e6x5Sm9kd z>DxXLT;MD$@MYW`+?bx?cWXINH#f)c)$@!w`rIZFPUPA+y6*G+n05B%eTkMW4%K@WKbcB2w!zd4|FT&>Gkk27QqZB8AIpB5G_ z!Old4Bpr$x+%vzR;-UWBO?Zde5T7|4L%dwOWJu^WJ7Z&0_C}vx%i87kD!5 zQaqpHhY5KFSCOIegdMZEb?*ywIJ_N-cwLxpn^}*4cn3d>+`cRMfDwj?=)%l(lixjWcV`W`u6tL)V?dY5&tCk>R9hRF~UUJREyUUN@po4ca{}MR!&q~ z?A+zGy``hld5#ilOK01g&t%^ox%*TJ z>3HbBr*-Tr#A$Th?3GqbJ(+vsZZnjhK2f{=DaE33{^!7qtV!qD* zJldM7GTfw(iprSJXWx9BuvFLk_S4afSFN$k6FKQ*2E(i@XbbbWYWCqxUS+Q3eiM$v zc95Rut~{49)d&KJz$ObU6lJJ7O`%T@^mJv!bzq?&FJ~{@rpKyio;In498*I9VWU6A2BxOuay@hauC3M zGM_UZC{_tI?psrHtl#*aMOiSQhjIL6$TARhLOz)z- zG+pK6AMP_@&O>yCm~T&3#dv!Rc`ipvHvzEAqOZ%b=>%L4Xnyl@-Cp*%oE?0A_ao2o zue&U$w1K4`iZyF(`@mq`vZS_;uaS+0#tIhSTVj50nE~!K72@E&{<+zU!*Uov!3|y! zSQX~^gA^Gn%^c4g+~;7-_Vgs&JR$D!&QYSRtYkxqxsXJiIozAYcP*^hLgYS&L8Y2-b)5 z6$bHwq2?NgSGv^v-iyD-!ZpC1MeYoNtb7!2xt=h}WiuHKteeI@Y3VmJH7?;Q1beFi zEPRb#`AIHp62iR${lDs8PJkoa0eg#)5_a|ba(^<^2=%I~FB%`d^f|XGXRP>eRJktg zrSrR~s=q_7;X5&imd$)}5YsgO4aPqT=_Tz?-ld&{l@krHGuCETS|91yG1KV_t%SLsh7yVGwlbs9}O%Dm*eWShp}yG*3lcjR{?u_Orn8 zgwt>$Ph@)Ab>u=~diK|*zA_u_MpGB)5Unkaes$q&M5)VJ{9iHu zZm6khya33e4cFA#`G`{;k7zI4t8eCQiGt^T2i?%dGuoq^z&M zSDJw`Pp$P3`Q0hKM3~BDp4e;GQ9wc6rt%W z3n{mJ8fl09m)ini~SAnoIJdr#GKv-#g2Y6JvYtS zlES_RE`IRpr*Te(qR#@($6dMXACsCq)?HoI553)kAvI8>UaDHe38VNnI`QVlX56#K zt>Q~O8Ey@em~)0O?KfMGRc1@vTe0uDBZ9#bS)ett>}>UpJRA@A9g9v%0ua^XaR>;W zXdsh{dwZL`4uKdZCKbggY?&A)@w|l{S;^SJ!on~GQ%_gyWA#+E9QCMM+V@U|vxhCg zUI8pil4CM_kAH=JzHG&)cOJiE5=h31)?=^hVX>Pq%8kdQ{VwTPZU(EPqr+zUTpI-V zyHJfzYn(ke{YGIqUbE!Ux_JOG=2T-1phAowni(psHjgp{gRfLC9ajq^GT|sl*z7jU*{Sp-4};T7a655AIp-cK=kV7a69qh!9RW z>$%{tM;li}E4Xw9B;uOjz67}jubc~(Cp6B2C8eNRSa;4b-{u(t(lOXN7 zJ*i&ZRGDksRg`pjVuO{f^e!>cqI$e(GA*uP;ODemt~AAQh+JYv(eQ^_yRjxmiQ&MT zK{KCo=uqECmH?`Xp)jGx_y@~pKKIg7tbu(hne6A&c-|cH%Gum*)?<68>o;$n+&!`W zECRVf3yV<6637ajt$m;KI_M*3b6_1+OITujU}osL+`p;Q-O~de1Y|-F$Y^gY&jy-r z*osB35YH@O=Nvx1U)wV+_*Pb2SWL^%)72Fk8tTfEh9cwY zj869X&f|3-v>u99lL1H>fb)$I1;zZIq71LePI6HI~<9dOs38*msB{0@h+XcS+Dz5$d?_wp#0 zgp^dDv%r9Zu2cx7p`dTsaorg654qUI*!ebqazpm#ucM~((po&f3rbk`V+y#(XoLe; zxUb9N)SHCH=kmfG*)>$v7jjULCHF-1`0(d1bFk*K z!DtJBH}gg>U9z%5@9aLuew|YN^XEGZ6KPY^_9X_5fwU6a)!zxBbZhICK`%0$i8?%* zIHJgUa9MP#D+`UgVtaehLdA`$CKeq%?97U0)W&Icz7kE{L@DT*8pWBV#F}4N$sIZ4 z2@`lzxI`25o)km_t^=?%%!2|5lJjw`bR z3zu-fSH1qPS!wzN8mS>1c3-}_G;>GF8P6D})ERMC zmX`hkU}zbw&8?f@`8&{Y3z2FU%{2-mE4S;8xH~ghj-LSYF;74uBO|Sjw)Q7;LkM`S zt$T~P5fXzVUFSGcv+3YOCAm(P(C%$&~m;8mr@i^qG5ERE^i~$xq)Z^BzBb zhP$%7O#Q86V5MvejGqV^ZwPvyE*n>OkZn72#kHEI)ZLG9c;ZxdA4OzwWd-PDODij| zshFzsI9rRD5Tkra{$qCq+xwh%X?M_AtA8QKhcPofr7p*N6#xvAX=%sDbp-d%v=WH9 zbZ(uYJ!C$7t$p-0#ce(!cx5W*Vk&33pkTm0=%xp4Sf_Di*q$RGtW|Wq4|NaPthfn+ zJ1Na9C?c>F>uP7uD9z?lv?0XbC1fj94o ziU!{0Mh!F|A+WGEM@v#8M}4DRq98ASht1uvdfd~~OG-)#3cV8({Ad>!)cbFcTRVds zkqcO%n&gS=NTkurmtX}$`RBBJr@ZdhFAH|h{H0xYc$qx)(9Vv%mzS9x&?viLuj(U| zNk*m;Dqf@v@0dpgCN$JwctHJ)#++l#>`dIw?uA`TMGN%jeyndZ->4n8R!F=j@uXhv z5$>Z$qu7RP5~~n?zQt+lE6)(*ldS5S*OWi1(RIDy(X49D*#+9Rer$hlLAB0D(ur%s6e-;tymNayV4 zMk?r_bVJ zV;glFsT8D3LXf2>qtGp_81?q;+bB)`-&Oz90z`p*oR4>??{WFqg2P#JYIIy&$>@5f z4^omTAwQow;ZFH6he&KaFRx{_r)_GW$*;?R0I-p0&B{7FjNHn|Xw912Wgz+cU{Eot z;^7d)C!`RO;z4&K^m?fk)@N2N@47d7H2{g_EaHMGO8X40-7v0e^N^L10ZW$rKH>eG>=BTT{bxRmKxnv_SV5cWW@ydxxwM)Q4 zJ|%9uR7#4;=hmw>w(+5%iNP@w)<=EIm?1-L4nz{MSfSzt!{XwRTUWtL4?AFVcF6$b8qEAun_Hq<4ohFr6o{XX2!5tk$SGTnM zPE8E)+YLBe!RT~G21VpeWT?jz%shw*FE6iM**sNd)GbqdCZE19Dv*NHTLi4TU zODVI&3coMLT>NPYnNjTya`f??OM7p2c8=?Q9UmWe0{CxdC+YX^WFg}{ftl~$%_}rf z0*+>Ccgo8FjfCg-{r)X6E32X_FGgXR`cpH ztzgi#(&w=OzK`=UFXv+|KyLkY2W})X6Ty(9cCxc88?(0E-Y~b@23YeW!YWT6z@p}1 zK|B@t=B>1hteo^4bkORAN8GzV-1j@y1g4txHGR!A3O+t+u%q}YWnxv5Rddv>I8y3;C~CD!U^bfAG$Ke?;6ahFM=KDgfam*B zVO-DBKy^BABzJ0G4sQ79f+6n%5fq{hnZS3D1BQaX@_^CKwriu5q!jUkf`N4tURQxs z#9xNnV=S3BY_PA4nQ8dsSJdaaxA;-`e81%fJ&q!mor3GK@YTYMnW=LaUc-n9gh8gk%KZn8jEaOS{KI4XKCQ(O6CJ*Rp^-B&~GEVA_B_*XcxFB_A!ke(-fh_@S4B8ku`e92>Cld6# z-mPvty_A#+1>uJ$bu?#L(u^9NF4~*>42&1Yx-dW(almcxzkC1Q<2HK7Od zlXg<^AIAu-65Q~%CC5Rblm(t^m`d2lCvS6UKZ<9oeEg){=M<61n_e0-sGJD&sgt^0 z9l|gJ{NRPxnv8dqUz@{?zW*q2#S;&|T2q%fabRVEXKQzm%HHVwuwd}Riih!Ly^+?4 zHCL2Y2}x9l39rcP6EsRxQTlkxpO4ZN&d&QeBNyPZU%pf?>p+(Gjt)d0AG7DGmZ)2B zKB6uA8*#(zQw}<`tKC{Z4Y%#qxL4dEJ^N)>$F*fP0TCNl1j1ddt*y=0 z$ERxQ;HPXUTj=keS0QiPeSK@Hq3ZwdV7Y~2flIZl?G8GbA{zMNkZAwVFGYjnRm2+*^!iD$9m zMA>50U+_+4X_w?nJe zR@)fw1OA;FE3;qPbs?{L3kAY=W%{~-Jm5r1Fwzk}u4-{1UyhyHb#3jg1u3FZI$ zHvh)P|NV6b>!}h5Xa4V)ef&3r^S|TEGsNGYGkKgvdvU8h-K{jd=|j16_B!S=m`|f3TQM>(5Ox)e;{0zSHaV_t93Xnwg ztnRrt8^u5lUd9A=^bp&{$Ht=Fzxl=6z>NpUg<|Zee7ldsu%Oey5P$KdkkqYL6-7l8 ztFAq{^EosF&aN(gNBrAmAGDbhd$JtN+KjCN|tnXUiD^(@M*=sie8mxwaUlWhyQ-^q$~KD^o62Eb#!#R=Dy~^4XAND zRH9PA5|{hn`8D%SAgeVSZ+gGk31fnZM+Ob*{Ebfc0;4H0R6MV_17_n5+f#6j`A8*02R#(TfYDD*&f8(TrS>i6xWS zTfZzDYU^l&0b4a8fGq(Y%Fo&!Hb74+eq>*iQvl&3lC7;R65?ui0o!1xsLgp~;0t5Y zf(;==mozkwg<5{bRy?s%wA%){2XgMcMT&`eupuTkxeOR>hG7N0ehn!&fEYw$w7s47 z@Gxon{bA_~-irtKQ`;B#X~W=O-;=pA>Db9n4zDyBgB$;iwlChdLZkr1Nngzi z3tL-kzVEc~%poJ=30P>2_!Ar)LP(ejdv`uQ{t14*v(vX?%K(^ojCwtoB8}{gjA((n zgv4u5QRc(uhnhM+KX-9)`AsHCK#L=hf|-wxn3PmVtAYE^k?B!0A|kE`&0^+E^bUaA z^XNy1(WYw?V3ObxK8#O^CBnl?OiI$!j4o56)gNsB>~__f_bf48frhO>nIK;Fp!IB9 z9#s=SoeRq)6Sa0jXcrWR@=vkvdO+(rsM=<$=s_u#@%u{8=hi~Bg>mn$@fD5BBa?SR z0$^DPHiu81kaKc!((vp22|K!?sn;z9tphYy!7T?NL&o&y0P>+X!~MGg!P!JCo#Lt= zB#DXh6lLW)#!(UwFkWL`9oNt z*#t%$8iI@eEp;&QWhCm<+WEQ8?n~LE4@nxghZOKcDyGuCtR91QSht1tK7P*X`|?a2 z^3SP47m|`FC|wE*rXyG2soR?VypLD*o1-v0=w1Rgi+)obEjP`ITH5Tw!O7N4qu&{{ z6LD5^x}X=khKP%UkS6PqP+1e@5ry2nF%ubKI+eMw$Jm88q7Cz0 zI&3beJp#>zPkR8bfc^CWGc(hTsr{NO2FaIK&|??eo5MmyOKF^+x45)?^JHaVKh$>m zyy1!+jeYv+F@*|+XTz1#i=!(iyt3Dp!!v)b+Mrvc>=cDN*brd;%zB@7pX<2oEA%A| zQ{yW01Y_dkX89CiY9?&0t=g>r=JQ;03w3z%4AO{9x|+)RrK2IjFDZd}J6Z2^G_pBS zyZ!SJ|1C-+CQpFj2U&78x?IJ}yopU)kDnvoe}26uYH1|8J0Apcy>MJS2?@zt`yz&h zhK)1cNTUiOe&6o(eZfl~Gq(Y=+d`uj)z1>Jk#8mb&AqUcu_~LHjn?lEyRDPF`Cu^G zKy81WCjWG#wyJ1-V+@)YUVQLTipru5Sa@yxW5Wjzf@?S9q^?h%Nr0yEO5hff!Rpbhe(K)5UFli;2PG zdqwtIwLD?G>{1bDm{X%JhkOs!e7%htc(~@8j%hc;}Opb6g6Hn ztU1<8$0~K^KIga|navXvO8di@^6>|rj=zRNiDX$>CR0m)G8wfnI(^5Z6}Mrq z#Dkp_$_@uts`pw+yfdjtNiP>sD$$hUVdvz=8)Q9hNJlA*1`>1NGFIGoeCGg!BI{yV0+s{!}0uK;P@$+FhQ0%z~ z8E{iPQGT^>{QKwjBg_^&yv3lS8GlXJcNh}eCw_)m(R3}PHQbO?&tQ;~w=^i%dU?E< zQZ+DxPNS^#J05gWC4^#3gQrisScViq2MD|(Rp7b&OQ%`I+=nWB*AXs6Y(^dp`e4m_ z5s#V04yS!28Gqmo5_fHr|F;0&+Hi(5d9Karc?S!CJBTZlN`XI1EFElSWlo>Txl$0F zB}Q9!-e`B0EDvZE&=r8jmo)Z&Bf`V05h1s3;OFk=$G;g<>E8E*RiY1*0`URdTKx5} z^YRi%PD*j_R0|y(sRAq^W8yFxMs_Tb0rCF5BPx84qx}u^I(MXOvt{4vNt0JCYUR`m z{U{`g+^v2}JpvL>+BtD#)UHWjWG;IJRMv#45kj13$XzM`xu)y=Ct1{tIw9zOiZXK< ze{qr|9{bKPy^78Wgnm*AyX+np&bmx}x}cK5V;#GUe(8C%4tn)S*(%$mFfEH6FW52m z{%l-i`Awj#(pe+kqFxi$Y1lhvVSJ3usVen5;L`bK7gT<9Bo+M<4r72sIQH7jtv} zBDgm{H}c=*hhr87@h0*s4{fRF@1OKslIUjfV@G#)jSohuXMQbkPy#8{#i97Ef*>r1 ztB{VBmFF?9QaLWc`yU|OZG^u9glWYu90F(kiC+@|utjuz{(Rmvbuu0-mbEps!i|W^ zf<~BYXaFP%rSBD?fCvIetLwh&e-~-dX;BD2+H|jECEBJ6QThWf7~$d)@WQ=l&Xcj^ z;W>BH*QU=GEYvNJYTr;R9=1Z+wfXa?g+I>hAc^YZxLj~c(MU~AOifSc8SeyjUVaE} ztH`llVnz`gLKyMa0cbG)5GEO?9S-hY%MR7yl#QOCuGp zOe(&A(U$1TOhc(}UkJl;p1&6m5fNeHYhS;XXly6p5P56% zx3Fp%uJZf%r#4n`*^EWFxJGrJ2GC;PCa`^c#EP70@_59;;x;SnYeLWP|DQx+7#>HY zn2W#OzvrNnSp2j21JQ9y+zalh;B%uShiC+iZ{MU{pU7Nl$WoVXwKP~>)mqt9S&2zMzik||EAt~K! z*rLCdRMUZ){_>HcAbEeTT=Z$de@F!7OgTI+%&3?NmW7$zUZk258o>v z+le>Ue+zeYt7S#%k~^Y5!q!2uvVwY0>*va2N6MEW;^tU+@7}u;@4ySKz?jrj=7eVq zIAeriAE?exvKSbCpqE3aA|rIqL!|B&tT`$H@frZ^oS)s3)O=hjF?iGdP?6%{Ni*ZO z*8itIgMM13uwAM`w#Sc^l$7L8SAQe2D8EcnTn7Gjuiu(&92MvIfJY@hprEGhz!!pA zYK?KJ7!2IG5NGKcNb{(~4a>Rr{)adtG_+Dd>sLtQZ+9Vf=!JUu^&BwcAPl~ev zfc^69aAPUqzWO6%av!Y{E)`#$=VwALv=+VT&S7c!m6R#F;U{)Y$o<>dl{qxL^apa{ zm)+xg!DMx<=V%-GXX4|oDd;= zlYBs(kmNo|z1?zuX_`^{b$WWZQF92mFZWN^XMEZd8FSz(XkTfK<0|9{@QU(s@MGMB&40uy6m z*y3)jqu;*B9j~=Og3u=Hy2W@X)9&H)1W+8_GuK2Y2Re{Rn72aCjZAgQzEE#XzdQuR z661sL3wBlv39$b?*5h-Ut>u-Z+C<;wY3HdEf%No@5**am%h#8}FYV}Fr{c>DR$Al% zqUC5V{T6Mj$`}?Vo%8kUnE1(pc&dFqTurv7N=eAcaq@XVaIUKx8ymZ8J`R4FQqMEE zh#YN+zaqo??>)h=__ie+obPW)^%}D*5Il_^KB{xCd+Pc72T3d5Bvq<#YOZHt;&ch? zCSnXLitnj=*-Ao0v?gxb!BMiK7BXy`*8ZN^?ajhhkoD~2;+*0V>O`?Hu|YyfSX5M| zQ0==MYw5QwIXO+%5)$9K!iO!Ly!WkFEB^ZZb`~I4Es>cwUwZEbPG;y{fA_ z`N*C*YJsU+e#ruvFA()2t+XXujnvwe0O`^=JCy*0od;U0Skq}MfQ64i$QWJjQrD?Do56Y5?Yd2?tPH$xm@Xs9yMK)Nw#5^xd zpH~I9#>nAabl%UK7-~!j$i&B*#Tsq*S$9c_I! zq-r+x_SUs6Vhl|c0RGIzMqb~(8m;i6c-oi;98!gB(v$=3a?{s}mDu%FiOI->H{uoF zOUFWea7^Z(R$77J;kxRRqYvF5=+q2rS)Z2&RxSfXTO&xC2JO(3bCmz#o*aQN@hA!n z?F?2U7F+_`!5`mjn3}&lOjJsaAc?qfnfoGh*{!O|f=h>^0y{S60UINZfGa`VCvWo~ zn_2-LvKSJ^#GPvgr*)4AtlKhdW*wZJyUe*N0#=}b+{!AyVBiyDv@}gr)cdH2(Ct~A z%wy2%CaPO~4b=>yAYasF9!9CJHHK$o~c0TUW!4yjwk#l=p30uL!}$qWK9U$m5< zUf|`-Iyx$@gC2;L4_Zaj;MX{}y?G@e|2~u_MUMO~LVtsOV6S@iUB~iXpHCvW5;r_i zjxS$%`#Dk>R69#NfBszcND@b{(#r(|JKx+Kq4%me*R2xmQLmr-;Ep7QkN{#%#Sk|3|JO$+NSzZAC?SL`UJ6b9wf!#ZP`t~>^Q$?I~5?~UG zd(CjySm2Lqz0CxFc;})(|8g!#u!~RzMFvIZ<+Zr(br)aa#7-AUhPYMt2Ef38V*c;} z;Jl0C56XNc4qNNhH&c<{T=h-;{A{1~MAUKv#4kx@`F9I(acdi=9Y}MFr(LW$WH{|V zdHOgMjk2<SI5#I)s8Kg*vso zWT8esn!7B!qOhfD@Qqa3d#jstJzbm%*?=9DAFYPcGJ6 zQqu36A_;l>lq1nbZk7u_0yl18xk|e;RgaPc=N58|7<^=|46#FaGlV^1B~npTBH#6l&aC)Po#W2%IjI=6ZyEa3jH_N zrT|5MJJ~h_6too*x8#|^6hosIydQomd~)yVZk&LUY;$Iz;sLTUNJ?t;!#~9-0_6Q!m+Q+}6vy-3M}&B9 zb3WhKOxW7+MFd7XCF0hkRsRw@{8|iFWds9W15XC9>Rq!$uxTfF zLk-R5N{Qd@J$Uc{KRau1gc)jo^dD>^-6WoPId;BRgQsG86V6#8c7ql@bu+G%t1tUS zWB|Tw4wg{M79CR(a(;oJC-JdCZ3&MEEAZLhwuT2GE!2J~2*$_QF5-lE=0K8gVEZT8Bb8uB2G zAA(axM@BYX8%cua1eEdMt2qNm^qlpcjI=Ch<7;8~{5qx$52v}xZ^5#vs_?zFJaR-H z9et6;>TiDNuo@fFwg~+$&d6;`LYCD-^hFN4=^G%NH#hCusG!FKvIAdX2oR{@nCb8x z-+AfWAwZj0+?kNeljOM-*=?BCA! zcUqq2{Q|k|HO%MP&+1<(mZ${fSZ`OEVMzSee)0R=t2T;4X~h_g?Tr=BMtFKcpbg3Q zvT0mo_249*@>yg=)By>m<5Uv`6;Y$z@?mAA1-{S4kWp!4I$I{uIa-$P-usSu5_(c< zEXi29*95O+-(bnd-hL-?{PWhp9%XbvcEt+Z2(-!#>c%&4+Lc`hWm(OFFJHq6!QLta z)k+OYWc+X61;Z@!n|}tloiD=Yh<2K=Up6&ZT;)Mr8ygg`)0(|ldwW`G8pHVL(WA$_ z7N_4Z!h#D4-~84hC6j?>f);cYD-v@RO+KKI7fa3Uc+RhkhmkgX__5`3x%K=@US7w> zj`M3XKWK0Y?xTJDIQlM?V8dCT0qAl=!@_PeFm&tzN3kp3L7W&F7M5E3ssC-bth;-> zyP~ZWLNl;c|Xb!mFyZd{5hDJ7h zX$G+o75RUFZ!)Q5fqZ@VgPVz0wm=jaMU8&5&&D$P#Kg&oifD?zLS(>KWM)Qe;ZjAc zF%W%u25y7OPukh4ieh6=FbuH*%U-U;6TqGwB1xXEt&YRZ@Ut?m_ zqHtA*zauJbYjhdnZj#Y{nJ6=CK3$7Gf_i%t55>8fv#-eGQis5!BeaIc+98PZUESQE zRq!KYYI5=y|H%jF=5|hqgYwAt{|503qLk=s6UWcAFV#C4+AG($zpQ{zH{iUx02;L< z0*VJ*nvfedYk$wdh@fU<)VjP;2VRO#vBm}I5jqZ@AvdHR-C~!fc~*exUsijBaN+gv zsM{Pm9!R@$XSmd`o-6qSM%3J3%v^46BK8e?oDNyp$E?VklQ2f#pk$|Nx3&C*euP2W z`zOY2xfs3IZj=K5;g&x``hp>q1IHm6iHk0+See7zYE6sD6!W0n76GfI{_F4bJndjh z;ZFSy0J|X-rL&byuxF#bVL89?z77q3vBtBgJ551<1_!BeF_4wu6uee^bKyCJix8=C zhu$T?sDQ1T+iF0RBwj+z-Mn{V)QTgm4=`(I%>U+>tEKC1mkeriUO#>xi0%kkr! zB~0sUi3_0naTjvn*fJv_6Nbi=0!%R~V)AqudL;=w;zUumLq8}sHVQxwgohJhl3$w_ zXn__2u%Y#9lHJ9{1<6&;rOUrz&oM=BK&vlQ^Fb(*|M~dx_g<^Uh*5IEz`5PA}hG8LX z>LTkiaRm$SgRU12MsKkH)8o?6KfN zj;V)R$xCZMCa9h-=KuD}KR2}fSB`{eP?M8qCqzaUYpoaVp7<$<+^E{9vgo5g*QM2( z-$V`>EYI>>2jAROjvfuf8=jaMAGN}=)L-540_1%m_rmVo?zoM-P$^ro&JDiCi{kQt zMs%FY8Ro4l3kL#18AxeCZ&F>hPE0g(PY`7M!fCt)eYeKs#QV{9T}zce-u^J2fqDK4 z0zL}d4L7=w^$I?vWel5vo9~JhCdem)dR;3gf!k~kr0pYUs|^Z^B4ii7eS6hy?OHqT|7+cyu^??XAU^y-}vGkT+Ocg8XxO*8Q(OBW-`6VzO5F_%G_&p zz0bJ8t*+CuW(Q?J=#^Qg&06DebS_*KZ5j69L2&OEXWn3VU9zDMTQWZ6+s+?3hx|E{ zuh^i)0Bs272c|t=TR)v8K)o&&#RHh|Zz{jH66}}b7EA5mh+p<5NBp>IvP2WrGlq%y z4V^A&VZu9lXLs*h3};Tj@u#VJHyvcYf_e*z6=@il{3THlh$9U_9Ds%~{uSUutyaH# zcXFxqhJ`sz)E@}0PK}*ZnEQ2o?D}@d4EiB#JDymFrvWC(;l@Y{CdF@ z|LPmI5C{aUOhkgr71VdtLn}!!u0k2`cKSDX;)K!AJfll^3K16&tl%%TaDjP{VPJ4^ z5d>L7awxFmyk(@JrFkA3cl*vR3WahP%FxYARTE6JvOS!e19G*0(=bIt#DqE{J^m|r z;7F!ugoQF{;hv#bkY|%MoAZ0j36~-=Iy^i&Ix7d5Le#I_zlRx(m+C~*hDJIz@`@mt zX6O2j66az?a*($}!QyXX*%$$Nyf_ahoc6m^!Z9f^E&h{y3C{$_pxK0%$wRTKa_oHpHAxvn^gdG!SSb2SeC+c+Jt zvb#ievA=wcmWv$mkTEeUE+ZqO5Eqvq{0DSAq(^OT&S3tlba5j{AnIiJ%M+*BQc>4M zYkS3r7iUA}m??@cU~&|Fe6rK()!fqHd$ct&^CQ5EcqJ-9mHPlI%tEO0Tv* zVAq9k5OD|J+S-~75$~d!(suE;53#NzT`M@%!1x1|Q_NRAuc_H`vY;rbnQ^j)#g8{) zxE^K3zcnQqu&dz(f5&^N7T@;Hfpmw@w}*S}14azUjuR3D9aK9-xLhIiCM)o`LXrWS zaBu!;tiJYFYHnIl9t}A)P;vl0kXv;Y;Ga7#B6<3lPBG?3MO;DLJpvk<{fFvNX80H` zjnj7vP+Ma;j^%X_T~)PQG?3Y9T{RBto%xiO)M)jp&(cw8+DT0CBg%HP)Ud*{Zxzf3 zHL_A71B_!|&yKdh9bmwk>2(Ng9QRp@B;ObYfocQF4NKGbFLy_?6xY$je853Jw*h<0 zr;FC+i@=Msz~kkrZ4oMpY$N?@MzPS3i`9c9sU`<=*@8MGpr(SK1>sUR3PV2##Hqw= zmju|1@opo&WTBVkz=Y#nUw^I21Nbnn=4)}PPp_wSEbI}sYX^g1B?Vns zS6`o!y!=Q=NVs&)&YM(tz~MRMcbpQ@@*iArRU#Ju$>X-XIc+yu-dbz35XTM@l*u{= z|MZYIIiLF+iNZUU*^NevBpLh~G-!0HEIlk_1edga#bU*4zovc)Ubj@3S z)l4qo$mZhaR*#L7lJcOFcO|!~8HaKNV93k#n>{bT=V3=i=P)Xvh}ey~`}^70_4qb! z38X8dB`HfCD7Ko=qHn&zP8)qDa!E}t=aTL!M3LpcGdxF7AU0NKwUIgu2=xH31w8q` zrlx+4O$j}W0BBLs-CRb8gg0(QQcZ2p?nQY~VX^Pf1gD7#C?Db1(u!Jsrtl09ku36I zH*%{AZBTMwU41={s4&*i;0o?x?<%l-u0KLGaEG+Ub-1VK=DT-rTaUqyVNSSu6cJ{8 zX>c67xgqnATAM>+A3|^V{e~;iLZE7a|@yK}FJ<3PpZ11VyluaC#^Y_P*G??D< zGoL3VrZ(8LpC0x*CYms~cg>lgX3wW*(RHoo0lK;qZx1?}3}?UCd|jDq4?IQ$Rsda) zU7?y`iR%0p2BTtB`LG zy06T?1947qk?y6rhYC)+#eQ`qWM?6?(|FN@_Nkge@%%jw2LDfB-NK8H$K=&a=bOBNd!mp}aqGQJyM+5u6xNwj!- z*yd&HNhg?(p$;*Nl5_ra+u7gC%g|66G86P4io2Yq2kHk~jOQYv06r0oj!g#zfS-rQ zK?m}aQOiAv-@pt(U2#E%;P5nRuR{wHV7)-{*Otlm6D)*lomklQ4$W^`lOt+KBVXi# zO%O~8`HZ{0v-Ghfx!YFWkEU#{MCw@&qJn7VW;7lHaj=NqX{ee%!mtdumSYz1-0p2y**PkZiwi>-7UUG z|L+gYNDf=k1A(85SSP;*IJml2hLUcf)2HW33JWiGe>BkTjmu1|g_rZwC%S~y?eSHGdoHiE$5yyoC+q!-pBLhA zjLPC^N2N{X2Hh&UcteAQaAD=wRFy42f%6BnixkJZcrwZn)Gs|f(1Tg$#*=Gl%q%_a z-@jvBC+Z|(B_l0s@!I(rLqLu=MLh7v7;jlRh>fKOiBwg68-Xr?e+Fm|ddl67}I4Ky3=&&-?w-3-C%7h^`< z*`KOL?1zG@ry2V{8QkgO{;`` zA};8n{SDO3QL^~jWl6~93VZ(vKfWVbNn$Tr$WaHf( zqAM5n_^o5>iM4~DI4n6`f;JEG^gS1UkU%wM$n06r%{#ZV_RS5 zA^Zrwe^Sy}gfJOJ_UuuACV(NzF9>ge5&IeVTklEW1y!`>Rw2<1i>{4O3=i8l9tTI; zUK2+FQC#Y_qurzFouXC(@bSHuj)+9Yh(VR~d^yKvP$dpj*Uae42 z@zQ?sG$e34WAO(@2vXE!UmEYLY#}vPuQ}h*{-JKEne978wgg4u7*`P$?)BCC3Glma z#mC1#ebbd-4Qpm^kMs3XLD79Nu`li5bh~gC=pA-O*0J4F%ix6@l;xfIA(VB#j%fho zpDlLBC6&!=M|XuX0tHoB{mFcSCk4Vk;KspnT}j_mAYg0K>HhuuO3jtvCK%TlFLw&) z6EA*87pnJi3%Z9~;tC|k?D-m}Uz?#6)xnMm#P|{jNxcJBvuhM-%3Az3;s)-5zsl7u z;~gB*Zpd5(t#bMEoTnJClM-3wpFT}C*ckr%`7?!Z?FH5B1vQgc|H|%hYrSmYH%|9s z7c_26ciuf7RkTrS(W>w4MStx4yjAc0Sfn|Ug$3Haxn-m+(}57zt%ew>H3~uzK*-Xmnp!ApM@n}C3AeCdF|HvMj@2;85HMzZe8fmeiV?%>$go=-c^vlt`d z{f zvwFh8+F0#nVk0lFt!>R=77Z}pBjrr46uCzlx!Yb%Fy&la+`z`(VfWespJ=V)I5`1< zKXk4^#%sfQ(ac9IP;GF@A7X~($Ybx=X_f1O)tiMS{5H*rB;H%N7kB=7faW2I3GM0a zh0fi(mds(gr4Y-{Zdm>CaOMKr<}PvY@F;(YcFTD;$&&$V=+W&OGz*E!*vEYbSXFHL zSO2vad9JCtRXj>$k(~;oPCY*^tIEDES-`ob5HHbNkN5ub5|X7=#OrfGftHt#LZ|)V z=B8s@_kQbmgeosEiHZs;S;sDbmFbJIxKY8 z(yIo<8}G zTRPC+Kha`_nDNI9%2xfMnx0cQcN(Y`Fw>I&G0=wk&$(PMCXI1plhT?Urzgxybva_D z9JRbp7Uc;#!Kf-{_%r{{A1Dr4#CPZy?bJ?uoTYDBk&L*1-*LM30)&e(2R^~G4VepH z>F-y)DAnhD*`E$pd_57$)ckd9>=;eghKp;N%bJ=N#D4r&Ql?j`w>qCO5(*jWkleNN zqnMs1(ylSpi8uQvH9sz+ADe(d|Em`hUeg?zJq2QTWZ0;kAJOnvWf zUm9C)+_2MU)8aw2b3{xov1RFx3{7!aTZRprH+h{r3rBF9GoqH)HaF&OGPxFb>ZtWH zplESR)6_X9=bZm~_yk)pNz&>3IdN83-)oZ!;dh!f<6Ge!eMhg|SAIShX``O6q0vj( zG0(+2T1Fw@6&jvA(ay2IZ=;R?*4)W~B5`sfQ_R8E!C^X^7Ew56rA03o*YijvQ>5M= z8uJ;A&}UxqR|XEXS7j>OKQYB`b;d zW8o2VjqG(gc5eTvuP*(6TSh2}6_OGX94Bl2RTWalKFQNV zut6OuCWpIX6$jY)VNFy+{}eJoHEe>#Qkhrpt)T2;O|7GiNh7xn-9?_1Gz-RfR%8;p z5e%5obkAgD-qn3QyMI+wmSJhV+S$pyDri(*-b$7IpEW>|gjgz;&ahcG@4&6Tsf2D2 zAD&c`WRN~}nb0YrC^DwoF250Hfu#uk#gpSWmCNHxxj7E;p?={TZpR^{u(m8#eQFy;_exzv;tZ*=PL{VJ;?%u}$3K)g~tq!1Xi2$`J@74V61+B|>X zZT`zIyL}FHAUfkZAjcSO^{%fi6XOzF5O74+QjleN^{yzACSa3-jU6VA7&>{xzslYW z%IT^vUih$hylWQ;T=}&W&F|oI6r}X#8`(bX3YyYs(kb9t{Q)C@=&$4|DU$aeR3gHQBZ zXJ;p7@CAQ!67PeOs^WoNS9iCviVAH^A&v|g&Z(X~jRanQy69Oy)$FwI_UGXed`(4i zqw{mOfj^7pa&BWej8H(};d#XHh(Y==PoAE@p~CN?47Kv>*K=O0`v=FTH(tMjXv@8u z0#P7ZxUu%hTqjeX55)9&bE;#uHGh_ur}w4rQAAlNB!#}&Zbh#cg%-&g%4HHoQHmOB zXnU=pK&tV%tZcl+&Sp z0@pTPvgwyq%B+{kU}4{pbP5bz`pRRKQ^LG4EtZ&1{-DaRyzz3?4Fn%UXH-&qx*6{zi*W>{Hyt;(+20tx*@Zp1O$U1( zVgOOhD9qe$NL5Utq=5zZ*(0@t6N)jGKy?S@U@HDC3=U-iw^2ffxPQ{u4c4# ztQLvya=WOAnYli2xX0U#1vt}xgW1o(aC-!GV69_KrDfSJs%>V?hNI)d7k?%L%~@`b zs{B7KfX?Bd93|xEP*qvQPiKC}%w*_sUA)aML3nz8xwyFaHwhz(Gi#vkzSR^IG?nC4vdXDR$1a`*cbYv?_B%XzAVK(*OyzN#t(afQ^H}rd znJ>m|e&OD9#go=yzgFByCD@e|a@^}mu&ySRCyY0auFE6}3kmTa-QfG{;fqT-(~SN= zj->pCqhz-!+xyd-Z&qFo zv)K6MkXN)iTvWtA>vy&=P;1S=1;rXvm&>#Lse&jxkAvH4@j^n40;O{m66I&6YlmPK z*EB5*YUki79@h7X`WNGd$iQsNp}c}ZnsCAVG_Kff8+$Ejqk7%@IJdAL*17Up=#+u8 zvB|+|k(^$#>%#6u{Ztvg(;L*-*#3;~R$zsL*5VM3jv7N!V#{{3IGL76|BCzF_3wL{ zoez~$d2E(;m##ce2M2X@@}xs(U*9vab8B@F@1zbF-|H+|5ACy5@D#c!AEkeu&uHsZ zuA({o^&J;eC*Yhv+28~WmFuUURY3MzF>wc-eltMBiq2uv~sHH0gh{KD@7w; z^y;W#pxx2T1^LVN@f4-bg+~Kp=;N}<1QCm#_!#$lsUvG1F(JyRYU;4ch$|2Df1B+3 zt>quHTLr<%*isq^G;hshAIg2S(T$askMI2b$;a3Ch)QJp@Qg|(>gj!%6g|#0xxmZs z@w?qIH8T4?{@`EFSdTIvdx{8#P6v+BJc1Bsn*o8}GtGb0h;$}g5-MMKbLb(+~izifMLYB># zXcF8Vw7NIt=Aa#yUq-o-`mOn=0`%{**%UE{BAdVO9`Yyw$j5Hbu&AdZN>Xq7-TEh$ zkgoS)R}9<@yGDB|S&@~Nv|n({xJb6%s^(Wztn}5*1Z?FhrRqs{hn#m-IInNjb4p>C#|?>Vrc02B+(%T z6|bRbP-E&15bVbj{E8o*|u}!t*K6;Sxsvv z);mdfOpf=%9a4u=UzBRsZnk0W?d=73yYKs4{CH2$axfHEWvLh~@=x0M{$Rce)Q{d$ zvJN|q*e<8Kdf+8VzS2G?;j)Yy)|4EY6es+b&@4rHj*nqc`wuyg=cRQo~Ac zC67{LY}{zMp5BKnkg_ZYSZ-b3fO$MMh+i_)Gx-UM)-aMQ3{=N@TTOd2m{cg;v!fs@MNPA31O5WWHp}gkYg%{79s%vW~1bs>>Ita$; zwWEB0Uux3M=pjZ&L5B2>Ho=PKEHIg<irgz6-i5yj?&4<$EqgAYy$Sb(=2Z>~gQ=;!W z3koiQ7npZbl}@{MWCI)zVf3dMbkO-593GajUwT=&{ez+uOOJ{zuZA~patM%LuM*1UN6^5}I?NU3FzEP4Q$!fDnp?HFB) zF32zQH&$BIxJ!YcC=@9jM>}EaBudNA2mk#L7A4e0ZmxH=*Xk-lciYD1DrK9LQQ~5k zwi|VPy;4HQm5h+u=NPxr>0Tky*vP7I^AI!Zw zs|%xk5FZlr5#zWqGhd$Zvn#}sbE?L#t*#0QH$v8`lRYO?THCOBs%pH$-E-;v1_ouZ zb1&2t(uId5dsoLoXZ(1qJzDe>D%kqFdh&l=<-Z4~elz{KCTsTv!C}U;9BM)=_vSGk z*3Y1U_<8S`i2dgf>;iVsriNOv%Ars?mbKAx*o8=UI78a!dejSO&steoxbu}FZK56G z1_cUo=CxV_n7Cqz!E-!4y<%ficg7qVO9xJLu2ci%@=;tN+F+A=1Qe`V_oNuwx?3%cuAFI-$e7# ztIJNMHl1L>fWznI0|kuFN{&kCiE}VAsIXlTqL|9HhmPLtrsWJ zNssk}bcNHtuqJ&lZY(XxEwZJ?`&{PaE_kc_5>L9&YwBxqr{oPXW=N~L`6h@zl8fxX zayvNPzj8(M3msPv$MAnaHTeG#^N(c0E^w7mSx$Vlj=)8}HRzc642 zsWK4a04loTQDT{-@MZj#2XnAVy1a7Vb9PyZ<)gD3Z6BEuJ^yYT?7aCnj@$RZ?ahcJ zcUF0Mc15@4FFV8BorQ2Sp?|8zMO?mn^(nOp21CEa;nC3}S^jI=YuogMcjab^R+G3b z+zJ2pi*nw!Ant^Wb~eFmre|uJ#lwG`$F>qtkl#PBH9GZDCpH26tIce+nh(j53}X%& z$lqC2IFl$8@{Zr4z=$!2tz!>us43(p=u48c&bHbeZH~@(AtxvBQ@TDEH7vHgn+@0; z$6i3pKKrL&;VaNBeVqkN&)~Oe$47Z8({d>8MHwe178SjI!sr@y>){Pe1zFd(us#U| z%0^%PcwJ{%B;rTP_0rPQMdndNGTq|R=p>7dl=x5K&FIMu>=?i(DyOGKud_$UY;A09 z{aycMr&MLC!v{?lT=DX*3@iVVTG{?|nHCidXq~<9K}#SBFHrkK!@W718f|-BZVRv1 zTPrJrte^T^?cel0Kt<+{uEk}@SB~6cjx!t`o__q}tEk9By3aLs2_>Ij6c2x@rzN}k z=^`G!<(mBz-sb|Z1LSGoquZSL$;e34AUSO_M^!d)$(Z^hDm9?I2m*;XE1bGZP^UA= zmVb>o7!^o89F!Q;U1Mp9aqd35h9P0U<2A&IYjM5pH^3c6Cl|%gx)D>Lf>oHzyMQ^1 zR@Pbhq?dlrf`b@^`X#ONK0U&mn+$@QtT3_rbG^uTH5U8FqU&Un#|vh5MDc&TWjK)VOCFlJ4aE zv6tmFub_Y935NimN5+lUmm{@&eZ0I6AQh?xrvdMVU21Gb_v6eFiTWUA1ayI(`T28F zyh5yP;9^vZO`G%S@ie|>?QS#vFnoF+;aYK+&Q5g8R#Z?s5kB4X2%!l}h=- zC`dp+V2}OZ1Nh@*dKAO)9|#N(9M_QzQj5J64OjAZV89xL8sXx-nMsgi6FgWl`MpAs z18@}6>&P=E@SLb^^g~gYFt^5b{5dr z@!sWUZwAM`irogjn1$;~7J3^~y$9*!ACo$6-_zgoi##+HCzv4N5tWy*63pBijfegL z=)}i*N9)r>oUaPv;xf=jvzNmrb#mfHom)q~&4!+#gtQ$QTyO3P2DC!;;GIV*S-i5n z3s89s2QgdHTH-3(zw5MRygtj?mKdD3AJP%y*j|R2bbiX`mN~h&EK1d7%L)9&lM$O* zH10%_+TGjx)p_UF$8q|r*_iLd$JfmE^`At`z`(%80g6LNo0HzCMDg6OH~N)Cq)XUA z%wLgck=H8zar!=X$BzJdtcPMoM&?fx8R6RAX3D94^>ALH!_4g;l`P!?BxdT}h;Chk zEsgbXFHcNNNW*ky$YD19QV?>V6m*gN`$GMw)g?0>X9+BPnTmn}xjik*IGw%8GYFWQ zN?%8672oP02rKgRbm!x(i(p}nxGdi7>4}2@U3oEd$es_~XN1l}E|LDJc|)xa-=sC* zV2wqSH?@Gn<@<5#@gS~Me=;XCy_ZdDt#)r5!viQN!x55*GK<#CTwVX$JAiET_ifaE z{2=UuXh@XcMvwxLg~caeBNW+KBE@`HS2tVymTYr08xQ3qBr*-{VkWjh-~coDUYDa3 zmb@p!V||X<75ACvXe*uY4py6+fkIJxK6*DF{<)l;hT~qds=IgkvN;Y=FDol8hqyBGlMbo9dV8O!TQT8%iMJKfevG5 zdSTuWJ)h>ysgv+FW9rkF1TqyxMMA_lHg|`oHqGO@OL+AM*jc-@G$L1SXG~AaMNvNP z8VIjcdedfX;D4dF6_`FxE<*E|ne{_RhC68J0S8nGyqtd*oA(J?sAyI7X%)KIu?}e+R!?2QihM&YO|{F%#|sYGP7_X> zn^g8X<8*z)?|d@KN~(vfIdE>9*qkEMCKe7XEzP9~42LvEy>vw?OQbKEp;1>{+^CTy zwHIt2MD%(;Tt$Pk!Be31LWt=UPSo2O!hsUy_pgOuaME|&x4Ta)89KWajbi~nsMNX| z?bRz2A#_V=JJOUdZFwNgZiv*6bid)Tu%|(jmweTy@7uZ7<#h*jt!Mt~>Q(m^-el-~ z8YN>O{3F|m2RKH#$kI+NWZNw1-IU6PCc5z0&e^@3_=J?XFLoM}6*{FL?$B8&j6wWf z+shINcoXeYE9s_y+#yI{2vTkVkQIRQ_QgAu;DF*kM+^i6{FyrG8diDx;e0Bc>S7xc zN)5vU%!wmE{rKVSw#=xDM7RrWqS$NoON(wpg67?Ygw#|!r>3135L2wmQePIXu^ zT={IUboSv}9$wy!i7J)774sVHd_^|Y`Zu8ruv&_DY(y#Uuv#u$28Gz#mdT7BEe3_) zj`H%@ijp0WtdNXL(M4cm*Y@`IQkT1=;mvru)A{m5cGDcfazcw*&~0*kj~@?4^vbA#jAT6U z_s2s+qYh)<5ljTsI_TLwQR?myQUJ5=`6Z z)1`8|GK27z%J+2g9v-0ZT2VotEzLFqTumAM@)+{*A6b1rp6{x9L6}$6UPib3yTJZqq_$yw}Kvyudp)p4zsQsXc{y-&At{3)Hn!k^!0&ivf;5QauSZhA|Z!g zUX9a~>Jp4HYS89PQzfVtyXWR6=dARfDJvUiin&pAF8g4Ohu_tbI3H{+%j}oC$2&c$ zj3VdGQ7~J)vn?|?tD{1jpY=oPNpqId%;_&=YiU_MA0JtbD&dl|z#om?KQ;L`oXHy< z5dB~(@@eKLnGDYXaoO=ad%!rfmjaejkfh|^XyDU)$msLyQ|xZH#f#F1{#A&xIRsT* zwO6nWo@6LB77#t>8(RVFw@nv~Ss%9Xxpm_7WkhIbI@md(R|X74{1&y%Mb#vqzOX!n zzL9gtqH#jWK4oIsJirzEIId)!+TvHU`Urheg-j~n770YP3{hdFw>r;dp%2iMLheJO zqeq>STUV4tq>@s5#Bw;|z7lgvmu-_^~N-$A&5OK_ZPP{^o3>Duley{(~YQMT#%?ADB(~q#Q@urV4r!MPB7wCMq zC}}l&YwPn9_ytg?;&Ewiv5IppOc2fv&GM}N(eSoTL16&V;9z;WZh6%?(c zi!v98(ra;l-z{KX1UY0$Z1pO8Tq%*kTC;vuTP+u&&COCCk}_(b)SdbN*n7*ks=BU? zcYC9Nl1jG-NJ~qHq_lK*gLLN>>6UH~5RgqucS@JEba!{N&*Xld_x+u3=iB-8?k{d( zv-VnZtu@z}V_f5ZdEBN07>PyR#OjMvv%xf$0grmH7uUcD{%aR^U-`+bnhz9cYabq3 znO&cd|0o@X0&=ICo~OvEpWBBtPP6Ly<>2#IV1fyI$=iLL9TywRuX+D(FSX6HTY31I zym^2vcDkHd#S9;*yoxhg@p-NjsApWG;C+5?rI_t!q7i6-$hiBBl9qVm_Qor<=Ck)P zUJH-=&OocVsA}9yy$3WC7?87pp6euAr)M9yTp#XAypb4Rj&XumbOkK^0do2@psd&Y zhs6!ZBYAuK3`P$CsgnDLp1wYId{p)hZMe>jkjdDC&=QbU!5`octK-RzDXUOj%=dg( ztpF^Ag;fxv{V?KAXBU^|t1!KTzfIId98~@Wf2m2mfx#>eNI^Do#88f~ zlemjLN>cRAEi6ikt%6ZGfM~F~TDQ@SmV4TwhWZaG=qoyx6-ADwq{T)D;x+Ha?N~hc zu3BQLGTJ~xw8?dQZa=mH8yg#FmN31>0a^FMLt7imv+8QJ8wBBxuCDU?Rhoba?DSU5 zr;@Ti>(dr!k14%-m?)lgwLBm#hOO0^WoGbOnaZ%4P)fo|O0Ik5p)c#0k|_I6O^0X7 z4%))Q&lKtsW#3|vuZgZdZvpxGmSQ0KdXb%!9$zrEi!|S(cL9HR0NAMe+bAf|T)Ph{ zRvCQoGVZ8qzj1hjVY9*xB_vts=YB1T34^bX=rb>QVWAY_FlY^<^2-kjT6 zu?_09x4DZae5LMqcsOeH|H+GQjNIY2s@m#2Y)f+*0S1wL<^D4#*B#Pb%peS=YJIK9R0 zz9RxtDt~p7-wu9eF?NLU281C(b6I~5ITakrPq*_kieRvkg5t5F90j$-BPRIGAy~QK zzSI81Vx?M6pA7u900je-LI3=9S`l4e@V*7Y3^F4%3d8r@VrJKfYPhHdX05U^9Ox*GsbU5+VBfcR=OU;YXdE2Ubj z#OQkUUhccqB*1Os;{2LJ!jQnC0K-}xAn)+63m0@3`&&Fsz#N_RN&U3SCb6P9YdeB- zF>gz2e(8lm{XoN@o3w5SjWBo=-4d^Af2R(j3$9&xlKZOq_30N<;KLe>; zIGq8Ar-QTIimML*e(Cn&(ALuCdC>I-(3Di#V#1o7Id>(hsR`Tg9Zca~1-ItJ)K2^I z(RZU*ob|ncF!H2kd6_d%ZK&5L$mH{iNIseFt0x2Sv3=l`i6!mV%}!=(}b|Z5@bzBclPT9Bs)xc<#yc%-hsii&LFPaNPym6lG!fsxDNvHX@1;n%S@?`$^_80#O4ou zUZ_8xyGHT-a*?o>P03&8v0j^PpNHSi2(-{zTD<1IsZ!(i&)g&NsplU9YmipQ=kRE1 zcGDiI$?)01Yq?WVlV{2~C-G#)=5g2)T`w3D_iHl+c4+VYbeVz;ZRO>ev0sTQ#261o z_z++C18ajMn8HFRNSklRbmq%tPB$HX*UcZv6jOlJsb20T>iVo>lmgqgr&?d-N>Ktt zyqlZ#X+YDGsbq?;BMTwg?oziAIuQZlJf5`puQ3E67`QDfOq;Y@)5ueM!OqJ2*J7|lGifKw7 zXi#!FobR4iryJQa8MLh;bI={vm;C@EMgqX6oS0nGz8j>!{HTg``4U zb@j!dR<*^tQr}w4bD-4wmB-g1Ei0>0ZhQeEQG+`iC>+yU=0^TQ32c5YIZZV=HPFgGA9y;Ev-Lwg$iiHuDalA3;P%;5YExg}a$IWY4fCO&TZO01yL*l>vP zsrBPk2vQ<8@g2+R&7UnK%({teo5rR#r-(`G|oSBHZnjqrs?VVa;WlsNoc1{m2iOVfklpshm z-E40Zr)d0u!3;7mPQA?3Fl5I#t^GxVy!TT$fU**6P*Eypgv;6H|-kyIX6O zx+mvP&dzSKw?nbTdP8Fpc6@evBi3X4jph?|V%9-OaDI-F5g@@f0OUS^=W)mT2%fT| z7LrZ2eOEXUlNu|l^rN7luC!FI;_b&XWffWb2GWJHgXJJnI#MG0xf@%&Qc)QjQ_O@OXn}&C#QlyP@urL%=&%O|znMB#5SW{5O9BsWaR@CuzR-`&*=1Gi$=W1=jwq@`sE93bX*^T=1IHY!xf2Sfk1E zshGQ%!rWP}8JLdie6C|)uxns43|g3IX|o=0Hb@rg@5Dh*W3F^aWE2vomdP;4!utV3P;(CG>N2S4|ob zg}AZpf!-mO6x8Mgz;Qt8kNm+@0F$DzyczG67pyvdn6S!b0IfJOAAFko#e+q>e=jMaGJ?nvlZp#K=TO(H7q|K^Hsk)JS6)k9l4|Fpqu3?7MMJMiz8WE?%p9rpr8+rXQf%=;`FxS-5~C(E?!_pE6n)~y`k zkpdW9uasi8(Q)=QAlK=X>HEYjS}dZQR=6L`af5O{n4^Qhob0gj0}yl51^PZjXT!2- zsCcn9hl|y{7PCV`Ltmo$gR(p5#vnnLP%sz)?XEk7DNe*hvPQ3jpDM5tMii6;Go#%q<0bCgh-!dPoNZ?^v(?BV@bV^J^`J;leLX38= z1kv<+`Q)Js&fgNyC1=aFbyQ0Y8_lG{5^lXk`S&S4(Y(}8jZO=KVicFqONrV`T+odxhRJ=^cxd>{LgGkdYC4NNxgUCG}z2Qrb<54L3>r*_r3<0gF@pjfq-FzdBjlw58YMa@x^6VEezkg{< z+AmiYDD_b%#wWxl$fR+Vhah5${bJySF3dGHHUcT+a0ahyHehL@BpOQsg&1+a7l+;# zQgxb~S1K{ax-k`s^U{Z@0?s>e(-o!>nam5u?BdaeG!G9#B34uT2c)7ZfbSw2v6E7( zQ^HZGhJ%AUkivZm_9~uQUJnLSFcv#KLxL?J#|$tJ{9b7%7|R<<S0Vo^ke9rYJR+FsbraxIe|5Ly@`-+!prZOA20LCRncbl6t2Duw}M#yQ!% zC(jB%EuMjiDN|9v{kJ?MG@Ajpzx^2y(VXVVr@Ab+2aK5wWpG0ax~I(k*du&cR@;=* zfueq;<{ zG1HtM$eA6x0U^%J>?|LtEm+HINl4h1GGV`vF8^(xHez0;$v|u43P#Yz#Ra%+>FO?A z9j|h~t9~NGMJ(Wbp+8!MZ4Nb89^mv({%IMrEsF%!xiu~N@DCjx` zZWCj(L>ulJF&dFo>I}U@KL*au?(XKo!w0~XYcD3IT1b_`sfN9Nb&M4u8zHj)m$g0| z(a6HWLP5dc3=7Fv!@}JBXPrwi;EvSQ)fLnMiO<;PX@I*fP)+KZu@VB~08L9NQ*jSq zX(c6PY4G8L3>gb5ScmHt!)(pBwzhs20@&WMlZ(ss{e3n_@ROi0QySo++E_OnEyiXJLB|h@gub?jiw4k_D)^Kvvu-CZp zG$5Wsl@zlnI3C9!IXyl;ElvBA`nOCxM|f#TK^>qpb7ALgwRxL@MYdeNka;jD_y zp{Xg5wr8KzF0`_?Iz7Lpl3d{elD*p4SipCEadKKwQ32FZQqs~S@irh%9iDQ%?u*~Z zdkf4J)btL|t6eT{gtN-BX?P+lG#Ta06v06Q%%`QLrLK*QWUnY#Fofb|7dJK4*XI=% zPplrl=iscVt_GmuGbC^o1K9Y~?q}7)vE;angcPvPKzEdqqRD5YEfso;o4E$&Kj`rk z)bV&Ueit61rhL-0nR(xa(VQ53U-piKncT~5+|vH1bYFQxz>W*}C}Tx5Cy5*F+oTTVP-ohvR4 zAQ+Xc*^CxO-rn8^NIHQ`CgKefjW=`zR{%V)CnMF@Gf<{cTys9>>EQ`B;pyp}_32}b zDA`;knLR=b@l>T3Dd z!UOq{POTq@HZXDvzysZVN@g}RAQ+S9f9S!0UJ38$sFyz0Y?es7z5`1f$N^e8!{J;N z@HIWS5fxXN2mb z(-9v#I9i*&Y+eth*60=%H~nfZ)znoj_nIzWGp0^?Tp%pT`8~R?ER{$gb35M*9Pop~ zeAxB*SQnd)g2#}=lS?f7*p_F9B>ZS+WH)7X>?UyIrey7Xe=higzytKRa9F8EtVixW z?iMD$|D!n8wdNB|rT1;5QFqj7_wAE1@Z;_vdOwgP5Mgj+%MU)?O7a4p1@_SnkJn@GD)sR07c4KK z`5@?hn925NC*WjNY8L-@v$+4+?8L9tZawJgAjrr3gx#EDpdogwh@oV7ZfM!mp#0}} zs8|0y9+zv5Ul4lJ@y0Abo`d4lZh$lo38$@GXVk-8z~0{H|BNFEI@{x^JCFi)V4Lr> z*Pboci;8nX57Hiuo#IndZ_hCv@1mv1fd34ovbwsu@;CWr&01r2`~*hbvzCYD!xtzo z)Dy&R!RH`z*O+~e|HMm4Q{zO@XPc+w(RzN}2Z8KEL(4507^VN7W!#^%kAtpOo-_zh z`gPM9JS3Otn=MUO&0=!-SVa1dQOul}xiGRO`2HmuC(wQZB0~n@7e$NH})W-@ZXQTM*n|*(f@7y|DR#uVsGP*!h9q7 zYUc4|gV$2z*H0S@63EY={^O6y{_He30pTSFsE65=EWvolQ(-`pYJl?8*y^Gz0k#EHhJhizN<3{)J`r5fEm;IxS zeU*DuStV@pP=Or7<1~xaG1Q!+4NIum>hWMI)0J}jTcF@)F|+hNU)Xx(Eo&A{q*UkF->DmFIB(LwF`V?xq|^G5{KR|#LMBe@B57r4P<~XR zQI83-7=9BK%ZLHn?uy5rW$pE!JPa3ARdny`6D3WYdEWFgkYP#f#&G zK!Fh8SH-&Rm?4?LO_zll?L86X+6XObEB%Bm_R{g-M4}>*k-(O;PzeQzci8JJ$aN;1 zCnY<0+)Ou)r|w4_VfrU=)JyH@iyiuj%AR<*nC|ho=i9jD2F=m~uj?8-b-CoL`+(Da znyKQnq`upR60e&Rt16G=jO(0&TodenPwy8uFu^Y}`2S=?TDU!*bX@pO*b#=!ZGUk( zT&ks$m^ZN_JPaDIzTV&a1Z2~^DQu*qHI_*gi~rixbgxPws{s2$i4qEn8S!-G zo|~V|-`#wwq0rkjma43RUgL5;jVkiuZQ=0g>{p2QcG$u>R%dAgbA+l z&|+x|S_+R(3RX$UZ}4b+hwKB0o^cN$+}Vj(dmBmDFf%t&XW7W_#~146Hh$~SPUekz zbJ8aC>H8MbElDn0>L9LB(eT`?tI75({G|d3#M={niL{AoOTng8%Y#YSSn`H-K94{y z$O#{O=W7>`B_N{9vp{hbN0XT`cm6woOR^tJ6PisUZd=B)_x>rX>km86)8!iI-Dp8s zWEM@RqL|2a4fN{DTj^BBoT!#Fm>iy^cb9nyP$`y!={1I{u2YdBIbhq6-!HOIy;euU z7d}^@YbA+s>@x7Y9oj~cW$Q%2Rn@k>ASvG7z!{1YXkKZaI8A3zOy+&5fYaPy+5c-u znO|1H^53Ns;7g2Tw66B_OyyF%^Q!$g8>k11Xa*~Hzx6);A&3srA20Cq5q_JSP{G@w zyX6ivVKxTGv9HfXRe-tCbFmRrPu}W6Q>VP&_Kpd7s;FL~ak0k1Fq-o0PuQUD+-SPg zgClGnnnhr`)-7cVWCAdFeyOaEhqNujvKkEzkC^LX!tpWXhBRBTbL%)l>1$tg}Po9lh_D* zN7)`@JkOg@%Fvi>MeKe8RGy3K;@5YuX^=T)$vhE)DkIh7WNl|1mZer-2nDquyiv`j zD=+$HZewr*)6#T3{(elhr|KL$U|(~n0_BFlyfRN3YdQ?JO-QQ9*v=nT+Q zE249M*d^hKG%+#`7N?V|*vj_y^t))GidRhcjObyw{IGjX8NDlln=|rxe36TW{0-TP z`*!_&mU()o<>;^QKBRxX-sKPH5v2E;PL7?mHiTsfUCG~`GN%EvW@d-lmePvi+^k%k z$^12WhCYYslG!P(c()8ZDyl#0=anAyA}@+7{>F~7vZbr059zZLoJY3>&`B@rAIax` za1@X2?RlxNbZrM!YpCfR!%}n(p`EU?kbGY_Z9G2DJV_~vd~pipK}%TT&=&fVDFo~|GZWul(>Z+R8Z^N>4{x)`bV;fmkK{UGEiwl2i*WBFV@|kih1tUEh z6?dC4Kvs6B+EInJo_?h{=3hvdEEy8W*eaG&vsCqn>HW@@B-53&+wv;puvpM@@8fzW zn9`tKE6uftSlwJFA(bOz(h(#dm?{^Ql5Ope{tsQ zmO5L1_YaGDjM6EqHhQ6?Ef~3u#wXF&cIueF^M$Qt<4z-|35a7Ya~3AUr6TJz;_$1xb?&D`AUa zkEmW0AA0YO;KX9tTm`qTdy_R?0BChUGvS0rzur~vVo8r{@;}si_s4~^az1tT*hX^c z4@--8r(>~B#3Blc(5Ym#hXcKu>OKSnaiw0rVZn=5cIk8K(x#K;0e-8^w+$_D zIH09m!AjWW#}8+=*M6o|eDm+&_Ok|v(k`x9E@zdR21_2c~^c z%8 zDt+SiPdMGD+KWS7FE?GetMRsdG8>*xW7|=%xF^fc+S0TejR$Y26J=>X*615Nb7x^ zbdvJ5YkZwdY$4{DP^wvF?BbqxdUIBAdv$TC=jp7+#AF9)4N+=_lR^21af@b~EXF2> znJO{Flp|Q%L&UWdkN0wSNuf>#_Sy5l5roFaT({Jqr(;G>vOB+u=w8~ z1h^K7=lu@NgzrbGCayQM+%RjZtqaMIb*?tl?D4r|}p%%+^^ShSZZnl}DWWkh{YWrG;Il@7ArR-lfOI zFICQ21}Uq3^&Z5duZC7%F9lpYloeTkv-z}5U-n%}_1dvS;xJ9WY-J?wz$cEiU0c3p z$JGmj{GIwc1+j@0enn;;#n8OP7LRp=u(u|&gE^d6Q_<3nPuZz(cZvk6ZTkcFyP2Gk z3_EJd%w_4)nsy4z$Wj!NcG!>nA!8GfgM#;oQF5+`&f@3#u4gGRSK<=roXtxq6j{rpU{ka%dg1g{|JFRP0Zqwkyyj<_*q(5C7XvTq$V?zu-f3NXXCyJ5Q44vUp9_= z{C_QzhvA;SCxJg2(@lF+Qy1+}U=TwZGny9;>QVC1$#m~e=$RPaNmfcuU5F&Vx~Sx+ zd=&!u#7*NoPByzxQL}$KS$WF@=-GL*geY{=8b1^kL7n#ckI(s%VF> zDJ#4zzojPU;H=F$Oz&=lzR(nxGFc)MRh(;H&++EZA(b@nInZ3RTw*z#Lp$r`))q%Y`<`gN+fd9nDpj@Y=d%^XuGOx%c&N`zG2)oQ*oMex=Z z?migK5cK;ALZ1KE`}uhhI_B>kc`Ogsj@5i5-o#qid(Jp8_h(t{c~n&>I3 z2vz=NFpVC2^JMtXCtF+F`+(T)jH}reEx}Uu=>e>Ngr1JPUvIlL&EUJe%}LL?_|C!M zy7D`5BcG`5rCQtAsNKpcXZ0jn$ZK5wyWa@0j;t)vACSrYF#}nVBgiv{nfh6zXd%n) zL&mJrpQ}qvl>ZTGHYW*LmOnWg4T7sP2E7>x7N<24LLSDLI?-1~yBH^(doYkv7}1+g zG+lZcMr*Q>Em>{UEewIA{jQpNk9y(SyBdb7#>wbe+-s{(P9SSJ9$1AuU@r*x7 zQ7-iO&W?w3qW?l4mUoVAR(oD@H#lIYwaqv$RbjZjdv!*~lN%10)CZbaJS0%A2ez&1TlA;+)i@xLO%*kvU^{hs##evXFHSrJwoTd4Z&r00| zMJL%;<9=go19v?MjSkCMAB;>9SIv=ygn9eR=|nOWXnmB;?~6!Qlmx4*yM(F3X3GV zJgmT9v=2XY8!537=M1Tl|7wer4yylRSzn^`-s>x$1O(rtzUJgo5X#wW?fNb?#gf=w zz@rkrGPKz8aO-->DG|g=nZq+diy+Juxyt=#;;;T#Z-lJ^BJ@0yG&9Y(v0_$6wd&)5 ze4CH+C$bk$oy5D>Y}EX$sjC}LXG#}&mrc@GyjSM9u}&*ublyhik9;pJJzv>YinkVV z?tb4)7t{;AFAVCN%iA@=>0I>jIRv`D*y4RUtTYX_d^uXCA(^t&XP+n@d@t(5%;=e_ z&ZipT@CU45_+4LlIVwH$d@!@8HFvP(3iRQpABNgbo=IK~CTqty5TJ$m!KI3p34yN0~W0NbC^ZG}+nuzFm-q3MSMP>4tjr^w64|l{dri%JF z{FBw~dTWCddJ!wH#Xj^+LBMw7clMrgjo2GYF6KX~jyvO>T@R75hxdEX+0XE^fivaQ zkB~1|5wwnEP(yc>(*_A1MEWSTJp#_+wK{^{4sM*We~J@_eNJXdd_s)0m;3UkhL{HB zf5X53?~RD2p>T71BXIxuwAl|yOKa9GgX!Hn&EutVfWK>)f2Tm)A01jE`j5!G&U_7n zwe-`9L7N&v+v6LtR>69H%YP< zV|eneq`X@Q|FlYa$XZwA*CgVuYfslNOl;O^kG=kQ+{+e6C8xtj)%JO#Ws5mO+$h={ z6@RRt#3GKhlPu@y7l^sYIg*R5Cv=rSFa%?iV7=&iwHxOLHU5Y5i}w@b&NnKE5E+#B z=?k~LS_O4*ll!x{k)Ux(!smg`rcw+v!^5(U9~s{NU6}hjxvKJ!Ps1SPa$xd)u>bVc z=bS+&edVZU_o5Cak@Soo?eWcjwiGs(6mTN)J%O}4KA=bpA>_QU?FEJ8KDl47Onw#? zH0RC|`CYwpGAT1W_1##nlk2zZB+l#iORR?9)yxiIP_u^n>dOt$k|d@Y;+WX#c`E7X zw7jwNKN5yNa4s_T_J7o4q3CDd;TGp3m2x+e)6lSi%?^k)>YP_a@RNJjJ~RK`TwPtB z?QS7Qz$A50ZnDVM=kaG&LB$>>5phWmLrIP`iyW49MJAN)VJ2uXB+JWM$QvVqKI}S@ zhlxVID6%+?-f?4vji!s|1$pi=r3olay!uZ3B#*uc$F{{qe03)OwRQn2tMZ}%$e-Lk7=((gtR$zG7O%7p$uHiz4d*^g_W2#Q zB*b4|?waM|mj+hLpt+}xDDuY&oz#xrO%9ZWk*o5lS|cGri9qPT!oi|Y|2A{Ww9 z44sFq#6wxqOSOLK(IT%#jHiX~z00;gs+h$&n#yWjj-u?UGSIl7A$?OucUC);jMw!x zf=U$Kw7Ne7Gnmze1D{j~;1GS@m3a zxR!{3nfImEoE&#&dKvpzbj3>wWnEO<3V82EL=le;16MX89d&qW0hBe8QhKsE1f%Gc!dvVo=`1_H@u@6x-s8T}Z`QTesR!rob;6{*m9p8Pzux4ez~f+;#NSks$gkwzjS!>4`W$ zAV;{4E0vu}X}9QCpg5EGCJ~kzRDYu(XX$n50X_VrB-{$SJsHxzlk+)V|~R4htmWaoz3{;SFl8ql3d{R5{W~piV3lw|1l}6crff7 zLYtMV@xXZj>01h@kf`2E)j3hFvmRdx-4UJ{Uk6TI8T{l-V zp$37SDfCRJFf6POg!|DV;gVEr2_^1!lfScN@%xA;Rc4payJcT#1dz%_j=uHqbP9FL<({9?D9Ib4qK2K* zs0FwC`C>die`<*Gxh|Jok*#yam?6pf9X@i&UO|{@i7uD3wr;4%H+~)2c$}d3)^jR& z%UlpSR;R;h`@LuaF)_*MV@aKq{FAK^5l=bPSAO_W@AfF$OZVd=a=T3d=n^IAwg4}IkQ4qxsjllH-`xtdhB zq#hhgE%%^~o(vwFs5VR|#j4GZ=U3>~7AoN}Gn1Nf={)-P)Bd!Jwac52D-&}8b4dqt zcc?1-vK(fD*Z1U^G@j5Su_%9^?v7TIkHeVkTKZ1RvVuz3<4 zWhUbDXo|NuvU=yE(!<03#H2;>*qbKQ{zH548oJ;hB^ecMM^(P#y&I%_ljP@+*4py& z&kAUjsyZd1$!`C&I@ML=Dovq4-1L<(CJ$!RCf1c!qEVAr`*DjsmpiFV^Siri#X564 zpY@IkO$b`=Ziq$(S1(Z97G|b!G>@k{oW{|-S!eKg=uDiHljP{8Z^6Y&Of(66H{ncb zd13((`Z%!p9M!4+oAoQkAxab>(es9ZG_P}85-I5jQGEJ1xdTHkcCoW=JT8(;-&Vq^vzbb@#M(6wswGsx6BpOV} zpN@yNzQKlBu0IoL(-;hCEZb6V*ve}t6J#@ZJbkX4V{h;C`f}o%ojYmekcPkX$S~*1B&EAJ;^_NL#Be$~bTJKcyeO)1WnMW)p!A*})}{+$-6+)k5I%?C)2gHwSy#Ab91!?I-r znqGv@Aj0wL41^K?BsE9hidItN@*g#k$u&5{+Qm>%QCP20mF05HS@dSVM}C6=3GaKN zN4dbqd2V3jVDMpj;8k}|DWaNGSCI({il9%aYz!A4m4W|_|Xzw%(p?OPrmG|v?z;>|5zX_V*VhRc(T zsiM?eUTAa88)I6BT3x`dxzRVx$37u;kKan8LBPwZLWoM zzDZtg_{>s5%t_kbXU;`7{0sIBYel@bU)^%4j}eu+id5tUJ&s3hBQKPJ;Et>RIacFg zi{8uCkOH^)ouC962Dx_lxBp!dP9r~AI#~}Sk8&N)bReGkJ2yEo!JW`RDT+yTfE({a z`u3^HTTep_Hl3c%1lQNoGZG~7TzaI7^7y@bROkuX@mAM>B_d&o&GdC|P*(TZx z7D^@%))8r%P?^Uac?JoG5meyGIn6N4C7Mg{Z}reK4bauvV`J}Lc%L?;(d>`O8 zaH$(JZ?+-xr?wcQ-lQghZAWx%dR*Ni@iAJ@2q(HZe(yZ~=NnO^0<#oitj3S2&>K1! zVou~1zTH!|gL-jnH^VBe3Hq1+7$Jr!V3$C(?cXY}6NFE>d^lg$VeYH9(nLfUS;hiKM&a_ki#;r4l^a3= z`8dwDMY4k~?0ag%uYJ~*C8VVjMyaV{e>d)sIMKDZlkrv(i+a5lWAZ}uUc}E^c7H}V zUo@C_Y=&v#mP_AKSi#0n@rDtrc5T#xJ{AR+j_0Tvdvhzm%ba})fRb6nB1( z;N^SS^#l@N`P#5yc74+?|H4bz(SvCU_Z7$3Zxebo#uWAN z3S*F!C-=`n6*l4(2o|G&!R9Twf9TT`(e&XT{Q0KNyqSfk79UC4$lUeROxNZFk72L% zm;w=}6+c}4Npgjz4i?^!)LcD%tD}GHz@Q4=Es|O1cjOyBZ)X)W@!n?;88xu9w$2Y80>9g$FsP1$?UZZ}6Cc_lQ1k zbD||4k~cCh9a}n}F3IVZJ^AOKI{T3lTQ7dyJn_c+`E(MJ;zTChBABh^{xK?I4lK{S zzNGU_7AA|Go<}lug(ProFm&L+cZ0NRcmyG;P`%I}Yx3<``l7ZJm?&W=_0ynxwnfme zvBb9^?_vV&H$D9ma!j6KW>CbyJ?9%Rax9l2fo zLd!^a=<3>P^4(gu6R}f6Vg^^(gif`c?o73{NQ@8{g+)<4AJ@1%%HKbqbX2NnxSxF4 zc9={Hph9mj`P^+5DxA{>kq^wLXI|KLz|yVdc6j|RU*lC^J~zbNK_=uWL2b)@hZrK} z^FW;azJJt(D(&RwkE06Dh~7Q#wr{UeDGZ_MFPA&_+z=mmvrw|LisWK*cT}9Nf{@m0 zv&5|*rzk~$u=MQs!m;rI^UV=r*q~kR1oCE7pO7;oxO3c`OQsYp$O3wPAC|r6q!cjE7shMH%*CF!=y7e%lTTa>Dw2-jR`}1DYz$060Y2iwcEYT3=w6G44^`5 z$lW5Bb@B^>q^et6)?FdEIp9uEV&{g5Lig}fCH6D-ie+nN*c>Kt%F(b1+qHuROIS@a3K}1!*L8PE-s5$#qybOW)t7kr4c? zdLJF3R{Sv)St6><2ATdn??#`xogJf(P*q)!6`=_uvbgi3F z&4&Mj6#bCUwQ=##qt-7JEKrV9>VhU-;G@%$l~Q8Cd5L*$senyL4wIXn-^XLt#-bAF z2))aa06iS0dwrXw4`0)H`HiMSZ0Cq-yHTstft1t$m%lo!9*4fXL3;W6eJygCO*Thj)$I%}F-9)C>%U!U(57KC$!`#$ zCz7wut2zD7Ovc31>3)?B#9nFfgwM#lvg3mw^HINe z<42z!9K2mYmXU1D7P>ZRWFub0eZ5`X@Harz7eB(ZFWbMX-QZ7YocmXWO!nonqOoNH z2}CSRh_KKrH2)`dp$xmQn@-bvX57y_^~>q57}^)d7jwPz&G3`HUa@PCbVgsTqF+0- zINQ7G?b*pML9dYo2Hq=wD1v{46xO5wMy~%F zrR=5eM+mY6aMi=9S_)M0!#8O=5P-@wzv{yb>oj!b`O;bgefOMPU&mehpjLcy8ZR}i@pNLhr{O+Z!L*26x2qb1+-(gzTV=;a>EYco>ugWxS zmac4s37J{npHrRK_4J&xaC*ssnyo1!5#SySEzc6NP>mSo=81x7jqx620a`C7I4aGT~XhM>{Yq?em?X7xI{3 z{C61?Xk;0wRjcolJ$paB!FY=S&}PEv`k0$?j8MDndyHaj1#RWCbS}xTewA7`xuIF2 z8>*0xZ-=j&sJYt_W#2sc9;(Xz|FHMX-;s80m$99WZQHihu{ySGcARuPZ|Yzz^kHl1T&VU2MVbgK6*Cx+pXc5n5nW!%n*H&aV$94_<%7bCnyfD?Z-5Iv)gsV^pMDgB40Duojm*gQqU=9wE!>X-I91_Qqnzw+3IoMi^> zP}RAkPUe&^*SH$$jf()vCM>Y_VRJuUW&SQsw4k#DoBUbuWd9(~Mw@2oR0$K)md$r~ zWYgrWq=F189%!aeE}U#}M7PybsvO+XftPG<6pL-{bU;DLUt1cv&>k0{pp z?W6k#n?#-$FKhSup3>qK5;M}(`_U7stT;lmp1*map@DHxk0sp`Zg)h*L8+UF11EV& z)zaF5sAq41 zqQ6$j54!3Att7J*%Nn*x$h?Z%%a$xyaz(nnF5rTZRrhuEmD>d;c~htKnJec5Y=HcF zJahtlR(IwyjD~$_XgxNcvmBTCiZBMnH4I}e&?Y=E&NzN5D;E7RNcYEzfWR4kS4^yi5@kso`kDP1-|E3 z*%7hPM`7$qqul9wlkT2B{UPrNB@lh|^lDr7nxOdPI{w?7%WEhVX%tu_@2;ntG<3WV z4pt51J1fO(%;Mh^`#k_C@b|p&x6BF8Ue%V8>qduy+_sONI{qw+DI>~DIX!jZFiDzALTPz{#A_S>nw=t^~I6EMw1?ILy3E=P z$|Kk$#IM>1Lo~)#FIV?nk6F6wZbH2}r6^#-y6$X|HIG~nj}JRH)9X(1Rp=NQ^O|_8 zObcXKUBSXyu7Jj7;MaLv4Xj%Zdm2Vg_eXAi!Y|!{yYkdSREMdGnH&sxecBPxge+w< zfzE*o(PaamSdu8|y6#^fjgwA)o40A8vTu>n{_jMm`nINq+Pl+Q)ScdM&y%R*h*ehD zlySO;V{XINoJi%^qLO~kcV|s$x+r8D)1k&H^6olFM*Q$!`1b2NG_Xs}`{yC!sMvqL4FiSA<2T2cOlg$wzw!I+4k1rWhAeJQOXmEHgcYb#AzEvE zFETv@G3(=}DPXHixl@nr9Dr-P06~=H)I?ifi}9f$Vx^fKUbb>PJ&Y}NT?~CgmShj> zoql%J)SL~T5Nxk=Xf%>D_CDN%U_9mJxt3h+HxL!rue&w2DzuoZ=)IkqsnljAnXm;e zopKhE_L)EKSG;mJ<8`9?w|eR79tT*!^GsivXq*XmdA;5qe?-j+0LGMbSOqR8hs2uo z0G4%nryu?WDiuP37n{GMOKmV6v&+OH@$DEGP)PXQBGqn7oE$s|+v!Q1u<8pWlK#kw%S~5Em zsQ1~q2)P*U2zNYCLdC$g<#jpLK+F&_o4tT2_x>wa%uv{RpufH4y{y1xwjBcekv_}h zuFvZRe4{Ba@;@CLJ6zu?xS(eqSNayxWbxk_`H9x2{`PrHq=qYTgAzppxm@ts=riFj zUqw9IG}ScxEC`}K`hNG0auBu0r}=y0-paBIL(ynOso*QW!)O2ljz+H*I=cc?a9E|$ zC$R1h&P;A*hV4Px_twf7iZmuM2k&;t>Jdy!Wpi$UM0X&OSgikBlF1O%!mlv%aweObcN zSACxdiN(+!5WpfZ@bH^{FlH@EGM@UO>N0*j4-TT2mP1feTZ8TB!#+|*39yq{JD)eO zl_&6`zZos-esFN`BDRX9K&R1)>D#mDOleuo-^yW3FzoZq4-%0oem=L^un^A3tl^MQ zBIJ{~JfR&X0!dfjYuM{{2d$HAn+mU+QjXu=AG=n4pYO}c#Zu(e<)wuRN?AIct;5#u zF*`cLSpq&Un~~{xZ)?56yzdKL1)Y349qp7O?k!Gsy~hBVw(eIOsVZ&i^tZ*VDQ#ut zUM(-J`VI~&!A?ieI@wTT{qbr$|H4(C!SYL~PVE~EsKlmVqs!&|!wk7INykdCtLV1{ z$H+?OEaQx#eCxeXzOmE$fJ&QEJ#&Ew+05{WKJTWw*W+o!98XVA1@|PpQ)XOqe(V#bQWFcsk#8bn;@v+Ad>`PPxgzFZ*kd z-O*Wb&W>LY;7oL_Q@eyjn44+hpICC5>_!6ng9M-}BbLn)V2KcYO-_1lEp%Q9<$Mhsw@{2NdM5meHrW zgjjRR!id$&_HznhU@5{F5_S#J3_G@^&16{#yJPIDLX1raouD+6Xp=*>%8b?NKWdI{ zbPKVWt*={^69)aoXu5@hW0B19?A7m4UBX+UqtRuOj=mu@VZ$Bw@+S(t?UXt9>9lkEqmW0W5*I9qA}mF+ z<8|}VXWtEKoH8mtB#5!p`k?xrKl8N?V~FCOHu1W)H{(h1lg0YmtuXRiFv_k+@i~GutMFi=u@fU4>B6^G zmqeehAgL#lvDZ3OpH5~K`bkA+9Yw)k3t#6~bOYSydMP|Y8&e%!OR4c9cBq!ptnZU% zt{pmeHQhnCXcL+tJ=IXxHkyY9TUqaI+6{INBs9n4@a`@nr&?>L3P1aQp2ZZnJ;zT= z6!en1(&N~*%gOv6=eP5^HiGG)Qh~$O5&07KCT;xx>Pp`zP8(PzH`hRyv2X z$OTWcSnuw_>hq%%l*Ff##T~M34q*_oT2?9fILsL#f(n?Z~69mRI#e2J{ z-GZLu+cpW2kCg;{_ndL`LA+_~p{0~Xq7cvu;5zX4Skq3Bv@IVtBq_; z9d56}+xs?DPt2V6m;AAZpUI7nuq=YEJE@8*e|K<_Ijlx0f+q2(4*UpEd8DI2CIz3o zMxQ0qTBjUWfl10xevtRxHFLcuuW(_X7)J_zY6@! zfo1k7hD^%|a`R518?Z=jw(iG?3LZ$~IWM$HK|HMaY?z~P4cH1m@53Pl>iZ?QBp+rs z`3H_RApafEc?E{{2?YJ#<8zbIS06bzZ{LKsOk zf~a7fWpR(vaFFsIQmO|Yl3bIHZ0KXDhm*NNeHUYWj*1O8U_W6c0LOERZac0?+R_ze zzu3vZMC*2#A&oWEzobEcsgvXP%v_L|x*jX*1LgGwO3u34?6>@?Ygxp)o$PxQ!lJQf7A$%*LxyRXWE)8q3RCIJKO4PN}kNB~6)2Iuvo)x5K8G6n@q1Cy?6 zkI~ysel1|`V{7j6`s1Z1poJK>HdU;JbPtNuD^aEX89EIVU?jA#mn4Wf4r_$A`%F~v^3rUTjOs@R8|Ac|$a(#JKPM!t&);`cyi(Q1b&CNjYW?$eI%`{|iP0F$I95$b z(*ij-X*jIN2UYOCU*cf2?|t3x^^YJw&NXbRYkU!qMfm=3NWm(jWZem+npZ)5J62O< znm)(F`Kh(03w7l&jMK9Q2b`wE)oQD4e}RkPI9@?TuKAmGv`&H)79<*2+3CJVIm}h# z*}axvV8#2Egai8?W5-j^TTkhl);&>>0h{#EFC;RPhbc?v5*5A2w*=QwrS*oRCL)?Y zFOZi?AA6f&m_&3VKePlNhdZS(?;DdDiw&p@LAO=+V=+j9d8_Mo$l-OaEmE*2E}s~? zZpKb7ztMXJpu$)n(7+3@Al3y$qLGmW9jlAHTbt?AwgL^UH};i zKpa`GZiTO3x2kdyXouYzYKH(v;pQvj1T1J;l8I-y8l{#mO?7m^8s-|=xTkg2C)<8xu9DeY{5$uu9-#m?)!Oe9WxdP`V0 ze?7eY@L0jbqxgL8-asj?CeMMe?h7ai8L(jb1yIqpdrun@C^+iDg`6`q- zQ)kUtvcuPZfuZzWkB~C1MO(b4HzT;nsE^*o+A{x)(vQE*$7oB#vM`WeBDxpss`_uJ zK}>5L36HZ70FYEGxGqtHL9qbSgd!aH&uk3hi+e+YTJ!;Xw|0Z&jTsjc`PFOGFw>9i z`1HrwUb3K61ne#WA(lSU8HdJo1Lh5-CF?ADnI1^U6{5zWGk3i@f@ToFbz4-YBRd6c z03>I|2`9)p8UnfXvD$LHCsjrZWjo66w%i~iESE~ogvl%~|UM@Tyh^&DQ-ZN**rp>UA)N`8W5II8HUauK6 z$4e%WWW`HG`bHFKLsI<vmh>hh% z+&)!Ss)rMtA2*(xPeYN1W6}Foq0F{VKuCCT-uZ23{y>`#)C))gM@zm4uveesr2RF@ z#-xu0EhZweGkasb69$4!i8b>wI!hOtuR{69(v|xf5`~CLn)NuxZd%=zWYNf(`+D67 zvmWIx(Vy!-r}tkKc}K@!L-nfqf!h9^6}6 zn_HiJEez`0)tc@Qn^K6hBBw4{w*x(K0j6Yqb0jw?kDi=u9zNsU3n_AGSN$A<4L?El7G91!gqXX<3-0m_vNP2k;~-gRu-!P%$SI31S2H@Y zx)q$LGceE;lJX6^7;di;Qb1Y5E9|PBlC@ZEG7JwfeRfidTx=(iW?R`ZW6Gv2c3HWx zE{GOalManMGevzXf`FljqY?_%_oYkU?p*&>V)|5ml8%{$VN#BDd(&8~j|KPPuSaW3 z^AmD}yD}$V3IGv-9rMz&e8Yjmb!8b7FbLUWs9TN%w@1~)z~_=097~rJ>@|)Pq>Q$3 z>?u$!P26|%Ux)CNSV9v7Zq)?Pp~W9ig)YzrJdJWIY9D1*Tl1TV@){;0!Gu1?G15tS z@L{KD=8YKrWS1xBDeEfDCj2o$4?PGEGo-yH2uQW&EK`HYCB;L6k=yMReWhp9RbBFC z*@s#%=8Q4g>k%mfv7Ym)V)V}bkX+JH)Y8ZUckZUei;ZCMoYqhWL1DQ@;r5^>tW&QT zg-rDrvDG!=8lI7@(0ZrkUO-eSDInQaqXeM6*Rr(lu*g-`=gD>8ja5P{$%daoO0lYL zX+M03IqT+CvZ_+Lh13#lzw-|~D3pKC@xyxWTmg=3S8{?V%<1Pf!HiL>t%9Jb9Tiy}AqKbTdZ0;SG<;tXSE8bOeQ#RC)*SksRKmEF&d{TvT{Nr~Q`Xvz~ zLy^ZkO4&}MZ5ubPGPQsGH?K3_1_=UG{1ce{_st8ucOve8K7+Q$F{b@@NB{o)|G)j` z8vVbn3*0IcTw%^xOwk!wH>o_KW!wK;-UpBVuP}vvI7_Jme<;fJArRs|A)S;b@I>6y z${tF&%YmJ?EK4o!$S}n*gmE_fkcMcKs)wL_qaX`h5v6>Qxr@~yR@xC&%#-Ii8yEHi z(6oExxIXKdZ#zo=!zKcWafgL2IqbZW{}9kHqQQKiitc+tTJ@ranKhTRTxVz4-u z+>QY&fkCxA;^4uy%Z=svpC2VG=#%xb=UHZB49bK;0j-T?6&-%GKfz)9af?&gl$*2S zw3^mTThe8K>=50uXUPe%pjAk-&~If}a9xXb_~F(X-ql^;n%8TxGQ! z*iAPTivCV~1<$4uv~;}lzMrB0Cj$4YCGEFWm5(VCBt6OwCA*>vOS`ZEgcD-aZ9A+H}o~gM&Fu8vujqtPTn4`v1AbpejAM?<~UV z6z*rI+jHBm&!ROM2r##vT_7BS3%N*lpI;g_%46D4oEZ4_n>x;Mfh+313XAq z8^_LzS(q*c9fDWt-#RrovWIXG^zp+Rt^UhlX-Nqct{FN6nCRh+s9U*wid5imRJOEf z;d-T3`Ih}INFe77(nHB`Cm16Bd826J%-CT|VM#^e}1M zkQu9=>yTlgVRAS2;5vOuQYpT^CUfwoQ4p9Wv+kLBh+5s||JYY2>_5jGg~nXSE5x?I z%q_zS0p`oNd+mr9MyE?rJ~?bEFX7=J+0HI~LRDKn|I@; zjw&Oy6mGxAQw2zXzm8AfM@Mr91}3S9`_#Yl_SC17YQ_^yC=<-aby^e9b)Y8Wuq$vE zg5u;=I_vWm?eI6Jixc8!N>K}gmDP#G?g3h1(idy%(9bGp(O@gry$PqaOOhW0YcS8@ zu>DAN8U60vhW{Qm&mJw*J35)&ViN_P!yKR6y! zVyWuhLJHQyaHOY}xP|Y9qDI;xb0eRgickuMa=nzBZd2C}f1yDUv+u(cwA=P9x*rdV zi_?--&ZXe)NxV!LPei^#GWDhDbWI4jh9rE) z3p*nE#e2s2>wBn)vr$#h`Sm@j$6s1g!Bn!`R0IBPdf7IApJ+CiShgq}E8wD(F390) zu=6nQZIo3^kj4^M1d(<9XidHFZ=#G{<%R?s?R|EMA2|y&Fyj+*wZxuPp3E&$8~g!N zyw}OI>InE_w5x$z9Lo+9=4|HPf(z+s@k_DyV$A7t&8{oh$^GXmmda(7{a#hUo%Y(` z(p+E`1&NDU;F;&EmcdNjBK}V0cGN!>>3;IBJ;IUIcIQfFNQ6Zpfc*@I{J1)1opKWw z3^h^Z^Q|aTJsFSk3+0ey%E0gW5JP6v{?NT7Kydd!g7X(FBl~8%@cc!r^DN#}qdfJG z9_9STme6T}tz>;WhI&e}0e6x!;aJ=wj0Y<^>17A-)D>Mr1YGE zz3$Lk2(#2b6m3{L#45pT^54-k0UrE~;gtC{*_ER>sr%l0h?;sPv1)njOc!_;=a*06 zSO%;e7=T4JB1_d>-mBxI!HTjo`(e@8gXiw?6({i{o-NunE$Vh(o&Rw8PU`0pBsc;#qB%dADpdR{WQqVS z^du=^gfa=zME|{UlUN}nhu61jg+H=<3 z@A<5fw3$kYXCaaYr^sA?23{fOk0XO&EGZ7#2k5@{f9}m~+dNT-y0`1e#C&{S^muuH zTM0OM@3445^1TKFN9(EA{!!%H01`BJWtm)eX^d`Kv)ahH=-Tei5zOILCftb5VbmW< zx7ST)R1McKxkfgYxb|S}ncMW+76C&8gI7zIqk2qv^?8VdL$aLZd&=c_dg|%hd9p51 zqqG2%6YE(V21H5WJ+c$Yw0vdvRdds`k2n4tSNPD1>gZL# zsF0cgaH{ds5s?*+U-Q(REQXgA+enfl`QB1Dto|CO+~}P4pLc%%8mRZ)WwIz{0uxyO z+a&QqgPtm5D@s~f8K%hMUZF@$$>tt*MPsx)9(zTIe>{2QB7bv5tkrn{;J^$Sq8|CU ziDY}i(n!mc_&9xA>nLg%G&lSM#n|lqd&kdt<=ijcJ+A%z`&Y_*jB)C!nX}1hI=j_+ zhmB=Tt`1LKLwfR4$VfvU;D|PJnAH*NMDzZ~=R7 zXU$KBsP}t{)93y~UT8%)bC#=?&`m>8mK#x**V7mX6lc}8!cU?}2~m6<_}SNC#9hT6 z!_@Zi$Rg6qbnuSA-bw87l*fCsTnm{efeDg)z)<@8qV22Y;_-^yw$s^5zhPnk zXQI|1JLVSjnoIoVS$nxT5$4raDSku=q?QJI7o1@j1%7ShC;qIhStLS!;ACFu4=G< z`(3^JD6QAX#`2NMT1RxK-2+ye_IA?pg+Dz975@tHO)awB?Z34Ef5G4ImysMd2j8U> zitLiijl(jOU2Kt5V(a4>Q_7N)hAOeI48)QgZ1$r`xduPCl#FnHFK5gSS-+wPB44s7FxkLg+#?Ony5~=d{rAUxNI&p(_~%>Eh~Q> zooeTr_Sx*p&*9)(nPO3K9f%W=QZv?)^-^m|j@0`#)$bp!W1z5Ca2%dONHR!7mPrn7 znZ-#UHDd2{9KoJTe}}d2FErWUXecC+K;RUT+0U3_Le>?<1Oh6B0Q`}GL~`5w{Va3I z$z-!~sIn#QkJkrw<*ZY`u$S!*0HxoOu`;9BIH!M<^K!(~i0Q~A$#JBlO+{ck))oyn z`r{{+?d6+~(ZwUNV^L+2!&8SNadbf2+wQm8vLDM(5E?%j2C{{aqer>&Lt#*Qo6>Zl znxa!K0uLOTv2OD1n6OX6i7xWRn;OgF=9XD``{$GwIpTQ4G=5H+uhKD{eH1gVCN}SpBplLhYYwxzh|1S3Nhp1aFEN;fZzjovqf%|{VS`rUZA}y(!q4K_o z-65HUJXmA(1n;r{ok>a-gVJoGf+O$1RM{4!EGWJbUZPVr=amp<32|6Dvpui!3SmYO zD3vcnt!hT`0h*VB`LWSI8N4m=0WeSb8RJlh-~{a7+C}12_HfD~3fF zHnDKa(~(tyFVK4Dv{@usCp(v->XBj$g=D?&YE~uS%f zl6n2@?fFY&XzXdG80Ih(#9}!g>vTDfixHxf0*@=x=rEK>K16u7;r6AK7fU(ju$b1@ zVni+$aWsUR7sq_zu?aW{x-WQ1$-GC7*9=9=hY(+1^RmE7PMhY>lBRziskdotqEmDTSm+bl0lW>hQ&SW;^ATa7?E5Bf*P_2WN!H z#mC)9j~HLoTN>hw;GEj6PbfeB%PCX zF`d|^fEplmBH5h)e1wtXjbLz&oqOV(JBw%4G1YmX>g0kr*whO z2xAw(=U3)=h2>isv}&zij6ljBjg6#{ZulPDVW4@Em~kLX88zxHIPzN2`h_3U(U90= zGe)-9Joh?pUosQ^yG0-~Jc+J4A^yGskFyLDNSacz5SghzLGTwlQau%9DYy2EgcA*bRrCLr>%4Csn96Hi8iBeQDpzYq})JXueJUUvzb z=OPPhe+U@%AFo9;=vHCDL&xL2y_)LY68NQuS1HECQE*vJ^tnJ*^&2uZCGO<=ANsW8w?>+~pR10VyV{|9NfzYzyEw7rk}J z3bC=D72w`~*M*~8%hlabbI{sZ=`FK!+rlKTKx~jaz_{HDt?PaMoe=0^Ey&E=;T%2x z5T5cX?WdSzY!6&mNS;XabLM5%pKjuh|AI?!KStqF-?I}0(XpKW)|-cM|-oYN@7f-S0){D zO5Qq#9=24CiO4I;9Zn=~GAUrV%pSC#=A;;Qp&@9IJQJAsMD}}a0y;0|>~jdRc_>V> zZSNc-B@TFxEPJJ~T8sqNqdmpcB&fRFu|0B@P-Gj0b*%jT(yg}{yjj~r{dTI*82?85 zQ+Vp~GZ#1h*&H*)Yw?ylAOf>oN45bPI;slM;Gvmfk?;=!Km+}-cPG{Zv?JtfCw9AUaRz>-?TN!LM(fdp@JyCOkoY z`Hpd>3~lCW*>UPr_~wH%XJ|Ctiq{gYH%1#S@19222sU_|dSc(iV;0zkCZI4<&Fk5a zn_?#v&(vCI2@hKg-U47{lFh5^C(6hp6$vKb4jg^oa}gH3z?KHJm%nyV62u{v`RLv3Az|mnfygfnRoz*`s`hlr$TiPt9Mc#{e@jC7JZ0V$7=wRS}D(Grrrb-NOd69vfC_LHrc<&pf?&wLpcZ^Y)!2pdQ$%kJ|mBLcH_nlgc7oF7R+v#4pAMh3q zz~6Uu=msKwac1oNxj>iCJANJ*f>DJC{H;Y?O{OFbQOL$Ns^WRCL9#{G>k)#b`-RI@ zbxQu(=LssvE8Z~=>rAjYnuT+Q%MecRKoH2S@(3W>j|;7?-0da&y<2f^0(M<2536O)s`j}OYR z{kI`>ZX7k8CQ?#cVo#5oCL2(J0Kzjs|5=BQ+d_-o!aXx+djwFd80K?Jm}Vi^i_!HX z$8jHqNVlx6AjmffQMmpFNYK%ighWJUqV_B*t#cYHEjP8>ROM42o>tpIqO5c~DV8rd zH9%=V;op_gsJPA!e#l6F-%%5}k`jyR#;Vwh_=-`-knD)!cZ0x)qLtdX*uKI3zn9&i zJ2>uSzP_)$Pwylb8+|+He`(a|NBCgm0C_AaR=)O58I(`?fG zO~8jkg?D6w6g7C|MlgzLW_`fJu&3ya)>>;zy}dIYm-)UdWuFR)5IzFwCMmfNkQI?s zGLH=c(C4;qm6KhggRvmZfV-?3D}~HU`UuVi05)S07DvK~E$F zg8Ry3;Nm#x$y_9#cUDeDD>}x|vPK>%Px5wb~Za3X(gf+JqiSGmS??C z3^L(tNSo(ZJGSOT`YisEZ0Q_+wHPT$udbYH$;*wW3ZtA*H^cmXtD1*|C;I|%1sI!^ zUG6A9PqsxQ6k5hy-xgJ-7B#jXSyZ<>Hb$Bj;W8aK653d(6eXVbb7Y8cE7n`4~S)m=*ML=R{kXu{qKw?kw$X zeF!c0Ioj}crU>dyQuGiDpPD-Pp78bOVp{>(>V||2Q=HEs;}Z%Vvv3eWK^@gpqjPF3 z<9B8A7?QkQZ-}+w8sxXz8qN)zLGK^Ynlro(vUPWPcrOv&ML&uNvn?gGXqKQiPj`WE zc>xb~G*&jy>hcH9EX8tRgOmQtM=Z}SiXA?lB7T_0`vY8W1JruCh;D1SWA6k}k$fxB zG?OaIcMJZD0A_~6BwF{|tej_g3TBV($R)`ogkDO(yIUY0G|QIZ=-z(dUfxf;U`V>e zb~lPo7cQ(H0B1$}&EUDIaXA#KGd#1pgv!mM_vk7&;2-WQCrX8Ur|#%7Y2o~SoZZ(z zxSQG>WFOw+x~|%Wb6h{G%-|PAVK>Brihf_VlNm`L=mdRLqvJl*gM3pf5#+SyjgyeK zS;N3Ju?!eb;UJEJigIh!QF#-(p!T>kFcoFD?WuUcW+3G3&L09p&68^+Ma1pqn3$2U zBefOAx0JU7)p#n^8o~N(mL1VJp8;$hkph906omUVH`XD55a%&~m1PYHX@P5|x!+{} zilDtM1PL(M@~iT2&e7t*ClIe>Nz8h|t+*PqQ< zNnaNV-t_%HjcgJZ_l*G^Aw2*2HpQvCgMl!5I#QH8Nj5%SN$_b3=Nt1$M(;Cp)zZtx z4|X+a4-3c6DM?=NDB1o4Vq!T}8NoB54Yq1X?H3W<5>2Ct&SF zB8`06%mIo@eC*jh_z$(_MmB{O+WYM3eu6G#_c*8%a?cUfhU3S%_lb<_3YQuDr&?P( zeSl%kZAQ>73ypYXY)K|Yxna=d!wj+q7gNX7PRG>aJ{OPuMz2S})a0FgWaY@dyl0tQ z5=I6CyB<61y2nM9lfU1IsN(d?DgsscM{$AQTW^g677mHph5?XUTX=VFwsi_;1X`EN z;xI#7t4v@TCz8Qq>GsQ2(rrpzuRpoPBr7<1T4PP;r-=V$Lk+T&C!T1t)9U=UWDqy5 zP*altCFOkafe@_Ww#QCc!b+v(T1llx&0k#>cOZrw+0@J7;qde`RGidLAIM&SOgzH< z$Tvv279~P~b*xo23U&bHL&I7BbC`ZQV{i#?jNZDNW{PVZChMvYult)U%b)Hq=5*U1 zS#|Fjet((_sNp3y){*tKGW0)QHv0Iuh?g>UbO4C@S8tO>EhxF?Pp4~CEt(e4wW!P! zySO#YoYpF+?k+qh;DTznZBtnjVX#|^f3%nUj5rM#ZW>L%j# z^f{My)(uAZJo5Bh7XJRoUE7BtvvafeI><}RmMezp@KvtffoRv9*NTAD-d`bdi7^d9 zQFM8Xuv}Qxxf#UGv?)S@XE0(CcwS3@Kb`I<`mQ#$`}yF3golzOV-$yFE^^sPnilF5 zM)s5rHZ?INiCF^Z`h+-e=gf6TI^66(K{0k5p%8N57@H zf6%+^tgReM5}GVNCVvNsbkLX9R2Kz-GlhEys_5o#dfCs4B%izCV0H10wPEf8 zqN;S7K3|mCn0XiD`jTR$uoNf0_`PH;ij}ezAoGnbti$}LX?L9Sus$1z1Ddsswp?y@ z3xC8+oB9iX*0yc0^;lhVDf#Ns*D_DZyG_pq(qY{`Q@=urC(!KUC_j!s|14Kzp#QP> zqmtcTs)ng!AXSvx!qbTN8r9of%`wQ>-FljnUk4eM|gnxjsZ^i)jv zMW|>hq>v)~*Y@Jr_5Gu+Z5>&ClwfSj&o2#!r7Yv@>V}>+Uxa=rm9jh3zUDtC_c7J% z-o64ORc=ueT>ZdjkEEy5Bb21V!<0E&FLGgVmiSVcd6ueC7LOg&{n?nch!Ajz&3VI6 zW2&nw#(Jw+Qt_<7QPW*jm>uZv-niM>hZfKi`-ekY4jE5+YiRAOiw0vDGjH7dVGR5; zb6QBztz<~l`E_*E2h%M|VYBub9VZ~c0l5eV9lwxr>KVYIp&*6HGw>et7&m<(KM%k^ zc3^>TzLmn1;d10d^4nPUo%C)U9lnl*m$+0I*`MJlo#fo>qO5$=y=aKo>LIBKLjc8d z^NnBhm7(=5G;fLJ{Cw~S#t(u;t^gXgZ0>(rK1kIH7Nk>DXK)Zja1Jj06#jI=_ z{oT?bh8(vP?Bj*s(Z=W9>}mBz?YxKE!e~O^otu|~JySyj5p1!m$!#Ou)SIn{`%BKC6a8+1u_0pT*7%&FpKl! z&25x~n6aFSTS?a!GRh{4-QC;UL>`#E1-!Xc@2_c8qHLvg_El=NYY5qRPUimYM%gN% z7_MubahjfyJ{8Uu4OvG|^sl7&?+r`FD=^^=LFsDHY-QAtPbH8u zw>1*fm(d4WrwxK!mq=drsxFJK4&ri*B90|{tR}E3$znYIzlvhxxraJf$?El8EPoDX z*l7}0iBD83rkBu&ng_a7Pnt>L2eV87y1c!jZoxiqUEcT8rS-6DMw+qIGkzRMoX5By zA==7QbR~MiQ~DE&yByD)*w7X8AwqrNcEQL_KPjwa{;^_}mMjv^E0Z^;P#OKtqq$4Z z^Eirz`=(451_uLiE4eSva`OVwVEwS}*l)pCQ^_x~WkH?{CWrVes4hX#usDCl;b;&% zpWK0k#TP!pZN8Rd2v{Y5^eV38RypZdh;m{_zeA0aWW3uvcwUTHR|NRqV!VuJvfy^E z1}aEf8d`({8~azU>Qi~Na`N*>tAk70BV=UE7D%UvibE&t)3+148dBka)I%S@uZpKG zHQqx+8_R7gmVvS_RmAa;GSa?^t|RuG#5^^>=$hMeGe!ijt3YAZCZGi6(yJ5hZaAX&Aw#+k*813j!nQ|e}OC! zn+1g~>(^Hm8SPu8i)UVR01h?kO(Uf)=wm9y+YI9`|G!)Sr|Ez zimPj?o8f4Y}eC0IP5gBqzj-!!O`1W7?RMFvl zIZ$}+p83UI=0IUv7hls7(n@p$vf;>1ZOp&B3-kS{C1#oB6jMehOoKKovOhU6sM(Ab z)3gRV`LF)opQDvWJWr}Or#AG&#Fc84o3NWT?Q&AQZ_wi-a0@V0=SGP^dBxzm-F@{X z)AZp?0Fd!6#g%7qa;CXeMBMV?hX;v^5APcang(bpa(Uf&@GV9(Y zv^KGObCX%QZb^~y5b?sEa%4&@KS&ZcrhcE`Yw=?%JIO)+xNNf|o1>8<*%wX)2?yc-qk{D%E%4{NIp)b(wyrEDsuvj`1VS-_+t6wjA4Z z%`K(ygwkT6-(KwXHB;0U^fK&(31rJCb#LR9pSOw~`y6&xlMI`(i)ET8mmPSP>4gEa zpqx7%^;8zcm=&=DVZp6RLOjiv37BMi1}EDIjhV@oCt9pH>0y6T+QWx#dpTgt*4eK%dlCLlpKRCa~iZgv1P(&m%*DDo(;V? z8u6ZeFx_hQL_~~~4Ftb$?8Mq>KHX4x@Q*hHJBAv~1A`UV$cW_uE!s)lvKGi-cT=`P)!lU?(Y> z1vkwc$sQ21yWh`13664}kV?&Vkj!C73zm2mC581$!z~uD29Sk z4n(=@%uh66Y|Ymr_66%0q{MA_P(I$+QPj#iWRc{L{=FnJ03c*FTX6pn;STOQ`OQE# zSCe0#&v?!qo15Dbc1(>sWrA&fYs(H*B{r5yDFzvBu(7CN-PSOX%v}k9b55RYYWS#Q zBbWR|Q`ftYTn)c7FhEAVB@$KWuc?HluFd0d45~~zx_AjQOs06|^dGEb-!Hn!rE6h` zqNm~tGtgGa6Xq2TPUGGcBDsrHS!dDkPAZW+=fe#q8MaHsoUOHt_FL8j4>k19OSRV7 zQrCjsw#V3?iBA5*RpXwC=5Au@`h{ynh6yNS%~Cki=4!w#|3xN+>5g?cwf)djI8(9X zM5@#(6(o3b#c2zE#-6g~^hMwALc}kxXFrl`B$oLW$E+ciBrWhRAEiJ%uv|36bO=Y> zuD_ogJ-=VR9Ld9#jd>p%e9S?Yxig|%%@oq*v7%K6{xvF_aYR&EC)TPX7 zX_hAoGtErApCa<2MND~1N1w}C!vAMfFuoC!%BsG%=}577)D#FI04Ul!9eI|-v8<9)s|6+A=fm?c zlI4=A;N@B*QG`GJ6)bdhAIlI{JTffIb-8m0qq5dMQ;5-*{ugs!{nl2~wc8d-OR?ew ziWGNuEycaKySux!P~1vzf)sZsF2Ox$gQd6!cPGfn^StkOzVj!X^~;`I*Pgxi%&eKr zlDTht;`90#g{ctDBgYK36J<+1e&5T>vy8;=s0o$B-wLhx8nhXq1;erkF7QShN!VH*Pywm)=rr5!PS$(G2B zfcfAsn!y$9aP{Ouh>k>C`)(Y~SN4~$XyV|+^I6X;G`vk?G!YoaXdL813Fq27u4tLj zK9z|WJls2ph%c%Y;uxIA78FHR9b`6t^|DQRKa_=w+E-a#VR91T4Re7JMVj&VlgtNQoVzC8|sv{@`AgcHPyI-T=K6*!RZ_K#*-9x>6=d=M1ZA{` z>)L~s7vRUBAq0#TCMMHJmQs23L1uL`FW++DP4>8w67-2f?P&yGz}CxBFz-{;>FKU+ z4O_A8t2}!F8vNGRmKW6kw{WJardHk6)fhuf>-fVM8wSI43)J^|b0ckP^`5H9c~+J> zRRor-rp78i`c}%m{n!Tl;=@{oXCb zMKN#TYGq{{dx{^Ex%^knY2`r4w$!flYiD&OqsztW=?sQj0$Lq_;ab#Gvnf7xVVSsXQ)gvgG5jUx3B6_ zO%{mY`hVmkP~XzzRH$ThDR3t{_gB|p^a z_Q;ZZ+nd&TxhF#&WRlHPhWc48JIY)|_~!Ttx8VEMRi~aZu(7?|D3=SOT3L3HZTR%< zWa?>ur8*Cc>TRJMmN+(XnZF+r<{qU;&{$Yi)J=^9sEorz&k^*YEgJTtR9#%q$<#hX z7O0_UF0NX}SNX*Br2eK21uo*w(N$31Au#UHN(RpW?0FF2;f-UGelCP7s_ zls5enQ?TzbE5YS=L?S&e?yM$vdRovBeJN(Sb?5?x`pZ|(nL;sx$q5qmFu?m+}MHl1p%*`=-nNilVvT63Yc@U)&u9G<{=6&Cen)-sFt%KCAgN$^VHw z!g_YngHy=>u&b`BtVD3fPP&uLI_STL%7LVr;lRvemxlgdQ5{^nc`pa3tFJ!>-Q=)6 z_iP$J=RQv+tv*~^fhli+wtJ%u4z#ft}MO)vP zUnF47T7x(ughnb!soKz1%MGH(_zY$msd99#3+H~>_Gf4O7foY(qrjv^hv>F&5k&Y1g3zflTTyV5=C z$A{e#!uQ;;HCg!QX>x(k+4(K7j}Pi)dc8@uLi8H7(qV*VG-ywuPN8%nPs?ni zuLkbx`b|6zN2sEL!}uD*yuQxU%P~xVU0VCJeEoNL5NY2r_1TAP!Ow~K)A*f_`KlWW z5npR)Azu{}@#Wa@w{HI~nX061UY$?#-R{@i6?pRta@_O@6CPN5nz4asU5qtTqHLcT zg&JeCB$CkRe)L|VL%dV8_NcFDl5{WXF4&*F>4M<|T|_kHEL>*SipS-jWKeo+V$c52 zbnW=fn%jji#p!mBuCc4*yq$xY)*E-4|1pqE%19qPyLi|a?m$(fWgM}oC%Mu2-)+h% zT!_cg_iA7BX4!v|Dna;RxDPA%@)$%+LQ;JISMY6Qax>uF#>tkND5D=?U@@Ycv#{W2 zA|c7HrBQLm_G5Iml*j{H=`u2GSKZ6nYp%CfRg--b@H{Qr@ylkpxAm|d zdh+zJ6Jc%d{J!klRM5~uX77gmG!VIM{&%q(x~9Zh4^4!Z=-pJOd3N9?SLf$$F`l_q*TbU{BmSwKctbf3S*iAph}GLY zv7kr$;Ct)mz2HFj9;wWIi3B%Ro21Uokv3wms?QMI6^TO6^ zuBuS+l}}Sz=(0~Wh0wU7>l!m%Nu)7bl(@87I%x?9*7TVra*gEA&}H;~S)*8ZO&Tp# zqPn~U0Y0a>E2h_&XYRi!54FZMVu9 z?F=b)GuD8iS+n$YYQ}M+vPu87mVCs#VgI;lK$?LwbqmpoaLCJG4dz{DJu5j|Be@KB zuzgD9Wh{Q&)rJXMd7W%`EtFSt!9ihKpIQp6>p6Nvf|W}yB8olxedaQwL**&>_-V1p zSx?u2uqP2sX7zsjKt>p#nS-&WK28oYw;zqh8S>nn8*um3u=X0i*C+SA9Ig!(U^$GY zF3Z@s#hq+7GS&jLc5*HUETc@ReqFdsgp>KgYl21TK^k(L`n1M(L(e>ZumZknXZlf% z0`(oNuB(NdX^EE{_U6nP1}XX{9rZlgs;PhDbd-o#95v^fMF`mcQ+M1vy8<=|K!jx|OridVJMdT(R4GDEzq1@@T{? zO^|D*^`wyxDf56CY&Cl2H_xoXUUBlNDk^oE2pn4-F{M@z~X$rRuwuUFs~;)kxvkgbSOHY zBJ}wcTCj$S()D>O>XoL3=Pzk~Axs=yt$n+)uW71}_)M0w0o%;amT!e0w)iobyftg7 z<(LPCk)1zoMOeGeo)PlZ3ZjiR4mDd%89Mwvmw!d;+lp2a8s2c{EFPE0z?!uUr2Cuu z`P=(lD9^T}o2xx8h;A>zB_Bvma1mxjfFQu--)ZyRW-ocI(^389GSZIW_6s zej9#w&4Cv+PQxs!rj+0s6lr_{gX1nW#f#0$#~m$@wWseW!={kcxqf)CCO(bPE&yA* zVw_v{a@J>&@Y3hCq@VH!N@<8l%!f>$Hkg|m&Kj$@t@A>%#2r8JVV-#brgwZRLJ~B- zuIspILH{Bb!>6d^@gpU82Au(E-zpJ2d}aw_l#va>4>FU zg8Me?4cWmlNwD3jEV>+kT7(mFHYG-W?@FKgbB4R5&ys7BkyDS`%)aXxlCbjED8;;O zLPW!$m5F!dX}2W7J75Qo6Z+#=C2CQaO=yRAYhc$AiF%3;j7L`U? z2%87G>nht$$GH9Qtd^Kv5I>>X?w{K#!rU>p`H`s+}NQ^wDwe#qa`O#2yj zjlZO;vOVxJ4MD{{w6H7GZO>sOBF;V>Z1al}Ee2KhXC!X=Rx2VQnwEi!fY$4XMhDXX zvz*2cnXt`QBw@ir!(|JS{+;rBZ2h+c=Z#+A18px!=vaG?57U7ghyG7-g^g@eXF6l@ z7uoCV9F9+R<&}2?|YOGvJUe1vJRZB3XVft`?>VVF|fYcU@tQ?5ziL-9EY$%PW;1*cyEVD>UG z;nDQt)uPxkgp?Pksj0<`shwxOUfc3V9r9J!`LQGS@sjS?2t*0JH?4Hm7C*XQB=fsm z+oPK_RTuXh9?A`b&9+6?jd@x^RZ?rWldD=UAZ-0V&im_~l``uc$}7{eZ1*Olr0KpW z44ApivgE?2*;cwbI1be0P}p^60ke)$VxoNghhVM5*ukb~1bp8>O+zvP!A$e)?oLE{ z;}Q1ANK?2+(pB4_*u==(5dz%Ut@ma+ZBm+4OY@7`*qlc_59yC;+wzX%l{e=JC&Gec zvBn4wPr2O)^RQyh95VsxAF9F~evN}Sq|Q;Cg!W_YE}3bQ^^`G;TzVnuMpiiPS9l3L z7oWNCuUDO3el_Y#GaClo9pk-;;OCcjLW%Rzi0gb2SWiGkOJ=*_eo!{v=EjpS68>)G zaMR+wRB=P{m2IiEPor6}9gT6U`NF6eNI+~5O8dJ-=cJcr6Qh0=OYY~q#$>Lul{+s~ z!F7~j?OO8^<#qz^$1Pmsp@RsB&mu+n?p395TXYoK#~7Tsw|9~644}?t83s#DsKy~( zqLV&9o!dwGvMLp*)CWmn>CVSXXNwhgq2rY-CbeJfy=txSjg?IW2S-h>J!(tR>J+sW zI8X;%=PVip7JmIX!|GJMsd{9J%Dq7}PBXObX!Y z;g{*422hxKo|iQ)sgF)c5=~8&Ru?wKu=do7cCvqI!|#eSUX_V=KZe0B-_yPNm4EAF z`$I-P4cF3QKYNBz*z-q;VA*8hjHK}3C-PcqS(A;?iq_`%SEDIfjB&FXo+dHaVK^lA zcE5=MvHwr9|l`&(?GP;JA4^hT9lcb&45ea;$ zx(=f`zEpB`6>iHcSo-eva~)?R3PLME2Vc4!nsqefzSxu%vQgq!8ThZ3oU~mPlg#m@ z5?V8l1F+jtPi4YE_Z*?$_6vhvN4)*i;N#K&nk+zamDeh6pqU(+y?nTjYYuwI>&t}$ zNyi%751t>~C6s*60!bLTSST7amc$^d7>u%ZozQt>x~#(kMAX=f)J2B&;@z4cUp6Vv7NpsXuH4fVyb+t7T+jv;e1iKj~MiW zu~}+;0a*l0M+2P$Zm~!+q}U$z??{K>8|Bl?;4d*lMN5M$x%Xpq&c$00oQ44D6ik1+JsgLteHf>BH}sQ1RjtUu(#XgyW}N z=dDy}JNFj(3!11Ac}9aZDRtX&D)rV(@|am^eBu#Xjk{!3#(%r zi@=xH1F8)aIbT#bQz;o*dNV&mKcR*U(P|K#BLSI9c^+h;$tmKL_z1S>HllP;rD8f6)60DrH?i<8{)L)1TuE7wvkD z;TgdBZRdkf=&#L-jr!k#WzRA56R_EqslR{0VmB_I(8;cS2n17-CbfaBjZv^Hnk%j0 znYmLbuGx}XUp~;o`z;F>2={Ln{nuE{wU)1W(#FNW(ns=7X5n1|QZjgEw*^0`%O>HY zvKkiZR>f4YFpEIek-9HYivA1__OJh@1eNhZw z4gcNu$=h`zgaho!|6@AjHa~uOYmSHhlug-?Tyo=4!_Ho4{UeEPS64PlVVj6FIRd>wm^V?&RV%$48*uAEP#W~X?F;$c{6}!kOOAE6LOs$IH z8``vXXBrzC0ya5ALC+7T4Sc-Mx_}L4+bSk@w(|){lB=_`bpo5OYqH{=?|`P}>omHX zLdumh2&ByRW^4EK&)-W$ep+zqWmYdBy6)kyvVEiO++au344;J{<4}a_!;BS`2{_fz z0D(9dC>Jj06X4=vF_xR@?!mD$JDXDc{Cv3VnT0qj%=dKC%04DEI!0k-rE4>|UJKM|>$NR!AUX{f{+l4{f&7bpi=l}<~ru4>;6fM0O&WnkOF-#-=E-^0}g}Og= z9c~Z4T>vra@glApqm#SCn=EsVr7wiCXm3#T_Vr%f4>&5y&Ff~AtrnIdhA8wNBvFQgZ4SqNY)KsmLUWk|!g(Yg}xitmG7VIc?$mcb=GPlN61ZUq|WV>?~@h3MJ*`ejRGazb|Wy zL-|sO8^u`!Q!N$_y3127x1|Zg1t$X}eRC=dHM8{mO6fjJQn%Tty_>JT4tblP=1zY1 z;1Tq*tq+f`PM3a2sTDOjOP1*Rpo*z*sLcK6eR!FBdgjBHcBG`+V%cAbD5nwGJdMp; z)FCsEL*_eY%Q8DwRaNY5&?-p@?uR^>Q~6%;psE_Oya!~7Gc()8k|w!&x|^aA1M)LL zFT9LSIrDRr)`+XR{3}ap)$*&%uGhrG`SGU2M8&k^jWYDTV2fXhZ}9!VNBLug6^aDz z>!n*Hd2N_>hea@URGcDzTUVlO!J(6^ZuZ$`HHn`FWQ+{In5X?qNTdF+<(A|&sVB&; zX2`8}0nz(rcs~b*YHXH#leeO>r2DE&xn2CV{0fChWKU4!hWJq*pC|hAR{kD(XVG)g z{sJL+=-t^8F(@)2c{T>y)be#;*zZNf;C``s`&x(zJ6;qcv3Y)vMWeux)gCT9#+--v z6fU6}7lV>CzE`{Kpot0HNOXxsx2iuQV11hU3hObu-z!L_!og4oZ9LJg(yv3cQ`LLTX!ho0eISVhF8p)R#mt#e; zWSu<>e=3SP<0Ea|@`(N?9Gc+d4MA+G(8MJe({wY0BJkPvew%%{w^A5$;S#xOyfvWm zeaYwaSFTe;8L`PGokm}<6OzQfV8`)OB`JDcY&R-H@4n!jOEDAz2IcU;cGPKm#ZGS3 z>J*AS{E4z!xB}>DuR{!qej(7RQ_vcWiAMtbX&+CG?~7VFF?lviH3;w*LTYdob80i(%4FZIz8IUIhwIY z3l5a^dxMS&=T$#AIl+g4s&AHRJT%!kQvhq$r8Yg5GOKeQZ8Y ziib#+73&Ad>SyjgyuIRJl*^-W0{k5Q_xo;m{~#j@!2ya^_s0^KJV#ooH8}JPiLo{y zeNK5eaVg^$*2H20_3|H{X^8vQ2q=4!Kh*-Bg=KY;#uZ!=0BI^xpJ zVq;sfN>w4%2~49Y5@3% zXZ*{x>pj7{aE8+N8~~-{t$cmGmz5Qv@eOMB$;`Z&+2XoR@(pHdIEZHiynk!?;>9ul zCYu#vJeLx&GK*C;KBXj4{FI|5I$%NcME9GpuLuUTf5qh0TAI**%P(*d6Y0O@ZsgDO zNdGOfzx<~){}II(KRExV{QuYOpTFR~2uN-zmi7Z?qEHIbiC+KFU6RX~mrDh%NCo`r zD4HbH8sfDMF%gW2*7=`YfOFV(i5|`OJYPh&AVjnW(bD(W*gFPMVP?^yPu8?x>3X@& zqoq(L$oe_LcMGL^V=jp8s-$Rqc8hC#*E<5lvV7oy8~b@puQas`N6NDMmjte#1p5S6 zTYRQ>@0)`ryYQD|W8+#B3gNQe5?KL?NA6{m|+ zP(q4|-r!9LbT*JcQgnvE-tmn;G?eo>K2EH*CUr_}eze*Kjvbp>ehabVZe&g!w#DO2+A%e<0KYlSxF%o`Nvj?X)H zfzOXK2?^MD+E38 z8^Zyy@U$o%&bn-xe$(vC#w6S2ovGadk(PG0t3x2q#|(G<+lV!)AIG#Ww9URRbjV~% z?E6cEq}v?U2)lMR=IP5IJ-W6Z{I$8LMG{&OQRAx28+Gd^m%iBk$ zS5vln=@xHugf*daGkL$Fp6J=Xzn;kb+q}7K&Lffj^Uc52j*;J5{!=OWY1%*DTWV(1 ze_xUNN4c_AGjEg3AK73${v@5#B}m7jH+coomzQ||R#FrmV?fGv(-U3^bU4Xa`OTRF zcA1FcknWdsZ+IG>Z%VoNaz`@S`)`N`m_)Y;_^A5Q!M^@lO9W;%#t#{^Io<8Fb(p4eXkz*Nw{&o*Fr|Kg%O zvd+R)CqMKh8Go?JjS$ViysbSQNG$ei=1`vm5)xHj`UJXG$>^qMhFG^#D*^F7`3Isn z*U<4jWkrvrUcViA4~x>^KjaXpg7Ks+PhIr4i~mk8(NFJ3x=Vn?ZaZ06L&zMgk`sXXpTG)bg z%&TMPvm>(J%X{ZZjgBHnNPSNqzy#WAW@>(COEhSQ`#c4tJOov%9eXy~I@3{+Ef$ju z*&PmSuN)skB|<}~3LyMxv9zG+qcdusY4?)xEUll%oJN}-p`@C0 zD!KN@$0rBmmv?>9(qkrGEz3~|*$bPt8l#uvFszmH_!qXhKIt~|gT$*J6nISCHv zYtQFiWRWH_kY`Qj4z{#CItkJyy`KFTXe}dWs&&6FM=qSY-UhQ5cHL4mv_3iQ?p_P~ zI+*b@8354bcD$bfTvo6y;Mt1!Z`__On8v01-v?F{7ys?`#HUk%@_KvUTqVQ~4x6~Q zB&n%!zAItVWe3~i{B3m4f_!gsr&FG3xW2?fN57|Pv-#}{Xh)4A3gd!}Gb*|hV^936 zzK9i~#l1|vVf{4kJ};7&K;XlaHJeeVozZX5LkgLyNrH~uY8kL-85AdOyrG-X^6DRkSYVc)Mob$1u%dVnAaI9SZ zX9I0d*hpqwd$Dbk&LR=^Kn1BWbf)?o`m|Z(-l00tN^myuIQUrZXyUSo25e4ge%<=( zx@?q_fHlg{4cy045`X9iUzQkB)|~UWH8=SATDsrUP&-3_r`cyBzZ{>5cL^lC%3$oJ zSp6enAG5v5^QMPtNM+XJa%h-6b;-qW)`Rme7aHw&HkUV8ghWe)O}5U6?CoyBRfN~k zLWln59wXh#%)vP1bAzLDMQ%%X$pTdjm=nR&Chw-#98~!zUyw5i>Gb6yTuP? z;yI(AwXV#pob1f;g@ZZ;Z#>Y)_O}1#*@g8Zf8bg+X^|9>ZN=ykIrUG-22zRl;opwn zla=%7odp>@*63H}{X9z6byO7=`%8BU&>F*5AFs}f5$#IBCC#o)!r*(iu4NBs!j5Hl z#UcWq;5tX5#BSk{7U?#f;@${VL9*wsY1RwHQ}tKtKxcXZXAw@V8G08vez-K zqi3JsQKG6Zu~`VA8J!Ed&MQiqGC*M_fBnyhfBTBE7P_8>m+>1b(ANxs^ndXto);^@ znzK!Si!b)w=yMpqYZhD%l^4R4n*8WL~`k4CN0fb$X814!(i&sd$FVaRZgo z!db2&R_)5G6*u$#Htw)TT{dMcosY2vcRkKf@Qql3wgF@hpO3E7;KYE-_0Nj!gX;pQ zbr6$Jlp9u!2V1p{64sg58Yt-y2O2VOxw`&z7gq#Jdnf2DgRq&jl4yn+V!}zny1HoN zeRLc*j=_Q?epO+tlWm{E=0tQ2?Sd~p`#q(2Ph#%o(`RH&g`HSDC`^UxGd6M0Xf}Gm zyRNU^?BLVtv*x%qxIXK%iQOEM$YchTQw-Ar1J(~duJTT)>pw}G2RbSk%LZOPZNJ_u z7)W**hI+vyXZ9K+C8_n$tE}zrCBD-yo6$@3OC^a2_}@RS`fcszK6Q#7)+{y#4i)xZ z#%dPD>#JCdtol6N5w8B#6nSr*Kbx|zG&v^c8foW)pk3+kxA>J8;I5$VKJ-~9&}O{X zY$xT4F*b@fZPs>I=zi)VLZ8G=xha-dWM2Ip&POwcmgf3kY8-VLeU+ntAokL9K-bNw zMuf*atB*tB=HcSx!~J&i^&F;4XiusJAR{|*gJ83BCBEsn(`0DRJJ;EXBpw`mA69gy zJ!t;#B>!j3rSYWZLC(RBjz>1^vazj8$9vPoEa_q@??oF#X`wTaa-<=>0P~F4YM>ih zoqGvBolYehq2{;Y6mJ{H7_kw6^pqyme7gP#F3uJB`50jcgGkpM5~RPM>z67952>53rrnCrBo@*^1;Vo#xbSF-;k&4;wD6l8DCQM&#N6Q=jC0+ zQ`(YhmPQTV_zy58xk+UzXv0Io8y z$f_7?ZM3BL(=IffG-?|K1*$Cnw(`Iq@7O^z4)T!tt`0!nFo?TdWb%5r-m~^@M$cV* zzCTgKY#wiP^E-zll4OwcKxXbBMqfIS>&F_=wtQ-^l}Z1V&o9%-7!|SRBMlk$8ADH> z$>Y0G+8Rad6{b`ORp=3&@zWK#(aJ0V?%`d`$@3I$t}ZXnG9~+l0fyJd;G3(}$EP^1 z&>ipga|bQmb!h4iot`Sozb3#xszD3y$nw6qY=62Z0o@$i+c;n%hsJUwjB4ts&CJYr z+}vLoIrm1mebgka5_V}@CL{$WNHrG{!tfNq+&UXgy)>tO}yrU-yDerG%=N)0v&{=_z96!ljEdy2{I@-L#Yvm zJnXaskB*_dM|N)&Ho1D<%^hYO9P4s)aZeN9G;5Omt=-Y_)c(3H>DN%9(sQy9?EifRKEq>JW+gbXIm9or z8Q8=`tYPg_t*n%0)njA22|Stvlxw|@0rpdrvdan-f8*zc>SWY#bz}3Cgb@ow1#csoS#*BrMDvrHGw~= z{oMGuPyeW=9>nXMVUPvzgj!6_nlj_=8?9+~kQpFW9+LeZ)SJuH7G1(YT6$6Y5r=L&2 z-rkLJ;kB7KA_OXdr))u|v!3qnaL_5K3=Qk-=CcTc;Gk7!QIXy-Aft~7fU41FWeT4O zrUF)|+dV5?lb`f@|9Vlc;-;gcM&_rIxfC5U{J86(%h*tWVbt1S$a;B$H3Bd1)a6d;GDjj&<+c_uxrx; zIhG_dCl%*t=d|WBWI$?*J!xfi2|5kIHCLpiglsVCKF_o<2p9qTBO^go68kJjK`26?U<~ zgv!$%8pe__{2E4T>08F25S`5jX~`Pe$08H-Y8o$L_t%1)59R0pvQ4@?<_Ktqn+kj7 z(7J9LXX%1ls@UcpCXNe6OYrg8hErFY*;4ArA6NM16xrmPjRm=t*aem>M|ZY5+>32( z*f(yl8n4}hKFvU+W!kVhIWO13tyrS9>~sU>L=83ZFF--!VuR0it|o8qGPPv14c|NFd!~6lF8H+ z5_&V4VUW7s@+X2%_gz{QP+MJF_e!gtc9ougO|Y4u=Jp}2>;A6M*Go4Q8Sy_B1(2i~ zf80qp5-K1P=EQd8**CZukReDWDCB3w(@j^Rv7Z|k392scF#BxYzbO&Ol49LPJ~sJj zf-3K)pJ@Ddf14Z?M(bmfED|F)BkNJ;-ISVJk2~CM@%OS|TB(7$Dvc`gafdk53mvsPmy8 zjC+)A_+WP+%avcR$^(w-L+s0~7us#njv192LOIn0p*8GyTB5Utw9jcs0-wlvfC!>#wewB7y$;tdKQ%`MSuETy9FM zpKszFR}(F~!QSHx@=ZAAuj-5O*#annSNvBqD2ObgB4u4@(n-nCPNH$Crt+y~Paf{I z84`rs1GK^w2#{$b!)F8z$g{z0j$C(B=-*NE9oT~-sazx#{Ei!jy3V@K$lI6j60+v6 z7p}pr3=A>vKJvBk`0wla`v<<0bMn59ef^qtZ~sbfY}c)bO-JqWq8_8zXSp?Xy;EF- z?lF4O&5%3Y!s|*T(rWRx@Jm~{?Z_=KQ>I{jA$o-3jDM1TTt!hK%~NT*#z*Y~ZdO!$ z;UV|*li%R}0kFa6Wg`9w!T(+HF)hO*!g~{UXZ=C3S6JwAD51^%9}KlK<3HLTk`R$- z^n){VQuH}RHqE@uTo*0~SVx18u}A@li6%b}ut@EFT;>Wl>TaU>>G|>AUBdtReCw7p zmp`*;W;R}#MBo+hG7>}mKthTeIxF4g>+QV(72}Uj6|`o2^L`;!)X5|{3)o$KSbvj$BTT+qhrwkFfNyz$s6R|R#cim-Oeyxciv(64n0z7;)zT!_;6_y*z z9Zv{0S1!;%wt6}hDwJ7_Lr)1jP*i5up@P}yb=%v?UbN_RfB5%r+C*fe2j$h5-TeN> zCs-;4wwzZF!koCQK4OVAK4L(fneiM_!ckA}@+3Qo9&!w-YXoyRnyw`4l*pHD=6nLxK^D99nfSys{u;r9#ViA2<(L|>@5 z+y^wvbemI6=f%Hf$uwTR{(~V@-($X~S2NcBDU~+homVFaJ}YZNK9%uQ_FGzA z)e`ulYN%^kKc9tZ{l!fFI@#BLt};tA`IuKBjhgGref~BRP+utUBW|xwUqH_wJ@)ReH4!PI7g+yt3pnLERtsbnD3b2g5kroMn z<=ih0p}ISE78cxiQLePZv>-Y;3#fofsJNo6+*h7lL@e<2j7|FR^>^~f8z+578eQ1*dIG!lG#kj0K zk5wAMx-*nHw)pAa0dg^An$)mdhsNz7xE5VRF56JQt$Lr&zTq@)E#U>#Q6 z_J&Z71N}aEtrPD=2Z75-Vx`Ua3=i`T3j1en!)`14-{Gz=WjgVI7LR;((zka&jcc_O8!?1&DJ$*3hK%ROl=0`wiVAXh>=FY^&Wsv_w zIR=*4Z!hUKrKb;+$dDXO{)#ke^c}RqqE(l z@AA+Qu@m!pt8qcU%J#gnyT|Dfmwbk#k?5Eh=L-7@`+^cI&BiMfHiViq)SPXl=D4Sc zU>T@ya2)l1Bc>$^-HuT4Vq;@aQX*%wGNm*>8F-T=yLn$_Q1N+;p6Ciqo59XC?BHHz zs#22DJndM|tB?ldNPFfNCKEDnz@7j#W4HS4uK*3$uCZno>pWOqrrTct!BJ2mA|48Q zTnwnp3}WICkkR+>Ha#FpA7b}BIW}=)U_&R~w8MON=v^{y_}h8%slb|KQ4o$29*(G0 zpqhf~Y8Zzcz7W!RJW-wZd3V&GCZ{0x zs{+M7RuRF}=`|^l@&b%9z?&OS|CRp_>8sX9ebC&@$U})rE0WNbj z`ou~0uD@oHG_`W%EPDualBtoJV@XYEW|d@7o9;9LrAJEm=G75z;SLlDu& zFKYP~cWdppSY`igg=kuHn(8nL#KHT+)kLi+vw@~Mf$;gv)CM<#Xf@GnbCj1TJ0oK% zY{rXu?&#Uq5Wf8+Fr8o@3?=2GuefCuP_7xsug`K{>(wZV3pgB(AX)UZ_>ZgTT{ihPZKBWG(9KfagzEEa-^Uv#f?XanuNY!KfY|qC zxaH_>NDo^|Dyf;EUnIA@beB+BtFaPgB@GfhdFD`NKhhZrqU;HBZKY$F$?M50l2Aus zqgs`<7K`AWs{8fgmjrakc{x=JIX9-XaC=(F0&fGI^ zT|~Avf-FVk{&hJfH>xsE#3eEQJI)y(S|@w?ge?;uix;tIYVzG?7z&vw8fR>Nayk#F;BAYzS;38zv^U;q&$KH`2s*S!ldR#w?{0`PqnJBDd9@Uho zWT)9WaH=jRpLs1!{egM*%?+<8e-S<3q_|}2W&e*$^fcc0Nm9~7P>Fo-dGoRtr`57>mTm7c*P+hm+sSNF z?6^pNLL54_<lnd zwg1U1Mtjxw-xwbv5bY$8#z7o+0If1?_8Kn=_FWWFtR7kzWg-@W7Z7q1x%=%+l{^g* z?z9%&oB*+7Ft}5lALorlpbngZ&z29W@=iC>D)T=t(W7gVFHiH9yHYCEVhC}?>?p}8HX3Ao zMa=R1aof2|enc>N$%6MM#rs5YEDS!;bv{GLII6`BRO}dSJqmA$+oCuB@l0 z`>%I!3TWypyT4wK&``NQ=+%)YoL9U00rqftQzbUh2V+q&$7n zd`zz_&JSZM?sR!Vw=Kc?D9Bgu;WxM>xvA-d&a+`}Pm)Z!vPE5@+B>4~&jft&&p3)? z-u(=oob)YRcagI9Uk#f#Pv`mMf1bb1bv{*SKL$!g*lfPR31o)6hb|Q9hzWS8ABE!oJ%u4E(7AnW=xEP$^$`;?=FG!G7 zQ5zWp&B40hc61rYls(K1T@P$xdlmC8&<8M)m*=nT%T8}^QsHT`wO&VF^)}hBM; z6LV6N0lZBfd<>!E`1--ugkl08d81=5C4`vX1YO@4x7u4Z9raZ`|6D>G*FN@laXgyj zg)*KuQj!m%7saHp3cD5Ob*(^+>Tg=LcZ$UXxccn>}8wmUc%W z_%05k-d#kx|38Txh{2{Mfc9w)+37E!u%RoOHuX1z=+*<~8>z68pxGSu;ACU%xgya0-4}iYH`k`V-b_@8i+ZvA?^5TVY)?Z&ASD+G9=DUeb0^q~1r(o*1&z^bD)P zbOet~j>|Ww`;>OH*0u_j0%@cRnW9ZckZvX>T|t(V`7=al1U3Br)t(2f;+pR-Z)Fij z0pPHn9kiHtTub49ZH(QO4AYEf1rW&|e6aB>9{cm;v08beaXxkrSXDF105aN6R{95# zPPoe=5|@0P;~W-TbC)H(eU}SMBiq@xK$*jcD%CV3y=^VWe}b>!s!LtSz*x zN$z(>SkU+K8L7f*TfkEM{fE6wg8dr7)43S7_O@mLX3rC$20sJ>-=fVR1?|7H7O@E9 z0>QTvWHq*XAEpLnO5Vb@W|9VhZBdq~fR`2o*dLJ!*3Wa+cg2t|F0`Kk>)jWYTx8SKfP4L1KcH>F~s z5$LuAywTHWoHR<^bUr%XJ70#ib6Sk2x38_RMVMV~=z|#jc@X|EFIyb0APYn7R)OH2 z|3mB5O+5@8d~MqBa!VehTN+S;PF(e4UT zT8g{7L-3#*mmiI0OjA9sYFh{eA!SxjN_KtgEb* z=UFQmbIh@ZyyG2v&@r0|N^k3EavGP^49Ka~ZR@Lx zw<$3f@J1AQz*JiOVV9hL!N^$+qLRFP^(IqX{9I2(!N#0MQSTD%wAy1+hxk%@s z8oq0bcJEV&vCBqCj}M>VZ5vrhnmpJG?+L2>rSa`^*o84QXW!Wb(M3V*GKxuYi`fla zpUQ9Qw>nEy`Ey7koTu>s8l8TN#_wG&mnZ%9GskjT{C5#inBu7r9NKDD=kYAy!)p6+ z>lMdRZ4B5^#G|W^4!}?^y*+)@N@|UTqA@V;I)w@;uswtbF|!fwO2MnPK_hu zZLd*%P+pusU1S39kcrl*`Pk%jGIkyf2-{PV&u-h9+IJ^ay>L;0DOn!OO-`!*UUo}= zv#ZBOb_gfsFJaCID8R2Q4B4=WMl5`AZ@OLZ50<4~*7@2U2xDc)NFZFkO0&PPI$o(i z_JM)bcq!bXx05c+)d zE0Oa5MG^zo4jhdbzZHfpyc+g@~3=K5K(rZXgm0$3P=6gK^*i|+c-CpO__uUR~ z6Rc!)THK5+TkMABzh(a!P`#n#VE*1$UuSKo)Yh#f0qJA9L?f%V=?;g2EsY(F#kknJ z7Uw(3dUvEE9YUp6(u3*R*3MXT_G57CYkxT;06hTj!q>V+{X_A;Lzl zqYWHr0}eCjQt?q#t+f~Ba|+G5?i#pR;g9J7I1g?K`)MD>FSKB9$wfOw{W~A}dLnx1 z7VNJWii?Wqinfx*v$Rs|eFC)yU_YIF-3JzKC%Sraa=NIEsmh%gGRYAkg<&EO%*C_6e*Htl8sdU{cMdiHMnk=f_R$r0~)7^M*=#m1XS~rnSuJQo8==H)j zBMG03Zs zmy&=Oo+)eBmX1h@_Wfd(#n7Ksb%mp-`U^W<9vvT`qaN=@7a*-+MF z??zC4@4{cix2V(&AQY4?g~lllfVS(uOah;NSby9O>M?Vrr(+aU=AI_{^A`D}`usm< z9(jWM45R1|Q1;L9|6L&H|N9_TbmeEi2V?D`@~xG)GrK2Y^B}6IX-b)6{pj%E zU{S-BhfWD_$wz>Sebk;#}o*MxxAJa=;HyuPZ*oE**|4J z3dg3UF@peP&&x==`t~%u7yfy`?|5WBHn)p{AE3sarYvw@DD*?Kwg|B|I=SoUwQ&}= z*6bnS9MyNOkU^>+$8yrON)Vg|yacIXdR)aa#S_ItNdMWR&rI@7FX*3bWRx?d-mAhi zm3OmQ8v#Al@;CF#;!;H zy%FMBDN@M768x>MXZ6{HPzJz6!~TxZG5~uxU9aOlFC=IoTT0F9{lt*U zg&x2K{U6Ew!rZUVL;s~Q@k@S!MZd)<&r9Yq%dm!YPKrd zC`+!od{T3;4j9t($!bNYZLK(Y)HScdKycj!!FG||&E4B$@`Cr3{$s=zxaL&LR z1qP8XgL>p4bcqW)4Vf>^ngi5DD9};lXq~kPk=GCnnU4N8&Z1&)O5&J!`&!^3;f~Hu z?XM4Da3I$N8)CMBZWk2{sFn+QG!ZO!mf%fuz^stzGLH(MjR>S8QcLSWxaq&0w+Uny zgI|T4y(WwyxNDpP&YSi8vKGwW3$kcxHPG(({m-Hx*sh7m#V!PQvkrtJQ&HIyfVEzT z>5F${-gn@u@Jbw7GnDrlH|epzHkh|Ou=azi+}X1qs2%)lXr^*_T-DV(x=;M{7I^*?;Qp~9EXYklJA5cFub`m#yCrejwQdH7EmbUO zYW4PZ&d3-NM;?@BqMR+nH*ea)`{kD++YbZpY5^D1WH3h>a*)u#D+P7y(vqUf`!7Ni zc1~6*%*d+Qxzs5gCz&oXU)sQv5ro4Sw4c z8yhRuZ8e$R?6jUWO&8zrci_SPL;EEK5VnDK&(SH{P)vya#vR{F4mSp(;8-FXt;1d*I& ziyQI~&9qpn$TO!U*pco#*w`OYkR2ZEA+Ew(hU32^q-11e6KM2u#rK`STjDDIU?v=$jasMWk6iAn8SV2N#&up(kPgj~{oa=Xc^MBi z_vgof{vT^cA@U7L$b8Mr)6EeOecCq^8+kKL@cmQQ)mfjYM7F#R{!+*B)A&`Fq59uG z-V~opMWB%c7*a4ALE=)i$c`P;UgjI7yQL+E?$HQ(b5`ZI#D zVb{)724{9LgU18P2e+BBRW%yrcmk38{zT(jzktz{-GICBRMl7_<=UyS!NAN6@p@hb z2xddp&)f60hpo4{>}th(nfmYCkf4#ZE0syNl|xn~9m!54#U%N1qx)z|CnMZHp@-@< z#8o+ZKpDtmg`@#Dy(rg;X0Y^e5Fi|LQa;JPA76Xyjwxx2;o-j@e!8C8vR~55j~z0( zs|6t*dq+)Qvpr@yJY6QAUrDAv!XG9d&h?)H=F$wVvyC4Q9c$Nr&&6;ams&@0B`yeq z9-4QT`S{|QC=OO{&cyGAtBbqt-NpS*qf=T>UfiwuAH{fj?XB>F^2<@WOSt@x$$}PYY%Zph95|@gyN9$C<#aW$*jP8u6QJTDxM) zwsA-VgxJ#iW(H*0%)2N185_`9QJzmL)@PZ_Db`+&0~Ymei)$BgWW=7|fHG^mc6mQd zM-vkfKZPv2TN6aK1h-Iq8^th|U7A4nUvxhm6d7v$HMMnO)kP@8G>&TgkgBm=?UzA#nCx_N`hLh&R7`Jl8mB^2b=E%@$RX|nKU=$nBEfO&Zbk{CNC&^u zs5v^qHOdV}=521-yK-E|C6*c)-6t2I!s!-bJOc=J{3Q4 zGyuu`R#^j{F1A3#U zWR9`6SabPya;RBB4y5N*7m0+q7+9$kC(1bC()?~1(@wN_NwJL@8mX}IntD5>m>+Y4a1W*c2}=& zYVf9RvnSa(m7CC|p;-#vuPnXi+EBDiq(ul2BA&%MobF%fjD{>4CZa|VLtak#c9$E| zS%(P?S2;(~hR0WN)#%OHi)Xi^nOCsTLX5-&Cq9bk{v<&{WrhOaqDQ56i;CK-cW-$q zm+qHqp3YirUE-=5#~Z!a2x80HsPvU&3+N*1rW8JJ*4#4+{Onxo0=e}1*7q1FMG(;j z>Tj0C7Dw3f8d-~fj-g;_`RRokL-ZrcMFzPagT z7~(~EiTu#;G+Qc87051nQw6_>A@z+}UvHw-BEEXsszK;~NI2x;o_6Q^snO~?^L|N% zH^#aTCT!$mehR7c#h?%VMELfftuIOZiFJc$ZD=T-R&H&z>EXxJDICfl%%;LVVccXf zwQ?{&nZq~g*z7L?%16ELYb+_hXBbAd13`+5OLSxA)4b`bUE`e%Bjsq-=!>1h5EC8RP8ME2@uO&}v?rr|RV zR^=uxZY!mUN#@b|IoQCf&+;)S`jeWNVhMH>xi92&W*=vgkMdf?Ji?+_Jrx~Sw`McF z8@!D#PW(|XDUY{LLvM`SfZnTN?F7jdz9I3k8MNRdp%v0jl?|+YJMqp3*sgIoL$d<1 z0?nKxwz+Bv>A<21Y=u$wc@V!KaqI&n>3cT0h5&4K~9bm`@#8=JTLu1uQNzz0Lt+u{ z=Xttq9364#0gUvYBW~|djTWzOZ^DYf{+o6ObJaIoaf8UA@trlE<)NsgBUc?4&_~At zdm>=~-=QuS`ykxe;B3}?C;RsMttHR5o1xg*@!Qitk%IOzsf zegBfcVWaXnz97q5_3+$z{Oik0g-nd|F($peQ22f4aW z{r7JwBxq^q$qcy6;Ymn)49k4`agsWJy5$P|v(CgSAc!5-OWOmWrsWe*)&VAsFva&2 z*Ap(s(OJhwVCN@nlnc&pL^Db4>aY>FG82b7H=kOKk`uD9jHr6j81cAlSE^trr$;K=Iz%mBu=yI z;pdq?P2XsUA=z)=HRYUPVbaq7a4|WE*K$pOR`3?^ePM<)Ti{I?3)avvPSMn1!HO+^ zqDe;ZFyM1|pX6>b)RZ}TR^ZfOyk^)cF`S@xREkf2jNbL7Q!Ep+G+6B?_C|+dgBWc! zPPc4kZYfxN&M4!|9oK53{U=qDe~7LC$@HUgZ}x9xcw9GUm(#$ZLFQItSr0$Ui8sk; z``gvlE>Nf2+jnUF*yg#(Tq7tF9TFy0W|x8|MAkHgI+0e7SNYJME2@@&0|r=Y zkriw91eJ!^#UX%8!Uk-q3W7F0%M0&B4Y((SM6CFAE48x^J*xyy<1&5ES%SVPuGBhQ zE$r@q==BaoHpn+;H0m`jv>LG`u@YZYLwU5;2Ws``Oc+>KGwLr8>jfINV-%?gMp#G! zlUGNM_IA}}=f9VK=#kU(k9nOg+~A&(x8-5*E*>mOX>%%smB@Pgn>n%+GG|+7<&|OE*PpCl7(71HpgzVk=FyIlt zCa5xc>eXc@q0Z+?f1}} z!@}Ty+821?xWl6c4Qa8cK&;B*ODA?a4P0xs--gkL;U~k^<(1wOS^9i2;aRAw$L*6_ zJReKu_CE=keL3TvhqF1hkIrAACQSh(p*VDVN67Nf97Tn)GdLW$oacTEf@cP?agG#pj_w<5Xj;;9Yj4 z37hW4`Esu_dKIQT_u)pMtoKTV`b^BXFJ;g_p%j=gVgIdB@%iqwMW;MdU{9Mfv^VvLA@3gN-!H1VivbS@M{q-gG(rD|%#; z%BKp+bOgdNSDXv_8{gCI3KO#pu|!wL0D=xaJ%-R z4;*#Y*f<*uG4F>}U|L$C*b=-O$7Mhy@`zV0bW2{t+cJ=9B&=;BCq6wz!@9dszGoW~ zh>9Y}ofKF1z|5pT--UO4Gj&0?Y*3d3V63J@~4hDtvoIH-V$8YYUJGS$N4`!X2v8}=VbU( z&L>kS4v&lsDLD&nm~G&wyE5W!7c-{ycmHY*i#b_qKK1@rZ@xb~&wJzb%>;7cPws%s z3{X8&ke1Ly31*6#vUZz&m!^!8Eb9tV9X?@6c5-Kv5=`!a%M%N9dF}M-CJurIGB11@ zotEPNl9G>-oJ*=~Snkyyv-rZstge}#%1IiH!XAE7WlU3~&V)x%yVi7g z;Bb0wklT#qLVsok8BxEc06kAbOW8t?>o^}>CcYE9_u5={&35$k-HzO;mt!j7?`JHw z*xs_(B~Z>4@U%6m(|QG_{`XJ+qWJs)Ma1d#DMl=X@YK`-pC0DluJ!fP>Kezt_RpCU zDg955b2+EpOm2Tq`<>79`gu>9Q^(h7Yd+icGcY-%rW!wpxVJ#%JP$HlM@YN0otn5? zO~+uMq-JF6lTcf}7{`_H9Fc+nYD-ZOGMs{A4x>@ari-$(^L77l8PzZpga}GQZ3atK+!)m>&eapiT#LUrX-IJI;Fxow@=6ia5V!q1)&lK`m zF$H@*)TY3vaV;&kL4;M_9!JZ)nizh7{|Xa`S46&_P%#FbS#_!fJs-1NcM%_${KmUU z-h{ov*cs0j-c`v_bKo5S6&0cD^gdTY%&PRfG_UU|-9VFkEs0i8%87MxBX?s#$L70C z!E2BZ1{kp7!s#`(Q9lgnXgH@cS8jY~O7K?jV05A(ZyLq(Z%O2TVx?dk@{y@azo7ScqH7el`2Z19k${#0fq-~_0lJrqTDdckif=yUxY@i55IbfrzPGB-ua_c8FBkDdwy?U?4jHLMQ) zvxX3q&3R)lYO+W&aU=M}4Zchdkt-RfF-?cfxb3!fu))*g2B$a8DFn-f(8|dK(=K6? z%{JDHE((i5-PriaM2C`u(Dwp$;p^nu^sE_PSno3i9y#0I?T4?}l4;TDB4VPn!ygT| zWzu9&mnJEGVwJ;xBh{5YrEshv2z_U%1*P7o;p4eWeGr;##PIs%BBrGRS(}wHT^RJE zeId5DoJ)DW8x1CH$d|3HjVRDqjwp2wBxQtaiu8<^-Eld zBJ%PLdw%^x=Y3qzSf=lF!P?`-Rmpu$Ie9L{M00Lpad{|1e~C>UE~;`l~TAF2?lK6((c%qOlWe8(Th%fJUXFP z3eL&F6&9s7PNNASs%0oCB2eO5kyRkFh~|OP0k1V2A_mc@fwTUX(&i1{Lqf32-X!*| zGm$q2&&nz)~s&MYN%xF#Bl|L~po-iOGSrbdKS_t!DX z%-WmN3N{4T<`8W2BsCV_@=L$lp37(`zW6;N|4nr46B+R4zEmQF9j`Es~Y1;KBJS>)wAst+;eh~CTzhKntZy;Nl)D|#)n$1vc{ z1@);=pmib&eg0Q>h4>hE%{!OEzlT;}gdecUJ7E6_@Bp>@$E#m|Df4h?SHO&e4zOU* z;W!Rvkwu@v@ft2^!PbZVlzBSvWL+o^V_|yh2UY)@JVSj?GFwKP9yID=rY2w<=Sb~R z4e^knIWI@_(bIp`n-#qqQxP{+8UVB2!gIr;!FT#poA63Z;AdH;Lh6OMb; zMbraj9*jn_P8 z7i_#gXEfb++!ls42yKNP;F#r8Pb&ge^rTwNt(p*TQe@`uK|G+lVt`QlOR2D5-Y)3r z{18&vk|{<_ri$Y-)3{38=uf>{7EP#V2NKID*uIJPA1GbhKC*MXtPqSz+K-rt%+O~_ zRYJ?n!mrSB72HGEI|6kO86qp?8=Qv3=1C}RcIB8|?XBts+aIu2ZT=PH_eNw}-!I2* z3lgb0+DUPj>Z9?3aj|sjewymrI&$!A?y}i*jSjwYt^mUm7ukqBM-uO@&)y`F?#4I*bH^$x2M=`s#~59dVejWb}rd)iV!`8~y@W z6SeMnQLeo>CUZ_+9P{bH@j%Ci^kN+(feRLtXvPGjypS@HvAG2C!JouqCj0%it@ANL ziTE{Nl7nwxUw;sIG8Ts344eKOn{(DK&UWqH6(N8nO!s;agNWTzG9`xvXfaVx=%G(@H>$aj)>=Pj0c^qAZ zf-`z^JC|>?$retkSD-b9Lexf~07)fGWHx=_Vt6U{P-MUVdDoR?%)ceYXMyOOGJDUT zA-LJ#M~S(&m#(5c0+(41C-P|2ETO1($Z;6ek5uN;cB7e3_wOh&)7FWq+%T!3`H>6E zccbv-;8b;DXu5{FD+4}Ud@xpx&Jo_>U8Vf?h%$Tcjd}={nPUIS+BSmH5m+q8_l~jY7AQ8j~g|#{3zWxahOX|!y|cp zu14m1!zmI#SHuos=l7%;p?nHFdgr8e>)D2jgmTMEGeWL&~5C%ak^{}m=|z& zJC}1@Rw>2v4X-q!A$ zMG?lQE%kFh{D0`IxJJBQwLSBD1%NV%V|xGisF=&*wapaVyLn+PehUycwjPw^==#%b~4&!2lw^)O%UW} zh?ad2wqkH?jfAkwJ4S~nOpk5by`WCFU-YeRofpV2=G?ge*l1WOWeQAwdmsd7@4sV0 zQ&U`MOdZzcVXVHsRc*Mu;y)BNURo6X70onnU!g2*uB5KgQy6MDCoU>HQ`oAmVYMgw zAq1=790eG&U^bTCK~t1JMo$gFn%f>{o`Au@wI48Qcy=rAALH=XVO2$h2g0|D@H^p5 z&Qp;|)8e57y3vo8k)s(R-V5_Nfo_T_LGZQ`nLPWXyZ0|0dY5;NtluRZg>&*=c-@g! zWU)7r$zf^Wg_c%E0x@GyXAfljHN9NkYG5vFnoOz3XI=dSGkQNL=`VZFAZ>HO7Pm9@gg&4(qzINdZnb7DBDrc8WrV>e_0V-9a1!8K;6|$3foVNwK zNF&7;;E557DXqVU2W-%_5h=%QBX~L;mvXT|!@^f7+RYblTl~5{NSi@+wNQcw$P&K* zP3NX>27r-JyK<~E6yMt|OI6SZm2U%OEq28}u#!0}=WcVM#g-1@Znb44liP2l@%qay zP!j3Iyze15?-j}7cY^Kz&Qij2s9Qf>)j*>zpux?yXPFR&3-gQgH}*`hD)-JPBFleh^)bMUHK1%(rj#IU|=ZIlsvFY`Tp zYjJbPRE4;b?9%%Tzz7q@c@ux*m0)lblxS0a(kaa=2Mbc&r34w?tFnLqph*$)u$8Hm z&GQfoSyWdZ>j^5vTNp{qVB=MJ$4e@7_${==$!lg zSM|P-EVH?Q@VV9suhp8ddjWu&$lNbc?vj8)`@i?l${#Mjt3jb_$npV|MOI#K>#`aI-! z|Nq&4lKFokiQhk7J^Q5py_76Q{(QvPB$iP6b8yaI#_UNW$N<^?njGsTrc}v4_x&`9 z#7zCxBGY7s)V>ewMKkTiCem3+!*kPdd^qw2Eptnu0iY0FSDi`&Annm;?g$slXkGpX z{_|NACA4*~&rjSUJeq1mW@zhqqe0ETb}UrEu!;FKwxdDK#HQ;h{P)Em+dQ3r9`$|q zRo4U>EyhRD7Z#;?uEiiL@0#?Ln5cUK0FMc#DVyP^wdlnfl^J9#*C+E!RKD7)`&8RasTr%I(G zWx)WFF%oPIAjzpO%3b!v=ZQ;b^tNS5?(IagjdzFM_>u{4PX3GQ zugL!35V>&Pdgd;jKH7ErZ+<9&d=s-A=}@>KMw+F1wGwJJlFPT4=k5YJ$+?1Si)&s! zGo+e%;W${RKJ}a(hve3cP%wN`9su+JbronjgKt)wb0BO82Z{?IhK6a z$ZGnP4i(tYSC(X1ydj5s6G5_gixIB%SILU(%a1rz453o%rI3iysdA2E4Q1MZW=5>M2%UXp zt8A}|l^&rsQFnY;hqd}v;mx~omB#dtDY0;%L?!?{p0E;bhf1>2$@f-^k@GgnYS|i> z6G(y?UXX-l+o-p7yiu63-Yx+cjJAy#TB*1Z){F|H#nv@NCWjQOu#fwEIOs_*(m zWtFN|IPNZ{)5y@omnsqW29;`8gf97EBlmI$EsjhGAHsOy;YBIpVc5p#{ralM^GC?vjd74B_u6mk%e?5`W#~NufmrSO%Ts=xSFe)~z>dtC z5RZAZ>y8@=XkVUt2==97l$%YN)DGym(++-!3jDF}=3VgSEpo!1K6$NGj69ZE&*xY% zuyk>%%U_MmQ>NQ=Ykxm|TG~CdwLQL&jhG-H%uOQ#@#))Z7ub${E+RXB)3)68&G&0b zNr@{J6}1s4QbAGi8Uz9mqSW#W(`th0Ao&VPC)0m#l5ZeF&)?$-)Dx#Uv;&yZl^O*iL4WlAa|o$34t= z->M<_3vuimN-UW*=h&=&PWQ{X)xc2)tRtsWBh0eL1{fZ$B}nAspDSUsD`j4gL!o-65I4 zWY92V!}~m#t4uUc&KrPIugybrGI4OKg2`xL*!Ea~(%6A}~5lzbBTppICMrvy|amn|qLsHk_oLQC!0rulq> zbo2wd>~m=!E7qYWOd3JK4=;i#a_ig6I@ie6HD&G8^J!PD_|qH+>UY{y;{7N7Dp}$L zga8dY`WU1;A5=hKyZ8E&Ci3{1Jl?Wu`LdtjvVRm7nNEN9n;uHj^_T-a8+>=X+U2Ta zqpb7kM5G4|Ad4R=08-X#JIsTzf_6(v7}7#mrMQ{7ye=CFjc>ntTkGt9;k<}6zMpBH z4;~?OOM^8lzSd$r0<|k<#w&_LH&rhoxrw70 z0VOX?^AIL2y!=TH-Rqy_jjUEX7DWU5P_iN1pgsy6Pc55;iFa#Wo|88z&q_A9@)P=( z7&vwBmT_5kl*c`ZU>(+D+`2AoLz0fQ)JX7E?~U+4#sdMzIw= zG(*nOdds%u_bO-3;~=+G)~7ExmrA!4?W+K*ncoJ5 z^@jz0$nOtkAbGa5?yYsLIQE=`#0@Uv2fPu)#M!a`@$j0K zEA~No;N8*H90w7YYn9xfvQH%t-{J>s*xYXUDc z9XVN6s7fMH3RqGf9hlQ<-C%IoJLORo<%ZW@v!2gtzsr_PmLreS|YfSuh=LOlD$5cYWv}T)h!$x<7W6jLxq!jc zZqjc<4nS5O{VlJtU_-%S zy*Rjh4-~=!4+}RV2}#PS2R}SrD2uLAcC>h?%)v06=!{jzr{dPU4<;#-FI{cpXGq+2 zvb%ThtJjbzdz1aMz=!Nc*Fj;of~wx{S&GiulncZne%IaN`&-IE6Wo4S_>%Fr{xy$V z=L3{alifFq(~+2cuzI}S7csk+T^FZzlsVRKO?%6DZ!4hi>JdY5QZAF>#o-yJSZ5*A z0-KQ|fs|$*3Fg^LS~mEy!ytc`o{oN3{W5DQpHRrlWU5nSF`{hu{BcHERHD}zjXG9{ z^k6c#11qiRha1L$5HEixka-vn(Zir=jEoVTZ9AA%L~p4G&sfg-<#N-#kW;$><SYj+UdU>OC;>mzgoa9*SVQ&^!(1~# zS_1UO4VJSCYdJm#8?UMlE|Gi4)n&XwK{dcOiZdYeyk9RNgg@RI2h;^DBh2-n} z5FIrcZ6fjlvUlbXZU{PcR3TM=^&?{#P%?NTHX2!~J-)43JGB38u4Ru*v8IY}Tz#dn z?j;X5x|@$4&knqM*rnu9=yW8{*x0XJy?V?w_V*kF3P{G6<~M_&>6+3fmyOLnq8Eb# z_qX?D8g^YL1%xT8O3g-BqX|TU;H8_sTv$WLNv0~x7ru!d`MHg6gZpoAUYx*=eJ@IO zZ3EBGa>cr-1a=mgIU%wrq@(ZruTKLzy*p^-lbINyf@J*cuf0%&+WZ}mjjE@9Hv`4s zK-ULa4IcJ#yK4Qs=ZsD{DFw&Lxt(4JlSVnUq;GW8FKCDYO8$v0k)G>!^69xb#EF-M zt|S^pzDd0vE)EXDv!K@>`GdPIMn-crd8%YXvGUcL8OPj6-bM@dWf|6JJBRG5l^$LD zc1N3yiwA(cn<7d5$tO#R|LVHMyZo| zU#m-s(qUq9LjL{7FV6HHk!|`a4&KL&Yn}QOb2getg)6e=#fzuwx0z*W{Epp=&ZOCV zeDp-?oY8%^xU59mTAi1+o3-uhnaVoFq^&^h8G&u|qr5*a5!a~TD*0jeSd2I|xxu1C zDiDZj^7-=2Hvl=Hw)4V3HEFYDyKXhoxW+!IEFX=gby>&aTAaC8CvGi%EW$5ZK#+lt+SNtjzIOUcPIA}7;trhz2lL2# z{t8Fe1aw)nGqXbY_b$a@NDl+!5w;Bmdo?ev$|>CW9?nTI)cL%URN8D%4FWdg z+5-l(d>tnPlLcBE>Ei-i2M*CA3E~GeU$-o>#(|ewx=CzMFFVerT7t3)TN08gQu2p` zm5WGMy*IPT3GYMZi#WU=r$S#169i|Nki5NZvx{|D_WJ7h?d)gq{41lo#N%qV2<&Qa z)bscZReo)`6_>?)@MGW^1BgCN8dHt=hrX-r)9Q=CjQC$-mnAx74G9pDPaOiln^a#~QI<}9q(;Y-7ZPF2& z!k$lg%p{Ofmtyv8wX}GXIVYk4hEuYnx)32$b zatdFD$Q*C48rWcSS6L>WWy!e3F?(jBgdUduRh1}I!+w?Y}{#_|>R8qL`7rtW{R0Mx}Hts(oPim!P#&!d_<+YW~o z_&r~mLI7|1a~Do8i-Qg+C)^L-c`>+AZ!n{UD+ck)42qEg1SI7ZmJw%X;3ne4!I3%jczcLzyYF<&yk9M`-fDRO{7@o^E}3TgEAVvC>3Tl1X9uKPuzcPgUI zrPh9mbICB%v3Y|g&s~IJNoST~=H>Of?q-kStPS4LB5wJyc>u>sp6^ZEQU!{T3dL$u z*;gue<&?(^HztzP;U;g@8pDS@DOU`hjTou2w-=tuN<3x5cexaBoDZ-G@{?}d;j*|SW-DC_nTT12BL{_{NV(Mu^ zNJujSk)U@&i8l4ODoD#FIS@*Awt{AfMPOc6T1mvcRFic)_M{?m1;6l)j0z*9vwH( zIgJ=cV(P-{TlnN5a1MBO;uhN;z%@3=X>j(FmUU-`5&Drgi;U#3QmFQ<{%ZB-+IaL! z>VEXcnUaIx(Yh}SpO9tCvyD{;)JeWKLsDmf5k2wE8=>GzmI=j%1HpykL+dQ9--wzu zkxf%HXBM}UAM5q>iBa4jx)>vy@I6Y}r1F{RXt_%?EW+OyILP_fP6f6QHJ?c14tPw^#c$l5 zJU&V)dW1)b3Gtz=Efcyo^pcOc<~uL;x4LiB5q_ zZF(%i$@f|9-}aLj0;W4)Yd$;c#Obtia?ZAPvL}Z!!JuY`z!GJ4Z5;t`R8;)J)^oB^ ze=SCpREicX&9d3_cm5B<;e@JfI84+b->7ZwgOY!07(Y}@+TJa}%O}Yyj1%~Vos^r; zT3P2Sy-$a?ammA2cNu)-CMsXmAHXNbzz&k-k5N%Z-eE6n!YGN#ui=*tKb@;*N=k7~ zOR53_#`DV*XbG6G8~Oa<slzr z&q@$82<4*&(oSuafe+#A4kv0MANpZyYVK2w41AAmf76+zaRolsHL~u~8)rOxNrV3g z=^U54>{{dHy{6AfZlsqADJ6Ss=B z^S4J#2sVM{#3qPDd-5ndBZ+s!fSBbVD(7x$en)jeRkeXwOC-@!#&Wj2C6A=uW`os9%zYJ7hKn$x3C2&<%>Me0i-Ied(6Uxp#4kib|K{y4xp+}2w>z=r(CWF{%efH(OLb~-ZoCr=?=vgaTx~Ayc;aGZ<%nVVW>)tX5rXYLX*9HS zm=8%CWvjlG)uXi7{)&#n3G~Q*^cv-9eO&0IvB=30+!c--TacNPy)Ef+#}^N=U^l9D zTWs-?xA-UK`=fXhc}a-n&XVHd6aYW`!*6LD-IJ~1;e)x=)E!-QSAxpuY-(ec(4PH6 z=N)X}9TP2sO0^nX>?q8)sq{dS-?aS*SteTe*a`8C!eacUNiqw+z|zE}FIPBr??-$z zltODFYH~?+WS8ktx=VQ^aV+0C?vB#?TF7#CBr%U70|p;zo-%e7t7-&E`{RWnjN70=q_RInDz;V9e4!zM$?e&@W%)y08U zMP(M+pZ`iDVYSk62MPcARaJFNcIcK@n07$%g8BcD_YKaGb=|uiV`AGjC$=WGZBK05 zwkNjjiET}6Yhow2-}n1{zq)n*g_}Cn)zzIkr_b4Yuf5i@p7pHEj`xhPRC;>3xj4o4 z)P+BImMt^ut=S9==HuSlI%`Fz-=?#9JKR>bz%aqGg-Q{fbJjn0>t*dS8_cRSZf0-W z#o9d}xEwN>bIl}8A`1h4Yba z=O*|K$Q`%`Ne%!(BC&iamG*Bdu}hvw)YE-&kD=x6eMZe87NwfdFa0Ws3|~=|#jTAk z!}N|giCo5Vp?W-8D~7qP(fUoF+OJ}U85|Tb*;6d{j&IG(2uafgIL+%WR@Hr@^}fL( z`SFt{hfL%e`f5v?*UI6<6qXyw)Cdkun$88QC+Rwg^eIc_KoM_9-VY&@-dE~^24b$M z$%wi+lz(Rc5c1y`6T&dAuBIobb-NEBBBsB@_wn(0s`MzBMyq9o{}Mt#xOZjOwRwc- zN7gJ!CYCxh5Oa!?$8q3_rU~E7SvH7fZh!p)ZrtoCDk?}-oc7q_&?%xD1Ml3%!jNKl z_N>!bwqL_dVxHG>753G0uYEh~Q2(o$0*Pg~y2CY?5jI=AFvaq(k_9;}EPjV)dGpk& zzz*)T3DPc8n8=j*j9au0tMJFP(4o>Cke2<*)9I5d1TzG^QjDL-$HORI+gmB3ltS;3 zJ(ZA{s>@_Nwszg3l9I>3=lFgwmRa{}X`v@l){nc>>-xS~p0C++_ky}z?PnF`>sA+s zF~3Q$gnL_31_`OFI;b$2*IP%&n+|~=6OFPIwiq0Bf`LdQEfr!hrQ0dJf$2|ups@fjoS=1unM?~eN9j*q+k+N7GYrKQMgs`xAJh=xzW)3y^NqZ5HhoS!+ zn}1_b^cZo|j9B(H=n#?yy6t0%(Cn!P_9d5x2bbn0czXOzxzZKFNGh3Ba+wqbl^!#H z7fh)ALIetlFB>8}mq#x4Y#(?3niif((JnJ-?8%Wsx#+j-YGP;y=*GF}>&u5%K9I;c z1y`Yu5BRX{uYHft3J~hlfxeobj$A2*zWRc&VaO;oox;P=?UW8srS+7it4R&X8y8)B z854Pb;hS;=Jng?)_$b#isN8Zqz7V_deLkCsRqZ-^}dKk!fdG;KnUaE z?^x}{(G=3zHDd4pi}0WA6^)LE=AZ1?mz@aG{Oa1RzepM`T;53L!UK_HBLCe@pIHKd zv`vdT@oHpn->L(#+J(phcfxf_E^S&VH@me4~SP65>`oq z^Yo{tH_n`;{6_Bi`0S)yT~4P%JC_>!B{aQk2}rUsp!-=ebA&O%N9&MZdpHA(O`m2 zHHDz(>Pidm7dk$StEfovYLy~D)%ttvMe||*r_B| zl$nyTYtMP5{T7(BRGjy5`ef(hxK+4taw#ra9B(s5&oC(&v1AP~SdeoZt80S|J&tI! zf)f3A6nTda@6a&v?^2=sFjnD8RfnNWgkJ1Vi`f`cDZ(ZpzS>4|)3wAz{1%PIGXdY1 z$1#R&gY))=LQ1n48OC{^5Ty)*^$d|Ly_bczPR0&q^X#6p(=f~_hG}V*N)I3!j+{u^ zmnr{sDA2mZ8HBji$;8VS!rVXG-DMfAG>j#jzMwTPoocc+7DK92GI~VUs3`p(fs1FQ zf5uh=nwVC-iqq$HGC)KE?Qm`U7v9WF2A|XPh2~SaOH*zA+3)2zj@+lyW>6q!*83Ax z;Ol08$g&lyP;<9b| zDWXfW3!8c~HR|nitrX2b2P2Rmw|exU%CC5y{uSisX{q>ADsakX9yZO(UmSFvIq0k} zYlj#%TdKN*F4~@GM?yvDB-fOHWW*_*C|Ko2b4dPc>01&TM~21-Rw;AF)c>>z^p*rt zA%J8n<1o_QbA7+Q^Sc~wT{&v}3b+ZZeRtoX`JuR4P1{DGM#=skL2Zet2(YQH;c#SO z848G*_mgr6R!TDKFsR&U9HVHh8&^n$r=Li6v(WW7%%8ABgT}$on5U;$@r84{-JXny zAi!wHx0ko84jQ%3LcYoS#*_;qYwOpFAqGK@LCjcc=lx9zOa*Qc795b}HMiNR5c;r` zx87^6?}J2aM&tQ@^Rkb3R8I;qX=xO7s|@dT2GviTH*$RjU!b#p+?kIx;b&-Pao_uOsV}hkyt?%P1&j$fb0;S7 zpJs1O5vw%_P*I(>wJ@AtvZq{pNbDql{83TVD5(Z~S9%VT`L;ePG}6HvP$3HoS6HE4 zd%*}u?a?WTb`OIl`c+p`>(wp%oK=IaX4&imrA5=W6A`7XU zjw>%jbKl)n1S2ym8=Yum_-AC`eDrm5a}t@=i2v2@dyUP7a`PslmGz>xg3wQQa>e;L z;>R_3+MQ~L#y~46X0{2x53aaVyJ%_J>UHN1j0i@Mj8!6~E*Na1ozct+_KZEN3Spmo~kH^kuF+o^*j1;a+Mg7knNi zLD9aEz?L?bU`%HwlX>4TwjMNTBnidj2&wx?n2K!=z`z6t@g@Je5%qKc9YsWvW~r3i z+|RvlGkhNh+)~uS;rpD`YUbawuBKt^s((gQ&025 z24qH-{>p ziw={~Jh&h-k?+3NnuI8&O_a_;(bqNsh)4Q7!E3HGkLimD{T&UXbOfJ!1?TTmiyDD|5{H*}r>{Au=2QqZ+KHGgS_9&uRjDf0sz~)wLfqgh4$!fuz!Azx&skWPr zEV~(EFZG_t5FM4{u@`GyA1Xo0I3KqATwYQg$m)np!AN^5I&WjuSvJ`X7E-YT;h;XY z&6sldtA0B_aFre0j3tBO<1@6H+i(Z_U-)1hJWoKir*sZ+Tx*Lx=dm*PQh~`FB2y>P!Q0NQ$>Exk2Q$X2fpgAT6=gj6$FK9>EnubRnH>YErwdh< z5pH`qgTbwGy3FMJCbH&1rM(@_$HO_RkE*D~!PbOwL+i>;Hs_&^9`m=RPLw5C2Iu7e zuG@cz9ZHG3IY2FkE%%^uYAMe64`=b$wm=mL8=2kYo3a`(OBmsFD%}x&PriAzRFfrp zDf_zaDw3s}Dn$zo0cj~qo6Eq2452W% zN35+6&v)u&6duMIcdv}-J!;@K^A>O`UK@yngXes?{70E`dYW!-H%l)ZNn3^GZmyK} zOkd#YQN`BhDMjIJXceftLO;Of8&428s|gOOh)ud^TDB7Nu?d`8-*%P@A2JS~?OZXYa%2ir8tyNb1Za3nD(DG1<#omYnU^bI??$tEyB8 zzi#vvuTM5aPv!q2RMO#!H?1QQ<-*8H=7+J`b)KvF+XVK+z!IeTMQs!3Y_OA*yfbWF>ThH2wLT(m{VGfRwvb=(}kAJWR9MKJNNaXxeK!XM}XTWn}#0? zDf4i}VNu=8{)J_Ad0EwE67+CuNB`B`CRTs;(#ZGsD?inByDmf|F=i({9S#o0&FJ|2 zGL!eJkfa%3_buE@o}SYj!MBhL(JUd-I*VC>*-Ztf8>3D{Yf(Me2{>RA_VAS`jf+Du zjZiGFs|E@4YtLrkL@oI%kCAmJL%-00pGfs+w;iwRSrrv$T71aE4(VGVX&_OtmQkr} z&EK1S+>L(S?F_ee=b(FJP$P6I{sz`dF0AUfJuZfn2uVhd>2^6UDMu+^|0!8aU!aup z`Q)+g?6xB;yE?Dty6ww*I~#v8CmR|{Zw5^ScCg5yk7380&ap-euP1k+FsGo%+=;^Z z*8u&?DfkQjWzO5fi??q)GNbo7iMWxk&XIGDIL2a%g_tYQXRm7R z7fuXB7?1HRY@huuHrJ65C z=66K(F=^;b(K{uJ*^KT}e1*Z|p{@C*qSz9Mp#9zk^dKyT*K!qlobTQF)07m)=5)1S zV70|d>*rQ{^8J~YL?#rNgV+Edc7!PnC+iTtWurZd!0Ub23-e(6uhMU%zQu+>XLA&R z3soQj5K(?=$p!H!|Hg&2rPlB~XSb@<*xJ+m@Z-+j;@6FdI^O|2~|PAf0FZM`4&(=~VEg$WWJz;4tuY!t^b z+Rp0aTkVIUf**A90P+JXZr(rkn+IWKeJ6YKBUiYL;}gep9oPK50`czWKkTTExZMm+ zcxS%hiLi+&LEE{aEmmoD)>rLf`f;8iNDKMdJ2Qbt+NSBr$JF-W}}ONeRCm4PGd4|I;8h0;$2>xcdlW*)y#%58V;0=8&ZMj{ZQ=odfo`gc_^)x zGz0rqkB10F3VSek@P3A#mFKaWFtmEK-p-49FqyH0__+gB@B)-Lv>>=e{C;(!Bj*?h`5~v}^wB}@1?R#TmsJbs zteA!{@{m?ra?T0}0U#A*$*NEL7{#>oi^+f0+3Y6rUHdqf^%!#^$^NK_g%J!l^q8}d zr_E|L8dy_xla*$L;dN?fU?HVYpJq7p00$6d8e!HbLO?V3-%rW&aV82<@_fLu70c_p zTnC-Qw#y5^KsE%j8z1q_B(KovdA^#Ki4gMR=!w7#vq(nl+rRZYg_nvNP_s9^-(9W;eLP2oBj!&XK!;7Gt~7 zV}Gwdf29M5Hy2#81&fo7*;lxVy3nyBf*zgjoxKu?Iom>#k$Nw|fb}kEUIIGaU}|)V zgF5dg6|5Rt*l(Rz&ggg+uK^DH(^au`Hv&t%dogm=1(<=`vE_rV3iKzwE=z|12b1%J zAU!9IJ|+}`v*@ID3U@AaNk;vfKLURm-MSvPdP@3!2rII~AsN@LDdC5xKJngWxRPjOl|u!;8uyVX?N-v(v67tGlc}N@A?dO)_JWwm^iJ)77;4ei?1i)UB*_hNH?* zn-=>ULeTmxRWXIbNop=VeeL(EGrSs{$BH!TlJ2$@l{LU24P@bYV3(7#S6;8z0f|k{ zl}whUtX1*J+FY`R5xVbm6t2LA^8XxptnN7w-qdG|i4;Som*QrkNT5Wd(4cVAmi zN5_q=0=n2zQM!3s!r4Lof4Km)t#-hv$yBhEnyRglZixymgw!_1#~)ZvGn5i#EsG3_ zJOTr0s8l1(CYFkhu7AZR|L1w^!%G%;W2%KcJy%yCc4Q@|kaK48GZRyiPMI39#~!Zp z6z3HMqYdIa&(^4;k&pr1;%EWQqP)m|5n_ga@zK++S|NpGm19Uds{$wO2=mO&&foBn z>$uTyR;_u~2B*9EYTgmY_uw6iTe)~=P-uTT#=pvg>gqN%RijoL+bc_aOnWh7*<-o6 z+A7I8HU|&^=FZeL27&-VILh#}%P`OB5jTDR~l>Nm4 z3$$_#WX(ikRRwndQom#t|4TEQs+x)BEuyOnVjCzk{9VbxV)pw+l}c8?zDI2L-b^@+ zbYz7gpw`Fne`Xt7a(-DYs4&y=$ns!lxM4c(1%d4IU45^_2?Fmkg~p0Y^vLT45=p4( zY>tN)fH)A&X!i2V6s5`-l&AxKQ!UU1-`LTT2ia)Wmav4$Qk}?o0BRAR50k<6P1g1m zb4P~=>s({R{X$d_?#-j+6TP%A&3aq;KNGz*IF#i-@BZ`Z2B0VW@jpN7pHEz%W)(vJ z-5CC}J)9x@%7^=RiTvmP7x4u}u>bSbzprIH{{Qa@;Z6V9SN?lk0f0Nq|8>Pp5a8Ya z@3&Nu9bgtzBLAQN0F5j7oLQ{;1S+X zqRF{PHG^B*u_J0KkmG2JqFNTwD*Y`8uQ3Ka8MC<^Doj;^sLG8#_}D$ z^T8|{O-#+VG^yj^CF9IaaQjj)|3@IfK(>L4u78O!9ohpdAvln6%bayMnXPk_C2!^O z``p8iiGU~lO8f|806e;?LW#wgmSENCtE9Oq=x~-#I3F`cGw4 zBlaWir>m?^hI@CT4g<#YW|OH`_N8(>KJ1@~2iR60Cx_cPDO^go_wU85j=yccnHKq% ze#~0;a-wjYWW=d6WUGSn$0<uiei7`;8d@wX$oMp4iY%gvt zC9WqaB-bJ9A8$7J??RbV2z`Ym9(20RNqfq^j*Bj)ikGM9I?wnzu9wQq*{F?v)0NQs zxLK!%4Fn+J^I-7ZocPclo9N8FkzF;uZTa}Eco1THMMpg!Kx}{Rk}h19%v^Sn_?I=H z#fcVT0RmA4=bUrABOW7a$UL9kcbD8;b?hmbi2V6B^O!UioR%@RW51I{;&HYg9t!mO zRBhIx0I-Y~sL*oS~YyifYK z5c&D%mN_nP;Dh&J;6(TE=^HJU=a*~nnlT}q@_u4P6ll2uirHstp+KKCWqbVrg3lfl#`YI?-m3#` z^{#J@*$)~kjPU9v8b?||Vm%vg;1kRlVYq`Ew`;lA_7@mFqSjw_mCZGw`FU~C@?j>U9T7?5s1cpLZbbFTs3O^_WZmtMN ziWHPZ1SVo1(0>_VS)Sg9@S)ht)^CNP&T7@Z&oAbLx{4O!aKLpbY(Kf+`M#O=abG+DR-eje z*Ck-?Dd(yc5=4OW&nkaVy+oO#_|?NrB)U3eIfn2J=N4$p6iA8v{8~kC-R-HR6Uf?I z>zUz@J2sll*LXZh`3Xm5+uw~cM=%K-Vj3njKnzB;BFFDEQ&Z!+>vj9F@QRwtw$UP3EZf)Kk?%nVO zom-rZKt#;DhNn`XE7$y3)aPsL810v@`uaJV(QYx&8npTF)xn@HD(HZLj`X zU=?XFez5Jp#36LBWBj9voj}}MAbjv_{lGeWMr9xj2!>{cb8@ooLeX7dA_lO)O?YFN zLJyzw0bTN7j@BIT^Nt#0f2>fUytX#z;Ht4)&2BSgbmE=Rtpo#Ipx~u_H)Ke(fgH8I zyWiM*6un<#)H#Z-stPxB7_E`+{W38WQtV?yfYGYU+7Yfe%$ zkpffW(;CVql1ev4ge+YaNE9QmqRM2Nip?7K_7(0-10<}1@ws2tWp=;uMS*0+(-2DxusawZaxQ|bzuZ9JsL#TH(bh*;Y3#5j zx{v5DoT7>59LXnf+QeZL$Xsq>O4cEgSfPahrAsn2u@wo8rHSy50T}TF$_|`PV4^K5SmSTmsO(qQ)qLLfI>%*4RJpx2t5v+65pT{pM!Kpd zmNvLZjFF(yDw=AG>DxR9IQJo@CNk6GQ?ktwkaGqGBT1-%s$9fl5%F#Y2D6we@fOmu zz~TeuD4=<6J3n#|RW=nNkIKcOVqoZmx-{BooPK znYRtDfB#SkfXrg$<6#}5a|B-W&kUIuk%qddWNLBS_7XcAPK4ny@WkWeGR$|pjDO!L zRYQk?Ll&6|?E$GfP$-0LZ&t}#%`{<%#6M(atgC23PH+>`_Nx2IxpPt8?t$%^G-tr{ zmqQ%^6Bwt)KJd3JuL*SOzJun7u{o_d zQ`AN?1D}%7`-TYKH;}#xIe=(_hOpX*lD%xCSpP1x5ey)l0~f+M#zslmL{n-|nAFFo zCO%TsOWaILD^m4+u!XXNWFoRa?ENZ$Se>c@EQpJql#*j=+_9^V$wktxz#7=-$p8Q_ zfd~>Zh^QEi#QEkK3I)Yyn8VK9aLbxhO)&=?gRylP09+WBgxnz=Wdk}|Duz}G|8_J5 zb2k(2DE~0$$xWFO-hU$vpoe@$i!{!JU91^v!itl~4DcUS>}{=;CU?aU1lk+&^2Q!= z-yvN#6a^n`dA1WUBI9=n0{ulkPIrfD^3gw$rH4$s952&)vEW_w5^g=c$Fnc73E^b= zcou!I;@X~)Q)e#L*Ls|Mv}3>JuM&5!P}lYSPFpEK_jTFpUu*qtA1v!rb836L&s9np zYe1Zi0!#hw{RnBF2WyJrvufc;qfO z+pWJMjzIiGl^*IZ58%zbrtd?Zs(S5YWoxGBa(9H0SJlI@7^=WZ+NrQ&jaUHjcR5}A-9i3NuK8q)^TRQm2;`|?#e zDM>~>c&R5!UArm3b6#zw14~e`q7JRU3%tdQm|0(4$lH1@B+%zGYZ1l;Q;$9*!*A9|+O zYo8C^a%>jIfEk6hNs@&Lf{g59pq}h$gxTsSQwP~ z&ZJiJ#4aI1qBKOph{927DBT`cZ`C<`L}p~D4J>ZDSB*E+?r-$PwO(_saqh&7Rg|EH zV})YUpNg?haM*0Pt2<(K+Sv|4fy7Y zX$>CV7_xpNKJmWO|1_%|ZA7|l$-I8wvrD7Y4z7&-K~LcPwB+;maoua$*?pj)0608q zbww$RYwxq6oxms*=Y={ew@hhr+wbc46(T>k&dPa|RAelOe>m!3QB&es@srJ3T@ml5 z5k}2qjPXD>l-_$ zDq)1V1lubgM7}0Z&#gmI@z{=OyRQZ7+H1~L^dD4f2Mt-Iq(MHLG3IhPUDpw{0*z)` z6%kpp>adSZO~EpF0MQuj#!duV?C92>yVsW;jXb&l@@HypoM5uRnt z=!E`4u>j5(~}%j$IZzio6#OvG?Ee1h$)M6mBKE0Ed+VC7I#iI-9y+ zL>aWwNK6kkBO3UY*EXstzx3#7&){>qtmytY+*faRcRg4%(xxjot2L#IrIyXb&#?1u ztSq@+2`?1N3w#}%p_JNpoD`ldUK zp<)GYa?G#vnQ2EHACM??Bk%G2J`RDJ`VN~0KN6XZ8z?m4>1K;Y%Vzj4uFkD^oX#eF z;sm~$V;UD^HY9hu$Y^R}WEcqtk{W8It>NY$!^+Q7Gd{xWr&eg)DPlh<8fj6^w ze}bVKo)93Ot5G<2&oO_f>tpIo&-bqNI`{OOWH2i<-C~Nn@UXq}pUrKx?fH*xJN|ZG z!#UM&oXG6Ewp(w*dHU-Oy)I-lwCT+0G2*!)R%|DC9Xd5NE#J)L2)qtL?0CC~7$r?= zIL%f4j@w(9py(?hvk-jU9lvTn-Dk;>LplD!sTBnmAn&+zLTR6$bANs2^*Xp&R-7uK z3Ie+djpL;;P_O)9jUm|AUNV0+tvH;E%+D1!s0w zz11cRofrw5?Mf@aA0P<>^%3L)lQ;kZT~`#EmFdOg4=^wqop7blT$DK~D5V@9xm-Q+~Wg#gx$qnk}{ z)oIKIJx}WA<4J9jJP`l@h{@1%NVVMx7(HIb>@wc_BI4hXPGfMHxwMh}uL$rc^X;f! z@(wfvO19`Rcf;8FW1vo@u*ekQ$8Kve`q%3q+epzIN}9e;|2ZmNs_M597WKt6ELv5O zCh#!EPvReggUz_^O|k%xY-aC^lr-j}#BXM`+SzFd*(L`06hJSursGal zm$d#@rN>CEZz|d-|5M*?s4sn~=V3=;G+AQ;xg+m|n_F{s*(LON59_tv#OUPYRF_|< ztrEC@@m#3Sy58$cE&s&=z?il+Ls>O5Yq#kyT)Z*yw!uh<(*u5PA8V)YQ=$8w{^!jN z*Q%Q9ybdG%+1a13y*R&)MxGkftz16yqv*)MXfo2cIy`u|rzUpx3y)S!D1~FqUvf9t z0w2>9JK`e{23(8nUqgAHpWURk#5t{L3{~X}Q;us>yo!asGlE{1^^JU2PCQ?e*j3B5 z0`;5{ZTRSE;TX6-SKk`_-d?W0_kzcqlCzr6&;Wy+EQlh>djHPa?wkJA?{@1o`d`-I z`@Oyv4;MBIMO)njgq#nhX`g?`AGK;D6K{{JGPP6lGR!y}6k=ZZu4+P)B+fT;mkaH> zr(r1G+^*=^5-j&H42D)(o|b@adWvo}^Q6YD`8HoC9mjwndmWJP+C{1h zUn<`k>zcEAmsmwM`jo4!WUyPqFOv{L_~&LsT>}NqKRcw72DVX&jwC9@Vs=T@FTdP{ z3eQ2;{k&Jdg6d=U73DbC2TFjMbfNI4+i`;NB`D(PB)L;m_9@0|wfsM+kbm++j0j?i zU0ZWcE#19ezxzHveFvGyhs2($G#jsSn_W9&Ozn2tLXb+*4#?JJqotQY0AvKPudf>> z^$>t`g@ff`1ats&9USX1T^Y?NtaC12bcTkIh22m1;A2aoFbE{YzeZ=JRFRKpL8yl-DlO-`8j$n@Npg2?T;^Q!bah@8+x4U_p5|t!rjtU zzUlh+t2jYAv?=?py%lO|f8So3Z=y}`>-cq03E(NyZu#cQ-zNFCf z_um+SA*hCSe0aIjwa@*{)KhJZ6e>12;J1|b$$OaH`^}I50Uj2A{k5Qnq}ZzQxA~th z>oFFJc6X`zAD{cKexO>B73%!&&qrRVQ{&BbK&UR_g3yMu>9Uz#TY&fU@#^c+&WU9{ z=iCaGB6?LpN5b`TtMP3ze4HGe!S8mplt52EhrI^@ac)WDy54rI*W;#}+pg{5q8t^< z3ImN%S`5|o^oR9k&vuV9TPUXigQnAV5TZcSPd&|!5K;gj{%=bTSJz!P{WYQGMcl@_ zlDI;eFwA<@;giiqm*wUAZBB){uI z8^{~)To)h10s}q+TGm|4JJvW)RYvj^>TV8J+mH)>tiG>$P@fJBiHV6df&h>_<7_;} z+#Zv|G%~6VXMEpQ$LVmTOJZ4^Wf7iH+f$yldS7~$Xpd6XG=VB%5pz9_ggu7O`?znq z*}hkWK9`j=v{5DNj9)ny<=Y>9P}f&hkwy%_W(1Uk9?yL)PL4^zH>vW^S%`LiPg5MN zxdb@nK>SX7`l710y>@a^&u6GlXoW~7tNtXwi_qPEDlifc3K0h2={Su0@?S2%#*(+i zo3)>}^~|aeIkUUTdf&0S$$HF@d`c9uZi-RQ^y|X)mxDDe*h}X~;bmQE$&%e1? zU>es)5lI*aC(HL{LO+MwNxYr2ukZLyzYK`fSvdII}HLB0N=~~_C8R){$URBY=M7v}p82opYS{#}~^F4w*_d;Ml2 z@1tB76$u<*fX-8S?Q!ukqOOL{&5(CLzEdtDfpEb`C}g|}wui5J&av6+EM%$}2_q5e zr9Dls@wuFvswfGCG|Xc?le^~UDYP3&cZHJ!Kgr!dBOT?$Y9kIwWu=w*dvoisG$K~% zxJIkj=%ycAY;~*v1N+K`^K}=>D~=;}6bTeimxyIqK{#us-PgRG2{4cw)B4;%v{FI2 z;O>3n2%E_>qNf7~Ozhrw5_tS{lC{JknoTz0hypGox)kZ_RkWaKC;Tfcw&K)D9p~$D z-c&J;wi_DlmfgAI+-^VL{C!7M$K{PxTmpzfkpYG$>Q+d$epB@tkJlITWy~zb<*I-x zVrskTO?jAv;Uocm&hhp&o=^!-5uy(zc{$w6DuK>B`M1D8Xj^vN+?Tba$`W%e3f>M5 z(%@!v-iDHP%{izbD1o*B1ubSW;a=AN%_QkF?43+hbeL&yZ3z3>_=H-_Rx5XI{C> z-Z2kfPK!L=2O67+tKW{Q7>|D5Xeg6xcIvOYZs9MaAKYff$n$>;zFMYE)Pt~bIv&^f z3>x?+1n6H9^qcGZS$_p4W=Ee@MJa?V0XI?+D@xEGptH?f*-rpsf(1ykM z>AALG-(l>g{%3oO3+PwsrFvSX8GX$fTrRi9(RQJ;qE`}n9-YQ~i^QKC;scE?Kb#=2 zr-;z__^^Ik4}3OTS0l%kUKV)hU$8ztlGmWu`@x|1{2P@-ZZN2p@FcaU&-nWCRP#1_ z$-sno0J=Ep7_-N(hZ5~C0-SS>wd7=`ZFYQFygk()$BQ2t{(>3J_G)@sEtbMZpp3Pl z@WjDLdgcZ&EF~$m?)M>>1lo#5J;@@#RCd1ykfaWmxBga1vBjjaegQ)t0oHjlzdP@} zcd*L`1?4RMqr!dX6tl;7hOP5-J_NBr-28A;{*UMdwughhTiNBsX;5eE)R=abb=zx4 zWqo_pwco9^e04?^&lWclU^$uH>C&e!KR=*lWm?R+{9IV~e$JbRN!CN`cP7eXOl(Rs zsAy8)Rf#cS@5l1;0H34M^hI+VzsGe|gALfnQRzSVxPPdDm=p;&?m&^R{Rv87#kH#K zo}Xl5)5m}=Lf8k-_GcfQmMOME6`oDR=;-{~>M8s?iGYO*+!#c}HX^V3k!)qXgu$4ZwBMdxPEUO$xlsvl zJ2vF(=ea(+8J%|{5@pG0>N2zw7~S{+TgSUt&`5SC8=dF;u9{wl!(q$x zIXsPQj0-j&{cg8``0PvwyDXLF_u@^i)HW(y0P8JU?V_TZp zA&auJVMMj#VW{dv>Lm5djB6&=uW=^oC5El(Adx6-tM7cT7p#?)EcC|Jy8KRN#Dw2E zJ6qVL=|BM|R{bk0lnIV^F6QpUYIPK)+8|7#ke7i~D6U8W9tMwA|<`hI+nDUvRO}vG9)eKIK2KL!744x}k`cY#ct- zaQXGvo@mIAZn{{l^i4T^Ka8XU_a9YiI{dwbfNc;%pV{hcICarq>6VkOtI6(mxcA|u zg#+^CVaC$;ZG?f19e#9lhfd@DcS$i<2`vs3>`~F}($kFB@iT*ZS9OicuVM*mhVB$w zvJMo>_3qX_ROJX}x8=aY$}}~Nnzh5(bUj|Dp$}X+ypJKx2(HeD{pBTev5XK&<6bHe z^SQ1m0lEbwV;Vh8v!04u=7GkHJ9A7egnRLWx^2QccR(A~_(_1`Ob8#8L=_ySq@MFv zCRg!GY~?i1GMDvBAXl^bbaOWB#=&uNP>V-p+En^?=7jd=GwMbRMlB6(^=+p$#xNd4 z{40;H4Kow2-*qyd1rWv8IcMKqeMGu*Ff)xCk2M%#Qi${I+g_em0f-5DJr-ta;>)sn zkkAciYV=yIhDIc;)A2UbncB)Ex+lzqpF(jMQJ_o&<0o68!^=q{+#rU*>)vQOd~CE~>HMfr^r0fWNDa>NTs+qXU&kvJ)sE|FUfK z4a2{KJcI-?fBqfNJ!aHtBT2x%_8h;>ACN#K4MqhBy1%((f9VwW-g=$Ye53|FvvH){SRT#3v^aiF2gFQ z@Q8Vbj&eUv`}(6$Vsg8qz?5%JLojiFLJsa5Ql7ST{hRAuOf`)!b|Oj?pGMhXZR>_A z^E^LaMmTD!%IU_($A8RBO-!_WQ+HJ+GVte}-?I09tNn7aW^Ct_05zHP*_kUP)M6o> z;XXy&+tdxRh0l3?c1H}AFJHC)n%^jzU{}K4(x^KCiuo+pn;IfTBiwgF@ko@O^$lmd zFJ%$*zh`-BuL0|ijt7ZAMBe_xf2=3IZmxP177 z%ypk#njiaklp&YBwWES}!ErwV4gfg+ZOGoZfu_g_UbSG@lGKg`I zSlX%~0^pylA(Mof1}RatwVP04TuP1_zdNZ)TWVUQQDWsD{+taVT^ZR>1(y(bRpWHb zyFZkus(H%e<@;lxgCu?8#yIg zsvW0u10@qq_p|JrVrFPv4NXm`XKl@y zaTrOO$I4y<+qXDpKRZ8jU1=NP<`N6eMc=*qGGrQ^!}pBU)eMdtE_=!H>5bduaxV}Y|-{`f~!$0j4~YZT-DHyUDak&iArIkg0^*yy|q2s z?Ptj;BIV@d)GbZrT2K_L(HL3SsKP%;P!`6T^7rR zSzKOPLYWY!_fdKOAaFfvCqJ;yqCx<(%Uj>ivR>;Mh07W{ftc>!)GaV!hE~pXL-Yj3 zNDv~W*<;)b*-=v^31f3`R6yPM0h&3bc?p=Z=xB9z?)∈qEQl;##_{(ME#>cXxN! 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%0DwJcR7Kd$q$vemxPp&v`^d3ObQXtD#5sxMKvN6X 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

    S7~8-Fom#PBJlA-* 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 Xy_aVnTYrD^`vwejAM2pCY$E;(#lu2N literal 0 HcmV?d00001 diff --git a/docs/images/mon_file_provenance.png b/docs/images/mon_file_provenance.png new file mode 100644 index 0000000000000000000000000000000000000000..5274510f3896d4df4820e607d282450c4a2dec18 GIT binary patch literal 108346 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 Hr-UW|(CH{N literal 0 HcmV?d00001 diff --git a/docs/images/mon_task_detail.png b/docs/images/mon_task_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..b8acb327f50bc88f0ab04389a9ba61d41fc68a47 GIT binary patch literal 457796 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
    ^-=D!7;V9R8*KO!72DYxgGyJy?t=7E-5{p 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

    -TM=w}}`sK0}N`zLPm+?9Ulk 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 lK`zaU>*wgE;Q!Ni!jIZ)R5x_ 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 Zqqq7P?Ar@EYX-oEl(@WDxrqMP{{tK2DE9yW literal 0 HcmV?d00001 diff --git a/docs/images/mon_workflow_files.png b/docs/images/mon_workflow_files.png new file mode 100644 index 0000000000000000000000000000000000000000..c5378d22608847ccf35e25d657f7f161d94f5630 GIT binary patch literal 199563 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%0DP z%|Bv)>+g@r6nX_=f6k%F#F0D|WA3FgTFqKHb+l(`Hs9JAsmeM!_*D;f>iN_bqSoEc z{Y%H#_b9CfyoJ$#fwo5wuElgN6DyFUyt;M%K62uDxFKV&92l+^t=@}w z3nr$`yLCw)KoHiODY0s6H@7vK1GAecuBtX2sy)JIvisj)CI7(8YU9%@`8@ND%JNq` zT2QUtaFj_txYJ_c!iKCZ!_fAwFJ*2lri3^wEj>#kwOQiI%C}j0Xy;Re+%kd@2rg^l z&?+^Pk`nWr%W}OAlw4orUk!=~k1I(j=5`DT4e_Sk`dJy@t=>HnG9Det#P&wrcw} z$SMA>B}-OT9@X{Tt(j0)SpQnmWr0Q3<1s^5loYG2_&8*}_SA@@X8{S4{@N(DASj-` zI5{=I<><&@#&gH~+^uwe%EjGm|Fvd~oS7mwRz*B|;)uQ(Ci&vENzlW|Y0H6%%pcVc zUhK?9F?P&TtbE+QczE*IjfJJ_d%qg3|79sVcwKeft*HrG!1UCfIsWLf!a52t+vRhz zvf9R@+B;8rdOPy&`DaYyZ(u4c^&sxyQjmk>wD}aC!$eV@oyXqdXKeYrh(K0-rs zT(sWfhdWYd4rD|ADa*H1TDhrhh4>#+=}N;h(y>UW^$p9~;qw6t3yr*~@2$?5NH7{= zZN9*-Ftz5#UpRxjS`w+*7S;$7^%-*;2y^It5A7I@5hTY~a>gSZpG-wn96+a9Fs%c= zmJA9=k{R1n%9elNVGceq$fq{=&nS*o=k^Q8BJo=r-qNV5bdAXjVLh2RyV&eCr*&Qv zlXeHOV}&yL^$(*uShub(mp3qTV)4AAkaD3wGIwFafCV|OJ?A#?N2KxZR3-%~qQ<`g zu@%SZ1WyRHDOFRbuhk2Snt7QsVTW+=B_PA_ptAImis6~f zfhoZSREjABPog}t3$~`@@)bx@kM8vI+!RgZ7wH-^3KLU4*U8)n{w#>Qn7qw6+^D?L z$S>3QfSZ2C?&aZ4R1XMbptK~b(n2Z3B9~hWfUQESHFAVW?RuXfb!tZ#2{Rr5l8R&Z zu+z?mN&wOl+@tEq`{ka*fi}qIqu#G(DIe4AFopyh3SlQ$z^f-7hx>6-UylI^LK5e^ zbkH!@7O{hBc0%IU>|x6#Z1U|-#Y4><4h&Zly|wfnVK63!NLFwftr;1}P)7SRu+Qvp z?LOGMm0To@Nk?Lf9~PjHw}&>DpJ7F3IJv{!)YHw%xCkx=OMGsC!#t!DQ^I;oPgJ~= zWFr}q;vWh(mya5pJrZBhMw%>$4eR)POo4BFBLuCF)aeL4BSTQQ`9>kM_w>X?hp;n2 z!zXU2O80t!IPRI?-q~{HM8#!nW4AMF*%LeuZ-Zd&4C^={j3@Q=v9>L6rk>M`zi*wK z+~oS`#N3M|Rc~2oJY{8)XWD`LF?zee63YMxqiG~MQ24G-h9?%vra75`KIRIB<9OyQ z<>r^lHVC<;V`-&|@^3ej7-B8LrSVRj?y;dF&k5f?OcUMlKs`y^N}Bx&p5&C-23*JL zqpgCu4ZVYr`}ymxHlA&w-@-8n&j~mnHvaF|cUfJ_$o;q&4ibnq7!$W?SpgeC#dS~Q zo72GL?9utI(p6W3z3>>!eQ-ruw`gM43tbwZd&3TDG_5Q0gXequYx@q!RkR-`?UVYn zf1@=sb1no7(ju#Il9}k7G`gGn@Lq#{d2VupgJ#z>jsBpERNgE^a&Qr=(ZW%g5KM>` z(pg1U<%q++%iD*G_X^V=3(n^VPG3oLHv?Je$UhVEazYsWkh1jf0Ux0nyb{mEYj?vc zZ}rSEA(GUZ^Ws$`Oo?$9(7y)2T*$dfi`%7$IkQkv8yEw;02cVBT%1l$9~TVltT0^s`H*ub6n1$ zKxZD)746ZV`>}eJmE4gXR-S(5QXB;=0wf-8 zuio&kW@R~X`DthRWU6wG0nV6_Cf?!KV5fYcTrH`5*3VM8KYIMvwamD1PTUO78?iR} zXKXDXZbQQz_HfaW?)RJRCJon01`iK&7J0`gyPGY5E(G7wXU*s$_#k5}zq&$>B_@7=mD9&w&CZrMkh4c(8NGy3Wn{r3eu z;?$Ihe-(|#{pS22aBtEZ(GaB^Wb4GcW^lm*=Zj}*Ejqf<{AjX#Cc{sOsF2O`9*n7% zOwe#_^F==cAqkGd6%9nmiNV!T-M1eQd%HFG;7Ls`)HFtm)E12zidEv|eK?jvg<|la z6G30mZmle^0gYpm$cy}|Wc_U>EPCH{0INA0BcWPfV z!SBfrojhrVUg~*uBfFjqDK0(c`>y0>v44AIJiot^%Gq2-IMvn1)Z^Z)xrPUY>$k?_ zm*ouT{D7yX;TpU-MZ1@>YR!h*y9egMHtJ9L37%T}{caU$)1QbFzV_yQ!ls3_F<5-9 z5Krf?;&2C?n^(&6;{LU8jq)>!O2XNfK9dW`0}!@?518NT+DEVNs0-WB%?8O_^g#>C zF91)%CHYR`LU>4}_f0~yw?*XzMD z8tuLb*s+R!OC&VW-yb|YiTBsUu6@^wx8q>R%1HBROEchZ2PlWiDED=}pb%2**9oq* zG}Am;o*o9a#?CYmU7k;mEnY1VUr<`I5VG9&dHSb>lBYCBc2zn*a6PF@o9tG_rT5dB zTZ^e}Oy9LKnr|nqydXMm`*N2D_Hts62P3zO&Lo;IbUm#}@u!V{kV$qu(Gq1k9S`!F zIyk^oFaBoH)eV&m&A#OKA*W+;_z!iL!|0`2Ud}uG`zRa!IiCf3YG}4nliM)GQ|qC-J4tZIRXUX zmdcktFAF5Mo%w)rwJR!tf+ab3UQrXr%vudk7DQv<(@usU)t z`#5(twB=c_`6YE|n12t*2=-Tn(|ay zv8y|uraeKa{WPy~CnN?R zTx!ky(ygB}vZG=L9Q4x(r|(-G25?4}?Vp$%mDtHFEk+&fI?S(lkGf8@+^Vv&ai=tm zc&83a8jVlsDasG-&94~RFNtWS1RBrM;u5f>9nl%gsnO7GFR=13mv$exR_~-x_v!r{ zi#!LhJ5$j*8@Sq=qgS`JAEI1e!sR9@HaCoC6aAxD0u{9hYpOs4CfaY-7f3jO+DRP0 zVZ1~iwI4`-8}Wy2J@?C#KJT={V$TsA>~_i{PPs3*Gv%rO9_5MI68|b^zOf+t+sbd% zfG-Qasc^*6zNVl|ws)r0o#rMW!PM4Bc;v-MUmhbEKyU{7q2aYnQ-OXL(}k(e!|sp$ z`twLQjPc%DZa?IWFhxU3!;4HPUp#crpTlq58E8jV_G*|C`W3_2i4PgeOIQ?N(7AF~EzgVTSFAQSIjD16xw84Wq5c)IOca&vEmd@QDgKxTS+ALDV~{17(D8Dz1s0o3ZT7duDt@kA6&xcQJTyWdN;hqPFc zoy9iQuC-lS(M9=j>7+@T$3{&&z1q~?v`}-hKJ*@_%kZ$GuVPgPqYJr)_UB= zB=L8g9bx?Y-5^tk9m3?~eTZ6u+4>QMAQ8I}(y1O}cJZ)&poy5A!{IaQE;Q;kLn;yU z9-P6dtY{g~;li6oDa_wkIo7-DE0Ni-5H0t6i`A>D`(TCgpSy*Az62?mqSiW?P0{9C zn4gUCF#FN8!{Eu;Kw7enRf8dqoPu!WWo-QJ<&}>*y7Xr0A_tcbN31!OQxGN!TjNiu zlCMm}SU(8JKBKkc25w!6s!GbjvPeVDKhyN;edtGOg(NOrveQR{2~3@KK43$6Tv`Cm zCsUS|ZN8vAnG%RNbL-9m?@>}j{JLLtIAf&uk+?y3Ir*bL zc-zVWaaC;=VXLm65M7X&rHS&!PaqLR&2qP}oQW@Us091DxqRnYIBK<|$;IXGw6L1m)=at{lS&jGU)#dhVZ^yZ0tDgKOl@@_`)6sk#@V8d z=0FAWvhf^WmYi*#rc*&&K)}!H;qBMWKGf2E`kZS);5mCQ-uUljBi-=tI((Vqw?ML> zJ!8bW^W;(bW2?fS0#ic&pMCd2#VHotC`t=+i$COCF~{nhCinBsQthzPAUwm}-3_Hu zk{dwbLJOrrvtzv^sd_iLs4CKPwtMmLS*2GYAcWQ!3pEpj4=I#YnX3?KE^$O-j>(oh zM~qm~zS7cr59vOBCBfI8>b=J=1f4iF=4r*6?{mbkm*FT5St?dKU1}yGCkSHt3pOD$ zsm4BUIgI$W-VnP$0=!x*)q(>91ax);PW&XUw~LbQZdLu}=j}p*ibcIW^&75VpO{j% z1q8%rV~+fomK0FHBJ40O1CmuwIjzoc@54_Bm%t*91Cou?_dUCHSx~m4YM!RZGHv*} zzDsqy5rj!A(8bIEVJ|rw?w`CJD8}zZ{OatiP78CEOK5b4`LoQ8;INVGX()|{W%*W| z^rjWH`|$YHjqse##>0sYt<7)4vGx;ICSifJHlmITJn)*QdTl_jmsn9=8imy%d?&#o ze5ds7Z@w>Jy~D4i9}M5G*oX2 zX60M7)>lItyCG?ZdeUh1=a(^XpdGxdS<2u`&v91|2SRE?ya=8}xws6` zl#B*0E`J#T$%*4E*+L1GSPG2Z+h?tw)ZC~ot#Rv><=)F&Q;|4Bs{gr?~cw<`Esbfsr~q50l1SdYe4b4?#~|WIKNQRi7_`5j_$^4 z_7(xXyTuXiM^-phCt-6P7&BP|P4gOR!|%FwJsS9xdPl|GR;#_pwh1Tn-G2NScZ29A zm->fh41GYLo-FkD2PqY`G~rZGEbTsL>mhLsSV|Mv5pITjt)tJpNt-=dm1zR!e|7gdL~P8 z)>%Z8SA~vJO~IVdxOnoQwsf_hmeSih!*1)u5b1bcumXV)Vrs2<{K)1A!*xHgqRSk5 zV(nZ>7h_CmkpZ7djNEUEU`~X=Z_7%+6bt*4p72j|N3@l_8FFD$mo?h0nWgkvyUYp39=vliib7$Fl9y8k70DdMt2so6tdv|nrbDh6^k@* zFip(rFXH4Rl!`oq>s_iL7xGX@#-^=@+0%+}r6xUIKomL=HX*>!+bA*^?5KgMrYrgy zO4b0!8MS3YToNDTsJ@;pa03(^)WQTm;_LVfL7`!!7+rJsQ(G`HxuQ#eqGl7 zPVToMD@Zd2scY!j`i{0qYpO2B*B)VX?XjXFkR@S7a*-divP`6+a$Y@b7l$>H4eo^P zTL{caD|^r!Kb4z~md)xA(gQDF+btDL zd0m@$Obx!VXknGS9M)fJhEs<_+ey-9gGOK9NrLl%G%UJUYyg)X0fT%9#l29zSbI=_ zF)esyrfVnlhw9@Nre-&HIDwkCOw5Gt=cAYstTwh>d)jO{FF$W*6aZG(m*&3h}w`4;@0{#7W6OxJ0Sd zk+6TU5)qVsT>Hynej3d{KaW2&a!tR$^NXuULTsRR6(NyzW_CBpUt@0_M*nrTp8?7d zr@@pqEHp4s@b91Z34al1Q~x%3pEnZb{t@|4qy+Ydn*P=Pf8S1A_ZO7f7gkl6)PyaA znazWAy|=m#4uTH8Dd6ibYfWuA+G9NN2cLX3rgk{)diaj`DmK73jO* zx(;3fj3)^y)Nb7IOz#i+r}+)^E!?lT7s1`icibi%y`MI0Q+vJ}T; z7n_Pk=VpUHw>bWM{dO$peKRM@S_ZUy%BNuqbkp{2epdUcv8E2fLQW4T}(Ha;`SWmFo*bBkx^xmhs;wSj;I^T^ zuS-M&#LZXy1Ezna;?woDv-5Uf=pxq*&LE`jtBiI zZn4#Y5MTqu{Rr5zEkU^)G||)0Vv9XzOtGrHxzscZJY_1^j$2D<_%x^p&{O1#&_=vP9w0@bJ;V4#);3dMQPnUOz3f+r-R7 zlpw%n%4)fI@x77xZG^3D-rq5m{aSDhfp*+^H2mgv2F2E>DT9l!cg#-{CqIXw`qyv? z((~usz&=fUadGPff?Z!<&B6|0suU_XId!|{@6?#SD7kgw=S!PPI4gVj4h#{%b@P;_ z^&_j6SOnmV=kpuyH%)=At*TC#@y(fO-EnXq)^KXgU6ebTp@T1cxv@%IuXR8{Q-y}H$4MIb*aj6Ln$GjvD0 zsxsb1|KN?suE%cwuKskEn{3N|J&!h7eo$!k14r3S z87pAxg~b3l+5H%Te$CD@Vrb=Wq1~hRbo=zBx*RnIiv>e^zghC!RoIE%j0cgdhPgO& z!_FHh;5Nmc=eEEO5NR2{OKKMUgEq!zB698|&=@~sYNP>Nh}gj`(VZ9TZ{U`lJbX!c zX-;NuTKECDBIn`;y9@V{WUC_9w3;oq6=O7acfA;JttreXnkZbD>-_QD(iRhLPH?)a z%(amCI+4aZ2(|~}ndlK1cP+GFG<3)P^8?42Arraz@wONaOSdMX{x|z~Phj15^DVHy zu|!po8D+~Y)H}jL$Z9L&xyfqx5#r(6opvs`8Lc97dU-7+LbqesXXz2F3Rh2;_+0VW ztAPSSLL8R9G8x*bC#o`ebG1~PtRnE~Oze^4H<+R=sNTIv*T&&Zt?(jv2Br0{x$0}2 zZw`#cte7}VKwVDtGKEHi^-k4P?{=`KsZQBqTra2uV(T$_(#@a+^j*yu=<%rYu!Q@C z%}o6IJOF@>H;X^hAGg21iBkgm-_a|xqF0Ils=k^z=vraFluV2m{O~&7Nrc|NG*P5{ zY_?=l`$l3Y=3wF>G>9Z&LNudne?wDhdpUOzZE*3JYxGZpzH6-mN>=#Z3c72G|T7zoNUhP@B3p*|$xm*itZcT7FJnn3~>FB)- z9G(mtOSN?;G@v21JIZj}Sd=nbwe!62s(b8|HG$|nMQew<%}9|j1~JPyqd#?D+c@|W zTG$ok!|^l4bcH_2pe4vJ>u7-%X}->ACFB^9yA@2X&;t5obi$c#Hk*- zEq=4;QD~umotF+E7Xwdpy{!jY^FiI_gY9QmnBmcf<=>}fjM>xMDn{}8Xjiq?Dm!SZA{f&p0p7rdG@X6VNFTTHPOCNRti!rI#4A?pd&1M%akXaA(5nq8~ za&p7KRT1Y)b%UP0EzI^J;XJ@@AjYcnjo~vMuFoXiUL9UYZ~`D2JKWDL(0hjNz3@I6 ziWbAuKw4&ezO{(#*MG=);S$Ns+le5V_t-Sdv`qBOmjEQhX%3=vCTX3%Vr?tRl3uad{=nPQ0-E9ME@_Q{YLMmyd8}U3??c(Q zh6)4XA0Ds*3^JWMF4lW_V_qF`JH}o<)S$c3eP8nD-Q1w0Oqg9DF`Z7wyFj7mi;2kh z5#(k5KGQO9;mk-?_~ztu=aaD%?k5Lw8W3#a*P9GNqY|Xe-B(qdSBFdj6;-p-PjeW+ z02z(GMPQ`yN#VM5nJOR%NW<}VgxBiqS+u`_=$O!KN87HTfN}E{nB$A4em6$qA!B6; zeZN{}oNJWYeYcy&o_H`AuE~3p*V^*5!WbAP4Z!S-Ez_yJi_tISXi6Fl`zO8@m@W`= z$+MZ(QK8`X01)N}wMh$IZ^J04WV-m}hOO)>mpWm)diQJb zYhZOcP`>ZkFW0Rw5ST(A&6rJ{%8+?agu3f7oEl|w1*o$la0h=!+t0XJ@7!5dYm>6Q zl-?Wj+T0o+2(ZJA05V=NVS75`pOtfLt;F@Hjn9nzgK|gh`%Z{h<9-THV~Nks?EZ?( z8taL8-e7rgF%+H%Mx~^OAc%zXG_#1q14lpb@oJilU#p?fNt@QnJad{G^jUAS0$KuiS3B5nTee}>YkBN=mi;I8M50H)o!gsf8 zNeHgqnGo8`t(z$m27=&7#CIUxMo@Ls#W=M&tvCB?siaD3&3ii?_xMh~>to|7I5{zS zG7Wx5+fG{eiQ5>vD;SR8#wgwk0xCz_B(ud7P&vcD-cAEsaYCc&_XU>51)oK*wk25P zS^c$qaeS3jL{WRHpGwuH@HE%nW|E8S9E5`!Tocx#0TW(s+Tsv_K7y6=%^gL3ojDaa zZQT_dqkTDXX6BHESvK}vegesy_@9v4@v?c2NHb_>Ctm>5?+@7X+_7oe$tv&w0bD?) ztveF^WC@)-KD|2nf=VYxkYMdvYb(2gm~&0UeDoTGyo&5l_fvin##=Rq&m0DZw9aq@ zr`yyEayr@C;@z<@3?P*-_#qA`;-OX#+XrR7zY*%`*@9}O(h7Zsk49 zkETy9f3sq<85`ax4N#Ops+l(Gj|PRrY{n8^18PQJIFkHrZ6wD!BWD^Sq3(%?6^^~T zX8#JrklGnYzr-ey02d%k-h0RdLY7?QB)YmycU@MJtw{ZsEQyyE4)0Ov2@+1Y+^vYN z`*bFquMc22wtCR1Fw`>p@<$wdtG)UR(;AE577yi5O|FV`N@!r6vES`4b*2OCp3UD( zC@zB!)c(uQ_KP0kZBl(W{~PlBlgO1QhB!jE=0GNui;BE zQUgJ#?cG0QmM}j6+` z=?gRle7|@)YbwNdqW{s0T75j2ic`H3JXLx{gmk&R`*|)y1c+w!rKw=m#{-e1=hX*wSbC=Y;x9$@2DH8_Pz>ed7{)hSIFncdduj}} zEZDctQ_{l-rdvyWHb?7(nQYNTeA$}4j_5JjQ^p%jA`+Sg>d9Pge+LCh!8N)9E;=-H z#J^*-Bve!0PvzR8-$c>>;$8oMxk_fPBsRPx@x{izeX910C&)tKXd(t}k6XSUE;^M= zwkFg=j_W_cJ=MK`9bNgF1Rzens|V0bL}yKYCJQj(*i3VV<&>o)z_d~vyg~1u!Hn4ou8im5%m*1^s0aCM#f~TGoXoEBVEouHX1r}@q0ph9M1k4 zYbts)CWLcUPt$47uW$9)wyuiEg_bbv*-{n*9X|ZjYz_M4oW@V*_fjRk=q1LA>Z9#E zG!e&e5GJ)oq)8vd3*$t2XCL|Lz>8LsKpNJR(qXPHR1{V-8yy~%=0h=-*ln5{C&EKi`zouk6g)i%NI%{fl zrlA!DwsE%br#LM%ll%cJ!ryGSfGA$+6s*|JAt4E)1k++JiLhuQ{KCN5Ku7AZnde!~ zav%P&$RXtjV)an0iY@{c*a z#{YHKXV41jpSF>Zpn?Cmk3Jjyzj3F@{~^jmM93ij%*#1j|9U<+ zeu5F*_VnWS?hSx-M1?Zo1g8r}(+`pIykK#^W%>g5T-5z`&dFH?Qm{Ga-%W8jVzT)b zIxuynHb+}G)m$bLh0znHkBAp6)gu%ZileGe2=JNCCQ#Fzrsu|;AXVG9f9LRW!NcrJ z!s4n7Wy$-LXIZ-iG_S5mc+cf;B25y~m>bB)n*kFZ$a!X>(b(S!G#{Ck#2(W{=@)O` zj`rPJPqnJ2K5jf(JStLKAc;z08yD^lqcqc+(|--2zSwb%N#@D{s!sxxbXk$&gsveq z8bTHXrtk6gNHcVbFCidXnpXzKgR7)EvT?mJD7*JG zGQIjMpyJ#Qr4I2i7IIX1|u53vtI_-$2lmsp&i71K* z|I00yH|kFyVNpcvV*1uloUM`EJUx};c>QlKx za_E7NGo}aEM!o%LU2lZd7@iE^0n+*T#u2N{k@~iFLy+e*uR0=BoBe3EOmFS@d!AGJT|v%*@I@Kt^0(ct(rrvgyQtXA^N9oo*}>3#zoVS04q z#xbAC2DWxLRKV`DI0#EiB11ECL3m!#n7fRIZx^Su5>L$<+kcT|w0^6UI*QkvC>Tz=5hP zklOpWWe6p}V|6};y8YlWsCDGCf6G!Of<_ z=J-;A$Y}~M^^K&KcPqGH$8%8u{6~XyaLsk224ZN%zY6%4L|5C#B^{(Fs7-BY^>_Xk zdv6sMN7Qr+;{-GW2V!QI_5xVyU~xCM82cMa}NumCypp8t8j|6HHzbJ_iL z&vfrywX16PsT7~SHKN~}V`u;&GYqnsWo@b5 zN7!lVr!*qT&AQ2&W7b@1iVm;_6YR*IUm;(VT8=S~;OK-Gow;g#60bm7U+YV931d86 zs7HwRf_+U(7#3M2V z*NJ2kiJsM}HR6yy*<4$;xOn}ZH1?t8l&DJ1PH?`|`|v{c$y9J5 zBHh9?C|um=Pq0}|tK{OU%e$|5L`x9ZEKYd3Y*=@x+Y=ABt;ep9xH^3}j_n=3Yms(k z$7tqE-S5+NX$)I#x3y!{%>r#vbaP!e+ypO0MFIdI-WB#y$wG=U6@-JWCm~nZ3TmFF z#od;u3OdfF)UJO!#5U$8$h`T(c@>!RkN3kIdhN+pR)DhD;_&z*21nMjDJ-428k=}5 z*(o59<_JZxWs{#X$&Yn!qt-XoHD|s@ zxXvin(pi6jV&)$+yW9$d&BDDKXABsXe!*3qs`*O_p_!1BfxnRyyAF5FPdy%A-iaF zLeEPbk_>2Y(dN8?cz78&zcKSR@0$=;2XsSF@9ezJ#J_+U9ly2xDzbH6npmWcyBOmLp=y8boYr)}N#Wqc^k7^2 zUcE*~eqhQInKmQT)++$@hf2kpC-FbwYOT9tZ;_puPlMg(?JCr5wF0Za|m!Hp7{>M?B#{nX-iSh(n@7NM{0p;&+4A zmN@PS*hhYL>OHfX2TlAg{aCH-C;x=lb+Eh!Ds=rW&qJ~rtgW0GyfF81=3F~X8So&H zcdzF!SoLK0xZu3KEFh_ zSRtOtfrC4{6WReGeoldrWW>BI@L`&Z1Un&8f)`Ks_oyRR z7F&O(dc!E>|K^z8NvITj;o&%Ft3%2%JxsgZ!v*4STu9nF9k0}OT+}(7rc1XMSa9QLOWK55|s69rOUCkgaJ z=|TlN7Ws3xExTI6rk90;k*xT7`9I_;dU5k1mbE1dFZXlp;oxt*3A*DD`Dnt5=1mgU z-U`MPo}5=B{I4KmLI?~q5g~Dp@6OLuloJ1o1t2z#v%mfXrra&I0Y$`PsU=G z+AE=L9P2UcARdLYHnksSyZza-ssuUfO_e)aZX?n%#b>7W(;eHoa(6(E;*}FVZfJda zKObWT8|9YAGvwSlJ531Gi(V)vM8luU`?Z_*%W3xFV#LAfSXoT5aNhx%U*W<+waCB+Gx9DozX={>V_Ue3lP zi`(xc@Ak}^UFaj-!e=CsU%3k$EPQB~%1!!j!mn@c)OAL%$R1n)Yi+ggR@A>A?yt0I z(;6%ph9Qj!#6!)479I3vzZTSwpqXxMX5`Ofr{7)E(q5Vl=;CgV6b^k1KWW|l_445% zBWFn>;*hUz0J4?va`^r&3I*Z*WIdUG_O5|p1|#Z~1qV!z97T-#M{}IlZ%N#B33$`& z@X(u2lP3=JEW(ovreeUJy*1=v#NLOoSv)wAa`WJCnld<%EMz=wIVD5eJJ}_88qge( zHfEhYy}AZP5AJr-RV&`KiD1KVdN5HVAo_SPOg1%BTI zke{9$$Zusy8sn(W99-;u=N6XTJ)+@EUai~jsBN?VV|AN89{T$3LbTTQjGQl$p$pFw zW|An#>pXhGT(ht9jq^@sfiTeFcJ=P0P7jwH5Z}1A&e2Mqa;ph)Y$VcU)Y`%88tBnwum7vdWFsjL% z^A;XIZO{R0U1Pkrd?5fk3Qo)iwr&cVXnXPXoTqVX?K#aK-YdbhJR?Ze>@?3kW^T1C z?%`p?zkZ%B{yOWNfr@3n=J#^e3prDMf}@ofGAfaHir};JbA;0E?Y>g&rBrLVmBVXU z?rK=8Y$9g-w#?jNtIrlkcGjtCo)xK`9-vJ;He`iL$+UY*`aA<<|5 z$s;|f4Y~7~-A2Ign%T_ua9w!O&SddD2v+!D9Pkoo%mgF&uOq(G?{|xNAHC=x&~@3r zGWyk?f87dWCHrd8O2Z0j4Q+mr&TKb?LT~n|Y6=1Nwls1s?+|GhKpV7_6Vp!?6`UkE2Ll(nsGw zQ3_j<VW+3i&t#)TtYS!{;a5aavwFw!dTv{!==y}KQ zOQ}`Lv}4Q6`=`mOJ3>eS#?6QSOWUY$`u6zL<>lXxEO3`)Kp@b6I^ge%E0S=>t@q?y zjuDvP6IBqpS>d=T=M*!_ID+tSM(H}IKNO1eBLtQglLYm%YUS1xm40g@43CX&Clack z{Ml(gU;47C1GmBys(^3kh-kGLKsF3{(FJC<=M@;=V zWYVXet^qg&rvz86O&bqXzzQa7O*Hm^Vq&`49y7{o*o>@4H-);zz1>o{=MMKcF33o- z9w{9y9JDVrrz_(o zhT!g-lD2hlk^7uKkbkQ*e(0N^r?Jw{?nrvr+y$I(qi}H1WJ6^VEbf7$u}JNvXj1 z3(V}(zS*s>srkz)^qD9{|5RETQNSZI6&_7>ZbxB779;}a?B(>ig;Ir(0+|vr_NBHx zG^qIpFmTcmo`KywX1|AmdV~FZjsYKqy7XQSO-ao?c9|3+k2O^`wqwyRu3_KtFBG$Y z!cS0)A4fYChRmaYyTBB11l2MW#Uzk6zsc}iQ*g04w^vB?Uz!)l(>OsMPvC?W8b}3{ z)XQNghjl`sR55)Mz|DtR`xP~sfWCA$@g;m+GU(z_#~k%JoZ}n-Mn#l)<)il=Hy(Ed z65MG|!NtN=0|mT}$&4UX`1F2NOc3@FdLbVT7f}~D#%Iqny(nh2gi{fsP?TajacAldJ7Pj?61m6bR!ZWDtG-q63B&RH&RuH0i>`EfF-@B<~qtSO_+C; z6?c-?nK&^nWl5XU7laj8n=*t1_fZ&-tez&I20xIy#+w=WeE2YaZK5pAWw31qj_^VC zxA3mbQO3|MQwkze@8R{g1#!Nb_heLNPjJv9BC+#)cr)f26Pj8yxTW6`jErJY3mlg{ z+Jxws^Ne*>Ws@eji)hD%^Ln++9C69uq?uE*29ZPh0oLB`6EUWjX@ zT~s;vIV!+_&X~r9Kaw-*o`d7#T^{Y!+h-;0C9iGe>6m1R+dd#_2Zd5#5z(H=mknRh z9k1XC|K9T%V)`oAfm|ylbzXOludDRj(Cq3e)TNFJz7J~hLp_sCZTRU02s&UL>bKY9 z5FhoxUM{v(;(7f_f1t44=0M_|+7e;(XtLe`{dsOYS9zn+{*3L0yrN=)FK{F|bASc0 z5Loz~pEw7up&)8Q>v+~~Az@NU=4dY>cRMhbsV4rTW37D2)St&7Q;mgU)T8ZK)dECenW|bZmub2ZUYI5%Zi;77& zOonr@e|7vFhc5;{#}zpCWtvfAq_53b%Xc8zU~GX|jbNc5rZN_2KbPuf5IWLzV1W~! z1D`d;2uFg3N+GVpKVh^KE|TQFvX%?~+qGez+`8FjFmh=EvN*s^AY06Qe5SF`5T6uyQY53(v|fCbaW@lY=DQpsOScUY#bYTCH5&%`r4}+*J?0~5r=FLPR!6E#|{&VKaD}>G+kB`vBP3bl8-rsFYZK8 z>$Ar+wf9-4cT-`BIg9qwg$90dGT4L3`c zyUG&|%EN`yhC}T`AsL0FwHVppA=^0g4&b4Am)N1-emK?>7356QG%JdQP{A`mnc-_} zH&ZF+a9(+8#o-GEccyZq2JcAQCXze~AhT|^mbXX~rbtp`@jtNC zp%6g{8^|^+cu_*~t+qUgjXr$~OWr8AyS0>aiK>b5_ODQRIT0?kDloX-hXa9fN-h>I0v zsSFBZ0HM|^TI#r*rUk$jCSvRHjFb+1G-lzVOngO;UL%Gf`8I7i7+NWwZbYi)+(FN8 zlsf;M_15-vC&0$8IerhAQ%AYjMIUCzuk;`yP>J+EfvNe#;ktl|8W?fo=I6 zV&LE$8ghnsPNj|lkrs=aTD)2YLRs<;^bcF>X?ydld{$roBI2f1qX$VXl#E{ce|4Rq z*A7`tNuyqk+rv+iQ^I2fxXzk_j@OfxHaH?1O?aFduP&Ty_Q1NF?lR`7-&r(<3$gOu zZIx8C2yu9{tuaAC;|A?gy50wbaO2%6e10q&cQ%w~2CpZ+D;dsXgUOm*U9lp{Z5Nca z=PF7yqcEeo5`aY=vOMu6=js(A{usS9tz(wGyR=KR;CPjBLwmZ3U{aMscEOmYN;aIM zhaI8(H7@~xvpfe&u|z^BFDdo5QO3anh)%HD#y-f}1KB7Ipy^>3a$&ulzG652fMvJW z*xblH4?;gNdOV{b{^~2QQ#FLwG2gIsTc!0_6lp|Ex^sO8t^4?^v-2r@$8%wDJbSQh zbC%7#29xl+WfMK60AhjH1d&rX_jxz>KEHeG|1vX3O(86hemN?O{_-m*xi)zOBd!cUjt~ zwktUVm|TZ*OvQq)#y?|NZ&@SyK1(2hZq`YE9+cmG&v9 z>qM0@ET=9Lsa8K4)L~s*H++PNdKdUDuEtFVLQH**0OE0Pq@mSw`gQTak0vvVBmb!- z+m?fRNau@lP4DCg*XGdS3PhIU&KN&OVusNsyV5+(o?Mu%k;MukpZjGcFesER}#BIO!PTDvM zl6-?)SZ(kZ_b#vBXdZ-~(i{4Q7M#YA;Vg?*Jh+H!d%F`+N>(#znuW6V2w}{de;y7x z>JWpJ!SRc=DDU1Lryu$>|uE&IS<$w!SAiOsTbo~3JdG|i2Z7<|3lp<;dM$}v`l790;4-@-D+XFv9BdGd7`>^PIBQR--EJatsbO2P5w%DXO>=^#U>? z&1>$0wR+4-)A{k=JeWccj=ETi_I*zAZ9Q#DAynh_xNm!Rir%G8Y5d0*@5{Q8jlmM? zkn4%sM=0?35SZ1cGozf-4hHQGOo769qfML%KbgR}6j9Eks#N5IY8c5LhP(ocnbhE- zWSrsUgQkPllU0*4GzrN7mS=N(#Nc74M1cIvTxD!g)PM`lH|*}k8P>2<91YE^Ohm$p zdvI+WW$@wyU-#?em35ix+W}T4doThtJ-ykW_O;(y5xhu&jkY|r#a9c(VUKK&Qm)@2fMy-? zzR>Ckm%5F%%CtsyXlwx~vtP@j{h9JH@ME40&syC7NUJfA6@-Yr!d=B((<};Yta$0_ ze3SFU=QvAExlu5J^1`a4v=JaGaxJj6wpkTbf+e1Hr%r_0U0qQB8HVD$@f@XWw(&!T zb_o=8v%c1RarxXV`K0U_hr-{62w=HZtBE_c3Wg}S{3#;9vW_eetKA_Te!Z5{O0EG3 zUsYvrUGW=xc4lu+?>!OTB;LXVrjOU)c4{q>P! z`ozrt))!8GweS53%(sWTeZu59QuyEL*e-^JB`|F@w0dm}14k*=UZ-mM@k*LaI8e0C zp;B#w?`qCiWE?iG>TiDyGvaUbxut*bPi7v$ zApPTwZpP2Ym*!l{9VD_-|7CkE#TB?3Bad+BSLDo`&}DM;rOTU}=qomeX|aB(m?7Q5 zN>_5OfiDjwe&S!YM=mdF@IV>^S2R+$wd!6ry_%1k^bvi;#BsOMdf$ZsyDnt01F|(D zVy749g$Xw(cFTNL@g-9Ys z>$?n#xIIS(b?86>yk3@`awdOZ>J4f})n)Us0MUaZ*-yv%f-8}et5RQ~c$Ln3@mC=Oswk>T8s00M%(X&-6Pb34j{vjM|fz1u(h{%tX# zw;z&GF~c!Fr|68ay^(>x4A3{sPF@3t7@2n_%$deqL6jx4lOe)}ya`HiwLgV+$}g$9 z-`rH09Yqg%t;~6@P3Zp}9Y2g1_IQMa0F0tmK#qa=#0s1wdU{)Tu!2ap;bE@o2vyo{ zf9z#~MnWhdhQ|(fGCis{hKV-EUBg3v5>oTV^wzx!uu2HOUQ-1K6`bHX|6u3h*J1BVI#7B|Dq+;cU(D!;GhVom89!1ta>%Udv$~&>?ijDO&N~G5TqH*s`Ka%hYaK&_;-X5^Oiy8 zmgP=>sf~qvBFPK)s@BjGxS>;F`1~=Q(4ELrF_4w<9pU0c|BbzA@^yK?^C_&gCv;jh zPNAt`Rx4sqH3$dUM3&!WkY%|cSCEMzx$a}%FjGiEGi7)%t=?%`?y6kpjCXFj=-BU% z7F@60m}^4TLiC8~x%uDFIaqZ}hjE*v0`q)dIYOJRyhM)!A z5_do$+=>4F3*FTbtvRDsHh5xr;b^=LgBWLawppv4F#5>jc&R7}%Kgt;^Xc!;D8?=a zs0y_PF>e_5!BfmF}N1-6qK!MMip~8y;G1ABxU1Fp_0yfOs{dN2Zzl zd5Y$PZ+P!i=iGFal-7S@4XnGzmn#0&Qj~$7|#A=}4(A~~Fw&UN0`oac&G(ESzNF!}Q#Ie3K6_%aGMaAQ2hZk(aNqUa}I zv|fGgxB=K#zUZ%uo2~+Y_SK2n`TxF)lA)I2I1S6_$MUC=qZU+VYHPGlArq>y0t2*% zo9|&KKOknrjG_;su6!yfvPU#UIa&?%$N9zu6~~tPCd!N^g`bcr(td6-i56&6MnZ>H z3rjZ?h_SotLA{Q)yYa6R9{95V)H@CJe>cO##&tUSGmUe>#-oyux}7BH$N-6>szx~q zQYIye;Yeak=>eKjb!^Q4B%awzAy%`-7&QNo;JnO#osk|L#^ZeDna4|R6p#0*i=a>8{U3ikE9&4}dX}8n^ zKWpK9p{-3~_Q*9-HrJ;xH`~Ju4iVnPf^mZ+25^t&_u`*Wl8Y(-IF(^WVMYd!$Z9;F*lm7>3;#yRt}$+e5lYac6c|(+yX1s?~_a? zQb~bf*L*f5%9{Q_GegcDC+c-_?!mm?-$xZIPdhEc-dAf6JPsK^Avx9I7CC+O$I3zF zypn2;i^EHXm1M#Qz-|4FvpE6pgB2!Ym^ z6j`c5s2;4k-(qf|Ez$QeMdraum!o|)4-f!>kpBfIp~!J0A6OWZN;6K|6T5^}RsYiW z6QFuF9DmDtKitbsXlIE_SBFv1OYe8Z!}qb{`j}Mq{Ox+X09B4>$}g4!hs?nHRZol4 z_d*Zv@cKq~JMs&@ANNPG^Wnn+$K3qH%vCp_Akd`HYDf(33TVo3Gi7zkVwp9ZJ+KVy z`E$2#%Mrh*rkXI>US9NG`u)eAPWA1AS>Vn@J)G_zY`&Lsn9)#^->+4tx)(SH8}7$$ z@L1`$R6mGT|BD6qVD$uY^kBH)Dj2={haRy$$`}((x24{jCNYKI?z?=thE@bwETg^+ znQQTV?Tb}Hs_Yq+pw98fNAT=qMN-lf6NCIG(=9@^jfL{Gi!-+}{xG>Hg)9ipw=S|LeOgz7%+SG#kME%o%+wi?vlq_?8Zc zGV$jyPzBft9xl#E*z=NJQ1>4|m0M>&mVbQnvgM5f2Ir&I7Fomp+ff7-GK(6m=fcad z3$+i(UI#>Z#hfmu-#C?udvH#}boswh{oC%>w`$jk+nS5^V>1^EvlVId!@K#M%AuQB zuE%-f-Tw@Uz54#k%*9AkFMFnw=#{p2;DRKjEePGqy++N^UC=uSaC2>0S0QnJl{c^* z)>b1qJkXtxrI^`~hBJ)A_-1prwVUJj7lYx$f)zVUsweIuc3tP_IK-brVmt{MHiV003#aOc5=72h4 zHau^K_an+$Cz%Q~^3WQu#WKTJlU>w&qk*YQ*F8XVhA$^|(nZgqZm{6rhh6ofj( zewp<`DDX!SA)Z8+JSOJELzd&H1aB&&0OqQjVx4x5EJBkz4ceMR3-V^rdIBeHG{LU( zA}%}oAMI<~uX{I+2C}Q`5WL?emWnJV<8IamwjboZ!k{3HdkW}s#%|;z5x25pUxIOr z9Z&mzsdqJod_4kc+2oJyMgWS;e<1q`biFr!SIh_vK?yo3KF==E4=y8m^=2tJ(z1p` zRodHGoStMPb4j~hPUz}L$t$xI&zH+TpK{2U>sWy2YPmdKOzTP)2T>>`32mkb!fERs z>7z8-QfcaNmMmaXBni!Db;2!DHV&jeU!Htec6k=>rz>ymgm*^FH;Es`XKl9J_h(0= z*sx1IfYlcXr9j-nB6tmZ( zb>Xe{`}y&Ps}U7DrZpq*&(41B5N%%Yv!6qF{9hLopbmQXrGh)*ZjZ+%Y>xIEu=7-y z?)d036qyvg9k7Td%hGxnwgkU>>OC4F3-tJB+F@O|8b+Yr8mBccP-V$hmEx!ZRQ<II@HO)Z9)3$$&2r_DFN(L{+0$ zc#iP70#k=hnMV+?p<4ps34ax^lfb*!lGv6&RbXiz6y0V*<8;XQRNrywdQ=U^k$515 zILdIaaOH@N<}!IarpjUcG4-&x#=&Wdf+6-ix7UhShKAPEn>n$USyZ6`;k0@ErfnvN zQOTIJBSlVpie5BLsBxSPVZ^rf6M9Lt9Cn}jz+Q^|OFKRm(yX=19FI7^gMxcc4mY zFD-C!o7loo+JDISR?O3e=n_Gqq4EY(gpO(K7|P{8Bg5lx0erZWDVc~fN-|Mo*KdY^ zWwL}USIczR5n&`*T#i!aen+pDVUVu(dLD`9BH7#~at4=(?b6nS*`dPa0~vt=cSm?7 zHr4|BW|J-DKe2He&L9MHsfPg7!VJJy0D^h|7&{Qs1;`CGi??VLA*z$8&=R0cLf31b zK6c%^FJ_P$)eiL4$zPNNj>vAmSD?MTk&o%2Xz} zWRm%6ohw&|y-yj%v9gxv$p@CKm6Wyy3h+4-hEG55{e+6YjJ z8_wwIWtQ2c(5-+U`aLz$`VGy$|G{amxtdZip}8$7OAv?UB%_1AB7kHSvFAr7Y-pG= z(g?8gmG$*JzeFfJV28KTU(9@CsCl$exOj=Sp-JZRwqvDJm`T0nhKoBw^gC(>zr^1> zsg2W}(vfD3QxjR*pK)@(bO_Rm!Cy7Q!!BKtFlT?aaB*q=CNC@&mqJc@oA9Cm4a0op z0{zHzMRKy^%e@qy%Jw%aZf|2@DWQ%ASBvlJ(H!Q4W3OPjH@B}p=^r+AyAt~W4d+G3g6|6>S7cR}Nj~^NJJiPM`>@0Siwmq3l3yrh zsQZebv~VHPmY`aeek*%gu1u-}9o zUF%5b|5Kv@&l4Uc!-QdoT`MR^iDMkG#zQ26+@#%VpMos&a%*^x^X*KjurVFGjJjhlg$fvfE zjzs*APrQUZq&J$1!mBox1#85W(sz{2H4@|<9BoDJViXiS22?+~cttegg^BbS4uqS@ zpqZ#mIIVUr8}-Thk%z)Z7~ayY+*nSUHpbvDMOe3kMHlvUvXugHuPiGRTyGw_jtX;r z`t|h%$FRNoUs+y&uOnD8Scv8m{ont6urN0Jd#6rMTPhzh7>aO0Mqk(G1(DXXpD~PY z_$ItKSYvNI=YpNLJS-kZW+hGv-weal;)j^Of0k0Z4T=EYH%B6Q#pUmnm!T9u( zxdzsM=vcT#XPN#82ODG3U}X{yUMqwf;vox*2?zI2l*Ng2X#1^6(We9O4oSR+bq1-` z`!mcRA?|p^l#3oweG1+{6@cM#MyIby>g4_aoiqW(5LxQTQoH{Z^~Oj9FFPyCF74MrKT< zw&mSZHaL}q8{v3Z7u!>0MPg=&VP#@i)Z(#G|vE%P!Cj?u+*5`wxz!M1~3D%o}9Uu|j@^{~$qD z)0JpQF{c@lPR5qDkm8OzQS*L0aNc7)jzlWS0s?d$)@qhpC6~xSG~k)K6yu)Tik}V@ zE*{aVg$g8QMU3X(D;CF&N|KUUSzAGYV_@!AA9BHqn&*n7<~e`oicl#?9H8Xb;)*O1 zrw05|WNJrsoypYp_fTN!^@Vozw4w1{S-ggM$L>%o`a$g;g2O*}MxIO$J*=V-2C*Vn z3{H$H6#@Z_h3G_4RWQBb$A|8!d0_J(#_zWnWPN7PNX5Ww-Wue3!z||Wr?TVW3=oVV zDSB0FaJ90dHBz}*LnQOLrZQ#&8WNG7_MIqZrlSyc`_?=9>%r(XWTWxk>9Kwne4!a; zZxF_UUlgd!-X0U^|2z5eNDsfY*Xw9z!PxqIGU1t7c{nKvpOrteWPbP}S;rlFbUm}h zADPN%<99^3vpp7@+n7g@48P(0tR|qPclD=_bVvRqPf2Kx#r!xNs6;sO8~e=2v)_6l z`Z=dCWLn=S8s#5ZJ13^q(HcfM%R%13;Xe+?v7t5EEul=8>B-uv;24I2`&pq{vXKY* zuI|*Jf?$)={fnK%@sG9^K@2O~wbwjkzdRD(e4=s9?KwR52FrjH5hX zMV_$NnqL ztP^M)Y_7P!cy7C@=!Y>8?X22?N)lSX$M-r^b&vP5TnsS|yVLv=N#c=x!^`gH&{>_n zI=&&NdDykP;*@FgY)`zuzJHMa7@})>^~{#~o*lF4b@!?-GC@9yhpNZp=rr;Y)7~Y| z&Hbey;9EObT zWN?s}8KrlPjoIEV$csYWpy0QZHP~$F?;2cF zdpkna){E1MTw*10M1|u0;tz1TvgqbqqK=L}E{aEX^s2q0{Po=n58$Bc&0A>7?B#is zy+pV;F~Q>Bkl(6W^i_#z_1n~~v;O$H$^jUX+c!Jrtk2M%_C-_g3V7`*vN8VdYD2>i zzA5N>lGst6CgmtERNh7fhklVn2pxO2oe67(-$&}F(u-5V;JXp z7R~=LzWhEx%yqBHoz@!dP!ubTxFMpl+`W6;m3VX0Tc_zVwX?7c{gbY6G^G zkW(gVp;p>`g6Qm;UM@WaG7KJAenXROqPaYaqqg-+K?}Dy7bCvB?h88Zz#&eT5M+zR z#v{YKft%b&7Ezl{c{+x*tNvW>$n-ifELfWyWNRhIT4dDI=gdAoyaIr`{ihaZUtL0^c(J0mMY(i;p}7xb zTjMZ+c+?HD;0Zn%{)S2!wAEt#1V(Q$PXM1xfn=8F(@M5D@mhqHWd7CbBa!w`X9Vks z7Fg}9z>^049QoY?Zda=lPOczsoD9527*!p4clTI2mdMfBVnc-@Wo)DBLUflWtPh-% zySWM_Hki04unt-{xge6aKk0OFCDCqmqc8U=3oWOd0x}iRT%TA=ij(TyxX3Z_$)rIW zGY+gfaD>i8Yb|3I$R+@yaG^d|E17IL_js5<{`AClH_Vk%71RdfjQlfZ745R}#@`KW zfIlOg)~!pw2?=u{M(Y_uA!dwVI>Ep;LCtmIJzwr``+xow9@ID^CM8V^%B@%pE(la^ zYZaCet=Z2+@4EulLKphM)KGq@lv0?(D7I}|R15fRHKI^%nPdg@H^21dh<+_fq#4z_ zr*U(#)N1$h`zrk>bi}-%k(tbWXhV)8O*y8=hN*SNG=q%UFh>H56BX~F>D8I-8;Ru` zOs%b+3)#EBUJZV_Dr(IamTXzQvZ2va|EVm1`5T;#%CTp!Q6fpG`M2 ztj0e3W!^KWl0nNw0Gw=5+=*3+^>&#SZY{)*Jc);b&`1Y_V}k z@)>O`mu+d6619(kw?{078~Cv9p-zuA8fjPyHbmJ5&B`s7Gyxtx97SHJhTe9gauW{OVC-CxsM*L@< zHa_Tipqz>!9RUt15O`E9uE=CmqOL_aVbKeYaY5*TxOn$VYS-5))v(efOT&+^LhS`4 zK1zDivKe2EyRH(6@=L3@&bL>zh51m->+M3^ z8Ck2CR;)~SU4Vq)GLxe!1Y~*I0XcR#W74{r{b^#_K*b4RL&Ct{i7vVDxXBd@RRlM& zWzyI{lCrX`uJoug`?Zlx8=-YUcNeR?{bdx00R4wEd_sKyW1B*|2ecOp9a9b--rdUb z5QLh>6p&8q<7K1NG*_}RZvTFGs`lOglD(wY!ifQm#p*&?7aMcq!I;VY z_RgN?hIXY7YjtrFQGj_wt>Ns%-B8xs`%C7(z!M~a*ak(@ET*Lb3nlizS^^upVQ9Y_Kx`t9G8ujr|_J9eCd zHRJ5ocf<-$fEQ16d?%cXgDh9Q{?RkF6bd$Ku9+NNItrBtR9NWfWbM_~Jrw~dX|8mY zpS1zQ)~oLE?{MSyGBf}jHb@FdYz6WlkrS>zO#tYDF zm~e(u)n-a`+E#&=fJP303X`y5sM6tN%#)6IS%v%D7Bv)bx!=;6q94H=d_Fi!m->!S zkkD(%{^Zso=*^JlBm*LvB`lb-1OnDFc|&^Q>Io2F=%)@EW?w45!{g02u>=fA?>xGH zx**4P0m3gf&>dt@Gzt}JNZePi2B zr{k=SZQEwYw%xI9+qTUW+nsc58y)ms-~XKNoUza4x!!lH##nQXnpLxER@M9do+m?S z&a+11Lx6;5I=ER%aDrU+&HTrzBecb*_ck92fo7Z8BwUgm9u{9|4akD(>_jPLLCRp1 zH?x4b3DyB=)Lt0Xo)e(q^1@R!>z3CTpN*4P$=rrmk5p^~%4zeCSTJaun-QJb@Fq78 z9YN_?BOvyDCC+{^dNV4xmU2BYY3{BB zF9xDYqBBR~FEq*>UDW>P(dg4G?q?9xs5WBS6uo9lb4Zl*X?TbW8c7(QrVxr8U>S{h zv8Cz)#{0#DZ#Mo}oCQvNvc#V?G4WtIBWDqzv2gxR8 z*&E$?xQfQ}56_l$*1|!^)rnGw@`MlR3$Ba7;rSflBAqyuJZV>X23pm5y|9CE*nciAc&jkh|3rxE=m8s8Oy*?hS>)`RgIQ3Qn?XZj`3>522j zu1s+oE78n767p4vnpixWis;xC4DV6*H2&G>c*ix8fV)2+bG0yLG2Mu^1)9X}vHO!0 zPyo^rHynB0mX9Y#<4%l#`81+sv50=obrkIVxp@}Rkjc0m-DKDtY@SwZBcc`E1|E6z z0A@FN?k8oUywUOhp&Dy*ZL*&C)2*mss znL)S%lyNXj@V3%%c_4_UOpZu`)O8v>9*?e+U8RaZz3i0XTA^R|IsNyWJK{}jsg1Mt zy#02{32;#wb=0>dWdHUXt_S*#EyQUCP*rn&OCbfmICE)M{=r5mq@0TV+x!JrP*F86#H{35d{?}wH#_z>89uNAoQE~tD2V3%7 zT}C$o$^q!VJZ&%p5NuEyTdU5#$-c4SV&NbgI%D-Qa1nkk<^cbj3*hKM#TIhHNKI5> z>ZP&-q%$CfBt8hv5JdCm%t7wpL0^vzb;&$~GfyLKVN`7}W4%e+JsZig>7;-%z|}+Y z>|$Zd>V^#*s>5?nWowOy@$E?$L9YL{-4%CgFMqNT{>J*|ez_soXIi(v!LK$@ASKWh zleg{3d$1=Lz_>PhY_QPsQ_IMN2p?war`IEfH@hsL_wU088d8GmK9&_UpPsE%sZ&YJ z#L!=gb7DN66bqfQRB@M#1E>a$Xm43uy+xj0`pEUAKvsb|&+gylLysuCSNI`xH9SM% znP8M}JstUU9oB3w$U>-5#y)ET@)OG|3uzj9W(A>GW+SA>IvKnbPs{W$lE;eQ#K6g` zlXd!y_25{Cb^ozkqgBV8BJuH}>~J{!dWEyU1CM=iH}3Xgei&t*M+bc~`)XN*4WXh% z9F@4Vgks?bGDe3p3vOR6|F)dlvN_&BDRJw_tuoH-WZBhPr)$I-^1m1iqH^9JnYEE% zg8?Lvg?5g|E%c{RIh($$hfKc*AS$Wj{Q8p5f5E@UN4=z;np`n?JMH2~Pe3a-Uty{O z`^(X5yFmVSC$aidQt)QA9pP&*=HBj2Hk4Tu?+6J&a*@{ZG^@RNkBf%uywfkEHhaM@ zfI)AwegjEQzAj685VC~co_{JsLDBHrc0g**Im)M-q-379)F9*s+vc-eLM}kH3vy(w zpsIfL>`&7HF$1bmz!1 zq*A1iaq5>pU@Gd(#^C4SZYFxR=}Bxgv0$E!A|SQ2N!K2A5pj?Ql-K@V16YF05Vbro z{Sg}TLtp>_`fJ{lLDzmgj>H%Chn+_9n`sZq5HxZqCVEm+Gj7wQFa#?aNlSL4HC0$? z8bL!#2WK1Ro};%$kGz|3I378@8d$`r$mQ847u_-3wF|)uG&fn zKMr1syWa*NfCkoC&AFL5-jexnZo<$%<^eZbMOZQfk>96<^(88sTGU&J`;B{K)j5&S z4ZB1=P(qBW_cx)p#~e=aoori78$H(FJvwEm7XR9ggv8^rq3t$w_w(f8T0RL1`NVR!jBV6{^Azh~ucZaiu zgR9c&z#Rt0h1MM_3RPad0;wW5f01Zc=fYa-FB}g0171?#>vHE)imFw-0U61tbVTsbRf1VYCDR7h#|)ePZk zhq3ax8{-bp?S3$Zzd&rz(V1PWAMTc~?cvC;MJ_l17G5ELDs}jAp_VEs%j(72-OcBi zIH{YLPvg)9@RD>kHR**xmyqP|o^(&b!)Kj`$#6(|JXzvG|lZiLFh3A;)SX~ye zSNC54c6O&#(_Ktyb!D_Z;K%5|uJZ?#I>G-FY5dc3dJRTJM^_26v*ch$(T+2)L)`DK z*}sIohiIrq%K*zs7lV~8JS^Do8K?{X1;zHxTuOvBt+D-cDvQH|1=-vgjBA5UpY2D? zD5NJ<93<`Zgn1BSZ!rF1IDYS~lWlKVfg)~PCW*6kMR=pQ!%wGIM#eAA$ zq;Jc}y>%|C0jO8t6KYvX-TUywGh(smY&{=39&q`4p#)FrzK!YYKb+4i8rF5Xuq7sW z4TKidR9N5c(eT9&2`g3YE__c`^zhQfcEEkvf}q2>^@56SUtJk4$PBQ^{OCo43!qHs zbztplrw|ArIZYIqDOM?C`W%O3Y_T;1A?`*Cb}tsblD{d`#Y8pyv#dQ#fOaKXpXd$O z!A-yhz*-9zHf5ayi(&#PHPPF1uAcPzgYNW^9*Qj}a8XSgaJxA05AS6=%L7nBz7*v7 zmqv1&--j~LW=aZH3DZ}U?V*WvpPOE_vQ^rEP5>bZVjS#8iu7O+57-?3*^4og!Wx`` zDe!-@SmNxv~ISd|$7K>3tk4$`=S}z&05lXYMQMhCU3F4^}kH zcrZO^YY4%#TLR0J$^Fn9jNOb4a(7d8!|CGQ5NTL}GE`@-1XCcs0Mv1UR}c{1D`F;9 z+GdptpA7J?F_qx%5Fb4u^-YEHaltWw{3moJSvuZ=LJ@EkkH!r91g8n9H!|jcB3v*q zb%Z0oOz?2205k>(Sj2VxdWN&p8AJYRRG%YlKTt|Bw7<73QxvFeEXl6(mz_bS<3#m921ejB$A!nZ55xWB!9L$%u#f)t8i9PV{o zD+~{kNg_C1uDJb6pkaSpCRz|kPVO7wII1oj%tNll7&1^~ap)LEY7rl4U#GXWwwg*G z!u8L9^VY5L&xglh;oLbe6OPzXaI{^;sURDrpvLO&h7M*xc%i5nSS@%ngkwntc{zjh zTE?pxN^(NpkM7i1$=4gF=d^})B!vOgn5$72Onkx(yf)=DBX94=^`KpIq@tNTh9rwrorwtsuS%ysk)q;Qu}SO# z@GpxD?jInaEnHC@(VR!eMuBfy{z6JUb1{33p|~EF2O0}&-6fz{P-XFM#Mtb>9ETK! zA60Jm?#`2Uz003n>o2V&D`P;kuxcc~LJxjHOeVzG@7}_9}!D1yD z4=`?2NxHMCXT8B-`2(~^z5TkOur}!ftVe6yTzzGS$n13_vnH3fdw#RjUT)7V$fvk_ zB9&Pi9Z=zrg7c#)95y=5EJgvt^Y0B;Lmg9XMoJym;S8A{zL=@P*Qp_KK%?{DFl|Gc z46CJQ*MT3fHuv-xN=ZkyG7@ae-B?~2Iv_Zx95$evd>clI25>ch_u3U01`{k|mn`g_ zkW8-7H=RAu1HZiH$dm`miKaTWNtoeH$gk^;!^^dMG?20hGejL(WUBcsPdT6bbF z`f*@UhGJ+wMqa99f(kfRbFbxD=0CSFSll4UvPC z`;Nk{_HeFTWwfBCpZ~jy-nlS_Q(ADa=$G0l-leoPyZ_GgA)Gn%geItG5A;(pW0A$z zo-L@YC@Y+ZT#3)jMSgD%s7#_`BR$%AN0pazT4JqkNciRyLhT7BNc2VNqOp?mV){LG zbff)AKkX|>N*P7n^x_LWddJ%er=&lLR(9>+!6cc4EaU^*fVSP3OA@t}Jzn_Z%MVH1 z!L?r&5LM5Z{>b|P{^$rBD}#va=2~F3V}#<#4Y`~}TYEL1N4O-DC1dI#(2-Z+A`1W# z=*JeqTxU$$*ey*$tE^RwpLEWc+Q>bBFN?Z)ZfwEzcuA(t_-xw;R?g^FteTbiB;T7GXRHf#%mvB~^6JaM;t&*EXJ5+eW6 zyC{Pqm_0b~(Pkyy&9oS0emK)=%eJtTyJm0hghumW0|}3ffdz_ve0fxiwBlD6RT4!V zm0&;0MPJX`GmuC#hI(U?5|tOqLrqWaUO>!eaEHwUiB2cYlnc-erW12GURWize~)A8 zZe-c({w}@|GUqL<>~W9KQ|0ZXU=A&zd%x?y2PxAYhyJ>%fnTiVwJg}kn}cw-wfN$k zUKjGp)^PLi-}KKYp>PR=dnqXhEP;v3x3u6XxtG&e3mO^?Z1Sr;otGCmH#+toHrq*F zqPph-=}Usma45?*XCb?#9=3XMJRHKis|N$e(cUo}a#z+*`7Z8GmfnM9Qd4u`GjzoD z0X|K-sH96-B4+B`ZnaI}p(99in>P0xew{5G>Lk@GX&x-Uw?x&j8*3}>4nYPT-le_m zZC4AA;CoJCrEX?<+8Uf*ElD`?Jt?nr?icF&DDy=a$p06#sp|Kbcn*|+R3BCm6 z9w3P?+>^96{~7=gya3=>4DjDN&fdP?Fx9z00&XsCh>zwYr1vN2`8s1|_yfublSPI1 zZk7GU?M@K&)kgyP-s9mTr{BZg44Qi7O*S`?4PbTo9DH}gJGVaQANu#FFl#y8T^na= zi#gt3=1Zx1dF#G^>^{4eU3NLF)>+u z+m3aa@3^}(g}}mK^|Zw9e0m=JCufck*SL#l|C+N*2R0fB8&-6>fi>2|c0SW~T3?A* z?RE9-^zDi76BFO`%BXd1dKUMD+6T- z?(HOpOl(_JSe1$fP**UqCMYoTfV(>@MqyABH9<)z7`s*5sWW(}$cqY(?W-+1H4~4% zf}l#KH&LF~lcUp3d1N>=Pro1`0azt=KCPuDhjU)#b)%aXGYn-}YXR%x0anorvd~f= zuKL{A959)z%dIURj2$f#oY}*d<~!K_1h#VSpfWyBGrk+z>YKglO{;waTsEZY zoaOj8#5l8a>520xN593B);S2K{P{X3M5Lbgo|sCn`!7$Pe_$hZSzCDpv3O1+q7I?0 zI{DQBsg=rSb$0wP^|Ju&aB}^NILmi%A@@RZzb-))xZ__`F-sCsUG;Vf+r}9X_ofPG zo29=t7S8=CWb{BLz%L`O+B|4X#u;qUrdrEn1jot`<{CFmC@#of6*{Jgt{GNY`Dxpj zkUg`n*l9~kTC%add`bhu6Oeb5JyF&8a+^6#ByXljZ}}M6(%TxypLq@gqj61DIIIl$^piBMf){w$)6 zcH%Y{lVN$~y` zB~1@gI-tl@oPL2UFRvr5p)BH+s83-)PuPjfsq)9>;GagY=D)YMc$;jo){wgKP3CVKee_6TL zNjTi-q~R}XsRgosJ0rMMETb=Es!L%Le|BMJ3+X@tOvV8vMIjx@J?*iQCKc`@hT`mw zb8rw_;8?IhPd&u(>IdBv&JUnG{tM=>uE-Y`OQ!X(WVy?!5%cC>-0BbR7&x(qw#zao zW~?+&u>9VVTh-dR;f+~ljcVA*IkV@VKYmYNTRTDk@H|~9>`yw3dx7V@BN-9*#@ldw zzts#c0A8;64y6q&iD!^-4jL4yk2O3}k-)#MM1V*|U?FT^+_J{qG=lpo=Kf&z1Ds2% z9ntUD+(y$(TH5_2OTH|7BI4YQ=6JT${QG(JggoI+)Wo{`RE#2M7xt<6B&*S?M()4^ zuL|rE)8-2}kaB1}I+lJ%Qng5SRx!cZnQvmC`dDr`L^ zx7V}ZATO52tM+%s=GB!oh9c!SNca2XZR;udVyGn!PM~(rWJwXHSfuFod%2boWDupL zELQaGw?soF=HRxwp&TFsW6TwG(_a#Co*lhr!fVc=8^P$Id(|u^?c8& z8(D&f=mg@#E6Z9kMt*Qyoz%$_)ljqLz)J32z!lIyy(Q;K)g<;-5=|AAr7XMlZBN;C zPk_ThtDD^`F+5+G^2?L)MLa_76RhWrH|kkWNlBZ%+2dRl&j&PPM-TO&BRw^hrjmGX z$Bh*=vfN>T#5zOHw3+T`4XHk9E__(Va4%(ZHbRHP>C`C}>@DH`@W(|P7r zM~#Ucc`iEIt?62ry*(M6MY%`4=KwEH{C{#s?@(pP4M%XgnQ~(jH@hILmbvBP3aGegrs3f56$FYEuz0;oA-Pp+wvaKt+W|+PlHmEP?R=p_GHD%OCK71P9N?fYxJD9E&)nci8Ix2_I zxggt!{bNu&RNG9L9&f&hgOcs}07v6{ymsb+wVdp6@~{k}p?U8FK}sDEmQ22eyq`E2 z^Vak9+#Bv(kVoy_P@ATR`Gy6?DS1r<{D33T8HP{ov8`EnmQk%Y>cN_-&LpDW@B4mx zlm-vR!@mY{tPYD;zM(T=;NRwOxj(SwnAZ^$VUADX{cTFV zrzy8J^@BIepVLQ`HQ4i(1<272xptPp9vd6ibH^&Ec6Zrleg=%x4ZmG1h2qF=866IP zu^&9p?VCOcclDEMXOCroKkSOM)tZaSYW{fS`}BN)(d)AiXSPw*$~NXbmL2YJ;c@Vt zu1ni|A(;H~&RZXRHn$r6lh_@`%$NhanpBgRzQj}eafMfJ?pzW`v!IZz!KORbpqbsWe?3{$IC6Px%J2UN_0|Y$;O^jq z6_f2a_GA&whq0rX+CO_ZjxiE&yztZ4zw!!3a=~d$?)lf80{IOvAa%2+qq03D9xXG%W9DRi zDRY5$#0oX|Cv!PCeu%R@_epYEdg}6sU~SWt{mY?wroXS4D_2;oh!v)|i9bgY^_*in zI+&VZmBAk`w`V7bL28zvC5KKuA*DuijC>9BTaMy8cg_-b)9r`;>eHZk|e7l3yw7bdqR=iqb4D{s$QQ+Z16HXCa_;Ql z(F{<8%uorg7g7hOi9Je|ra~lmKJPWBD>O}0OrPxCWrBJCXz0{&=ri)3|L8dlW)Xoa zQ__~1ig@o2KE9mTx4d#ZBV`R?eRNn>={oW9az!vvpLtfe_-7Q_`h?5xD94GK@kP`; z35CK?u=^&K{YH99BZ))`YQ?l6t|q2%h2ZpbKj_;S$-6T$Y*nfT6T!cbEcx!Ad9ZA3 zq-PG4V5n{G9t@44&<9`7q-RP8qjbTPNhp9WAn6CIQL+HStkTpj0u`5yY=y8y`)xfe z1u--MZv}HB==^UYdWzW^Luc3_vXJmz6^4%A=}JZ=cPd*j{siZNbV?X4R_U~%Tk5x0a3{#}CogTky)Fm!~+`<2OttCwGDcEC~`@}Cj}vF=W4 ziP`2CI~S2)a4&L#wva80VEVz;thgxN($AuZ|HOieXqwLj>Tbi$RV`>wOzL81uV?(E z>4>vV8xJ;Z)&Z-;+!?bZk*~cw3i)e@y5mQ#S+9nSlaJKTiu4A~`Ulbv)!q*h3>y>p z2fOpiM7jP^pRTX#vj@-Rg2_N*`@ap4f7%#wI`RedEqn+ReSXib!BUe+MZ{s5U1yJM zHtTR~&PuLdy1KL^`}eBG0u3Avnzy~W%gvTx%&&P|bnrQ{$RB1^-~X*C0`NK?_yuVA zAFyxlhJWyF%1DMUPI8w+N(21y?q8EE$KF1TJ=`7ox1SMmb>~DOa`e_ka>l04);b`v zZ&;hC9nR+XFgqo0Zvaa9ewzHooL>LU1%T0HARRM(z<;ji*>ypg`%c$C@jsPR@MoUe zX)jw+zF4zmqw6|G$VUe<|jMDZr;^!w%`~v&Wa%o9*aL^mM|1AtMpE1!&Wf7_b3^Zx4v@WFuaP z)pQlh(t4oF;+QK7@|>L%K|D}#QluaB6Z;5m0bNKK+9Acse;~S4b28d=YgQgj37Dz> z;D)S9gb@>?Mf>NYLfVoNaCiM;Q7r#2^Yv5cI0gOxDV{=r4uStq2}Hg9e_H~E8yc5E zeu+&!`Qh7tp+voi5*in98>Y-yWGZgd|2Er5s8nJh&VNfGX#M>E8&!w+zfpDnr}Td} zX3_uemiQm44%E!BSug=Xi%;P}S6WzaTAuUCA<1@Nbj{0w$b_FjD zwWn|_ z2%I$pw#NT@_Yiy9fFl-xmI~01dNW1jIX?_njQ+;+y67y_l&l0p9=q^)rmB&v8zy<# zebIobYsqM8sim$~>#~_|?V`^Ar$5iyff%*5YBlnclSB@7C+qjb!#BSZzpV)qZKy6s zNj8?`7%oPqCe_%XSr}2>yw&!)@ecwXY$^X(I4^hV^3*C8_oDz{#h2bn^=JZDZXQT2 zq82vPWJ68L5O-h1P`$A#ck@e4So*?u{9H}%eEEwvUASd7H@ulE$)LE_hlBdVBSS-G zBNdsTxTuq*%1x)!obNMxQKqy6+X)3!;exgx$PG&v3GuxmN50%G<0czN_wOZyz2p(M zmY+$(k!m`Q?iQws&aBeYWX)LvaK|q;i6RQ7iK=4m(Ch@@B(EOiJVDpxejy;AtaUjV z08N$XiBt#b7a7tW@6odvCD9yNeGCF?VBV{{i4sNMmHsjvb<+gx_xdCmfZz4&`+PTb zA;Z-TcYOk;7goBeDR4Lx&A~flVNRDJ4N=QV;D!{;^OS{w?%0HzeBU-T1ub1xn>$p3 zC>Q>YtOFMEL+8=Cg35TYg6V){{Pg+|J0V5Zo|~P3Z2J|OnFs2Zq&*YCx(fy(s5Fi` zIzEf_g8(~K4Kg7M$U&YZqJ`@HmNTvwb7JM3OuR_Z2M>EPj^KTjrs@iH`1_%`7o^O6 zSAz$gee1!Yap9KOYlSZ)=Y1*SQi`#Dr)>D@2Uoq3rJ0qj`!x*Onli-y;$jJ`J&R? z;#7P;;T|bja-`yywq`K%h4pFQu$L{Ny!TJW5*&LJ7V?*r=KiBkHc>gYiS1A79ggV- z+IMR>Q6x_~H(fAup`FM2Gl@cO-cYx*IkM#@u{2dJJcfAf9n3W_Yxg zR#N2D?0R1Wb#HmbU}&0z!}p?b8v@z`W9*YA1s28OM-58!!!K=XZ--$s96<6w_7 zyQr_Oc`i(!&Qvu#MdsDiWY;PF{xG5@3w_P#pceh*pD9e_w6GaXYw&M8 zdvrQ)2!k_keUgkElmr?G274U4JF4v}sEX0H?6jt7dhX>+0{Jnoc{k!QqBYM(02Vsu z{*VgFnA&U2Wt_A$Ep=Rzd0tc5esu5RX0rPB(wV3dipZ@_Ct+B0;mx-1S9a zhs5*!b_<)$QY^g9zu2q=;+3b>cCej}`^f19frXH_5u3?r&D^zs&h`^AkcWt_(~SI$ z&SU!c&+)+ud!ODgePjoo=chN!%H86NEqkGLo5m{u*7M<;1i*lg3dC;zPT`>Qy!LU& z_j+ZKNV&f^+LvP!$SI@=;dNSLyCx0Jp8bmDO&m|S_OgZc;y_*WnDpQeJ9m&D)i4M48M?&5caNY@D5juYeLEr zGlzz&*A3+RtatnkP}B4#kQ3?CrkB_-_B~Dc!_R4KerqYixfniceYrCWgyGzEQly9X zoB2R@YP>tfgTVryj#J+rovpkm=(uV5dcyvwV{u$pTV?Tc*xU6Q)Zuq6=f<1Y=M zmD6=l1gvO~Sjhm`XBK6|@f~V*r+VBMCqbY`mrwalZanH-K1VHE1=t_ZaS~mW_C0YU zP7Bbr;NE|ei3UvehGG#pH8nDQ7uEB?wrx!|oZw9o-h zZ2st-I-dj}{wK)q0~9Pp{1Ska59O)*%%LF1B=6*f!Uc3EX)DX=aliP*?byk|x4^Q< zi>q>H0Nd28<##0nEpoD9*4H%d{^IhbL-PQ`oJ<_L2&E?Xa>d+Fn2*R;x5qCdaF92W zo%Fhspa5J=o=gXy6}5YtCLd}O(Sk-{7K}pzemm2@<)?Qb5qcp!y}=3k3I4_~VFU zUW-Ve%f_P{4FB1gFL1iqMR{_F-bob|d@!W5SNM?`)m}VJO+LFg7#yRGh(IO)lI;4r z#!9_gV2)e9yCnFbkw>(%oLp9Dm0>i8PNfz=9UoJW4$vO$NfHape0e!I2TrLvD$Szh z%hNr{EVWS0>T&0AYgk{rI`Ek>b>c4d2p3A8gx_PEI)V1X>_Na5spF7>jE%&hD$yEe ztD84-Kz{u}T5$n0SIp>w7+13Xz(u%p#nFPgCs%WYAOhFlyCIs#2Eoi$Y_3x+t`H_j z&)?+$2HO1zvmf-3{Ow5Q?pz=T&+_|oY4;m2p+hXqSlA0APS& zkHW9ty}cc7T;{PodSAJSF!mRcsG3Trb&#imDVuS3#vFilN0XFa3$ZB_UwKe;tnZFL zu}~z;QO$BvCsp)iAu})sr3Bex;UwQ!;1{-u>!P3qwkN8wU2kUdeK1djj2Ui9l8g@L z2pye|3dv@&ien$F@jGv16_x`b(e+(j>oW&gKs_;4Uz()G-rn?8tW{|@eeFlibQc1V+ty-+ zMh|H9Dw3xKlsqc1*h4c9-?KOKpsUX@)kMJ*G~2O@xwO@}6Zok^J4XhDVETqPr&^A! z=}|`lG^0yB>PbW5Ies?FfTa=Zf)EpTHZZ^;vAAIN!<$r>7fq9K_VPuwjDbI1Fyb1l z2z*^LsXDlE(!v75veM)A0);Ba|0BR8tTn;b@aSzH0aOkza@s-C_!=Shp{X;OP;l3a zwVC4ZF3be~<7tlKLhhtw3;1nG$LoG?je_UtO(09PUndH#exOLpcZ)2z{IKf{vm>IV zs%R^UJXc3PDDw|Ypeu4AukGij6~;}yp)?EQzmWhqd!%+dQjeg1A~53inEj)TS3)Hr z;xX(-z3!-GJ%O#69fn41rzRKA8z>q*&Nx)_0~iFoN@q7BPXD<(p6x%=x7oLA;3=sO zJCFrTd_gz%RLkJdY_WurO`iDG7q4?T=3yrM;MME@40)I2L}PvR7=2%D$Y^ zZsEdyL4!XaqgmGit1YIiaKVFSneFZ2r_a-!ra?`eQTAc46P7OSA{tAA_#>A&XAQMG zpaxLP#ZJfqWhhzF91<(Nfgz72HhSz{&4F!}iKQpkIzH56wP6Jg<>SHn`oe*5#;HD( zo>!|Sx^0SQlypC>m#?rp=4xaoec&CS*13eNe|#4c$bXLPP`Y&)nn;US6ddgn!$Q=$FFoW=&= zVl_KGv%WAQ<6DIk-&@D|%7u*E5=`y;0^=bLC`ObuZ}y^nkLhVmCrdvl9MhY_-Q+3^ zf{izbs|VlewBVpQ9KF|}i;A<6XfR~bS@H`(yINDU>2x4qGze*)#o-|38?*zguM7Y# z@Yj+X^J;Y)uu*zExnE+3M8W4Tz>`oK4H+dmjG6xR2H7jL75v)7`fAHrbM~_4ALQ?# zJWS6*GjP}omu`h7sImiiDQzv_qDR)@n*uPyY?H$BXWG@Nv(^Cj?4z&W{o2 z2Elm5S?sCwRqiF)$^8uI9&}HruQjU=owu*iA2)Q^1R_#Dd|31(O$mB9-ANsD{L%4m zk2J&P;(0idpGFp~FBr^c*pIsD~Wtb~~%V{BDsT7;h zpCk_w0h`+MisH1x2;)KY$_g45M-Qlo@2fw|%G=2mVjrh9Q?oPbhl$tW(q=aqN?2Y@ zYZ>~%nn%}R3Kp+8Quts8cIQKW1!45^dh~-RB$}i*NFjVSu-g3AnGuW2HHY4A4a)6A zaLwf>sU8yEBc5v;*3+e*^==gUhZjqpw<|(akiMiEseW&cV`vNCSEl98%=J%S)#zwQ zPz(ys!Ij4qfd^WX^SUc%BF>VaJ5IS6yn;&LEzuLOkl5o&8;BzRzQ*c{hbkEW^pM6{ zS$Ee@7Ola~@pNS&iTZU=7~DyYR8s>esab4u`pGW1767DYh4W~!t64%Pnp7np6cK?Q zEp;x{Q&L;CHP^<*EYf08QwZnsp==!i2_B?4Aw3K2V3GPldK$rG(AMuds$Xb^zCXlI z-FisWix%B+f07Hn6JGuUn57Z0~ zCU0gqKJv4hOegShc66qmPT!>3Tfp*hL%0UtV#cuemfq_YK!40B;VcCH^T3INxMX7T z**9ma)Ak4F%aE|J)mC=i8D{4Kq@jrb@`=OG$QsixH@xH_Ro2W)uP%CBV!o&=qzkv_ zFRyl`FXmjK(A4lZ4#?e;UcU6;vJ*iUydAZUHTGYpZKT=ml(80M3I|QwJ)Y?HFh1*- zEAbYRK@!6JJ{X%ZZSz`e(bT}brFEi};(*Gucof4Bl01;Z9Kk`D^9|k>QX5yn60<3uKYlR4mTM#tMmO=O`{yM~A?Izn*W-&=eRHT7 zt{_RKNQB5Fd>^B|bxcY_C&F%3-{V88!{sTk2>)?S7}Cbiict5J854^E!Pu83tSlB8 z=2*@w4WPB*+H!VA7hAvfP@HJ!@x`1DUiW-#BZTIG1PjVid_G)%wyWFg4PG7$==(4u z=!1C#y*IsiiNl^QIDHoHgZPME`*;I6WPI!-nz?p!Fpwsa58Gl&n~H$FzAcVMah*H3 z-8ghEaIabrslNiNYij>@!Pd+NeD+#TATHaxT?)WT z0qfjuJhu!=5Dez^&l@)6r%v*sguz}+_GCec9!g&7WN6ty#D4GANNKi(gaa*fcWzpl z_$r>D3t5@$DU^8{nz$RE01OC49@*NSFGPn8QO)EpsDrig0TEIAF#bxf=A>`2{Z$rj zEHp?U=_s*_vZ`!GkLMF(Qo0M~EO0ti&t5EXqdO%Co!ADo4)-6HrYTNMXA)!2A?2xC zS!wNf2<<;d8)3QJ5erG4ljmPE{58BTp!LEPkJp1owug7YKwcO`1b5+HOyHw|lI4q{ zR8D9oLdv$EhLq~HxXnoTLR+FETVsy{tC|JnjQpE5xmd(AT%1Z=NwQAA)_QW~sf7mR z=UM`}+7LdyC7|1BCux3kC3R7j@Q=@@-AFC$9mIx15RAGJ|GiL9==sH%Dy#J?@~YFD z7dGq-tYoz~w;Z~^8d0k!saK=y+4Qd9Vd)W{Ge&%{;J)7NQhKlcUC7AZpzf6MKdHpD zPT{UL+}#KTj(46C7s4i@?%D6wkj=2|ey3#}Ikn;iEG8_$zmXiD&j&w$2_J;(Axzo! z|Cl@8B$$8Lh1!hBK32B3bYQqUFxFH^gIHc};>Tu#K{YfNx+soCu?WB%sPla9ZApf> z{Rg6BeX-Sl58Ul+#-mmp8vx(cvv4bCwsr6F!$&(80FWukMUU`qyWBcfJA4 zpVnQ)E6v;p#3`GHNt?hy!_Fy zIE1`^X`>o&`)}|RIpx)MaJzj@KYZhJq2)4VJg#aRg6_ zSG{Ip_a{7-H8KY^a5FNt+V=cSwK&(|)otraFliiL;TXP!e1Rj|=4XufJ4itO0|Tp0 zMK%Ky-Q0KGyS1y40~gC0knuw~LW2@xqKqRx^X*E9Voi555n@#o(Q_!0&lPBno5+20 zq~C1vdh-E3?k25nYwDj`p1tE#9f+H936nQcN@&i=((w^LpuxN`uL1ioa_A(8FP4PJ zmgUB7A3hxY92jUq@FQg{FMS78LsE15!%`(+gFwG9-RHQDK0@aI^VpOtMrM3>Cx8gT z4l5+xrA+O?Tm#1~6dn@di%MQ{3R?27a%dQIbFk1w1Ulbj7UTwHLr6GOimgS*0y`3f z-FX^@V5P}RtWF_vma4si2mhEBOEk6%biJ0!F`7`v)+IfKRU^O zZAiGD@hrn-k(J1?=|MW&YfSlJr~&>@Yev>40@c{l#~x&V1^WNR%qv%^dt(D^H)eY^ z{H(Z(iWzL|fTQtT$xjz{fXg1L$+ z?W=gQxa*}(1KpR8Qt&h*&>SBG#J!2@I*RvOl$RR9V}u3|cWX};I4VVfBI1;(E7JJH z9(tm)nmuWQ{Tz2UGh(mIHS}xlr5`|i$U?2 zxib*RsJnVK`d{q5Q;=jq`|aJfZM)jGF>TxKp0;h<)3(iNO=H^jv~Aly_5S0$=R|y$ z-}SlN6%|>rGh^p|DxbC1kBzO>Ww7tbw$<|XL1viUbX=IK?O8iwwUOND$V|~^?mY~Zf%}{bIIaTN)I(hD`@A+#8*pIFxhToOk+!%g@hQDcS#kpNZ*dKc zfDt66&Z!%s+>$L_a&D~6xthaGO_a>@395`>e;bgQE#;1x?{Iu?*Me|-6tBmXaiHUe z8571=chuy%WjLfeLhIPD0|NhKigb|IDu*koc&%pNcIM^uQkgKgo9lDp436WL=RA7M zROgv&?j2H&;!Hj;egVn zgA+h#RkQA~)jwWy?ZpB9!0(1>s*`igSSosNrIWQ{Dq*?PBn}HmPDSls_}Ebbl^d3% zxB6!~3(kE(jhKn4plGP!05W^dj|^=acRsBt)Dy{mKdjc7W;NPhf|@K&bWACL~)y@%jnoVA2PKj|qm7d-9N z59gd~_|@MzQ>$Gb9LjM%*;d+aD%#6`Yu>km_82fPT1`VFx87|6jMp?Cc(3qB2h!)e zmgEK&@n1-DKO~6**T=d_yK-Pfe0?F8U8xE*dfvNp?q_}6`Lr7%Pyevsds*{)wDNts zp>R-7EI0MRDya>f>v{&1%tQgZg~iU*<<+YhYR(0#DZG{cBKgOj+teTl`?fYAaX@7@ z;NKcq-!X6#m{?qB1+#R8%`1ey& z-eRroXmRPIIMr>0J8!7Yb!%p4k+91OcikinWhWN`HBnI{G z(UY0wG(I73H?^IyCcbW~>lB>*TDZu_C%D%rS4~OHaRdS!-seUUZ%tP+@J5{>HQ&S2 zJX~fJwO;*EJudo8OolzLUKskLWyU!*v;@94$Zbw?g-g^@lYq@v^Fs_i5pw#_g_(&~ zlw;&XO=*A3+s70ty3-*LEW#vXkU}i7IHPiA>`Mw{>MC$Kx44iMlG%nz@z=RZR0)EX ztVskYbb{H0$)pv!h=sdHDm?tG<6y{&+LD zcWht>xVlsGMKjYDI5jkE*_g4j3!4U@!m)cSW$923p01%oD*gB=slqm!p)p;)?etCB z!#BF9Ehqo;UtQ~QplAbZZY8XOxFy*rGR8Rkn3DB!`(MhKMRVRpB?zb`;=uS8gtFmE05wp;Z8)Q zHMq-E%&gQr{!s@DyRz>WiR_2NmDO3C@jekAEpC4N@c_q%4r6ZOb1k1AkMn7FB8`ag zyuwo{23 zn(w2<6I`}WOy2(01`D9A_A&y{Y_J8tcYaVAQ`!h2*A>ec|72UTX!H=Ox8KPW$tZz+ zX-nmWM>Z=Ppm?IlFhC}Uu&Yw~h7{sHaxrf=Hn0)86-XEQyS8%^9f!C55k!iXwLwSbLSG} z#FE&T?Olu0#!jc%Q?paad9?=SLce17g>J3^`F4H&-lRKkhMhkBNqUHOW0Kvi#=caA zg2wU;H>op8FiTpdx}##hR5fp4a`x}zc%@lSXF?yk^WT|_SoJ2-WzXM_CAPbLi(Tzu zD0_59%x$LtxBYJg*U66%n{=E?(w3tWJc}&7S1SZLBU8 z)cM<62(8B-9qKb%uWa}>FHj>Q8tpfCyYa#B4yhW_Gc{lNI%lWldnj$pHk5d?bivtg z2Z*wG?@hm%C~7wvniH65Jn&^xwMWi^I|H)aQ@@Fz!&s)IZ>CRS686u4v*!c(>b7NkU@;-MwLL%`0gDU) z17{@68r?rPFuA!bOh$fBLVS7Glc-Qw5Gb{LGb^J}!ZoX)u^hFG%YRDxJDF?wP6-bF z>EC7MIR*kRNJt+#WUvV?Ix?ORk?ByBcN9XL81##g;gr9qj*BdF1rWW;zYSAleX%jT z)$I4QQp)y;XhnB@QP8ja%*7qxviW-BoqPPL>XnJH1XM+RbcLYR1_2?^>qVV@396cW zHM5RdJQJK+rr!ovT5xcx-uHtjGw>5LWHp{(He!bd>}jbSzM2Sd0l13JB$^3(ox*U{ zo@Tg^KQ}+sh=Wzdz+x!O2lE-=dU`XKxspz&TrsfjA4T(ih=r`b%`ePXY-WUbIm0N! zWk0(-vm*KEO4?xRwlaI;mNL_1e%q*5qh1f}&vEPN^(N*gD4#vBZ&%`W-5|RoIcC38WO*BqMZvR}1+iLggLfSF%a3_aIL3SJYmm`egI?g?xBWDsx=qq?B2bK_; zYFG4E%(_cZsM{{MzxAg3L>0>hbjGR}x|-10_sCDTdz3eshx#8wtSgIWfx$*AsZr{X zjyyb`IRQ*2&F~-X*4)Ox$|>B@&LeOt!t+on{+Bl|todQh>fi&1TE87Qj?yMEC$llg zz@!yj+xK7O_pvswCsl*KwW-+rfm#>O^Y-J2Prli02smO!i$j*XOOD*jFx{6*ICdzv zryQL>X2YSu@!B>o#!RP}Kf&+)X`N2CwbQFVlu`b(Y6w5nKr==@XCX9Y%_Z$t?xH68*{2- zzy{L1jFxgxejYVc(n)Q=LK_z{@otBj#m8v>?*|yNzmc2MS7@#4x63XQ<`mvG+w2Zg z#R8s2fSA@M7h=EQDCS~b9=-83I#)QZ$8wvN4FFJY8ST)A{@L!&fuF!km)k=+sH3D$ zz+`F;dD7kt-EDeit{8j4JIYb{fJiy|Lmd-8n&+b5#Aq1jE$7nviv<3&SSxwxu6DyQ z6@q-9$=KwW&H4_L3dz!slNjs%fXrV@-X;KpD*~Y9P-=&jSC9Xe z4W4suGIVpO5H9}DDbe7T3;|r&&}`9>*r$%kN}$+b$7>DDFzVp3DlD_<)A3cG?OSFn z9Mw#j2a2(Gw4H6G_}m;6lq=kj$3uq&Ky&J16pFO(u*sHB+^$*(*h0G}_i% z7}L0RhRBR~_@ei#l`xuET#e)Xjp(mZBjpUiI9V~8QS)KE**Tu9b8nxYivVv)q@BA> zU-iC#U(96Tty`|WJbBq*uO-oKoXy|N#&G0yyJZlsGO$j`Pg8$A&ZSo+5>V)QWdK_0 zqOH->3Cq;;t#i%r=<6&V>|FE~Lo9V~p?!rA*^TOr)uES2{q$Y#m;=Rr-u)ra_wKw2 zguvg{xGXY7feH(D*7&6Yq1m!`8^n<&-jDA2j8`^gYR98FbJ(Pm1zqTpVmQ5~0=F~X zvvFpJEVl0%K(OCq>PNLNWGT!H`$c2lH1S$VKplHFb~(l&c12C)bb|gXjcpeI1+hSd zLXM%)(9_AZ8I0>^!=Z7@&lMgFX-jW;W*Z)wgc7+&)f@ZU{J=(UAz~usC*HTeU;94F zOy15qApx)4i0}t#bMhl*3tUOR5{)n+-*_520!KVvZ23@4O%KT43!y zDA^i`+S3O!if9^i4OO9ebJFTJ+mw01SF76PaDX=o|4ys|pwls6H^$k2v_un4%qES1 z71G6=`oF4>(_W~ui|0&Q^Da`YFus)5ydNS2t3p}gF6)z|K(&whyhU*6) z6=XJnIdYFwL|LN8j~_nd6Y#4Bd)BqgE{YCi$YrwKXNC;A_gff(x&x}vuZ-*O^?+F0 zfq@X*oC}xovj;tn@IiXB1VP1IoXaTyD3!+Q;-DtvMD@+t^Oypr*to5 z$&rSo4WZD+vEOw;LHNTc=tH{auZ4lJGS|bij6uCf2WxdIKhI}`Rh@YHXsTfcGtF5f z4ThhMKP(BGU9^-A?Y!9cOkaEgs2-`bG~3dbcr%&)+^#YCW@)fFtP+g94`j^Fm7^7w zDW8E+yKisZuuxZU`(3LS3#Blbj`;S_nn-~DWgfxJSN_5Nog=!A$={jqI8?&~g(>Rk zM^S8I{Z54A+e2Q+@OtEJ@D}x*V`R#LU!6SyBS;{+EiCD)@GF~qq{01g8Bd-Co5g`- zVL4fQNK<|1Mx*{8ON|iQV^>B$(;%}x)IEb!Ej^#kKe4@P|Vuk)Gq1F^*D0;Eb&XfhaaLo#y#~N0y zR@1Slv9a~|Q`O2Tj zbMASD665@ncew1w7Qti-5yVn7mp8nkJmsk+(Pn?1%2TSB_bKwT@r6VeOSVI`f?->u z$gpr;p6DIi)#h{^ntNI>6jmO==nLbIX@azuF?Mq z3|^D!AsoH58LL17?B->%M#t}hzl{FvRngK0)aWh!>eUm~Rt-F*GQ)uk{IP z6OG#v8hakeqY||DC7L_s)kbyQ6gfXmiiBz3rKg?92rhbWssPPx-F85%Sx_PWlRIf+i#M7 zVp%c1Wp-O6ndp@qiTGS2cx;Yxbr`JTa>3yC*^ZnQ{Q@ISA1rG4xs}`C@J$gX+H6+Z ziv9zsa?iDJW0uzzWz%LL_UH{^TrJu31c(}~wD(cjl(WX;CHD`{ z3U3*|!llzfa9jUN2k=p7s1GeLf@(dQ_1;?X@3fF1zag`TuX%KHRMwFhcY@Pzi7YeZ z_osSLGKYq2uDoKG{u9z~vQ(33#&Jvk3db$6lp$Kxr?&5^3D z#*<|Vifl>1=1pN$s%FD3%qbF@=}Epgh}!BLyHZ2Oxq+Shz}cs+knGeJJ7RWRuGFfo zf;diyE-Is2P3Vn!+E_(qO_R$tFbmSsy+1Nij-bRMt8kA_%!*H7?cluLVW3uiPuZBi6`IkbJ0S8mjw2p1JoZ6hyfs?ET!tG!HRnVtZ zqv;EWx<)*dg*(ZJ4QgnCA5X5w6cq7KvxZhwp~uH*e{}Xdno7KK(L8J37d0%PDrrkP z56SnkVefb^b9HN^rF?X_LN04~an}-EqecTMhoYuHS$XKGn4pG&G5BjN6qg?y@Ym|; z-|8)Hni_Fn@R;7Y;9LU_ck=i!nP~9Ic9v&M3mNcWIN(>wq^EW^kbQPsqo8v1e7lb( zS;yH*~GQQE!A`Q=~JDYWGZL4PH<7doHA-cm~gvvGpWV>L4hWr{7w&35mEAfnL$W54M}_AfwXen`)ZMLqYlWyYw_g&nC%AhMO^t! z_rGnaOWD|Jia+ebP(=I3y^6{md|o%Bg|r-`7=!)~>2B~^(PA71L@%%_3dmoZ#&3hO z2ST%f&cETtj=nhEGyu@~w@nu256MW~fmwlqC03LFZG`3f zRLunH16EWTGUBkLU+F)9R;B;C3yWZX$m9O^LNtQS%|QU$mjB!82K09R zzpMZ4kNp2X69~?*|FdG6T7%m?l$%34vR+;KQ!}{=7j*s>554<+C3gF*aX9o{Eb*ME z*k_b(e;Rp}Ib6LzVoxwTCV_W#abdL8G!9+VZEI{-H zSnHzfDa!A!A7b$EXm6;6w0nU-WpdDDWi1SSA!w{yD=XiNrN;r!MOtO3^!nQmwjJE7 zYh&~0`|`2%v5%g&#_ldJWK9)eDeXn+U1N*%`6OGC{S$zmG&(dpSPC$p;9D1SogwVnOC!^#n7pSSGc zz_2)yi_6~8qi`SL(CaInCH7th_T&?V<$6uEylfeX zm*D|rk8-DDLiJX*T26mxs=#1wM!xk-+GIo^@iHbMvXfqU1HgdWvFJx-T2d7#J2J&| zeIb!(yB_)Nh6x_g4@fnAI{Kc(k7&RF4!Idn-*C6g;36=$b0zFOy%O#VM(8@sw`00%$a?mqr$s07Cif~+8BKu2#@c_!Sm8CDQ zbNsOo=>lD1%eKW7FPMj47qV$p|Es|O=caOG?VE60ho zYR#~eRU{Q4qr)@`A;RbBPfFG`H4@e3+)*VI&_rPo$poVVp+*?DLdNI|N9E<1SwzGo z(fpHP11QZ8(h?2jT0;^+bV5*(4V8orADTvjJ z8*uPJAYTdYpkWZn-)h!qveRP0oTJA)=IKLkl(O>eD;1n*y-G1s6K$yJZxGBr|EmQE zY)9!Ih^pgoTi2M5V#OG(gmA1XF-JFs0>$=XZqqV6^%@P~yyOF4=MHn{9xTi#g7dnDM`N>3j#_r)BkGZ!5gFxPw|3MZl z!)*{NCN<$G+Ha-I6px*rXcz_L^k7+1o7q9kfTsVpK6iH<4# zA}yockpujumYg?bQr}=`B8r!PRSI`*$+4=IoFt|)@FO&0udHC!MPtg|&@R<*Ou_?= z2uxt9+#itNfHoE<(qd0j!yZGTC)N4RZaid6UJHXM1K-7^MFj0egMuZUnz`XCLuiG9 zClPynJ#k6Kf!r2eR;-N?2D!3f6{e>6o0ewRkqYVtxws=%75GYKw34uP%?lxq98lHn z3g?MfRXY6SBi~1F_W&Cx_7%K4BiN!d)#J0bACl_5@#CpLI2p@|;z0cD&wn+-mL0z> ziN`GZ#7P_cEIz?o5}xqgqhVq&brPf|*dji~#hFG7X)lEK?;)O5d%D=IRrk$T%v*2% z#u1`w*-cVzfqOu-rjzwQy1bEl{FJu z$d5TKJMmfuQ{BdLfzlu6*X~2oS1vorJ<)L|5P$0BOAv4#-;-fY+_;HI$0@v0dAbyv8@KA3 zH_#mQZq9og*^G7jin^p0qybQ&xF5A*XF`GZ?g zK@_sPa5tp>3o+xdd_0m+)_k6;#JYX6ATSruD^kCsp>?bIhCjwXTA`k5!_N|A`RCQw z{g#!=cBEiG6L!P?AV^VbS6p2{os`&cOqEuxBjX+=MeOjLA{1Gd)WcUaI(KA*1$YR# zeD9apW|<83o84oF;*^gcL?fVS!11^_3q-OOGGT@+^r^S0L8>)?u7N;RS%fY z#=#$XU_rz{lolB84KOp#Q#5?uQ>r@~`F{jk2sB3g%2-Zdal!XSqc&po7Q_A8~f{JPKFws%v?U7(C>C! zztGhlF`IngF68m8<+9h%>kLrq;=urx5iOgzYB1iy)6l57ya!~4rXX?{Yho3ScAF6a z0r|dn4Mjyi%aH*Rs~azneEL>&C&Gt?kT|XdEccvLT*V~W)yFRXrc%FrnUmM7GrO~K zdt#l#s-f-`K?d4L=Z9*GMx_w*E(g ziQ@rR!POCJ?V7w{kZrXeYot^&#v$krdh6jtg<7@ryyIEEOTG!}yH`ZNtF$__+v0;{ zK}|$oWYL_c;*ak9p{_5@I^xt*q;H5~k4&~isT`of?B`ZY*y5?`j`Ie?(;aI?L6xD9sl^{DTT3j? z;=;gDvWWYq?M)J_$@VhQ2F-$8DUhw^7qK1@S(-Bfj+F$XzRxf0D%sVr6}Zk@*(mbK zgz6k5io!0?1jmg6Xan@)O?G!<6qi32E1XqIi!{p7V-c*RJ+L+S?&oPD?B^a3A;Oq@ z*}mP)Tt<$4bwTk2OmXpG89B{w&)~k$S7zTV(ni3KR+vSQ@Hz?M11_f~Jz3CpamCl#LJ-wo?ZKa)PS^ z$gd?Eq7iJ9rF6Vt3SSRCns}>pRxS2pw0TMI?@ki3Id~nflK?0})BPxx5Ya@i*;-%| z?dZ3jph188uLrnWU*>llMF%lAwhBzHwgIbhO)_c5@rjHycxDn{-BE#;r#K4F}tuBQ#q#p)yoF){Qw*Hr&bsgQQTMjefPfN~JT{#y3y4tccA293F&V?KHn&ogmIv@~3L(1y`o? zLAj%ZA$7iOysC)^FBiyw2baX21#2*Jhb8B0^Ht{OJz=dOPQI@q{yrO_lQb zM@AVoZGu|ZcSO1e9i#(i;a=fpN{>^qSgLjzZ-vg&0*lEUR6K%(C7zk^-TBpuiI{L# z??_iI?QVsBYZ^MP1ZH?-5BiTwMn_uaJIi?ku&M^``&k$@c+$W7$NvB;Zv6Hpb8zFK zg8T3^$NYx73(Kwxe2rE!R<@Lc=Z5ycG_HlOuJE*6>d__PVz>Fq{^+^M0&(wlVEa%5 z>jVc!3R*}hk`+|%U;G~($8Xdlhn*~iScRJnPE1JtreI&}%_6TlY%IcBw00hh^4v`8 z_Ci$}Kk`}YmLzM||D2_uF}7-XInlSd4Q&U4G4kaz9o6ZV{JOiq>mdvoYfH$pAYV&p zt20)?mxGHY5>{Pph%ZMDiPwF*`(W;mJHgOnEW6$xe!XBk+zs;;O2fHE>9^i54YPGM zfj#E#19#c+a|qd;YM)Je?a z9r?_8_bifEs4Pk4a0L;ztN&ulZ!Gz+j1GUbUP;FC3Quq!GmbUO~p)bC4&4D6zuV(x#UpTJq zoBV0RZiY=u)BCcg^WlL0=>rnc*AWhoS4i6z{~lX8sO3U z$RDFw@D)3HooRvfhQ;^Mxy_B#V9dHd8Jgj!M-j?>r$>3N!vW(|(9a+Jz#8d1(sriW zP6@-pUu>L6H11;r*@d8#k+Q14GrF#nO={%v1Q zy5^5+I`gneEr~qIYz@7ICpCO(>RVAZrIma5dyQaX#n>`^jKDFF9pXXsbhc|%Ryr>S z0Ya&r@`1yh3B#2`DDs3@>ZMqVy+)f^j3y7Zb9@X!E<__0OORrAKG7Uk6gf#!&8JAfrwNZxDK^0>s^5*Cm>z_Z<@<%C{PX!n=)92SG1*+qx716PHy4tE zUH??;Wf*qn>b0yWS)w~sPYAA7zsY&zK0;Gv@^pq2(OJ#~RwF!mEt3#?g@0}RsHchL zRZD{&_k2LN0Jc+|-#m^~uCqSP0iFWbvA+CK)w;$@#nu}@$*b3fPv}hBY%yDa^`U%N z>is|8Rz7R2fsOMMtP7rGzJ(4SBq6Muodo(Exx}_x!?qw~XJKO*E`zRM8gyRA&XxAe z^h#buovt7piWy1vA5Y!L!a zS)X2i01qg;^M+&yQDQGkkXlr_&$wqiWUhloej0IYisIkvC!L9si2EaTqhv_-al>Z9 zf`&8t0Na%a(qIL!0i5~$?SEf(a_}eugM}qo0W)ISeZ{!rfb!T|R33aa<}~^T#4zZ3 z2;xao*zylUOWC+Ln-YH04qEMWJH^HhY=B>(>+-i}q)Qr9 zTJGPmYWxZwzbrn%2ptL(Nf;9U^Yqcp$G!SX(Y|Mc7F$JS*dEeRlbJ2f4v7G3R@uT- z754irD(Zf$dBPkmE?ILpUPTF)Gf_nO1()T71>brrc{w5^ykxLtPDztbPT5f20v1oUp%yuQ>%9E#`edxzO#k0B$xUbz1EosjBKO~wdCTdpHv;q@UGPx!LjaX zN!q<-;g0&Lb90zho>@_};Dxlvma5X=$#hqr5AQJW4i2mS;s`Eu2tu$j9U|p)?zsym z846AVhlTDh`O)QPp3>J$96}$0xpxrWc91&}1^ah9a`i`G7}2Iz9Y9!z*5+CDd58nA z&9Hxh+=@s%Qi$~H1XGVwP;WvcjV53VN71>WZH^O_aB2bl#2y4cpQ(K1PeXTC>MNf} zv5zhhkxXiDIrO=M#jLQwb-cFe64Vo)fb_3x4YoG0-1zkR5=DeB$yjfCDza=K&8`Sj zC02H!s7>x@2GH1U&14Zcz)g%poovT1OQBfbUhxD@FdgO+A%>pNTVACffU&7s6tXi9A#2@#f{ zsj7bt$7gs6NtoM@v(kB$ynN$X)>iU63Or1W2c%}iixnP&=tROKH#6AV{t}w*9iCg` z>NAtej7QIH=DDs~%a6~dj&i!!-3+?IbqSFmgvt2PRi$i>Q}ikgKKx8_!O8(x;o_px zc*gEQ(+1=qE<1JzoxECeeQ(Ce8c@^Vi43rzHT*emMXv2^wCAn1-`yMS%!f@VbWz$I zlu4M*vnF4kAN$QQbxOYp4~HeN-)U00kj?Johl4_ZBc#;Lzc~Cbj9>8R<|q|LBY1 zqHJVkSQi6A&BSP=NHtRfLMW!|=*LBINH*BP{@ZRpl4JR@IgU`=XO{g}scCge8Vhry z!=?n+tHeh#BAwWqi&J-=t{$rgMaXawds7U*5dFA`KQ7G%U#itMQH_G)HPXXFaa@Z0 zD@a;e4KD&-?K&$}qdoXsBWA9A!QBGU^^Dp~5nX!pdYhZP%wD#xwj1)C!|1q{Q2(LxuAiQynna^wfm ziAU9M<-Hk^GTta1((*!$b~lXL*c``{>?rVj+5jm1sj5vw)6tpAg4y{5i(5ojxlgcD z9AwCYqo(SdLJ_spWF1gE1~lu{*-vgK{?A&RSO|QOCBjDp3SRNzD(RTE1a zo)A-z58c^`zgW}(nIkp>C;wu(ugL>%fcakUzWg+iK_WR7JD1m|2PK+hV_V5aWh78g zV*<{FoAdq~oN2PoPA?1HOI96<$bzvuW!m%}H{z^Kc+0;8y9gvmWJzQk=hZ1}GLK z+;I<)Ht?)UetCDk#}7YxU_yTDSn8XTw-NkVZ*D{53e>eLfZq1>W)tI`UzD!Q{q(9C zwVV+QPrDh{lBCRwkhMbEO`4<67b!7~h!PEjWYOJudETw6*Zl8eu+Z+PNn0_gv$BC0XfUv+-40D|{sCsoY80SX z*mKAC*tYJLmKK(I$GMhU&$)EYfGin6y2$xpr2PY@>Q55E1j5&xSW`LJYXyt`v>$+I za`4C7?O3J9Kp_%oXx0&Ya72M9v{R_&Q!3 z8H=(w+7~AN2!pMz#B7z|D5{6TL>B7TVLi2-qIr|(Z8#?IlB82xXV`{gD`j9R$dDh* z-);7zI94|6Gx{yGzu*bkIyVbbTrZB#RV46@+h6<6 ztsgBp0NBStC83T+`OcO>bVUxIugOrC*2ySeaCqU6;*p} znriUyI5gI1jJf}I%b!0Ywc6F1T?!rLUapF<@6F7MF!ClwB3nh%7#x16%l#^gUV5=l z7051t1+cP1v<`sIslVu!WE=7ZQG^E5op%}hSy~eKePJ@g;~b~9Bn>cs%I`6^rp#1) zPRWtF{U)j97yPZDBfT57_>p5L3n;D=2b$#%UT+C>2MV2)+U;#8gg_>?>A-J8g>v$yIQLbdX7r=Rr=q2WwYgM zLc~X55Krk%y|E7HUZY7Jo0$TUsK$?iyjILWf!QsM!=Q6btSM#<_sD&A=4{eCG;1Xr ztI$4iiB~x(Yw{CIPE&FQq)IC4)NCW)Hgv;2%{9TH7LQX}jlywSEkev*;g{T5m}PUe z!WIYDLk*6O=|j%q&vUeT7u&H1P`d1Z-P>G>3}I5<$S*-pt2t2%P#&+TQB=27>}E58 zgyBWCu6D*m1EO|X5GhsKS;HV3Zv9+9b%lbjBYAlbh4f6P9|EBV!z3r3&UU^F{kG%Y;6^Ndd8O_X` zdJ|dT8Rg%;1dlhCN@T(dN|5HTEKY~4ycYO`2U?ERH=-qkV~^RQ?xuvG=C!xN6IX67 zA+##ntua$RY4#A&W0JSk1sTbS1sQD?*`-G2o~Rb*0|H2OP2O7Z`@Xmwy3+=BJ;XNoup09Xb?6%?k|l2CcK9F5+uYQj|mUnQ`Wf$uRjvV7W+Z(3L6m zXX%d!D$%rnU4}qB`teHE;HqmpMl(z1rDdiEgF{@8Q82b9HnJ2yd!QYw5os1Vccktx ziwiq!rL8p8DSug;E+wQERo89zUef_m z{!$FbhRV3s_UNxPVnxC3Z|m5HKSnP9HZwa_<6hs{UUi0%DcMru%6Za;$H3ez**rLk zXKpvyeF@GM%_Sd9wTQO>W~TfjD$?VombCC~x7VKjdGgdAx?(!u6+p7*SP!zrAv-*I_- z6&Th=O4|^OhF;<6<#_8KKMm0ia-gZAB_HX6-bmGq^H;eMQRdFIUlSTG401|`IDkuu zMT{>X9O}1`SPP!sChkH6iyyN_ifg!+5UQ!!oJCpqLeE#LH9I%YLNEO1A0rMI#+2UL zonDC#OQAMb^T>y)cA102q@t0&B>O&YuFgfHrssL*R2~xX7@a&k_V|Yr@dO1UN`{D` zYEO=knFO{*WUf#y8&W5)f}M-VG7j%;>;EAWMvFG7uW=MV)@U@IL7307WCSQs*L-Og z+Zj_9b*A>__ZQr(;N%fUx6TbsmsZZAr-x`$vZq!Imr{lOV4|UF#*4va{6mB85zHgS zVugDlCW=aIXX&YH9}f)gj|3=&wP$tK|GC`zZi8Hw!_$&ZPNFJqqD|PRvpV_d0P21d zh5<)so7)qRy(ir++KIWCU3jU}KpGt!65pD{j{-|~>Sg;L_O8(I%Kd%TZ|K7wtHa9> z6f}us#(99<{7r*=ML`-u9bkM&(Xz7_nGL3)r-w5i%Mo=0l4gRw=-nPnp5gk^4x*Mp zLla>Ud#L>Q;T!B6iFEXN+R||WL^#nRz$GN?c96!+kC*K62Z-y?fWP+*07NDVR#VQpu^Mk2P zpN@^&n*j5f0)g;aI zkS@tPr!S`CR_ZS6Y*trEp$<}w49r|JDuxehB%Q_Ar|2t0h+RDVZiT%F6x{}YsGDlP zN@ptERq5m^yjj=AHWq!i2ZSe$;)wnBd3dIrrhd%O*yUpMO8pKC~ZEcBCA|M=B^K4wfV{Pe+B^yj* zlGge9{L`CG-~mYi2kwD+O*Z&YXMYFN%d_JZ_!5GlYT^C(ZM%7STSg>;(4M#!EojCL zcs%gTmZXi9_SzG=d2mklhGOb$S+Cj;wSpNY$_p<8xuk#yU)&{Rv~LQ0;0QEt*e8g!l|>QW1% z%+BZzUq(_|w9@*SSk55!@m5NW#OA}W(5kdyHD+MYOQqzrXtkci48Vn~u|Hec@<>I% z?8?}XbWdydOyLzuTD9r$W2jwZVf?QafHv-kZMGAo0`m9V0wu;coV4{nBcZe(a+DPh zF}77w#`pj9(lVHSf4{b08I{iWAEm_Q*%@05tcLd~H1;axD0+po;q&B(ORG*DXJx1S zET&VO(nHXSthT~=f?v>1af#|%S`LGO9#?-NDy*1$OEqsS#@WFW+Q?dvmuxirQ6aC# zP_sIA$LhE@RM~RB+cDM>B-Y{U4We$hCnJ8?L_|e7m>(u8Nh%RXw%&?^q@{#GCBZ3x z>Hr=j7>fjfi0{G00uQu^5>o{A52A?r*)n-Yuq+VP__k*^Nz(3Efz^-PJcm>$faKXD zB!GmemTP6s502?)Ob@57fl0~GH7~RJV6NjY_URMajFkVQFK5rEUUFLg=^yKW@k;1a zZ`gZ-Xlw>TW6L8Zr-A;5?4JMpJa*$Y#v&ZPD$D~}d99)_&pC@N9k24ugIXtKal9!- zzNOQ2FIxrxC+uVZWD$?O?*HyBOM46W4J;24F;*7FDR108NmtodKuB7=W-j41NdldxYJrLl^TBx{s&vUZ{8R1F_~U&L(RXS z+33f2pVHX>uLr@yVaX)t)6*2i0PZ~g=E4B3%2s*6jDjOmyINZHbSd1DciG=;mifqA z#d>d=gMg`FJ4}O?Zg+vh*ANyct?HKrFK{~QNCNh@XUw*ca~OxL5>zq0kqFF=;K~A| zopA&A{sw<>TdiP@l;2{gtsRXt>d-LmEP@x1u7NxFTu)VoM9qp4%?u@K+B4Br0#pCS zG-h|s#D$o6?CS9Hf+k@>0Zbo*M{;yizaz$nU4<%zQ#vdti&A-}g zS;10ub@T>r?o8DvgymSjS7q%>Yx{mSCTjjI&*ruTMKtx^KZcRV|h@n<*H`_*nZ_R`8z*vZ*YDum$GjO{tLd8! z^r5shbaEB81JaWdk!MuyZt@Jw((Ah0vz@W4pMlXcLr8$-YPhb=mJ@mGdw@Pj+IO&J zSvz$OZpI+g64XQYV6OBt)&~w+N@}e(3gL5qx4sFPt%c&9P^52Gt{+DcWc&N*{!Gr$ z96S|7G}&l3yXam*YIm;p`6EjsH*v7ya%cB1@Ppd|AgtC?HZl+nK@bJ2$-er(w;r7% z)o|Kz#{HB@YYo~rw?VSE18qQfVaiipkE=V}rK+kXAqv1hI*z%NGv9|g-W^s6a`%KJ zwA+Q{r&H?CR+yarIw1K;SLGHcs!O-IGACW+AK;(G6e(XDzCbc2lVRNj??kG8VAn2 zkLB;qU=+zPBw6zTPb8EcwowFiRRS~Y$Z{pedA}gX;@MQ1`Tv0%U;Pp2^gQx6jzbkaJn33Sd3uM3c;ioi8c8( zrm>jaKSkAk*Ro8`0`BV-l%RjdwU=9?Di}PS0miLSZ<(+8UtIf)3?JRqvHg>As2s#z zS7Zt<-rbJ*A2UrPz9nGWTYVQ{(v0cjv!_t_Vm&k1C;< z_h>4rYlTuZ)05EgRHDj9QgAtlgGoLorAo#F1^qSTaG=SuMT9JVEcX0ENTY#b&UK(* zc+V!U%HquW*g(00G(SGV&^ZhlEGWXy+08lMfZoMO9$!+uz0e2NMz%12AyAK^M22H% zF^s^bE+>I{X<)MssX8^ z1|;evQ!a~tkuE&Wrhbz4h(geJd>A>{-$SU5y>$^HZ*Zxey)%9WYEP4HO@j9^6Qjvm zpV6pi&gh$m;Z-v1FIUu+UVkQd3GIUfBd{+R*V~#|?jZ8&7;g7JhNSS1%KH7oQ?0a# ziV}4)T5)1!!G;_4L?8n2( z--9|+H8koQFo(ofCXB_i%0~I~k1Dpqg4=v|{3X{wZT#qRIWd|Yt zG2x4B4E~JsUUkV|UB7`8#F+Bdwub32YAz_L6BLOAfB;5Gd0H|i;r;phGv3J{MO}7G z%v)2s!|~kxB!c7pm9+tW~-VxVx*w?v`#6lWh-)IEs9QAUdfMs#A_) zqBoaGwth+!cPTk`h{cN{V`}=)@c@W^9&U7CO-y12ad$lK^@<`BOEw6@(Dube{7>kD1pI1Se2p1K;tm$eL zai_PI_jX5Im(bq9yhj*yP*G{P^gqEy2M7C^HMDL_mOg<;qkHq#-GhR_2#+ADEha*` zDaYIj&*FK^t+=u3UEGwlrt)BnEmM9DM7+3wM{&6|fI`erv6pqP`W?M|HytF4I;7d- zX%(gcHt2}k=3dmzwZdiloi_AT8CJBKiYaBAV}PVBi$>0wvOhF~HMfrSNX$PgXEdZH ztEARyaBH4Iq;RyDYdV8`WAyxltYzlOsspm-MpH1ee7`0_>l`pILXI$-XMoB$F*U3< zTLub7?kbvQ5pSW6hZ%iv14G!a;}UAYtCb%-_m)f0fvH?kI@LXmK2pP$pgDO#zR{B% z59dcFpEX~`+t+zdJ7?3cB)<$t@Zyo3H!7!@!`f<0^`~Cyees?ysXiPdI>TDOf+@mn6vuHI~@v z7-SO+oas9kpEuXp5E#4o#fbUl8K_Js&5sXyGw=-Gn%9h&XT0linPAp=cEZ@(-4dqr9$o-X z`svm3BThDa;K7UBY5b)7?!)UAgMQTA2ernvGjX$)Jf(T@=9i_7uOne9xKmx9+cDsw zXUBcK3Ik#{=6cozT;8hAe(_esY#f-{7{CrdL)|qNuxyY^dsY-rOrt3N_Ec1({hCR5DFn=o`pRM$12d!OY@6Cg9?hUjJIS!zg1 z2hs1e@j!Y_6*C!n*Y#mvcqz;{@VZzG)6~Z&Rcd1|$&NgF$%rr$>{3bN`-U&jN8SvP zfE5i5xq)+LYFMkNC=FzKt)p#3-yX|ldF!}twKIQ@kOr3>rvkNMnX2z%3Omring3KR z;iA&0HS(Ck1f}3edgxv-vA+qeSAdo(x0ezhFK10WVCE%&i!GAN^>HER6ws(mOH)Le z12$sBzjDZvz$JRWdhA#FtE!uY3>PsfIk_cCh8>1%B>crkzh$hOa^~i*EC|m%m~i-e z4Wfj(N60KCgph(xY&hJHv~0bwj=oJBH>9fJ$EP+|Jp$OtZBo{J>~h1)Ju&I z5#$wLurk-KU8_it)ou`Z(tFFk@eAOsM(@m3%5*+GNe@Y8<0~JEN-DSz^C{D^%y9nB z13h`}T9CEDV0v{}<>2Vt77gs1?AIRh4`B1cu(1RP+Y(Ngq!_Br@S<<2)ZkQ)NCG+e zRA}m^nW9Fr?56)URo%)+@=xV?F`yzxeCPcQ;Tq+ENC!bEaLsv@Q-x_@O)eJ+?Kp&S zp}%@H!Cb(dBe1-uzI)n}D=FIk#m*{GQ57*FY=V?Ou?Z68u%0Vpc+}jMtqiyV%UVp} zgQyj(sWy$irE@7!Bjwflqp1t-WszyZvM4vKZzPk3x;wO1Aj~c~K`N{`k_{>3wi zDO*=yS)%R0u z0Blj_$c`Hm9Ewfg5lK{6^LgBCwAu+R?fw=|Jl*uk5vJ@V`df$HPdY-JlsJR_9w)X6 zMJFeuJXaR|?3SMyzi?BM?7j!i6=`DiLgAtV{iyY0aI7V95*-+#0j67$kLZ8l_3Y%3 z;cgNHAUaFj3TZcwpOa0uH$LQf8bq9(2lN=#^!w$4I5j?rMdky zzJ(h+|GNa!O1BPg=dhwyPhD}F))r6^!d zdJ3{%U*Ko3<;8m{Gt-MC1$`umd9^NH_$Ll{2@OWkt|g|605bf{J~DIX<>?dsJy}}D zEj>=PgZ0q@#V6&{| z@Pa9U9iuyJ7USeUv_Ve^abPdPLApsSj4S=ZCl|RstSYgSL~#U1$7v95V4Sqc~W# zA2VB}9oo&kCWGbqG)GPvPr&yY8JB4?NVTxY_-wWvI*fXP$H${5NIu8(%>^pT6w!h+ ze(*c=SFLbvTd((HgzHeL<|y9v*U+;7uW!HqTg9{J3^>n+z>`T^I7>bhiT+uysX7@j z73LPZ`q;3g0!x`mfAHvN+1Z%7_1N-3&sJki(VA|KgYiMU+eNMsgGH7u;xQUl5jEo1 znh7PrFfsm9J-Kox&`lKT>5wo#%LL~`s!Y8cg;2)C`CHjD?l?a$xOUfc=!?Bt?QeZl zZR7>|EZy?FOemH5gt5!0nf?ng23}!ptbKJtb{HOj7b)6f-<;HiDw2H>0Tx{d;>{>6 zEBhlw@bX%H)GZy-ukDM{%>ng9Rb^#={n-0a>{hk%`#lZCDv5|bQFgGx+fO23b;9GE zy*r;dd7uk9V`Gx?hNo4bRiESfSXTnYo*NJYUsyyM)Y3~EdZ#-}uh?)G(R=@SYISeg z{z}1|0}0EJ3yq{&_mhYoLz6eKT5zI#46N?xh5*G%Sl$Sky}d`J!^b3or_opbj)2Hu zgn!^y$cSuL)OV%ik6&gEhf+&G#cLuX+K3@I z#~COzfW^svlFXgKC4CdZA?m0NvO1xUC}a=8r#Ov-GR5Pwkz7OaRrHG=tHR4%qG9x- zqdo5o-14>b)Y*jv2cO3>DevQBw7JIe%*1#i8VcofPnPf`M2C`ejtlkg$!2=ig#6ui zeL<~P`vS-vQ8Kyz9LM#3)CS{Rnutj7Fa$wdUG%HO6>7SbmYhW$G;Sh$y-)}x%~^r@ zl#d#ZxAV0TfpGEXI!h+v?3B*T78Tjmn1p1s3o~Hqn@7GWcslqv!W@h>=~pBqoEhDC zQqiY)Z;2~W2<#;S+Yqp1L7A{IlJ$Qw>}ig07&q!})7tuosk13iL-H@hHdAls!P?zy zZ~qi`vzuZ<9lGAUWw2PROyWwTPnxmCR>!f z|76S7uEHHp)T$OAG|IX_%IR z4yNQ?5hDRJ0rzz&^;~JvitMuZmKDQGG*K5LhUSV(-k4%C$sVn)g-P@cgx7~=mLpP@ zHd6mAWh^TQDu~A18ebI8QQ7!+JDa(qx~m7y_3uevF1$s=jhQZ zzi)((krrtyRn$dgU7O&*WN28ow?%&odACguv~926 z!B$Flmm7SRYNxa( z7BC7A;`M?HFl?akma;5jLqvqAk{z)uoTG>({fydz!lEfUF(rhGT?aLLlDX>~M%cEt zMKcV658t1lRG&+V^rY?2%pLQ295bkr-Ltx!$~8-d0tzAvQ7Au5q%?wQY61!8C(?mWM_ z8z~Pn7B2<0A&L0h9gA}1ATZI6EE zrFS3{?*G>FM}S&GKsK{*6(wXUqcZ-^hepp0%Q{}OZLkh?v@?=UH(NK%_SMV9Z-bVV#tTagfVJt6nSkuve%&jT_d_cJS5yt4!gZDElL z91S5axDTBsR)~REP=)x{nKjW7f4BI$;R<0}%I>UOMW9RHB@|h8ZkQgz9=5V(^k5u| zEjh29jb=fqsYxGegsj^Wpb@Z~b|y_;lPU`MAPx!v6w_zpukyKO?pbrTdQ5*k`A@V_ zKB`_sMG-?)h8YGRdNvxYrjD8{PMUM*rL|nY0h}&G446H0$3Xjdm?-aUGcyTK075|t z7utDz(T?M_aI$Tj_Nvs(L4Uv=whAN}F-!wUm0cf)dqN>+e@lx^rq<%iO`bPAP&`*R zoVRymj!;O#gGZe)Pf*;|taQp2Td{l@Pr-vp3rkh(Hy>mV@}+jkc2(Uo=`&RnFdilM zw|92UW3I3y&0xpZ7ZDpQ?aS4@@P3T+Trlx&i?&kLz|Fo%XPb^IPy%^4LxU*T?iB7zm#qF3??-A=T*jUZWk{1po9CTYwy#L zxOR_E9n-k3%Rnh?ZKBH-Bx{l-YrUV+$Dbn&uThPssFTR!p2<^Ue<@3XlWi~=q5O(s z0*m4l1v<8dV^76XqI~C{VmLfhEQHc3|)k}L*)tEQ#OnobHd-KP`p7fo)9@S6ibz-eC+XPAdXm_Yk=^v)U zgc`%!V)-Tm#{Gx{m?CR&p(_)+R#%t&PyA_X`=l$Ok@s#fVYPoB%J99Axpa zBD4slDnfzLEGwyUM_b(rkR{q+dd7#O8c*cHb+g+|m7=-Kdh>NJCh_^tG1sz^R%3;% zk0Gk;HRNfYfbFdFA9zXa48)(=Y6GhOq{w-LnYylKWJ8*NURS9HhG()V{v-*~*cGxm zI)LZdQ&TA}DRYIu#A5S>{_${G&3UUmq2ja7vxsI(WHY{28?NjozD)vcSrb+X+%V`f zn7gtwye86&X3&*Lu6CL06dYajgZ3;aqM=AnX>oLafKT36QWNTTUK+^P!TqLKGYjHy zJi~poCf(2^&{VYBoV0;}cfH3cpJ64mlgpBaL?Yi;6x8)G zyrcX28xOYI6{kjSzf=F7LTy4B<*nWS`E{i3AJfD!&M%^Vp_-wRNsiXe#Ng8rr6-2E zCK{FOF``p@haCdurtF=v1l5IS{Y8OxwqV!}`|{6@L1}E;t!K@M(=$r=;A)#^AF3?= z(;wgJ<1V?bra_~=L|O$~oslI#6_da1H(FSqdPDWKmFw^ z`P7rf$BlFl%&dOu=ufEdiNN~Sz3v`_De$;n7WI#gF}1H%xuj^9yZwaC!A9R2L~|@F zH~HX2JO|B`-)ut)!esKy%YdElBiQmOcXnH?ctR&=c5NF3ix)(S@8#c z|F;&vj_x=Gn| zCuCAKs&}CG!$gor!V+({6SON3Wd&Tsq6g;^Zz%^*mM;Z^h}7gYAJ zK}s{N-{xaZSIC3$XN>SW^<*qz1<2hy0V3KlCD-;)N$MNRFGXPWHYW7(H@4%gYKu7~&62Zv4U9WcOjWhwOX@;iItFm$=be4)8zqX*^O ziXh#pnS~J!3@!`@SZ9}~6Y3iM57p`a~_EUXNHza8xJLbLWS@cJvaYAspJrO|SsRsL;jW5lEH z)-&cbOBuk?6a83RmzRWa%YtL7s$XZQLtt7&9R6e9FW-UG-}Xj{$j#-84W=%?eIwUG zJs|B7%ZhIL*v*MWrNFNC4}CV5yhEMeX{XsEe~5ddb>z7E4GIJ#PHN8VCRXlRz_MFU zFxY1HMUnwg0z)%1Fd-TKb$SCOl41i<`0<0^H^hAEribcRm{FoP>K5So?Ki6W;JvvK zpA(!uLA3t17bgjIUNc(#1*|>J0D&yu0RXs>f5dTo*6$qUt3Qi4HhVQ_JpdXU2Ds{{8b>Ag@1Hl!|xHsHqCP_OcL@0 zPBA_Xxw``{Qsz{E`>*$Fp2(O^7yK?L9Ua3=d#Ahn??``(IXM`E!6vpgSg7*+%Q@k3 zEvd`cQ$oAk8Drx$ntUlfKDl0|^-7oa z$6{C=1OYk)-`w~pM6JoJEqw=VL4(9i->)6X(e6c&O08G>kiv7Xx>+{xZ7!*o6LjFO zn=jqzqcyl@DIzig@CPrTaMag(_nMk?!d+1hle3~$focA}ge4j@r?w@b9TM;DR_@+- z%;tYi2$@rM4h?)kbY}3$8>2*7)-r9zxb>(Gx4dlhTJ3?5T-$R|KJ+irqtHt(NECrK zI^LU#AAb`y0Lz*EBXl9$|1OGrE6E0hrxXR-qI({)(-K~89yHqHCpQ;a|3bg-FXwbo z4^8>?a$FD!O*-;PaxQKt&Yl^n3vJ-aq^`ANF(#VtO%S-Zlf>Zrt%k5(vZH+thtOqf zO_j>uRgl1|0$Of2rPem8dW|^M2sSy9*s%vW`X!r#8l=pRBZ%Xf1<3J>B*2tsQ`DRB@M`IC(>=mH^vZ zC89LG2>JV0?5dUFbVOYNEy0ZNhb%w~{bD0%1?V8H)tKYIYcUh8RuQp*xaHsv#(hqK z^b1Ij%!r74{;Uuc^qQH`8PI?bmdeSw6vE6jK!o$*vZ>*WyoW-cL}+d1BG)(DB5#5X zyxca$?{k#9*>&+H@$)cQG-Zx>A=%S(de5r^4WZ_3@h zDApZVt`HIR?iPS$x&q#-?Fpww^IHOVyIm?X;;oW|JB01B?fbtlP}oSWD7%fd4?WUX zTZ+V5gLU6Jd7)6>cFl;7P1~MwI5OMN>{of?Wh=S6g9z|Zrx+^DTzoe&H2Ky(^0xV3 zQAqZ$rm~_g2kti}mYk9blHQydVv*}P3~UK{qhHhh`g_s08Kn{W+q_m*t_(Yx+s|At zjxd~Ajfoq-u$c-07V4;zOwHXUKm1ApFn?{xP$HupCafO+B7u6@vJlkii9|^GaLnQv zNEi|USz|{2qL}UcBq8e2p?9NCi-7yOG`wPF~Kcf3~r^t{3F!^EBQ_Q7vC4{1C;G7`=;ZD7iS|~TYcSLA%|x}`1%*X zR&Q+aFOm_lIEZW>FCD)U0#{ubr>v8vdU%B>(^Ibgq}n|Qy}_;gy!_N=m$<6g3g{`6 zKB=COgx5icvy~o+pB7kPnAEH#b1L7|WK>2(pY3u#AjH+y#6&XdcZumJ%?5%*`_p-hVULU)3i{iIb(dN#kEQ6h>j zu*hdLmEOC|ZBOkm)YKbUnmTcix@%xz{6|q?L?6QNcvlzwP@M=FWoX)}WD^TbKuXAM z$_KJ5d=fJnn=e)x)v`jqX$s2XJqYBh!`A{-rN&0?Re=;ZHO>fwW}e!cB))$^Q`e~9 zA%&$2x?WjYi9p^u>M6iz>A@QJYVh~+WSCF6dX^fudvtEZO2hB)yj~z>zfvRA0_wn; zuZqN^cV}_^s&rlaNAbI4Xbbvv>QCF+gOM5Dp`4+q#pi#{hBXW*5D6xaQD2T^FfCLM zNXpi;0zchgQXBP*Lgd2m3E^u6@S{FU^o#3mc=$sEGDJ1xI9^z@s5I26<9SBf$SnfI zoX3q}7cUlKFq7W13402md2F^x2C?BJX)$nNL>`eM6wn2Ya%rSPLqjzidtuYs)m25V z(nlRc?YSDEbvS;{rZ@KqH{T!Q;PFyx_{BKjgrgts!SoLXO~0v%_0QvLO}>YR9or6M z|F}0}&EcUUwbV{!W#Pc2H@y4#K@8i$%sHO6O-v|UPZpV+zt<~M99kJW-RwTT=IE1C_M7k zC)3;=PYP=&N=}ud40jk|MO8`7sqa_TU}F-7E2`nSzGhsXJCq$FJvh=@HO? z^THYo)}Jg|8zor8>_~UEAWuCQAl#ubRKgMJ3!>^%dGFa>q$I zi1eXj9naIqA0O!eSV8CsUIa`NGdcSBic(gpiS`S#WM8Uguk5mUFjY$pz3p!~1;eC1 zP{3S6pdFF0eA#;uU1uybN+9&nO6e2Pw+U-5)g-+%=aAuu&7J{ABOc*2SOZ)2^^xjV zcT@hFjp5?ZXLEQzj&N(4c;$49W&8cpRl66*A0QJ~UMt~kH~aw|;dvDRyX>81$ddcDX4z~}OHrcIluqC?LtlH61U|Vn6g-9K2x5ZwD__&>; zuLt`{56-s{8V#0fmAVf9>H#Il;Bo%f1_PHk0q$3BDI`48*jagPUG`kXLgfi3i zoFdew?Y+A~FvMuI^YJ$)7FdnxhDdhzI)W?+s#|>_s{Q=i4}PFWV{8fm&y3qSD!08o z2hv=aASkJ1yLLk*ACLM7lnf7!=dBgYW@!D=pj+}18mI=azEmNkeNPiMJtOt(YUMRw zYq^j`Gqq+3aqx@aZ#slPj>%UjIH(wmYm?YP+q*T^@9Xm5-kqTV&#s%c1lZx`fw${P zoJ1>e}$ zxCm2TE*E)bswlDzCk$09 zcG|4n6Vbjx{ozAe?1kIuG^kFuFp^c47q^Af(Uc$dsEigy0k;sYmhsu0H+5(-!FkYW zI1s=M{efZ(FAwak>^x+ogamb6DK@WTg{l4n21Q&#zj_&rp3*}OuLUB^Rm|9Mb74r0 z!50pq_F@+^AM#+T8)-#oCS^wTZV@XP{^&z_6-=jy^ECH~y>GoR=A5`oIj}@b_9+(Z zP1v_JQv!^%d+m^_qGEPjDl4V70~|gK^Ny8Y>JidP_8xZ@4Mvklet}f8sCQdh950<* zJ|js`+KI=ivg{M3(g*hKQBA^d;3FlOibf%ra7G$S5=5YxqVBEe zME!}%a?$rgYCJLM(Xo49>y>&&5W3R`fY97_Hl+I@Kt{taj{ee$p) zqWr%g6xH2`E^LN9?0k5QdG+bX>8~C?+I%y{Gnu;)gV+fT76{do%B8yI~G^Bfq%+e9+xovrLexTVukH5s}Li^abIl{2Psp>+i z(>cxP%lXMVXb9Tuq!vny%6(2ZOzF=MOlvHDQ{O4^Jn~#*AxXzkW;nIwT2FL{?Qk`Q=mO4%0dh zfnYX%9`!0I34tP4RQij99Nm@xG7ATITCqEa8Wq zDnb%;th7!SXsg6?^`Pk45eC&W%!jdr<++y@YfzjSUG zv}Q2CYL%|PxY~;2Ezj&%hT&WWP)zyj1p(B{h|3^5J?SHx8n{VUBvl}|L0$Dh1eCsZPr9;nhgZ%-ul0*&TJ~he zA?w-U?}(IQCM&68imE%1>a<^Xq{R=C{MWtOX(-B{9J$VauWNXoh7Q}6{D?v%SSz`p zjovXJuyC$Vd}1u+%kxD)-Y5YT;r{@6)D+56jbDp%18Wv)dzXvCqIO7nw=55<57i;> zcoTmi3Y0vMspm=d<%2t?eVfK!Us$j#kGf+_rsowsRlEOu89(PAJ;M5I1Lok63~h_r zq#NtZ|9y7WQ{f{F_DOy~lNQ7Ivct}CQ?=g7Qjf-!+dw?-X%fuC&mODgVss}fX=Z}h zK~YOriZ9dr=gMNEq@3=yYj@jbuMD|?rI1VPTNp<{XuQ~)6?4o5y~_`>MjXyyhiDoA z?ab^7&VS;@G_7xYoiN56K zsnmt9<^*M_kZ-ppG!6#Ct?Y3NY2Iqg@Ge%xaa6Y}pHH zpo=N`-|OjY@yWpUz-d7rmPe)8r`*T040q9c-X+jjk>rd831g5IMEJwhBt=PSP^0as zE?~Wa+wkyQCO{tzU#`&n$_!3T?TknK8Ki!;e;?T1oDhxWZmlJvZuL zXT5d2lBxr~CTr;KE;rmC_2S4#aWI!+5ZO7g`Ig^t3DR&5bQDvU+Cns}ei-gPEHE5%I|5hQ!ijyQ~8dQXouJ7)0dXZry z@KtKO?Yp88nJp_PMAjrpLzTtZMPEI75ol2~>c}>BY{YXDFea}FRnKGs&YC{5qBz7b z(bSt`q}Ynj++M+a*s}d(^iVRr+yj^QuDe!NYYRU4>teA#EI&H|0u?R~7U4uC6%Ty% zxy8mS@8b<3=OU{nu=3#k&f?zDu(08|7`rO&-#w07n`)5J9Npic@u31f-Sy6_AaHRP zvqpegVgCXHO0p9*qa2nq(Va5mhokr(7Is`_JXWAlnvp``5X0Fh0**pT)SA@%L~ZFq zpV5FKxSP)B^VSClTpNWoY^_Lyb=^fb#t?GTlfos&^6 zM=2a|)+KmVWk&%!!};ll-${$lwOp}NP3&ZQk1tPPl{lIze0q!6)Y@A!Bp8Y8wyU(7 zz^WwI*C%p4Ua#Onc(V(T85H%)Y@%A330!}LxYw61$4#5IIUFi1vHh;9tSMat)TLgT zW5Tg|*a?o>Uh`C*PGx8)$bQM?j4c^eLVk1qc39XfNTKIbV#WE}GEf>dSqZwzoPJ@r z`YzTZlKUY-et$LT4Qyo|LmyHH;<~gkdqTfBX72K}9~Z$RQesW**6Z^jDOiPLW9Mfq zZ#iPwx!-#kW(xX;j6Tg6*S>W zanufqxqOW}ncSTV1too!^iM*V14m#a(zyw*99Ofj2l`c|ie`~2V%Y7G0lUnNa3@f(cYSLG31Q+2W4 ze~E3iF<$i91qf3e4-b zVaIA|&tzen8gCa4-lVP-It8fQN&uQ%Se?b7CtZR&yT0P;y(D-l9Eg`Pxuf zZNDwY?Zhfu4~zXxTIox@-8?(+w0o?)uG{g0Gy5f-8ryye!-a?g<4<9pi0ptmpE`rQGv=HLfw?+ zC@13Vs0#S8M+gVoAu4K;(UcNWP!Y*=EZa|=EBsE@)Kqq~Hh)$H9j%W*hW*T|9g6ro z1#HL1$sS$BaWFL8VE* zpXj9ir}a+NX-D-SGXoXXKwvKpUzws9zhJ42;9cVDViy6(3h>x2`mS^jp5|TsfKHgS zHXDh5p=%Oi>nv8w{?@y5A+a;%jPv0*Y9YJ18wMFbRD%IhQ(~UgHk<^ z$#hU@s!sfh<*PA!#r^9%5XzR(*wp5f&h62slMy;vC4`NArz_PwB_-Ci=>l+Ev3qGH zETPSBod4I^7qrIyjh(H+-M7T|I64_#U$Hw-2Hc(A^2Pa>$B!VtdqPa6^oteC1sSj>MeZ*oK(>6~OOg`}G{N6oMjjIt|-R6WR4%%>Oa@Rz>cVj*>6-nKGBv zho*r1on#1QD~9IkCZ+LT)2Lsp4S~B*%CpNX3Ir8^3wZ!0t?g+ldtnMWeX!WMz1`m< zr;F9HbUV$4zcZc4#-r8Ks|BLSJzS+ZmaF-CT)R{7A64h>J=#?iiW60Aw5bsyjrICa zK;^=&2}jbnTzl)BkTEKY-4`6qX?Fch>7oMX9e}!P<9@!eE^isHpY7s{0f2q;tXwN~ z@vmAnjW~fY$ekFaXO+*=&6Kg4g8h8{V8kz7JQcE?jt5HwO*DP9$%dioHs^(jaPf(q zT;%q8_h1VmbMQfzlTX-qJS-Q>(u+=BA&gsf?oLNgG^$)hkDo7g;8*-Nw_i|kpfy)) zF(=Grcl+p1QOotes-j(jU&#ye%AydVi6YeS|?m!B&c$jA}9aVOLQMU3@m z#~idZ7%rrV4Nws&=C}o3x;!P8I%6E>dJ19Fp@+U1$Oq@& z+ZO5m(>s?s40s{3kv;%0#YN$_kM}*dEC{BTr;vh#SMZ&T_c~F7XijkEb2Ad;^ZGqp zknnjbw%fVZ{T{ijD;D4Lshhk}W`bewc`-inxk=e zox>^9pedV~908TY!~cNMHd)B5af#<>pb_3t@ATg{9fm>Wm(sC=3?d3@>h zk2z2ZZo0*na?>Q|8tOe?M)4!nSK^bL-9^n3+MITQeQ)@yxz^ z1G0*(Z|sAxJO2(9_B-A9^{YSAdH84@U!ci79o_F_u-m}?Yg}) zC|3!*%s_dw$HT&Z*;r$(%y7janp!XM8||bcdRTA%Z!JJ}>X^bad+7(s@dkhPYbJa% zs}HBCfBIgOO6x#K`SmNMS8X)({S*7iiB@A4b*Gt1N?$Q=akOzA!q)O7IAFo3(|;E0 z9O%)!vB*tT=u)&Gvp-^Z()L!%?0>8DXOgr!K&r_-&TW}BfYas3m`w+NsxpDh9P+B& zCzmSjx&DthwY5Qr@S#>qEukes+dcfBNxL>*SFB2Rt7=;ApasV)iAJO&VYt`22cgQ> zmk6LcNIS;$hmrZHh!o_CLSadLAef^D3$HIpo?i?Vc?J4J`bugkGQ^_UTVkftsdvPy zAd0>OZS>2T*B3>h(LbM(3+e$C0Ohe_@(*Bz*71^^>0*(vTZUkm>(F5gje*hR6`5^Z z9M}Huu)T8rtWf+Sv&potd-OO9QJ2(q1`5Nnboti;U~8x~nqY95Sj(sC-*;^5FS{2= zJS>s174Aj|In{+4xE{eTz`86|8ePFmf}v3-Ko=XYe9pLM==0bwvkMbvPH)*GRn(T@ zTO&5R%ht?nnt|^z@^#T_d|K@p4J-`2C-@^yN;NZFAqtaZd2_6t{~*T&b9At4>r&SN zcot;6VPik46UdV~IrTgI@|to_-FL)^g@)^2pX?|qn&!p=L<&|0h`A!NtwL^nOE}RQ z!sT`f=v(bM#|YQ%QTlvH$&fo@%YhFq_Q&pSY=^LeX~ig8;C}TT=~(V(+`|wUGgR&R z(t0MIEV$1@wz#-Q{eomnK950h$lrtHcX zn$`Z5KE{G{t$w9EFPTgb7$+pZpN@Sin8}{pwRbZu*ty#CAaKVD3P42jBt>k7)R zR{x@*-#tmU!9Bh!bUlL)E|60?DTZK@GSqj!nwS}W#^8R1h{SjIhDBQVTGCgge3Yj@ zg(tAA3S`_<6*X}j|7D0+#`{pg&ylfAB`fgsh96&vTi|ZPtHDTCl5BMt4+7K0hZKuq z+TZ8A8Olng!-r5n67ITGzq&Hd(!6y0^fp;{BzDGI*7rD-D`$rW+YV8 zYZC@SakeoA5Q5}Ky{`7?!%!67ZWrqni))T$?hqXHC%$#H^054<`oa=5>{mt$Gn?h|Ck;VjB zF8N@q!Rx!H1H3vE&Wn!JeC9O0p$SJ^BeI34DY4pwcm4dRw{8CF(@z86PySkFX@tdb zqd(ymM5rXMda6I~8g4e03tc?h6u19LjaTja%P|at-XY<%!`OFSl-4AhQXpC1PRZk; zLT#eOfuU4(>ZHSsxbH;98KYOBBTF za@og4J=8L`w5bF|^HJCS#DgbjG39)h4Wj?&F>*c2mwAiqr2*aeuVTUxB3%|)p-(mB zl_jM^ju{$5;`V7-b36X$TKv$^e0yt_t?Qf$8a^d4s+Dfy@GK%e`^kB!KkApzQ8#yL zSUW@35;TPL5Q`_fmm2D!J^_Q<15tJW;KDptRGygm4368FJH_mY+I8-j#};bt;YN>w z*?Z_H0~dYx*XM^UN9}kYy_IG=-j6BzuET~e&ssK5X=UDl%$UKfyJ;ESUA{Z>UUcavx+r&RoXKs}EWA&&8gt#N?bAP}bJAa)+!0!D z65!_b6$4*%%IVyGvfo~ry0NvoQd(I;Gs{P>@x{R_P>{K?M=ZkYJG3*3?rOuoR^0~- zb;Tb|ee=9tk(1pV79&_%?beqtJjLBe9p@+rPuiTTVPPmZ43RlrjRXtqjoEL&Pc4Ft z&@P4DOeb10`$Sc$=)-M`Y~9g-h=Y&f1o-P6Cm@`VizS^KckieR#SklX3|GpnGLzN% zg!8dn!SlQL;DhxXK9}94TGUFvN`>Z6bKfnG7`eSFT3zm_qpg)14Y-`O(KWR<5cTS5 z?nak)7pA^oAT4xlqnkdDBfew2n++@pPW{NbE?La!P(lg76yg9|Pn8YGLLcAkyR-a$ zb|o6vWoLxpe(W?!AfHKgR2|2f>S{Bt)AyccU4^y>Gpp=&FFPqav_wwLi`3N?b$7p3 zAMb@Tz%<=G3YM_9Nq_kU=QGLSL5Kryml~0^20zb9o8#7sp%k`u>r+>T+qM4T1^!YS zd4HO6ZU@`G9>nibz)v4-MxvD@nC<;VTiP}rU;?Lz+uO&wMcO%nE0UFt&9Vrr{k5pE zfYFDJ^uF4?u^c8IZzTGH@e(EfgR*xFucQmwMw7|Jw(W^++nLz5ZF6U$iS0}#=ESx= zv2ELDXP)={&Ub#E{*m5ScY3YvrMjzXRo&YwWAUboWsB+x&(nyV(F(iGz|8vTJdL$y z2ivMmK4kvseZ{-E>tco!;sZ<2x=jOXA*E2Bd0*KbiLZX*rrXB}Ozr*n1bN`$lFo;Tep{nO7e5}8oQTkOU zU>0xZqk4G59KhW$NPg7u`#vp1%W98itt=`n=+tDc#&*h?T4|jCqE;ZY=L?WCaQ*dI zg{!KM?gGPmyY*c>yT=P7fE*%8Up@L_St0;s?sp&qChBvS{+=*f#%#a3{;;k6^IjtqCD_V+OPK*5?U( zq1aj)cNY)@hqZ1xIyivho29sNA&)gto{|KGdw8s~`g64%4X4*5l7{w7W%DgiV?Ar) zSA?u*LKgo#n)24Ka8M%VAYu%d<6$hxvPTC|n2)ppF`1gyrA-KiZywejZuBd-#4-Na z*sQNC-y+P5uGe_kF|Loj^s=_~Bcvks?_{2OIbQ#EsWDK^`0C-wHL1?-@>8eV!`X3o zOAnRx8<{Dh_}U!0p1Gl`s~(@((EM5r9Un+t?@ODaA&$QTrx;tHCPw)VR>o8RASSku zc{;gra+ka1Sl0?z)uL6Cmm^&i!T zwAfa6we@a4Wia%IPY)!Px{baDralv;OiFSZeW7)6IBWJ{hOUaucXCVInPZ}g5UM$J zmH6ISzg(V|Y)hWl45(%*!n`U%DyeVFRwe8=JuU7lAf?OBgHClhqwlXM^~gM>Evg2E zGr2W!plxwGcFT$V#>0c~eW%C9Q1Uv??rW*E2-u1Ym9qhB{Bpt;(_w5XYE@)KC>omq zWBhu8Pz~0yl+NsB%c4_2zIc8<=P!;eFBceoLakiC_kGCh<*BP?T=s|uO2{<{oKqXx zq7exzUQ$#hTtzKf{kc+pb=A_cB}L(2X)BT)uiV)u^V+|H-?egRC{ zT4NO`N&N}w_^E=a87?JvSyi|G?S_ET`nu$H<~O7<%JeMnTV023JvLQij{1&OM>4Ms z{iXpJG*i@tSnAk1Ik)%Z!0+!qfHCPzoOTrKlqtKUIhQ@})l*){?|fdc!SRx@aP7Xz zXUNym{7%MfyO`SZV*E)zzOkoFK^;XzK_zYd93Q1WZ8UwE*XvJawptYpWhvy4%1iGS zSTH8vv!UtzZ7#|DmjA{!IT>x06Rgf}I-eIK9}}2TwROucl*a1;7=!VF2rHUmKnbRI zS$R3&W^4@6Ri&aBD4ZF^QGsl*^)BN_NUUkc3l6O*A=3`d5j|c~l57s|(~y^@7z;Q* za8eGk(~GV@b^jR`K&~>{Sra%1{@3zW!AR8S27jygm`|?vz|5Eb7roLp7d7>vZ}6wW z2@LdWVWA@RgYVGlGcDs@Kh38eOAFij8quSs?s%X*cJ5$_h?~~PL@QMJg;``P%xwxc%EJW3#N4pfIM^xN07dXb*Lh-LrjwPO zNY(r`1Zhpget-MsF}k(j3=M)@T2vfhMIxOzAIv|wa@bZ3+9XggZ@V@nUxW2=U)%{#OJig2`k2|0%4`k?6nb{}m3{5e)hyDgB?y1_QsE{@?Wmqy3{Mm4`a_ zV#mykptwVqUDi&peJZ{ zrb*!6sRd?yiDoH#M13tkCDyi^a8xXN7IzF~=0XGzVd$hRB+T7bQUI49i z_VkDRHC^5j?a*und>?>5$A2v#>;joo&!eFcH8I9F3sCpVTYGL}ZPDmVa9^k!m(Rw` z8R%Oqkf(H}%)#%o*-V!*5q04c5QFsOK&=|V-bq^)p@#*&?zSY*K=%2W)A+1EZXO5K zpbnNx`cC{KeCJbGjL|Pn4JAmaa$S9Gyz~e@RwXsCW(NqA6^rtN8s{AsC0+&pdl&ql zT>rIIOGJ=7DEMB=F@-V1!MpA0B{Ng@%RucZw_W6!)jGN&lyXcv9OGMUC=syE%%;MB zG2GMW>C&Ej>B4Ol&hE-d*W7RzM&rcq8V6nH6syuvB?+y++Ym7OB#`DKIB4l9!*v&X z0LP-w2#|AjV;I|X`1Yrc-`4@tl0F{4_3k*cRGI*_Ml5b5EA-zo7t2L)TAyy`=8PYZ z?R#gA9+X|-7x_ZMk&W#*aIT!uwui2OnE(c19g!vC0)O6$SK{|pkRBxoUPvZ-b(~pI z6(*!zaN_@R4f-4w7P0>Z1RzG0V1KJ>>15Yk-6<|2jmE#4m{(|`==l@8`5hvD>on^K z;#IeF$D%?KB)Tlbfa&EWnmD8A5<4}E01-fKpGInTzaEM$cdsAA2Ionu z%fX!7%}%gf%IiDZZLfM-tIUPG>k*#!9njtJxb{KO76rvidNswU!hk%hERNdn?+=oF z_rxaE#!ElmK5Jg>gtQ+;3drhYFmhk&HFvJ{7~beh=Pmj(8(7R39=^{~ z#{Jl9WS8FmOT^=zgt-Uw__Uk`LO0hLFft$lf(_wgb(5x59VAd;)JS=FyLYx<_QvZ6 z;h!a{{tQMvxJ=x?Vh; zeI1#X2QGM^lmr3ywfPH7DHVt;YpGJ`=hFAzLK_p99}uIkz(O0AQsk_pZ*;etbUACL zM{TBw;9g}i(cG=`UQ%B30{jFf5BJti_3rPP;L1 zljhT&f&*4Z5A<9Q-nOj)je#~v38>9?DirtqMb#WROV%D2jQ;O2yB3urm$Af3d_Js^ z8)v;%yY9xE=49C46Y=*4qhF~b8#xl@gI^S`+$*Pfc?B}mWdKY!;SrfUsq1PZG#YJz zgSC(R;Z1~(4`QNh^*F2@ntgn&(1 z+MH(8TWwBs=C`*3J&0%hyKpu+S1!=79G7Pnm9hx$K?6-LW;)#<+BeFb`=;Ga9VL*D zH+!o|fkL2?5oV$|y{Jvw63OP*(*D`_2OmFH`Z3EEe+$!ItPTOF{H;nHqb_1EZ28M~ zn(uU`QlLmJY&M2BoCSA2if(R8QeEF~C5lk4pxqB{9>#T8;@8yzwn>r`0|!DWZ&FH9 z(E@fY!hXeHf;XDoSh6F|u`uIwsgAe#g8VMJYJ>&YTS<#DQH2t3$!d%w8zmF&7x4!w z4tbrgM#@iGn>)S?YkZO5F2xL+^kmHOPI2f)dS-WBxw@Wkw|NMRW~kcP75y-bIULvQ zW%TR9Mb`z!yomAEVxUpn?kAODqd}oY9gqHbZxYzSmAJ%IQL{0OhIM&;vZ7bGmS`2f zGna&!c_eixA`XxO(;W=*Fs1|E(a8Mw=fVoZJqoYUvv@5X& z?uSV)<>^(88LWCC@>Qh%Oas(_1c-{smsA%x1yf<+8;Bp-&J@n-820m*_b?L|A`CQh z;Hz~w96H?TJYgV*@KJJ*P*vn`Q->KnB}Yo;pEFj1q>KR?c+M(f-a;$7gF99+jNG45 zmQ)cm?UmQ5=rG!Tk{PN7_x+U@n8tI}Rmil;HANVAB>;k(${JQ?EVQ+Pe(DU_q11y4 zIgO^rUB^W-OZF|@`?taTV%(@5N5H~pd^DO>s`rfp5y`Bm{eIglc4$B`(3@N=`&1s20j_JQ1Dnd$HJmA;N$Ou+v)M z(Za}_raApZ2XdN{s0*aja)UxW-w_c_ZVD%R_1NVIq*t*;nJFCj zgq7SRe4juFP+$PVb~XqIjAE*t8joSNY9niCYYk&59Zzh($HQpq>U%R5mL)a%vHJ@8 z+8VU#1tT+j2v%)MsRu5@Ig2VXMm$p{P$k!!_q@ZC?Zr?3CDeNWWx?zuRYN|)z#V?{ z!CC*C;GZ-NzDJGLi2RPi)C|g)Xqml>PBAd$&0LaR084Pf7%lT43vG+%4giXv0|osy zaLH=KYEcL5+wV+KtBeR6iNYxvg&Ju`&|?sn>PiqaS?+<~kYWz$SaiBN(-Joh#a|(j zx^DxC*{kcbl*K2dj5$k8N$8B=AZXNzAGQy5HieiR-~MdUf_D^C^`+*5hA$g^N!QQG zwp`^)pUdz#fFz+wRffA9gvG{Ws1N!?n6CdLAd*lf9yKrsNID4`%kI|dZLtgwKozIL znVPb?za>0(Yi08Pu=*|pnISEhmxFHY0XW++YIc^s5#Z}LDKY4>GGAMtUo&EZq=!e7 z9(~KXmELN3FJBvv_l0$jOflMrRB6U`LXppJ*F|RE-n6=0XgU-1#!jh zHGpKo)REmIEj_aMT`CkdC+rIi&ZhcCmFTqdp33~*r8wIp zke+N*{Q3p%$mLT#!bANJDX$T+p-7ip=eyiBm3w)N*tYB^k7w5wfS7{Y zWkWWwnq@9ASL_}r?u8~%f9c|iJ;`8T2+gC5g+}7an#I)UcDqx|%5JkAT~Aw9^fz2p zqG@|l_SZ#U)6gCJc`Ja8W$Bo7c}!QiMp{JaQy8#2F`xryK}#@1R!(U}uRL-fTSn4m z6;&2)M*-`vs-69gLeW1Np@5Kms8Ft`jqKiCCYxbXZ_vmen#%q1JcRpKuMqsrsmci% z9P`**ro6C_b!LR#u#b5FaP-~3Ol7GO3pY#sI^0BzanZ*DnI{l&W>y@O)Kc$;I?MiN zyB;z8Z`UN1uRqb{l}J4AR3L7t zvxxm>IViXo@$@d@Em@cdx+?)M!C`TotSA-;H$9Lt!B<3p-8z@5Vg-~Bm5U+nh|;kt zc0h|?bGVabm~LyonYKCY&*ozcTl~>ZD)SHRwx%rF^*-wp4gEoU=R-#x^IH(bu|C22 zku>w`mDDLFWOx@C@veaWubcM<4-Z>MMf)+rLD*>5*3;aWi$K`Z7_UlS&3wb|hZ@<@ zzaSgVL|PsH?CO;TX4&bU8(WU?F@(4YVL=0+DA-PAtFA%G?S!u@*%_C(1BY)6Za=$?)kuScG2<(Vd)K~uB%2y?ojQc7 zX`dagBx%4@+6M)kLgRR7sz-m19Y)#~r~^$P5S%S8&dUu7t}n(37?unP4Ix-{=ekf3 z`yJ;Ds6u#oP}P?Z0)Lu&kA{cnq3aX9Svm4?LKkuU%i}>ugVYAdi$!3aC+M@V;Gi5R zl1vtsW)-YR*%n#z^oxRc?#mSvLFQVQ_w7G292ZiFrrt?K!9lcsuT&6CI%O|^+_BnOob@4U}v80Z~I29)! zUW9EFcdQba2+8e0%JRnfRjsToIJXJ3eSejMqM=RERERK^MjAapJM5WXY=+_~K8}Lx zuq5M#2gYd9XlAYy`6RkY|4V{p`#<3A$I5<7bon>L=P}(u^AqZ6!NHKYEF3Hw_=Dv* zEW=Uu^|fHiN6Yt@yRnKdNs$x@$XJUg*<-!Ff;%0Ai%RH;TE_7D^u}e8#U>xuD-@`h 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 literal 0 HcmV?d00001 diff --git a/docs/images/mon_workflows_page.png b/docs/images/mon_workflows_page.png index 3b9be2edc7ac6d4bea6aa833b2419744637f083c..62f5f55d302e852493fd214e376495687783a6f3 100644 GIT binary patch literal 74833 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 DFk$=5 diff --git a/docs/userguide/monitoring.rst b/docs/userguide/monitoring.rst index 3404862450..e3f992bf0f 100644 --- a/docs/userguide/monitoring.rst +++ b/docs/userguide/monitoring.rst @@ -15,7 +15,7 @@ SQLite tools. Monitoring configuration ------------------------ -Parsl monitoring is only supported with the `parsl.executors.HighThroughputExecutor`. +Parsl monitoring is only supported with the `parsl.executors.HighThroughputExecutor`. The following example shows how to enable monitoring in the Parsl configuration. Here the `parsl.monitoring.MonitoringHub` is specified to use port @@ -50,6 +50,21 @@ configuration. Here the `parsl.monitoring.MonitoringHub` is specified to use por ) +File Provenance +--------------- + +The monitoring system can also be used to track file provenance. File provenance is defined as the history of a file including: + +* When the files was created +* File size in bytes +* File md5sum +* What task created the file +* What task(s) used the file +* What inputs were given to the task that created the file +* What environment was used (e.g. the 'worker_init' entry from a :py:class:`~parsl.providers.ExecutionProvider`), not available with every provider. + +The purpose of the file provenance tracking is to provide a mechanism where the user can see exactly how a file was created and used in a workflow. This can be useful for debugging, understanding the workflow, for ensuring that the workflow is reproducible, and reviewing past work. The file provenance information is stored in the monitoring database and can be accessed using the ``parsl-visualize`` tool. To enable file provenance tracking, set the ``capture_file_provenance`` flag to ``True`` in the `parsl.monitoring.MonitoringHub` configuration. + Visualization ------------- @@ -75,7 +90,7 @@ By default, the visualization web server listens on ``127.0.0.1:8080``. If the w $ ssh -L 50000:127.0.0.1:8080 username@cluster_address This command will bind your local machine's port 50000 to the remote cluster's port 8080. -The dashboard can then be accessed via the local machine's browser at ``127.0.0.1:50000``. +The dashboard can then be accessed via the local machine's browser at ``127.0.0.1:50000``. .. warning:: Alternatively you can deploy the visualization server on a public interface. However, first check that this is allowed by the cluster's security policy. The following example shows how to deploy the web server on a public port (i.e., open to Internet via ``public_IP:55555``):: @@ -99,12 +114,12 @@ Workflow Summary The workflow summary page captures the run level details of a workflow, including start and end times as well as task summary statistics. The workflow summary section is followed by the *App Summary* that lists -the various apps and invocation count for each. +the various apps and invocation count for each. .. image:: ../images/mon_workflow_summary.png -The workflow summary also presents three different views of the workflow: +The workflow summary also presents three or four different views of the workflow (the number depends on whether file provenance is enabled and files were used in the workflow): * Workflow DAG - with apps differentiated by colors: This visualization is useful to visually inspect the dependency structure of the workflow. Hovering over the nodes in the DAG shows a tooltip for the app represented by the node and it's task ID. @@ -120,3 +135,35 @@ The workflow summary also presents three different views of the workflow: .. image:: ../images/mon_resource_summary.png +* Workflow file provenance (only if enabled and files were used in the workflow): This visualization gives a tabular listing of each task that created (output) or used (input) a file. Each listed file has a link to a page detailing the file's information. + +.. image:: ../images/mon_workflow_files.png + +File Provenance +^^^^^^^^^^^^^^^ + +The file provenance page provides an interface for searching for files and viewing their provenance. The % wildcard can be used in the search bar to match any number of characters. Any results are listed in a table below the search bar. Clicking on a file in the table will take you to the file's detail page. + +.. image:: ../images/mon_file_provenance.png + +File Details +^^^^^^^^^^^^ + +The file details page provides information about a specific file, including the file's name, size, md5sum, and the tasks that created and used the file. Clicking on any of the tasks will take you to their respective details page. If the file was created by a task there will be an entry for the Environment used by that task. Clicking that link will take you to the Environment Details page. + +.. image:: ../images/mon_file_detail.png + + +Task Details +^^^^^^^^^^^^ + +The task details page provides information about a specifiic instantiation of a task. This information includes task dependencies, executor (environment), input and output files, and task arguments. + +.. image:: ../images/mon_task_detail.png + +Environment Details +^^^^^^^^^^^^^^^^^^^ + +The environment details page provides information on the compute environment a task was run including the provider and launcher used and the worker_init that was used. + +.. image:: ../images/mon_env_detail.png From 93b17b0079fadd929afc95eca0a6233ae439cd45 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 31 Jul 2024 15:59:55 -0500 Subject: [PATCH 28/59] fix bug in format --- docs/userguide/data.rst | 92 +++++++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 35 deletions(-) diff --git a/docs/userguide/data.rst b/docs/userguide/data.rst index c0a09f0a3b..690f75fdee 100644 --- a/docs/userguide/data.rst +++ b/docs/userguide/data.rst @@ -116,12 +116,16 @@ configuration. Dynamic File Lists ------------------ -When Parsl constructs the DAG for a workflow, it needs to know the input and output files -for each app. This works well when the number of files is known in advance, and the lists of files -are fully constructed before the workflow is submitted. However, in some cases, the number of files -produced by an app is not know until the app executes. In these cases, Parsl provides a mechanism called -:py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` to dynamically construct the list of files. -This class inherits from both the Python `Future `_ and `list `_ classes, but differs from traditional lists in the a few notable ways: +When Parsl constructs the DAG for a workflow, it needs to know the input and +output files for each app. This works well when the number of files is known +in advance, and the lists of files are fully constructed before the workflow +is submitted. However, in some cases, the number of files produced by an app +is not know until the app executes. In these cases, Parsl provides a mechanism +called :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` to dynamically +construct the list of files. This class inherits from both the Python +`Future `_ and +`list `_ classes, but +differs from traditional lists in the a few notable ways: 1. It can only contain :py:class:`~parsl.data_provider.files.File` and :py:class:`~parsl.app.futures.DataFuture` objects. 2. It is truly dynamic, meaning that you can access an item in the list which is beyond the current length of the list. The list will grow to accomodate the request and return a future that will be resolved when the item is available. (see `Dynamic Scaling`_ for more details) @@ -130,14 +134,19 @@ This class inherits from both the Python `Future ` -objects (indicies 0 and 1) and then fill them in with the actual files produced by ``produce`` when they are available. -The ``consume`` app will then wait until the files are available before running. +Without a :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList`, +the above code would not work because when the DAG is constructed, the +``inputs`` to ``consume`` is a slice of an empty list. However, the +:py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` will populate +the ``dfl`` list with two empty :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` +objects (indicies 0 and 1) and then fill them in with the actual files produced by +``produce`` when they are available. The ``consume`` app will then wait +until the files are available before running. Dynamic Files ^^^^^^^^^^^^^ -Technically the :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` holds instances of -:py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile`, a `Future `_, which itself wraps the -:py:class:`~parsl.data_provider.files.File` and :py:class:`~parsl.app.futures.DataFuture` objects. -However, this class is not intended to be used directly, and is only mentioned here for completeness. -This wrapping is done automatically when you add an item to the list by direct assignment, ``append``, or -``extend``. Any access to the members of the list is passed by the :py:class:`~parsl.data_provider -.dynamic_files.DynamicFileList.DynamicFile` instance directly to the underlying object, thus making it -an invisible layer to the user. - -The :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` can also be instantiated with `None`, -creating a placeholder for a :py:class:`~parsl.data_provider.files.File` or :py:class:`~parsl.app.futures.DataFuture`. -This was done to resolve any indexing issues arrising from the dynamic nature of the list. For example, without wrapping -items in a :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` the following code will not work: +Technically the :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` +holds instances of :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile`, +a `Future `_, which itself +wraps the :py:class:`~parsl.data_provider.files.File` and :py:class:`~parsl.app.futures.DataFuture` +objects. However, this class is not intended to be used directly, and is only +mentioned here for completeness. This wrapping is done automatically when you +add an item to the list by direct assignment, ``append``, or ``extend``. Any +access to the members of the list is passed by the +:py:class:`~parsl.data_provider .dynamic_files.DynamicFileList.DynamicFile` +instance directly to the underlying object, thus making it an invisible layer to +the user. + +The :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` +can also be instantiated with `None`,creating a placeholder for a +:py:class:`~parsl.data_provider.files.File` or :py:class:`~parsl.app.futures.DataFuture`. +This was done to resolve any indexing issues arrising from the dynamic nature +of the list. For example, without wrapping items in a +:py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` the +following code will not work: .. code-block:: python @@ -261,8 +283,8 @@ items in a :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.Dynamic fh = open(myfile, 'r') # fails because myfile points to an empty File -But by utilizing the :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` to wrap items, the code -will now work: +But by utilizing the :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` to wrap items, +the code will now work: .. code-block:: python @@ -414,7 +436,7 @@ HTTP and FTP separate task staging providers can be configured as follows. from parsl.data_provider.http import HTTPSeparateTaskStaging from parsl.data_provider.ftp import FTPSeparateTaskStaging - config = Config( + config = Config( executors=[ HighThroughputExecutor( storage_access=[HTTPSeparateTaskStaging(), FTPSeparateTaskStaging()] From 1e004a6075ec9cd2715ef6a0a969bd2456f7d885 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 17 Sep 2024 10:07:29 -0500 Subject: [PATCH 29/59] get the correct timestamp for the file --- parsl/app/futures.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index 42237d3887..3bb53c172b 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -6,7 +6,7 @@ from os import stat from concurrent.futures import Future from typing import Optional, Any -from datetime import datetime +from datetime import datetime, timezone import typeguard from parsl.data_provider.files import File @@ -40,7 +40,7 @@ def parent_callback(self, parent_fu): else: self.set_result(self.file_obj) if not self.file_obj.timestamp: - self.file_obj.timestamp = datetime.now() + self.file_obj.timestamp = datetime.fromtimestamp(stat(self.file_obj.filepath).st_ctime, tz=timezone.utc) if not self.file_obj.size: self.file_obj.size = stat(self.file_obj.filepath).st_size if not self.file_obj.md5sum: @@ -77,7 +77,7 @@ def __init__(self, fut: Future, file_obj: File, tid: Optional[int] = None, app_f self.parent.add_done_callback(self.parent_callback) if os.path.exists(file_obj.path): file_stat = os.stat(file_obj.path) - self.file_obj.timestamp = file_stat.st_ctime + self.file_obj.timestamp = datetime.fromtimestamp(file_stat.st_ctime, tz=timezone.utc) self.file_obj.size = file_stat.st_size self.file_obj.md5sum = md5(open(self.file_obj, 'rb').read()).hexdigest() From 8dde82cf86df96544bb77825fb285ca5fe24e895 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 17 Sep 2024 10:07:45 -0500 Subject: [PATCH 30/59] remove unneeded prints --- parsl/dataflow/dflow.py | 1 - 1 file changed, 1 deletion(-) diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 55fb17f27d..023b6c8ee9 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -988,7 +988,6 @@ def check_dep(d: Any) -> None: check_dep(inp) else: for dep in inp: - print(f" checking inputs: {dep}") check_dep(dep) return depends From cb550ee8e29bc2bb05e460afe5c9c586262addb9 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 17 Sep 2024 10:08:25 -0500 Subject: [PATCH 31/59] auto determine file size, md5sum, timestamp if possible --- parsl/data_provider/files.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/parsl/data_provider/files.py b/parsl/data_provider/files.py index 961b6415d2..52f115de07 100644 --- a/parsl/data_provider/files.py +++ b/parsl/data_provider/files.py @@ -6,6 +6,7 @@ being called from. """ import logging +from hashlib import md5 import os import datetime from typing import Optional, Union @@ -32,7 +33,7 @@ class File: @typeguard.typechecked def __init__(self, url: Union[os.PathLike, str], uu_id: Union[uuid.UUID, None] = None, timestamp: Optional[datetime.datetime] = None): - """Construct a File object from a url string. + """Construct a File object from an url string. Args: - url (string or PathLike) : url of the file e.g. @@ -48,9 +49,14 @@ def __init__(self, url: Union[os.PathLike, str], uu_id: Union[uuid.UUID, None] = self.netloc = parsed_url.netloc self.path = parsed_url.path self.filename = os.path.basename(self.path) - self.timestamp = timestamp - self.size = None - self.md5sum = None + if self.scheme == 'file' and os.path.isfile(self.path): + self.size = os.stat(self.path).st_size + self.md5sum = md5(open(self.path, 'rb').read()).hexdigest() + self.timestamp = datetime.datetime.fromtimestamp(os.path.getmtime(self.path), tz=datetime.timezone.utc) + else: + self.size = None + self.md5sum = None + self.timestamp = timestamp self.local_path: Optional[str] = None if uu_id is not None: self.uuid = uu_id @@ -110,4 +116,5 @@ def filepath(self) -> str: @property def timesatmp(self) -> Optional[str]: + """Stub to make this compatible with DynamicFile objects.""" return None From 5ebd009079ae02b53f245eebbc40eb806ac638a6 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 17 Sep 2024 10:11:25 -0500 Subject: [PATCH 32/59] refactor variable --- parsl/data_provider/dynamic_files.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/parsl/data_provider/dynamic_files.py b/parsl/data_provider/dynamic_files.py index be050b94a4..a49a35a4a9 100644 --- a/parsl/data_provider/dynamic_files.py +++ b/parsl/data_provider/dynamic_files.py @@ -50,7 +50,7 @@ def parent_callback(self, parent_fu: Future): self.set_exception(e) else: self.file_obj.timestamp = datetime.now(timezone.utc) - self.parent.dataflow.register_as_output(self.file_obj, self.parent.task_record) + self.parent.dfk.register_as_output(self.file_obj, self.parent.task_record) self.set_result(self.file_obj) def __init__(self, fut: DynamicFileList, file_obj: Optional[Union[File, DataFuture]] = None): @@ -242,7 +242,7 @@ def __init__(self, files: Optional[List[Union[File, DataFuture, DynamicFile]]] = self._last_idx = -1 self.executor: str = '' self.parent: Union[AppFuture, None] = None - self.dataflow = None + self.dfk = None self._sub_callbacks: List[Callable] = [] self._in_callback = False self._staging_inhibited = False @@ -268,7 +268,7 @@ def stage_file(self, idx: int): Args: - idx (int) : Index of the file to stage """ - if self.dataflow is None: + if self.dfk is None: return out_file = self[idx] if out_file.empty or out_file.staged: @@ -281,7 +281,7 @@ def stage_file(self, idx: int): f_copy = out_file.file_obj.file_obj.cleancopy() self[idx].file_obj.file_obj = f_copy logger.debug("Submitting stage out for output file {}".format(repr(out_file.file_obj))) - stageout_fut = self.dataflow.data_manager.stage_out(f_copy, self.executor, self.parent) + stageout_fut = self.dfk.data_manager.stage_out(f_copy, self.executor, self.parent) if stageout_fut: logger.debug("Adding a dependency on stageout future for {}".format(repr(out_file))) self[idx].file_obj.parent = stageout_fut @@ -289,12 +289,12 @@ def stage_file(self, idx: int): else: logger.debug("No stageout dependency for {}".format(repr(f_copy))) # self.parent._outputs.append(DataFuture(self.parent, out_file.file_obj.file_obj, tid=self.parent.tid)) - func = self.dataflow.tasks[self._output_task_id]['func'] + func = self.dfk.tasks[self._output_task_id]['func'] # this is a hook for post-task stage-out # note that nothing depends on the output - which is maybe a bug # in the not-very-tested stage-out system? - func = self.dataflow.data_manager.replace_task_stage_out(f_copy, func, self.executor) - self.dataflow.tasks[self._output_task_id]['func'] = func + func = self.dfk.data_manager.replace_task_stage_out(f_copy, func, self.executor) + self.dfk.tasks[self._output_task_id]['func'] = func self.parent._outputs = self self._call_callbacks() # TODO dfk._gather_all_deps @@ -316,7 +316,7 @@ def set_dataflow(self, dataflow, executor: str, st_inhibited: bool, task_id: int - st_inhibited (bool) : Whether staging is inhibited """ self.executor = executor - self.dataflow = dataflow + self.dfk = dataflow self._staging_inhibited = st_inhibited self._output_task_id = task_id self.task_record = task_record From baf2332713b5cae55bd396e15243bc3f41e84af4 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 17 Sep 2024 10:12:34 -0500 Subject: [PATCH 33/59] make sure dfk is propagated from dynamic file list to children --- parsl/data_provider/dynamic_files.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/parsl/data_provider/dynamic_files.py b/parsl/data_provider/dynamic_files.py index a49a35a4a9..2b7a7e0e8b 100644 --- a/parsl/data_provider/dynamic_files.py +++ b/parsl/data_provider/dynamic_files.py @@ -113,10 +113,11 @@ def cleancopy(self): return self.file_obj.file_obj.cleancopy() return self.file_obj.cleancopy() - def convert_to_df(self): + def convert_to_df(self, dfk) -> None: """Convert the file_obj to a DataFuture.""" if not self._is_df: - self.file_obj = DataFuture(self.parent, self.file_obj, tid=self.parent._output_task_id) + self.file_obj = DataFuture(self.parent, self.file_obj, tid=self.parent._output_task_id, + dfk=dfk) self._is_df = True def done(self) -> bool: @@ -334,7 +335,7 @@ def set_parent(self, fut: AppFuture): self.parent = fut self.parent.add_done_callback(self.parent_callback) for idx in range(self._last_idx + 1): - self[idx].convert_to_df() + self[idx].convert_to_df(self.dfk) self.stage_file(idx) self._call_callbacks() @@ -377,7 +378,8 @@ def append(self, __object: Union[File, DataFuture, 'DynamicFileList.DynamicFile' """ if not isinstance(__object, DynamicFileList.DynamicFile): if self.parent is not None and isinstance(__object, File): - __object = DataFuture(self.parent, __object, tid=self._output_task_id) + __object = DataFuture(self.parent, __object, tid=self._output_task_id, + dfk=self.dfk) __object = self.wrap(__object) if self._last_idx == len(self) - 1: super().append(__object) @@ -401,7 +403,8 @@ def extend(self, __iterable): raise ValueError("DynamicFileList can only contain Files or DataFutures") if not isinstance(f, DynamicFileList.DynamicFile): if self.parent is not None and isinstance(f, File): - f = DataFuture(self.parent, f, tid=self._output_task_id) + f = DataFuture(self.parent, f, tid=self._output_task_id, + dfk=self.dfk) f = self.wrap(f) self.files_done[f.filename] = f.done items.append(f) @@ -433,7 +436,8 @@ def insert(self, __index: int, __object: Union[File, DataFuture, DynamicFile]): raise ValueError("Cannot insert at index greater than the last index") if not isinstance(__object, self.DynamicFile): if self.parent is not None and isinstance(__object, File): - __object = DataFuture(self.parent, __object, tid=self._output_task_id) + __object = DataFuture(self.parent, __object, tid=self._output_task_id, + dfk=self.dfk) __object = self.wrap(__object) self.files_done[__object.filename] = __object.done super().insert(__index, __object) @@ -499,7 +503,8 @@ def __setitem__(self, key: int, value: Union[File, DataFuture, 'DynamicFileList. del self.files_done[self[key].filename] if super().__getitem__(key).empty: if self.parent is not None and isinstance(value, File): - value = DataFuture(self.parent, value, tid=self._output_task_id) + value = DataFuture(self.parent, value, tid=self._output_task_id, + dfk=self.dfk) super().__getitem__(key).set(value) self.files_done[super().__getitem__(key).filename] = super().__getitem__(key).done self._last_idx = max(self._last_idx, key) From 79211bc77a7890f74e7d7917cd8b571ce2282d7a Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 17 Sep 2024 10:19:01 -0500 Subject: [PATCH 34/59] documentation and annotation cleanup --- parsl/data_provider/dynamic_files.py | 67 ++++++++++++---------------- 1 file changed, 28 insertions(+), 39 deletions(-) diff --git a/parsl/data_provider/dynamic_files.py b/parsl/data_provider/dynamic_files.py index 2b7a7e0e8b..5c94a97bfc 100644 --- a/parsl/data_provider/dynamic_files.py +++ b/parsl/data_provider/dynamic_files.py @@ -33,7 +33,7 @@ class DynamicFile(Future): """ - def parent_callback(self, parent_fu: Future): + def parent_callback(self, parent_fu: Future) -> None: """Callback from executor future to update the parent. Updates the future with the result (the File object) or the parent future's @@ -71,24 +71,24 @@ def __init__(self, fut: DynamicFileList, file_obj: Optional[Union[File, DataFutu self._staged_out = False @property - def staged(self): + def staged(self) -> bool: """Return whether this file has been staged out.""" return self._staged_out @property - def empty(self): + def empty(self) -> bool: """Return whether this is an empty wrapper.""" return self._empty @property - def uuid(self): + def uuid(self) -> Union[str, None]: """Return the uuid of the file object this datafuture represents.""" if self._empty: return None return self.file_obj.uuid @property - def timestamp(self): + def timestamp(self) -> Union[datetime, None]: """Return the timestamp of the file object this datafuture represents.""" if self._empty: return None @@ -108,13 +108,20 @@ def set(self, file_obj: Union[File, DataFuture, 'DynamicFileList.DynamicFile']): self._is_df = isinstance(self.file_obj, DataFuture) self.parent.add_done_func(self.file_obj.filename, self.done) - def cleancopy(self): + def cleancopy(self) -> File: + """Create a clean copy of the file_obj.""" if self._is_df: return self.file_obj.file_obj.cleancopy() return self.file_obj.cleancopy() def convert_to_df(self, dfk) -> None: - """Convert the file_obj to a DataFuture.""" + """Convert the file_obj to a DataFuture. + + Parameters + ---------- + dfk : DataFlowKernel + The dataflow kernel that this instance is associated with + """ if not self._is_df: self.file_obj = DataFuture(self.parent, self.file_obj, tid=self.parent._output_task_id, dfk=dfk) @@ -136,25 +143,26 @@ def is_df(self) -> bool: return self._is_df @property - def tid(self): + def tid(self) -> Union[int, None]: """Returns the task_id of the task that will resolve this DataFuture.""" if self._is_df: return self.file_obj.tid @property - def filepath(self): + def filepath(self) -> Union[str, None]: """Filepath of the File object this datafuture represents.""" return self.file_obj.filepath @property - def filename(self): + def filename(self) -> Union[str, None]: """Filename of the File object this datafuture represents.""" if self.file_obj is None: return None return self.file_obj.filepath @property - def size(self): + def size(self) -> Union[int, None]: + """Size of the file.""" if self._empty: return None if self._is_df: @@ -162,7 +170,8 @@ def size(self): return self.file_obj.size @property - def md5sum(self): + def md5sum(self) -> Union[str, None]: + """MD5 sum of the file.""" if self._empty: return None if self._is_df: @@ -210,28 +219,8 @@ def parent_callback(self, parent_fu): self.parent._outputs = self self.set_result(self) - ''''' - def file_callback(self, file_fu: Future): - """Callback from executor future to update the file. - - Updates the future with the result (the File object) or the parent future's - exception. - - Args: - - file_fu (Future): Future returned by the executor along with callback - - Returns: - - None - """ - - e = file_fu.exception() - if e: - self.files_done[file_fu.filename] = False - else: - self.files_done[file_fu.filename] = file_fu.done() - ''' @typeguard.typechecked - def __init__(self, files: Optional[List[Union[File, DataFuture, DynamicFile]]] = None): + def __init__(self, files: Optional[List[Union[File, DataFuture, 'self.DynamicFile']]] = None): """Construct a DynamicFileList instance Args: @@ -300,7 +289,7 @@ def stage_file(self, idx: int): self._call_callbacks() # TODO dfk._gather_all_deps - def wrap(self, file_obj: Union[File, DataFuture, None]): + def wrap(self, file_obj: Union[File, DataFuture, None]) -> 'self.DynamicFile': """ Wrap a file object in a DynamicFile Args: @@ -343,26 +332,26 @@ def cancel(self): """ Not implemented """ raise NotImplementedError("Cancel not implemented") - def cancelled(self): + def cancelled(self) -> bool: """ Not implemented """ return False - def running(self): + def running(self) -> bool: """ Returns True if the parent future is running """ if self.parent is not None: return self.parent.running() else: return False - def result(self, timeout=None): + def result(self, timeout=None) -> 'DynamicFileList': """ Return self, which is the results of the file list """ return self - def exception(self, timeout=None): + def exception(self, timeout=None) -> None: """ No-op""" return None - def done(self): + def done(self) -> bool: """ Return True if all files are done """ for element in self.files_done.values(): if not element(): From 825842f88ff723b6dbce035941ec62cbbc9425ae Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 17 Sep 2024 10:19:31 -0500 Subject: [PATCH 35/59] cleanup --- parsl/data_provider/data_manager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/parsl/data_provider/data_manager.py b/parsl/data_provider/data_manager.py index cc76b6b35a..26890122fd 100644 --- a/parsl/data_provider/data_manager.py +++ b/parsl/data_provider/data_manager.py @@ -62,7 +62,6 @@ def optionally_stage_in(self, input, func, executor): if isinstance(input, DynamicFileList.DynamicFile): if input.empty: file = DynamicFileList.DynamicFile - # TODO NEED TO TRACK FILE IF IT IS EMPTY pass else: file = input.cleancopy() From 8c9a2a017b9e8cdc0d78f9df6498fbe5a900eeaf Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 12 Nov 2024 14:23:00 -0600 Subject: [PATCH 36/59] backed out DynamicFile stuff so that this branch is pure file tracking --- docs/reference.rst | 1 - docs/userguide/data.rst | 191 ------- parsl/data_provider/data_manager.py | 14 +- parsl/data_provider/dynamic_files.py | 574 --------------------- parsl/data_provider/files.py | 5 - parsl/dataflow/dflow.py | 27 +- parsl/tests/test_data/test_dynamic_file.py | 415 --------------- 7 files changed, 10 insertions(+), 1217 deletions(-) delete mode 100644 parsl/data_provider/dynamic_files.py delete mode 100644 parsl/tests/test_data/test_dynamic_file.py diff --git a/docs/reference.rst b/docs/reference.rst index f46c1f1d74..f2d89afaf8 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -51,7 +51,6 @@ Data management parsl.app.futures.DataFuture parsl.data_provider.data_manager.DataManager - parsl.data_provider.dynamic_files.DynamicFileList parsl.data_provider.staging.Staging parsl.data_provider.files.File parsl.data_provider.ftp.FTPSeparateTaskStaging diff --git a/docs/userguide/data.rst b/docs/userguide/data.rst index 690f75fdee..21f3462949 100644 --- a/docs/userguide/data.rst +++ b/docs/userguide/data.rst @@ -113,197 +113,6 @@ As described below, the method by which this files are transferred depends on the scheme and the staging providers specified in the Parsl configuration. -Dynamic File Lists ------------------- - -When Parsl constructs the DAG for a workflow, it needs to know the input and -output files for each app. This works well when the number of files is known -in advance, and the lists of files are fully constructed before the workflow -is submitted. However, in some cases, the number of files produced by an app -is not know until the app executes. In these cases, Parsl provides a mechanism -called :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` to dynamically -construct the list of files. This class inherits from both the Python -`Future `_ and -`list `_ classes, but -differs from traditional lists in the a few notable ways: - -1. It can only contain :py:class:`~parsl.data_provider.files.File` and :py:class:`~parsl.app.futures.DataFuture` objects. -2. It is truly dynamic, meaning that you can access an item in the list which is beyond the current length of the list. The list will grow to accomodate the request and return a future that will be resolved when the item is available. (see `Dynamic Scaling`_ for more details) - - -Dynamic Scaling -^^^^^^^^^^^^^^^ - -The :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` is designed -to be used in cases where the number of files produced by an app is not known -until the app executes. In these cases, the list can be accessed beyond its -current length, and the list will grow to accomodate the request. In addition -to the traditional methods of expanding a list (via ``append`` or ``extend``, -the :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` will grow -when assigning a member by index to a position beyond its current length or -when accessing a member by index beyond the current length. In each of these -cases the list is expanded and filled with -:py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` -objects that are initialized with ``None``. When the file is available, the -``None`` is replaced with the actual file. This behavior allows for the -following code to work: - -.. code-block:: python - - from parsl.app.app import python_app - from parsl.data_provider.dynamic_files import DynamicFileList - from parsl.data_provider.files import File - - - dfl = DynamicFileList() # dfl = [] - # A B C - dfl[2] = File('file://path/to/file') # dfl = [File(), File(), File('file://path/to/file')] - - myfile = dfl[0] # myfile is a reference to the File() labeled A in dfl - - dfl[0] = File('file://path/to/file.2') # dfl = [File('file://path/to/file.2'), File(), - # File('file://path/to/file')] - # but myfile still points to the File() labeled A - - fh = open(myfile, 'r') # works - - dfl[3] = File('file://path/to/file.3') # dfl = [File('file://path/to/file.2'), File(), - # File('file://path/to/file'), File('file://path/to/file.3')] - - myfile2 = dfl[1] # myfile2 is a reference to the File() labeled B in dfl - - dfl[1] = File('file://path/to/file.4') # dfl = [File('file://path/to/file.2'), File('file://path/to/file.4'), - # File('file://path/to/file'), File('file://path/to/file.3')] - # myfile2 still points to the File() labeled B - - fh2 = open(myfile2, 'r') # works - - dfl[5] = File('file://path/to/file.5') # dfl = [File('file://path/to/file.2'), File('file://path/to/file.4'), - # File('file://path/to/file'), File('file://path/to/file.3'), - # None, File('file://path/to/file.5')] - - myfile3 = dfl[4] # myfile3 is a reference to the DynamicFile() labeled None in dfl - - dfl[4] = File('file://path/to/file.6') # dfl = [File('file://path/to/file.2'), File('file://path/to - -Specifically, the behavior will allow Parsl Apps to use as input files which -do not exist at the time the App is created, but are produced by other Apps -in the workflow, even when the number of output files is not know beforehand. -For example: - -.. code-block:: python - - from parsl.app.app import python_app - from parsl.data_provider.dynamic_files import DynamicFileList - from parsl.data_provider.files import File - - @python_app - def produce(outputs=[]): - from random import random - from parsl.data_provider.files import File - - def analyze(i): - f = File(f'file://path/to/file{i}.log}') - with open(f.filepath, 'w') as out: - # do some kind of anaylsis - # write out log messages - return f - - count = int(random() * 10) - fl = File(f'file://path/to/master.log') - outputs.append(fl) - with open(fl.filepath, 'w') as log: - log.write(f'Producing {count} files\n') - for i in range(count): - log.write(f"Running analysis {i}\n") - outputs.append(analyze(i)) - - @python_app - def consume(inputs=[]): - for i in range(len(inputs)): - with open(inputs[i].filepath, 'r') as inp: - content = inp.read() - # do something with the log content - - dfl = DynamicFileList() # dfl = [] - - f = produce(dfl) # dfl starts out empty, but is populated by produce - - r = consume(inputs=[dfl[1:]]) # consume waits to run until files are available, - # then does its work on the selected log files - r.result() - -Without a :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList`, -the above code would not work because when the DAG is constructed, the -``inputs`` to ``consume`` is a slice of an empty list. However, the -:py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` will populate -the ``dfl`` list with two empty :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` -objects (indicies 0 and 1) and then fill them in with the actual files produced by -``produce`` when they are available. The ``consume`` app will then wait -until the files are available before running. - -Dynamic Files -^^^^^^^^^^^^^ - -Technically the :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList` -holds instances of :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile`, -a `Future `_, which itself -wraps the :py:class:`~parsl.data_provider.files.File` and :py:class:`~parsl.app.futures.DataFuture` -objects. However, this class is not intended to be used directly, and is only -mentioned here for completeness. This wrapping is done automatically when you -add an item to the list by direct assignment, ``append``, or ``extend``. Any -access to the members of the list is passed by the -:py:class:`~parsl.data_provider .dynamic_files.DynamicFileList.DynamicFile` -instance directly to the underlying object, thus making it an invisible layer to -the user. - -The :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` -can also be instantiated with `None`,creating a placeholder for a -:py:class:`~parsl.data_provider.files.File` or :py:class:`~parsl.app.futures.DataFuture`. -This was done to resolve any indexing issues arrising from the dynamic nature -of the list. For example, without wrapping items in a -:py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` the -following code will not work: - -.. code-block:: python - - from parsl.data_provider.dynamic_files import DynamicFileList - from parsl.data_provider.files import File - - dfl = DynamicFileList() # dfl = [] - # A B C - dfl[2] = File('file://path/to/file') # dfl = [File(), File(), File('file://path/to/file')] - - myfile = dfl[0] # myfile is a reference to the File() labeled A in dfl - - dfl[0] = File('file://path/to/file.2') # dfl = [File('file://path/to/file.2'), File(), - # File('file://path/to/file')] - # but myfile still points to the File() labeled A - - fh = open(myfile, 'r') # fails because myfile points to an empty File - - -But by utilizing the :py:class:`~parsl.data_provider.dynamic_files.DynamicFileList.DynamicFile` to wrap items, -the code will now work: - -.. code-block:: python - - from parsl.data_provider.dynamic_files import DynamicFileList - from parsl.data_provider.files import File - - dfl = DynamicFileList() # dfl = [] - # A B C - dfl[2] = File('file://path/to/file') # dfl = [DynamicFile(), DynamicFile(), DynamicFile(File('file://path/to/file'))] - - myfile = dfl[0] # myfile is a reference to the DynamicFile() labeled A in dfl - - dfl[0] = File('file://path/to/file.2') # dfl = [DynamicFile(File('file://path/to/file.2')), - # File(), - # File('file://path/to/file')] - # myfile still points to the DynamicFile() labeled A, which now contains a file - - fh = open(myfile, 'r') # works - Staging providers ----------------- diff --git a/parsl/data_provider/data_manager.py b/parsl/data_provider/data_manager.py index 26890122fd..db5d242d36 100644 --- a/parsl/data_provider/data_manager.py +++ b/parsl/data_provider/data_manager.py @@ -8,7 +8,6 @@ from parsl.data_provider.ftp import FTPSeparateTaskStaging from parsl.data_provider.http import HTTPSeparateTaskStaging from parsl.data_provider.staging import Staging -from parsl.data_provider.dynamic_files import DynamicFileList from parsl.data_provider.zip import ZipFileStaging if TYPE_CHECKING: @@ -59,18 +58,7 @@ def replace_task_stage_out(self, file: File, func: Callable, executor: str) -> C raise ValueError("Executor {} cannot stage file {}".format(executor, repr(file))) def optionally_stage_in(self, input, func, executor): - if isinstance(input, DynamicFileList.DynamicFile): - if input.empty: - file = DynamicFileList.DynamicFile - pass - else: - file = input.cleancopy() - # replace the input DataFuture with a new DataFuture which will complete at - # the same time as the original one, but will contain the newly - # copied file - input = DataFuture(input, file, tid=input.tid) - return (input, func) - elif isinstance(input, DataFuture): + if isinstance(input, DataFuture): file = input.file_obj.cleancopy() # replace the input DataFuture with a new DataFuture which will complete at # the same time as the original one, but will contain the newly diff --git a/parsl/data_provider/dynamic_files.py b/parsl/data_provider/dynamic_files.py deleted file mode 100644 index 5c94a97bfc..0000000000 --- a/parsl/data_provider/dynamic_files.py +++ /dev/null @@ -1,574 +0,0 @@ -"""This module implements the DynamicFileList class and DynamicFile subclass. - -The DynaicFile class is a drop in replacement/wrapper for the File and DataFuture classes. See -the XXXXXX documentation for specifics. - -The DynamicFileList class is intended to replace the list of Files for app `outputs`. It acts like a -traditional Python `list`, but is also a Future. This allows for Files to be appended to the output list -and have these Files properly treated by Parsl. -""" -from __future__ import annotations -from concurrent.futures import Future -from datetime import datetime, timezone -from typing import List, Optional, Union, Callable, Dict - -import typeguard -import logging - -from parsl.data_provider.files import File -from parsl.app.futures import DataFuture -from parsl.dataflow.futures import AppFuture - -logger = logging.getLogger(__name__) - - -class DynamicFileList(Future, list): - """A list of files that is also a Future. - - This is used to represent the list of files that an app will produce. - """ - - class DynamicFile(Future): - """A wrapper for a File or DataFuture - - - """ - def parent_callback(self, parent_fu: Future) -> None: - """Callback from executor future to update the parent. - - Updates the future with the result (the File object) or the parent future's - exception. - - Args: - - parent_fu (Future): Future returned by the executor along with callback - - Returns: - - None - """ - e = parent_fu.exception() - if e: - self.set_exception(e) - else: - self.file_obj.timestamp = datetime.now(timezone.utc) - self.parent.dfk.register_as_output(self.file_obj, self.parent.task_record) - self.set_result(self.file_obj) - - def __init__(self, fut: DynamicFileList, file_obj: Optional[Union[File, DataFuture]] = None): - """Construct a DynamicFile instance - - If the file_obj is None, create an emptry instance, otherwise wrap file_obj. - - Args: - - fut (AppFuture) : AppFuture that this DynamicFile will track - - file_obj (File/DataFuture obj) : Something representing file(s) - """ # TODO need to be able to link output and input dynamic file objects and update when the output changes - super().__init__() - self._is_df = isinstance(file_obj, DataFuture) - self.parent = fut - self.file_obj = file_obj - self.parent.add_done_callback(self.parent_callback) - self._empty = file_obj is None #: Tracks whether this wrapper is empty - self._staged_out = False - - @property - def staged(self) -> bool: - """Return whether this file has been staged out.""" - return self._staged_out - - @property - def empty(self) -> bool: - """Return whether this is an empty wrapper.""" - return self._empty - - @property - def uuid(self) -> Union[str, None]: - """Return the uuid of the file object this datafuture represents.""" - if self._empty: - return None - return self.file_obj.uuid - - @property - def timestamp(self) -> Union[datetime, None]: - """Return the timestamp of the file object this datafuture represents.""" - if self._empty: - return None - return self.file_obj.timestamp - - @typeguard.typechecked - def set(self, file_obj: Union[File, DataFuture, 'DynamicFileList.DynamicFile']): - """Set the file_obj for this instance. - - Args: - - file_obj (File/DataFuture) : File or DataFuture to set - """ - if isinstance(file_obj, type(self)): - self.file_obj = file_obj.file_obj - self.file_obj = file_obj - self._empty = False - self._is_df = isinstance(self.file_obj, DataFuture) - self.parent.add_done_func(self.file_obj.filename, self.done) - - def cleancopy(self) -> File: - """Create a clean copy of the file_obj.""" - if self._is_df: - return self.file_obj.file_obj.cleancopy() - return self.file_obj.cleancopy() - - def convert_to_df(self, dfk) -> None: - """Convert the file_obj to a DataFuture. - - Parameters - ---------- - dfk : DataFlowKernel - The dataflow kernel that this instance is associated with - """ - if not self._is_df: - self.file_obj = DataFuture(self.parent, self.file_obj, tid=self.parent._output_task_id, - dfk=dfk) - self._is_df = True - - def done(self) -> bool: - """Return whether the file_obj state is `done`. - - Returns: - - bool : True if the file_obj is `done`, False otherwise - """ - if self._is_df: - return self.file_obj.done() - return True # Files are always done - - @property - def is_df(self) -> bool: - """Return whether this instance wraps a DataFuture.""" - return self._is_df - - @property - def tid(self) -> Union[int, None]: - """Returns the task_id of the task that will resolve this DataFuture.""" - if self._is_df: - return self.file_obj.tid - - @property - def filepath(self) -> Union[str, None]: - """Filepath of the File object this datafuture represents.""" - return self.file_obj.filepath - - @property - def filename(self) -> Union[str, None]: - """Filename of the File object this datafuture represents.""" - if self.file_obj is None: - return None - return self.file_obj.filepath - - @property - def size(self) -> Union[int, None]: - """Size of the file.""" - if self._empty: - return None - if self._is_df: - return self.file_obj.file_obj.size - return self.file_obj.size - - @property - def md5sum(self) -> Union[str, None]: - """MD5 sum of the file.""" - if self._empty: - return None - if self._is_df: - return self.file_obj.file_obj.md5sum - return self.file_obj.md5sum - - def cancel(self): - """Not implemented""" - raise NotImplementedError("Cancel not implemented") - - def cancelled(self) -> bool: - """Return False""" - return False - - def running(self) -> bool: - """Return whether the parent future is running""" - if self.parent is not None: - return self.parent.running() - else: - return False - - def exception(self, timeout=None): - """Return None""" - return None - - def __repr__(self) -> str: - return self.file_obj.__repr__() - - def parent_callback(self, parent_fu): - """Callback from executor future to update the parent. - - Updates the future with the result (the File object) or the parent future's - exception. - - Args: - - parent_fu (Future): Future returned by the executor along with callback - - Returns: - - None - """ - e = parent_fu.exception() - if e: - self.set_exception(e) - else: - self.parent._outputs = self - self.set_result(self) - - @typeguard.typechecked - def __init__(self, files: Optional[List[Union[File, DataFuture, 'self.DynamicFile']]] = None): - """Construct a DynamicFileList instance - - Args: - - files (List[File/DataFuture]) : List of files to initialize the DynamicFileList with - - fut (Future) : Future to set as the parent - """ - super().__init__() - self.files_done: Dict[str, Callable] = {} #: dict mapping file names to their "done" status True/False - self._last_idx = -1 - self.executor: str = '' - self.parent: Union[AppFuture, None] = None - self.dfk = None - self._sub_callbacks: List[Callable] = [] - self._in_callback = False - self._staging_inhibited = False - self._output_task_id = None - self.task_record = None - if files is not None: - self.extend(files) - - def add_done_func(self, name: str, func: Callable): - """ Add a function to the files_done dict, specifically for when an empty DynamicFile - is updated to contain a real File. - - Args: - - name (str) : Name of the file to add the function for - - func (Callable) : Function to add - """ - self.files_done[name] = func - - def stage_file(self, idx: int): - """ Stage a file at the given index, we do this now becuase so that the app and dataflow - can act accordingly when the app finishes. - - Args: - - idx (int) : Index of the file to stage - """ - if self.dfk is None: - return - out_file = self[idx] - if out_file.empty or out_file.staged: - return - if self.parent is None or not out_file.is_df: - return - if self._staging_inhibited: - logger.debug("Not performing output staging for: {}".format(repr(out_file.file_obj))) - else: - f_copy = out_file.file_obj.file_obj.cleancopy() - self[idx].file_obj.file_obj = f_copy - logger.debug("Submitting stage out for output file {}".format(repr(out_file.file_obj))) - stageout_fut = self.dfk.data_manager.stage_out(f_copy, self.executor, self.parent) - if stageout_fut: - logger.debug("Adding a dependency on stageout future for {}".format(repr(out_file))) - self[idx].file_obj.parent = stageout_fut - self[idx].file_obj._tid = self.parent.tid - else: - logger.debug("No stageout dependency for {}".format(repr(f_copy))) - # self.parent._outputs.append(DataFuture(self.parent, out_file.file_obj.file_obj, tid=self.parent.tid)) - func = self.dfk.tasks[self._output_task_id]['func'] - # this is a hook for post-task stage-out - # note that nothing depends on the output - which is maybe a bug - # in the not-very-tested stage-out system? - func = self.dfk.data_manager.replace_task_stage_out(f_copy, func, self.executor) - self.dfk.tasks[self._output_task_id]['func'] = func - self.parent._outputs = self - self._call_callbacks() - # TODO dfk._gather_all_deps - - def wrap(self, file_obj: Union[File, DataFuture, None]) -> 'self.DynamicFile': - """ Wrap a file object in a DynamicFile - - Args: - - file_obj (File/DataFuture) : File or DataFuture to wrap - """ - return self.DynamicFile(self, file_obj) - - def set_dataflow(self, dataflow, executor: str, st_inhibited: bool, task_id: int, task_record: dict): - """ Set the dataflow and executor for this instance - - Args: - - dataflow (DataFlowKernel) : Dataflow kernel that this instance is associated with - - executor (str) : Executor that this instance is associated with - - st_inhibited (bool) : Whether staging is inhibited - """ - self.executor = executor - self.dfk = dataflow - self._staging_inhibited = st_inhibited - self._output_task_id = task_id - self.task_record = task_record - for idx in range(self._last_idx + 1): - self.stage_file(idx) - - def set_parent(self, fut: AppFuture): - """ Set the parent future for this instance - - Args: - - fut (Future) : Future to set as the parent - """ - if self.parent is not None: - raise ValueError("Parent future already set") - self.parent = fut - self.parent.add_done_callback(self.parent_callback) - for idx in range(self._last_idx + 1): - self[idx].convert_to_df(self.dfk) - self.stage_file(idx) - self._call_callbacks() - - def cancel(self): - """ Not implemented """ - raise NotImplementedError("Cancel not implemented") - - def cancelled(self) -> bool: - """ Not implemented """ - return False - - def running(self) -> bool: - """ Returns True if the parent future is running """ - if self.parent is not None: - return self.parent.running() - else: - return False - - def result(self, timeout=None) -> 'DynamicFileList': - """ Return self, which is the results of the file list """ - return self - - def exception(self, timeout=None) -> None: - """ No-op""" - return None - - def done(self) -> bool: - """ Return True if all files are done """ - for element in self.files_done.values(): - if not element(): - return False - return True - - @typeguard.typechecked - def append(self, __object: Union[File, DataFuture, 'DynamicFileList.DynamicFile']): - """ Append a file to the list and update the files_done dict - - Args: - - __object (File/DataFuture) : File or DataFuture to append - """ - if not isinstance(__object, DynamicFileList.DynamicFile): - if self.parent is not None and isinstance(__object, File): - __object = DataFuture(self.parent, __object, tid=self._output_task_id, - dfk=self.dfk) - __object = self.wrap(__object) - if self._last_idx == len(self) - 1: - super().append(__object) - else: - # must assume the object is empty, but exists - super().__getitem__(self._last_idx + 1).set(__object) - self.files_done[__object.filename] = super().__getitem__(self._last_idx + 1).done - self._last_idx += 1 - self.stage_file(self._last_idx) - self._call_callbacks() - - def extend(self, __iterable): - """ Extend the list with the contents of the iterable and update the files_done dict - - Args: - - __iterable (Iterable) : Iterable to extend the list with - """ - items = [] - for f in __iterable: - if not isinstance(f, (DynamicFileList.DynamicFile, File, DataFuture)): - raise ValueError("DynamicFileList can only contain Files or DataFutures") - if not isinstance(f, DynamicFileList.DynamicFile): - if self.parent is not None and isinstance(f, File): - f = DataFuture(self.parent, f, tid=self._output_task_id, - dfk=self.dfk) - f = self.wrap(f) - self.files_done[f.filename] = f.done - items.append(f) - if self._last_idx == len(self) - 1: - super().extend(items) - for i in range(len(items)): - self._last_idx += 1 - self.stage_file(self._last_idx) - self._call_callbacks() - return - diff = len(self) - 1 - self._last_idx - len(items) - if diff < 0: - super().extend([self.wrap(None)] * abs(diff)) - for item in items: - self._last_idx += 1 - self[self._last_idx].set(item) - self.files_done[item.filename] = super().__getitem__(self._last_idx).done - self.stage_file(self._last_idx) - self._call_callbacks() - - def insert(self, __index: int, __object: Union[File, DataFuture, DynamicFile]): - """ Insert a file into the list at the given index and update the files_done dict - - Args: - - __index (int) : Index to insert the file at - - __object (File/DataFuture) : File or DataFuture to insert - """ - if __index > self._last_idx: - raise ValueError("Cannot insert at index greater than the last index") - if not isinstance(__object, self.DynamicFile): - if self.parent is not None and isinstance(__object, File): - __object = DataFuture(self.parent, __object, tid=self._output_task_id, - dfk=self.dfk) - __object = self.wrap(__object) - self.files_done[__object.filename] = __object.done - super().insert(__index, __object) - self.stage_file(__index) - self._last_idx += 1 - self._call_callbacks() - - def remove(self, __value): - """ Remove a file from the list and update the files_done dict - - Args: - - __value (File/DataFuture) : File or DataFuture to remove - """ - del self.files_done[__value.filename] - super().remove(__value) - self._last_idx -= 1 - self._call_callbacks() - - def pop(self, __index: int = -1) -> DataFuture: - """ Pop a file from the list and update the files_done dict - - Args: - - __index (int) : Index to pop the file at - - Returns: - - File/DataFuture : File or DataFuture that was popped - """ - if __index == -1: - value = super().pop(self._last_idx) - elif __index <= self._last_idx: - value = super().pop(__index) - else: - raise IndexError("Index out of range") - del self.files_done[value.filename] - self._last_idx -= 1 - self._call_callbacks() - return value.file_obj - - def clear(self): - """ Clear the list and the files_done dict """ - self.files_done.clear() - self._last_idx = -1 - super().clear() - # detach all the callbacks so that sub-lists can still be used - self._sub_callbacks.clear() - - def _call_callbacks(self): - """ Call the callbacks for the sublists """ - if self._in_callback: - return - self._in_callback = True - for cb in self._sub_callbacks: - cb() - self._in_callback = False - - def _expand(self, idx): - for _ in range(idx - len(self) + 1): - super().append(self.wrap(None)) - - @typeguard.typechecked - def __setitem__(self, key: int, value: Union[File, DataFuture, 'DynamicFileList.DynamicFile']): - if self[key].filename in self.files_done: - del self.files_done[self[key].filename] - if super().__getitem__(key).empty: - if self.parent is not None and isinstance(value, File): - value = DataFuture(self.parent, value, tid=self._output_task_id, - dfk=self.dfk) - super().__getitem__(key).set(value) - self.files_done[super().__getitem__(key).filename] = super().__getitem__(key).done - self._last_idx = max(self._last_idx, key) - self._call_callbacks() - self.stage_file(key) - elif value.uuid == super().__getitem__(key).uuid: - if isinstance(value, DynamicFileList.DynamicFile): - super().__getitem__(key).set(value.file_obj) - else: - super().__getitem__(key).set(value) - else: - raise ValueError("Cannot set a value that is not empty") - # if not isinstance(value, self.DynamicFile): - # if isinstance(value, File): - # value = DataFuture(self.parent, value, tid=self._output_task_id) - # value = self.wrap(value) - # super().__setitem__(key, value) - # self.files_done[value.filename] = value.done - - def __getitem__(self, key): - # make sure the list will be long enough when it is filled, so we can return a future - if isinstance(key, slice): - if key.start is None: - pass - elif key.start >= len(self): - for i in range(len(self), key.start + 1): - self.append(self.wrap(None)) - if key.stop is not None and key.stop > len(self): - for i in range(len(self), key.stop): - self.append(self.wrap(None)) - ret = DynamicFileSubList(key, super().__getitem__(key), self) - self._sub_callbacks.append(ret.callback) - return ret - else: - if key >= len(self): - self._expand(key) - return super().__getitem__(key) - - def get_update(self, key: slice): - """Get an updated slice for the sublist. - - Args: - - key (slice) : Slice to update - - Returns: - - List[DynamicFile] : Updated slice - """ - return super().__getitem__(key) - - def __delitem__(self, key): - raise Exception("Cannot delete from a DynamicFileList") - # del self.files_done[self[key].filename] - # super().__delitem__(key) - # self._call_callbacks() - - def __repr__(self): - type_ = type(self) - module = type_.__module__ - qualname = type_.__qualname__ - if self.done(): - done = "done" - else: - done = "not done" - return f"<{module}.{qualname} object at {hex(id(self))} containing {len(self)} objects {done}>" - - -class DynamicFileSubList(DynamicFileList): - @typeguard.typechecked - def __init__(self, key: slice, files: Optional[List[DynamicFileList.DynamicFile]], parent: DynamicFileList): - super().__init__(files=files) - self.parent = parent - self.slice = key - self.fixed_size = key.stop is not None and key.start is not None - - def callback(self): - """Callback for updating the sublist when the parent list is updated.""" - self.clear() - self.extend(self.parent.get_update(self.slice)) diff --git a/parsl/data_provider/files.py b/parsl/data_provider/files.py index 52f115de07..333a652340 100644 --- a/parsl/data_provider/files.py +++ b/parsl/data_provider/files.py @@ -113,8 +113,3 @@ def filepath(self) -> str: return self.path else: raise ValueError("No local_path set for {}".format(repr(self))) - - @property - def timesatmp(self) -> Optional[str]: - """Stub to make this compatible with DynamicFile objects.""" - return None diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 2dc2d0a816..243f727a70 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -29,7 +29,6 @@ from parsl.config import Config from parsl.data_provider.data_manager import DataManager from parsl.data_provider.files import File -from parsl.data_provider.dynamic_files import DynamicFileList from parsl.dataflow.dependency_resolvers import SHALLOW_DEPENDENCY_RESOLVER from parsl.dataflow.errors import BadCheckpoint, DependencyError, JoinError from parsl.dataflow.futures import AppFuture @@ -240,7 +239,7 @@ def _send_task_log_info(self, task_record: TaskRecord) -> None: task_log_info = self._create_task_log_info(task_record) self.monitoring.send(MessageType.TASK_INFO, task_log_info) - def _send_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.DynamicFile], + def _send_file_log_info(self, file: Union[File, DataFuture], task_record: TaskRecord, is_output:bool) -> None: if self.monitoring and self.monitoring.capture_file_provenance: file_log_info = self._create_file_log_info(file, task_record) @@ -249,7 +248,7 @@ def _send_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.Dyna file_log_info['task_id'] = None self.monitoring.send(MessageType.FILE_INFO, file_log_info) - def _create_file_log_info(self, file: Union[File, DataFuture, DynamicFileList.DynamicFile], + def _create_file_log_info(self, file: Union[File, DataFuture], task_record: TaskRecord) -> Dict[str, Any]: """ Create the dictionary that will be included in the log. @@ -287,21 +286,21 @@ def _register_env(self, environ: ParslExecutor) -> None: environ_info = self._create_env_log_info(environ) self.monitoring.send(MessageType.ENVIRONMENT_INFO, environ_info) - def register_as_input(self, f: Union(DynamicFileList.DynamicFile, File, DataFuture), + def register_as_input(self, f: Union[File, DataFuture], task_record: TaskRecord): if self.monitoring and self.monitoring.capture_file_provenance: self._send_file_log_info(f, task_record, False) file_input_info = self._create_file_io_info(f, task_record) self.monitoring.send(MessageType.INPUT_FILE, file_input_info) - def register_as_output(self, f: Union(DynamicFileList.DynamicFile, File, DataFuture), + def register_as_output(self, f: Union[File, DataFuture], task_record: TaskRecord): if self.monitoring and self.monitoring.capture_file_provenance: self._send_file_log_info(f, task_record, True) file_output_info = self._create_file_io_info(f, task_record) self.monitoring.send(MessageType.OUTPUT_FILE, file_output_info) - def _create_file_io_info(self, file: Union[File, DataFuture, DynamicFileList.DynamicFile], + def _create_file_io_info(self, file: Union[File, DataFuture], task_record: TaskRecord) -> Dict[str, Any]: """ Create the dictionary that will be included in the log. @@ -880,13 +879,13 @@ def _add_input_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, if kwarg in ['stdout', 'stderr']: continue (kwargs[kwarg], func) = self.data_manager.optionally_stage_in(f, func, executor) - if isinstance(f, (DynamicFileList.DynamicFile, File, DataFuture)): + if isinstance(f, (File, DataFuture)): self.register_as_input(f, task_record) newargs = list(args) for idx, f in enumerate(newargs): (newargs[idx], func) = self.data_manager.optionally_stage_in(f, func, executor) - if isinstance(f, (DynamicFileList.DynamicFile, File, DataFuture)): + if isinstance(f, (File, DataFuture)): self.register_as_input(f, task_record) return tuple(newargs), kwargs, func @@ -895,11 +894,6 @@ def _add_output_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, func: Callable, task_id: int, task_record: TaskRecord) -> Callable: logger.debug("Adding output dependencies") outputs = kwargs.get('outputs', []) - if isinstance(outputs, DynamicFileList): - outputs.set_dataflow(self, executor, self.check_staging_inhibited(kwargs), task_id, task_record) - outputs.set_parent(app_fut) - app_fut._outputs = outputs - return func app_fut._outputs = [] @@ -984,11 +978,8 @@ def check_dep(d: Any) -> None: # Check for futures in inputs=[...] inp = kwargs.get('inputs', []) - if isinstance(inp, DynamicFileList): - check_dep(inp) - else: - for dep in inp: - check_dep(dep) + for dep in inp: + check_dep(dep) return depends diff --git a/parsl/tests/test_data/test_dynamic_file.py b/parsl/tests/test_data/test_dynamic_file.py deleted file mode 100644 index 0b5e293732..0000000000 --- a/parsl/tests/test_data/test_dynamic_file.py +++ /dev/null @@ -1,415 +0,0 @@ -from concurrent.futures import Future -import pytest -#from pytest_mock import mocker - -from parsl.data_provider.data_manager import DataManager -from parsl.data_provider.dynamic_files import DynamicFileList as DFL -from parsl.data_provider.files import File -from parsl.app.futures import DataFuture -from parsl.dataflow.futures import AppFuture - - -class MockDFK: - def __init__(self, tasks): - self.executors = {'tester': 'test'} - self.storage_access = [] - self.data_manager = DataManager(self) - self.tasks = {tasks['id']: tasks} - - -def test_dynamic_file_empty(): - fut = DFL() - df = DFL.DynamicFile(fut, None) - assert df.file_obj is None - assert df.empty is True - - -def test_dynamic_file_File(): - fut = DFL() - fl = File('test.txt') - df = DFL.DynamicFile(fut, fl) - assert df.file_obj == fl - assert df.empty is False - assert df.done() is True - assert df.filename.endswith('test.txt') - - -def test_dynamic_file_DataFuture(): - fut = Future() - fl = DataFuture(fut, File('test2.txt')) - df = DFL.DynamicFile(DFL(), fl) - assert df.file_obj == fl - assert df.empty is False - assert df.done() is False - assert df.tid is None - assert df.filepath.endswith('test2.txt') - - -def test_dynamic_file_set(): - fut = DFL() - df = DFL.DynamicFile(fut, None) - assert df.file_obj is None - assert df.empty is True - fl = File('test.txt') - df.set(fl) - assert df.file_obj == fl - assert df.empty is False - - -def test_dynamic_file_not_implemented(): - fut = DFL() - fl = DataFuture(fut, File('test2.txt')) - df = DFL.DynamicFile(fut, fl) - with pytest.raises(NotImplementedError): - df.cancel() - assert df.cancelled() is False - assert df.exception() is None - - -def test_dynamic_file_passthrough(): - fut = DFL() - dfl = DataFuture(fut, File('test3.txt')) - df = DFL.DynamicFile(fut, dfl) - assert df.running() is False - af = AppFuture({}) - fut.set_parent(af) - assert df.running() is False - af.set_running_or_notify_cancel() - assert df.running() is True - - -def test_dynamic_file_callback(): - fut = DFL() - dfl = DataFuture(fut, File('test3.txt')) - df = DFL.DynamicFile(fut, dfl) - with pytest.raises(Exception): - df.result(1) - fut.set_running_or_notify_cancel() - fut.set_result(5) - assert df.done() is True - assert isinstance(df.result(), Future) - - -def test_dynamic_file_list(): - dfl = DFL() - assert len(dfl) == 0 - - -def test_dynamic_file_list_append(): - dfl = DFL() - assert len(dfl) == 0 - - dfl.append(File('test.txt')) - dfl.append(File('test2.txt')) - assert len(dfl) == 2 - - -def test_dynamic_file_list_extend(): - dfl = DFL() - assert len(dfl) == 0 - - dfl.extend([File('test.txt'), File('test2.txt')]) - assert len(dfl) == 2 - - -def test_dynamic_file_list_dynamics(): - dfl = DFL() - assert len(dfl) == 0 - - dfl[5] = File('test4.txt') - assert len(dfl) == 6 - - tempid = id(dfl[3]) - dfl[3] = File('test3.txt') - assert len(dfl) == 6 - assert id(dfl[3]) == tempid - - dfl[2] = dfl[5] - assert len(dfl) == 6 - assert id(dfl[2]) != tempid - tempid = id(dfl[5]) - with pytest.raises(ValueError): - dfl[5] = File('another.test.dat') - assert len(dfl) == 6 - assert tempid == id(dfl[5]) - - -def test_dynamic_file_list_no_op(): - dfl = DFL() - with pytest.raises(Exception): - dfl.cancel() - assert dfl.cancelled() is False - - -def test_dynamic_file_list_dynamic_append(): - dfl = DFL() - _ = dfl[5] - assert len(dfl) == 6 - f0 = File('tester5.dat') - dfl[0] = f0 - assert dfl[1].empty - tempid = id(dfl[1]) - f1 = File('tester2.dat') - dfl.append(f1) - assert len(dfl) == 6 - assert dfl[0].filename == f0.filename - assert dfl[1].filename == f1.filename - assert tempid == id(dfl[1]) - assert dfl[2].empty - - -def test_dynamic_file_list_dynamic_extend(): - dfl = DFL() - _ = dfl[5] - assert len(dfl) == 6 - f0 = File('tester5.dat') - dfl[0] = f0 - assert dfl[1].empty - tempids = [id(dfl[0]), id(dfl[1]), id(dfl[2]), id(dfl[3])] - f1 = File('tester2.dat') - f2 = File('tester3.dat') - dfl.extend([f1, f2]) - assert len(dfl) == 6 - assert dfl[0].filename == f0.filename - assert tempids[0] == id(dfl[0]) - assert dfl[1].filename == f1.filename - assert tempids[1] == id(dfl[1]) - assert dfl[2].filename == f2.filename - assert tempids[2] == id(dfl[2]) - assert dfl[3].empty - assert tempids[3] == id(dfl[3]) - f3 = File('tester4.dat') - f4 = File('tester5.dat') - f5 = File('tester6.dat') - f6 = File('tester7.dat') - dfl.extend([f3, f4, f5, f6]) - assert len(dfl) == 7 - - -def test_dynamic_file_list_insert_and_remove(): - f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f) - assert len(dfl) == 10 - dfl.insert(4, File('tester99.dat')) - assert len(dfl) == 11 - assert dfl[4].filename == 'tester99.dat' - assert dfl[5].filename == 'tester4.dat' - - dfl.remove(dfl[5]) - assert len(dfl) == 10 - assert dfl[4].filename == 'tester99.dat' - assert dfl[5].filename == 'tester5.dat' - - dfl.append(File('tester100.dat')) - assert len(dfl) == 11 - - -def test_dynamic_file_list_clear(): - f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f) - assert len(dfl) == 10 - dfl.clear() - assert len(dfl) == 0 - - -def test_dynamic_file_list_pop(): - f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f) - assert len(dfl) == 10 - assert dfl.pop().filename == 'tester9.dat' - assert len(dfl) == 9 - assert dfl.pop(3).filename == 'tester3.dat' - assert len(dfl) == 8 - _ = dfl[15] - dfl.append(File('tester10.dat')) - assert dfl[0].filename == 'tester0.dat' - assert dfl[7].filename == 'tester8.dat' - assert dfl[8].filename == 'tester10.dat' - assert dfl[9].empty - assert dfl._last_idx == 8 - assert len(dfl) == 16 - assert dfl.pop().filename == 'tester10.dat' - - -def test_dynamic_file_sub_list_fixed_size(): - f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f) - assert len(dfl) == 10 - dfsl = dfl[2:5] - assert len(dfsl) == 3 - assert dfsl[0].filename == 'tester2.dat' - assert dfsl[2].filename == 'tester4.dat' - dfl.insert(3, File('testBig.dat')) - assert len(dfl) == 11 - assert len(dfsl) == 3 - assert dfsl[0].filename == 'tester2.dat' - assert dfsl[1].filename == 'testBig.dat' - assert dfsl[2].filename == 'tester3.dat' - - dfl.insert(0, File('testSmall.dat')) - assert len(dfl) == 12 - assert len(dfsl) == 3 - assert dfsl[0].filename == 'tester1.dat' - assert dfsl[1].filename == 'tester2.dat' - assert dfsl[2].filename == 'testBig.dat' - - dfl.append(File('testBig3.dat')) - assert len(dfl) == 13 - assert len(dfsl) == 3 - assert dfsl[0].filename == 'tester1.dat' - assert dfsl[1].filename == 'tester2.dat' - assert dfsl[2].filename == 'testBig.dat' - - -def test_dynamic_file_sub_list_dynamic_size_upper(): - f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f) - assert len(dfl) == 10 - dfsl = dfl[2:] - assert len(dfsl) == 8 - dfl.insert(3, File('testBig.dat')) - assert len(dfl) == 11 - assert len(dfsl) == 9 - assert dfsl[0].filename == 'tester2.dat' - assert dfsl[1].filename == 'testBig.dat' - assert dfsl[2].filename == 'tester3.dat' - - dfl.insert(0, File('testSmall.dat')) - assert len(dfl) == 12 - assert len(dfsl) == 10 - assert dfsl[0].filename == 'tester1.dat' - assert dfsl[1].filename == 'tester2.dat' - assert dfsl[2].filename == 'testBig.dat' - - dfl.append(File('testBig3.dat')) - assert len(dfl) == 13 - assert len(dfsl) == 11 - assert dfsl[0].filename == 'tester1.dat' - assert dfsl[1].filename == 'tester2.dat' - assert dfsl[2].filename == 'testBig.dat' - - -def test_dynamic_file_sub_list_dynamic_size_lower(): - f = [File(f'tester{i}.dat') for i in range(10)] - dfl = DFL(f) - assert len(dfl) == 10 - dfsl = dfl[:5] - assert len(dfsl) == 5 - dfl.insert(3, File('testBig.dat')) - assert len(dfl) == 11 - assert len(dfsl) == 5 - assert dfsl[2].filename == 'tester2.dat' - assert dfsl[3].filename == 'testBig.dat' - assert dfsl[4].filename == 'tester3.dat' - - dfl.insert(0, File('testSmall.dat')) - assert len(dfl) == 12 - assert len(dfsl) == 5 - assert dfsl[0].filename == 'testSmall.dat' - assert dfsl[1].filename == 'tester0.dat' - assert dfsl[2].filename == 'tester1.dat' - - dfl.append(File('testBig3.dat')) - assert len(dfl) == 13 - assert len(dfsl) == 5 - assert dfsl[0].filename == 'testSmall.dat' - assert dfsl[1].filename == 'tester0.dat' - assert dfsl[2].filename == 'tester1.dat' - - -def test_dynamic_file_sub_list_dynamic_size_creation(): - dfl = DFL() - assert len(dfl) == 0 - dfsl = dfl[2:] - assert len(dfl) == 3 - assert len(dfsl) == 1 - - dfl2 = DFL() - assert len(dfl2) == 0 - dfsl2 = dfl2[2:5] - assert len(dfl2) == 5 - assert len(dfsl2) == 3 - - dfl3 = DFL() - assert len(dfl3) == 0 - dfsl3 = dfl3[:5] - assert len(dfl3) == 5 - assert len(dfsl3) == 5 - - -def test_dynamic_file_list_set_parent(): - dfl = DFL() - assert dfl.parent is None - af = AppFuture({}) - dfl.set_parent(af) - assert dfl.parent == af - af1 = AppFuture({}) - with pytest.raises(ValueError): - dfl.set_parent(af1) - - -def test_dynamic_file_list_set_dataflow(): - dfl = DFL() - tr = {'id': 101, 'func': None} - af = AppFuture(tr) - dfl.set_parent(af) - dflow = MockDFK(tr) - dfl.set_dataflow(dflow, 'tester', False, 101) - assert dfl.dataflow == dflow - assert dfl.parent._outputs == dfl - - -def test_dynamic_file_list_staging_with_files(): - dfl = DFL([File(f'tester{i}.dat') for i in range(10)]) - tr = {'id': 101, 'func': None} - af = AppFuture(tr) - dfl.set_parent(af) - dflow = MockDFK(tr) - dfl.set_dataflow(dflow, 'tester', False, 101) - assert dfl.dataflow == dflow - assert dfl.parent._outputs == dfl - - -def test_dynamic_file_list_staging_with_df(): - tr = {'id': 101, 'func': None} - af = AppFuture(tr) - dfl = DFL([DataFuture(af, File(f'tester{i}.dat')) for i in range(10)]) - dfl.set_parent(af) - dflow = MockDFK(tr) - dfl.set_dataflow(dflow, 'tester', False, 101) - assert dfl.dataflow == dflow - assert dfl.parent._outputs == dfl - - -def test_dynamic_filer_list_staging_mix(): - dfl = DFL([File(f'tester{i}.dat') for i in range(10)]) - tr = {'id': 101, 'func': None} - af = AppFuture(tr) - dfl.set_parent(af) - dflow = MockDFK(tr) - dfl.set_dataflow(dflow, 'tester', False, 101) - assert dfl.dataflow == dflow - assert dfl.parent._outputs == dfl - dfl.append(File('newtester.dat')) - - -def stub_func(): - pass - - -def test_dynamic_file_list_mock(mocker): - path = 'parsl.data_provider.data_manager.DataManager' - mocker.patch(f"{path}.stage_out", return_value=stub_func) - dfl = DFL([File(f'tester{i}.dat') for i in range(10)]) - tr = {'id': 101, 'func': None} - af = AppFuture(tr) - dfl.set_parent(af) - dflow = MockDFK(tr) - dfl.set_dataflow(dflow, 'tester', False, 101) - assert dfl.dataflow == dflow - assert dfl.parent._outputs == dfl - dfl.append(File('newtester.dat')) - - -if __name__ == '__main__': - ret = pytest.main(['-v', __file__, '--config', '/home/friedel/devel/parsl/parsl/tests/configs/local_threads.py', '--random-order']) From 9a05b2c0c8d86d413406bca2dd492d8550c06404 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 27 Nov 2024 09:50:43 -0600 Subject: [PATCH 37/59] reorganized to group similar codes together --- parsl/dataflow/dflow.py | 155 ++++++++++++++++--------------- parsl/monitoring/db_manager.py | 22 ++++- parsl/monitoring/message_type.py | 1 + 3 files changed, 100 insertions(+), 78 deletions(-) diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 0339055e74..503010f45d 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -230,83 +230,10 @@ def __exit__(self, exc_type, exc_value, traceback) -> None: raise InternalConsistencyError(f"Exit case for {mode} should be unreachable, validated by typeguard on Config()") def _send_task_log_info(self, task_record: TaskRecord) -> None: - if self.monitoring and self.monitoring.capture_file_provenance: + if self.monitoring: task_log_info = self._create_task_log_info(task_record) self.monitoring.send((MessageType.TASK_INFO, task_log_info)) - def _send_file_log_info(self, file: Union[File, DataFuture], - task_record: TaskRecord, is_output:bool) -> None: - if self.monitoring and self.monitoring.capture_file_provenance: - file_log_info = self._create_file_log_info(file, task_record) - # make sure the task_id is None for inputs - if not is_output: - file_log_info['task_id'] = None - self.monitoring.send(MessageType.FILE_INFO, file_log_info) - - def _create_file_log_info(self, file: Union[File, DataFuture], - task_record: TaskRecord) -> Dict[str, Any]: - """ - Create the dictionary that will be included in the log. - """ - file_log_info = {'file_name': file.filename, - 'file_id': str(file.uuid), - 'run_id': self.run_id, - 'task_id': task_record['id'], - 'try_id': task_record['try_id'], - 'timestamp': file.timestamp, - 'size': file.size, - 'md5sum': file.md5sum - } - return file_log_info - - def _create_env_log_info(self, environ: ParslExecutor) -> Dict[str, Any]: - """ - Create the dictionary that will be included in the log. - """ - env_log_info = {'run_id': environ.run_id, - 'environment_id': str(environ.uu_id), - 'label': environ.label - } - - env_log_info['address'] = getattr(environ, 'address', None) - provider= getattr(environ, 'provider', None) - if provider is not None: - env_log_info['provider'] = provider.label - env_log_info['launcher'] = type(getattr(provider, 'launcher', None)) - env_log_info['worker_init'] = getattr(provider, 'worker_init', None) - return env_log_info - - def _register_env(self, environ: ParslExecutor) -> None: - if self.monitoring and self.monitoring.capture_file_provenance: - environ_info = self._create_env_log_info(environ) - self.monitoring.send(MessageType.ENVIRONMENT_INFO, environ_info) - - def register_as_input(self, f: Union[File, DataFuture], - task_record: TaskRecord): - if self.monitoring and self.monitoring.capture_file_provenance: - self._send_file_log_info(f, task_record, False) - file_input_info = self._create_file_io_info(f, task_record) - self.monitoring.send(MessageType.INPUT_FILE, file_input_info) - - def register_as_output(self, f: Union[File, DataFuture], - task_record: TaskRecord): - if self.monitoring and self.monitoring.capture_file_provenance: - self._send_file_log_info(f, task_record, True) - file_output_info = self._create_file_io_info(f, task_record) - self.monitoring.send(MessageType.OUTPUT_FILE, file_output_info) - - def _create_file_io_info(self, file: Union[File, DataFuture], - task_record: TaskRecord) -> Dict[str, Any]: - """ - Create the dictionary that will be included in the log. - """ - file_io_info = {'file_id': str(file.uuid), - 'run_id': self.run_id, - 'task_id': task_record['id'], - 'try_id': task_record['try_id'], - } - return file_io_info - def _create_task_log_info(self, task_record: TaskRecord) -> Dict[str, Any]: """ Create the dictionary that will be included in the log. @@ -370,6 +297,83 @@ def std_spec_to_name(name, spec): return task_log_info + def _send_file_log_info(self, file: Union[File, DataFuture], + task_record: TaskRecord, is_output:bool) -> None: + """ Generate a message for the monitoring db about a file. """ + if self.monitoring and self.monitoring.capture_file_provenance: + file_log_info = self._create_file_log_info(file, task_record) + # make sure the task_id is None for inputs + if not is_output: + file_log_info['task_id'] = None + self.monitoring.send(MessageType.FILE_INFO, file_log_info) + + def _create_file_log_info(self, file: Union[File, DataFuture], + task_record: TaskRecord) -> Dict[str, Any]: + """ + Create the dictionary that will be included in the ,omitoring db. + """ + file_log_info = {'file_name': file.filename, + 'file_id': str(file.uuid), + 'run_id': self.run_id, + 'task_id': task_record['id'], + 'try_id': task_record['try_id'], + 'timestamp': file.timestamp, + 'size': file.size, + 'md5sum': file.md5sum + } + return file_log_info + + def register_as_input(self, f: Union[File, DataFuture], + task_record: TaskRecord): + """ Register a file as an input to a task. """ + if self.monitoring and self.monitoring.capture_file_provenance: + self._send_file_log_info(f, task_record, False) + file_input_info = self._create_file_io_info(f, task_record) + self.monitoring.send(MessageType.INPUT_FILE, file_input_info) + + def register_as_output(self, f: Union[File, DataFuture], + task_record: TaskRecord): + """ Register a file as an output of a task. """ + if self.monitoring and self.monitoring.capture_file_provenance: + self._send_file_log_info(f, task_record, True) + file_output_info = self._create_file_io_info(f, task_record) + self.monitoring.send(MessageType.OUTPUT_FILE, file_output_info) + + def _create_file_io_info(self, file: Union[File, DataFuture], + task_record: TaskRecord) -> Dict[str, Any]: + """ + Create the dictionary that will be included in the monitoring db + """ + file_io_info = {'file_id': str(file.uuid), + 'run_id': self.run_id, + 'task_id': task_record['id'], + 'try_id': task_record['try_id'], + } + return file_io_info + + def _register_env(self, environ: ParslExecutor) -> None: + """ Capture the environment information for the monitoring db. """ + if self.monitoring and self.monitoring.capture_file_provenance: + environ_info = self._create_env_log_info(environ) + self.monitoring.send(MessageType.ENVIRONMENT_INFO, environ_info) + + def _create_env_log_info(self, environ: ParslExecutor) -> Dict[str, Any]: + """ + Create the dictionary that will be included in the monitoring db + """ + env_log_info = {'run_id': environ.run_id, + 'environment_id': str(environ.uu_id), + 'label': environ.label + } + + env_log_info['address'] = getattr(environ, 'address', None) + provider= getattr(environ, 'provider', None) + if provider is not None: + env_log_info['provider'] = provider.label + env_log_info['launcher'] = type(getattr(provider, 'launcher', None)) + env_log_info['worker_init'] = getattr(provider, 'worker_init', None) + return env_log_info + def _count_deps(self, depends: Sequence[Future]) -> int: """Count the number of unresolved futures in the list depends. """ @@ -845,8 +849,7 @@ def launch_task(self, task_record: TaskRecord) -> Future: return exec_fu def _add_input_deps(self, executor: str, args: Sequence[Any], kwargs: Dict[str, Any], func: Callable, - task_record: TaskRecord) -> Tuple[Sequence[Any], Dict[str, Any], - Callable]: + task_record: TaskRecord) -> Tuple[Sequence[Any], Dict[str, Any], Callable]: """Look for inputs of the app that are files. Give the data manager the opportunity to replace a file with a data future for that file, for example wrapping the result of a staging action. diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 34afbdfbb0..2765d1d988 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -52,6 +52,7 @@ INPUT_FILES = 'input_files' # Input files table include input file info OUTPUT_FILES = 'output_files' # Output files table include output file info ENVIRONMENT = 'environment' # Executor table include executor info +MISC_INFO = 'misc_info' # Misc info table include misc info class Database: @@ -270,7 +271,6 @@ class Environment(Base): worker_init = Column('worker_init', Text, nullable=True) __table_args__ = (PrimaryKeyConstraint('environment_id'),) - class InputFiles(Base): __tablename__ = INPUT_FILES file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), @@ -295,6 +295,16 @@ class OutputFiles(Base): nullable=False) __table_args__ = (PrimaryKeyConstraint('file_id'),) + class MiscInfo(Base): + __tablename__ = MISC_INFO + run_id = Column('run_id', Text, nullable=False) + task_id = Column('task_id', Integer, nullable=True) + try_id = Column('try_id', Integer, nullable=False) + timestamp = Column('timestamp', DateTime, nullable=False) + info = Column('info', Text, nullable=False) + __table_args__ = ( + PrimaryKeyConstraint('run_id', 'task_id', 'try_id', 'timestamp'),) + class Resource(Base): __tablename__ = RESOURCE try_id = Column('try_id', Integer, nullable=False) @@ -449,6 +459,7 @@ def start(self, input_file_update_messages, input_file_insert_messages, input_file_all_messages = [], [], [] output_file_update_messages, output_file_insert_messages, output_file_all_messages = [], [], [] environment_insert_messages = [] + misc_info_insert_messages = [] for msg_type, msg in priority_messages: if msg_type == MessageType.WORKFLOW_INFO: if "python_version" in msg: # workflow start message @@ -538,7 +549,9 @@ def start(self, if msg['environment_id'] not in inserted_envs: environment_insert_messages.append(msg) inserted_envs.add(msg['environment_id']) - + elif msg_ype == MessageType.MISC_INFO: + # no filtering, just insert each message + misc_info_insert_messages.append(msg) elif msg_type == MessageType.INPUT_FILE: file_id = msg['file_id'] input_file_all_messages.append(msg) @@ -615,6 +628,11 @@ def start(self, self._insert(table=OUTPUT_FILES, messages=output_file_insert_messages) logger.debug("There are {} inserted output file records".format(len(output_inserted_files))) + if misc_info_insert_messages: + logger.debug("Inserting {} MISC_INFO to misc_info table".format(len(misc_info_insert_messages))) + self._insert(table=MISC_INFO, messages=misc_info_insert_messages) + logger.debug("There are {} inserted misc info records".format(len(misc_info_insert_messages))) + if try_insert_messages: logger.debug("Inserting {} TASK_INFO to try table".format(len(try_insert_messages))) self._insert(table=TRY, messages=try_insert_messages) diff --git a/parsl/monitoring/message_type.py b/parsl/monitoring/message_type.py index 80e4caa0fd..03a81f9dbb 100644 --- a/parsl/monitoring/message_type.py +++ b/parsl/monitoring/message_type.py @@ -23,3 +23,4 @@ class MessageType(Enum): INPUT_FILE = 6 OUTPUT_FILE = 7 ENVIRONMENT_INFO = 8 + MISC_INFO = 9 From 14aac2b5333628b42aa623d0cadf39b31ede1a45 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 27 Nov 2024 11:09:37 -0600 Subject: [PATCH 38/59] fixed message format --- parsl/dataflow/dflow.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 503010f45d..6efab18d28 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -305,7 +305,7 @@ def _send_file_log_info(self, file: Union[File, DataFuture], # make sure the task_id is None for inputs if not is_output: file_log_info['task_id'] = None - self.monitoring.send(MessageType.FILE_INFO, file_log_info) + self.monitoring.send((MessageType.FILE_INFO, file_log_info)) def _create_file_log_info(self, file: Union[File, DataFuture], task_record: TaskRecord) -> Dict[str, Any]: @@ -329,7 +329,7 @@ def register_as_input(self, f: Union[File, DataFuture], if self.monitoring and self.monitoring.capture_file_provenance: self._send_file_log_info(f, task_record, False) file_input_info = self._create_file_io_info(f, task_record) - self.monitoring.send(MessageType.INPUT_FILE, file_input_info) + self.monitoring.send((MessageType.INPUT_FILE, file_input_info)) def register_as_output(self, f: Union[File, DataFuture], task_record: TaskRecord): @@ -337,7 +337,7 @@ def register_as_output(self, f: Union[File, DataFuture], if self.monitoring and self.monitoring.capture_file_provenance: self._send_file_log_info(f, task_record, True) file_output_info = self._create_file_io_info(f, task_record) - self.monitoring.send(MessageType.OUTPUT_FILE, file_output_info) + self.monitoring.send((MessageType.OUTPUT_FILE, file_output_info)) def _create_file_io_info(self, file: Union[File, DataFuture], task_record: TaskRecord) -> Dict[str, Any]: @@ -355,7 +355,7 @@ def _register_env(self, environ: ParslExecutor) -> None: """ Capture the environment information for the monitoring db. """ if self.monitoring and self.monitoring.capture_file_provenance: environ_info = self._create_env_log_info(environ) - self.monitoring.send(MessageType.ENVIRONMENT_INFO, environ_info) + self.monitoring.send((MessageType.ENVIRONMENT_INFO, environ_info)) def _create_env_log_info(self, environ: ParslExecutor) -> Dict[str, Any]: """ From 585fd039525c12ae4f305c03171f8ee98fbded5c Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 27 Nov 2024 11:40:57 -0600 Subject: [PATCH 39/59] fixed some typos --- parsl/monitoring/db_manager.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 2765d1d988..e06cf30789 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -5,7 +5,7 @@ import queue import threading import time -from typing import Any, Dict, List, Optional, Set, Tuple, TypeVar, cast +from typing import Any, Dict, List, Optional, Set, Tuple, TypeVar, Union, cast import typeguard @@ -407,9 +407,9 @@ def start(self, """ like inserted_tasks but for Files """ - inserted_files = dict() # type: Dict[Str, Dict[Str, Union[None, datetime.datetime, Str, int]]] - input_inserted_files = dict() # type: Dict[Str, List[Str]] - output_inserted_files = dict() # type: Dict[Str, List[Str]] + inserted_files = dict() # type: Dict[str, Dict[str, Union[None, datetime.datetime, str, int]]] + input_inserted_files = dict() # type: Dict[str, List[str]] + output_inserted_files = dict() # type: Dict[str, List[str]] inserted_envs = set() # type: Set[object] # for any task ID, we can defer exactly one message, which is the @@ -549,7 +549,7 @@ def start(self, if msg['environment_id'] not in inserted_envs: environment_insert_messages.append(msg) inserted_envs.add(msg['environment_id']) - elif msg_ype == MessageType.MISC_INFO: + elif msg_type == MessageType.MISC_INFO: # no filtering, just insert each message misc_info_insert_messages.append(msg) elif msg_type == MessageType.INPUT_FILE: From 19f77477eeeafd204b7e86b07e5fc09aae9088ff Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 27 Nov 2024 13:37:44 -0600 Subject: [PATCH 40/59] updates to include misc info table --- docs/userguide/monitoring.rst | 35 +++++++++++++++++++ parsl/dataflow/dflow.py | 26 ++++++++++++++ parsl/monitoring/db_manager.py | 7 ++-- parsl/monitoring/visualization/models.py | 8 +++++ .../visualization/templates/workflow.html | 20 ++++++++++- parsl/monitoring/visualization/views.py | 10 ++++-- 6 files changed, 99 insertions(+), 7 deletions(-) diff --git a/docs/userguide/monitoring.rst b/docs/userguide/monitoring.rst index e3f992bf0f..c5cec837e1 100644 --- a/docs/userguide/monitoring.rst +++ b/docs/userguide/monitoring.rst @@ -65,6 +65,41 @@ The monitoring system can also be used to track file provenance. File provenance The purpose of the file provenance tracking is to provide a mechanism where the user can see exactly how a file was created and used in a workflow. This can be useful for debugging, understanding the workflow, for ensuring that the workflow is reproducible, and reviewing past work. The file provenance information is stored in the monitoring database and can be accessed using the ``parsl-visualize`` tool. To enable file provenance tracking, set the ``capture_file_provenance`` flag to ``True`` in the `parsl.monitoring.MonitoringHub` configuration. +This functionality also enables you to log informational messages from you scripts, to capture anything not automatically gathered. The main change to your code to use this functionality is to assign the return value of the ``parsl.load`` to a variable. Then use the ``log_info`` function to log the messages in the database. Note that this feature is only available in the main script, not inside apps, unless you pass the variable (``my_cfg`` in the example below), as an argument to the app. The following example shows how to use this feature. + +.. code-block:: python + + import parsl + from parsl.monitoring.monitoring import MonitoringHub + from parsl.config import Config + from parsl.executors import HighThroughputExecutor + from parsl.addresses import address_by_hostname + + import logging + + config = Config( + executors=[ + HighThroughputExecutor( + label="local_htex", + cores_per_worker=1, + max_workers_per_node=4, + address=address_by_hostname(), + ) + ], + monitoring=MonitoringHub( + hub_address=address_by_hostname(), + hub_port=55055, + monitoring_debug=False, + resource_monitoring_interval=10, + ), + strategy='none' + ) + + my_cfg = parsl.load(config) + + my_cfg.log_info("This is an informational message") + + Visualization ------------- diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 6efab18d28..72cc6f6507 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -374,6 +374,32 @@ def _create_env_log_info(self, environ: ParslExecutor) -> Dict[str, Any]: env_log_info['worker_init'] = getattr(provider, 'worker_init', None) return env_log_info + def log_info(self, msg: str) -> None: + """Log an info message to the monitoring db.""" + if self.monitoring: + if self.monitoring.capture_file_provenance: + misc_msg = self._create_misc_log_info(msg) + if misc_msg is None: + logger.info("Could not turn message into a str, so not sending message to monitoring db") + self.monitoring.send((MessageType.MISC_INFO, misc_msg)) + else: + logger.info("File provenance is not enabled, so not sending message to monitoring db") + else: + logger.info("Monitoring is not enabled, so not sending message to monitoring db") + + def _create_misc_log_info(self, msg: Any) -> Union[None, Dict[str, Any]]: + """ + Create the dictionary that will be included in the monitoring db + """ + try: + misc_log_info = {'run_id': self.run_id, + 'timestamp': datetime.datetime.now(), + 'info': str(msg) + } + return misc_log_info + except Exception: + return None + def _count_deps(self, depends: Sequence[Future]) -> int: """Count the number of unresolved futures in the list depends. """ diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index e06cf30789..1cc7ccb6aa 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -298,12 +298,10 @@ class OutputFiles(Base): class MiscInfo(Base): __tablename__ = MISC_INFO run_id = Column('run_id', Text, nullable=False) - task_id = Column('task_id', Integer, nullable=True) - try_id = Column('try_id', Integer, nullable=False) timestamp = Column('timestamp', DateTime, nullable=False) info = Column('info', Text, nullable=False) __table_args__ = ( - PrimaryKeyConstraint('run_id', 'task_id', 'try_id', 'timestamp'),) + PrimaryKeyConstraint('run_id', 'timestamp'),) class Resource(Base): __tablename__ = RESOURCE @@ -758,7 +756,8 @@ def _dispatch_to_internal(self, x: Tuple) -> None: assert isinstance(x, tuple) assert len(x) == 2, "expected message tuple to have exactly two elements" - if x[0] in [MessageType.WORKFLOW_INFO, MessageType.TASK_INFO, MessageType.FILE_INFO, MessageType.INPUT_FILE, MessageType.OUTPUT_FILE, MessageType.ENVIRONMENT_INFO]: + if x[0] in [MessageType.WORKFLOW_INFO, MessageType.TASK_INFO, MessageType.FILE_INFO, MessageType.INPUT_FILE, + MessageType.OUTPUT_FILE, MessageType.ENVIRONMENT_INFO, MessageType.MISC_INFO]: self.pending_priority_queue.put(cast(Any, x)) elif x[0] == MessageType.RESOURCE_INFO: body = x[1] diff --git a/parsl/monitoring/visualization/models.py b/parsl/monitoring/visualization/models.py index 758f43053c..5aa24931f0 100644 --- a/parsl/monitoring/visualization/models.py +++ b/parsl/monitoring/visualization/models.py @@ -116,6 +116,14 @@ class OutputFiles(db.Model): __table_args__ = (db.PrimaryKeyConstraint('file_id'),) +class MiscInfo(db.Model): + __tablename__ = 'misc_info' + run_id = db.Column('run_id', db.Text, nullable=False) + timestamp = db.Column('timestamp', db.DateTime, nullable=False) + info = db.Column('info', db.Text, nullable=False) + __table_args__ = (db.PrimaryKeyConstraint('run_id', 'timestamp'),) + + class Resource(db.Model): __tablename__ = RESOURCE task_id = db.Column('task_id', db.Integer, db.ForeignKey( diff --git a/parsl/monitoring/visualization/templates/workflow.html b/parsl/monitoring/visualization/templates/workflow.html index 5bd35195f7..65e6309bfc 100644 --- a/parsl/monitoring/visualization/templates/workflow.html +++ b/parsl/monitoring/visualization/templates/workflow.html @@ -44,7 +44,25 @@

    App Summary
    - +{% if have_misc %} +
    Misc Info
    + + + + + + + + + {% for m_info in misc_info %} + + + + + {% endfor %} + +
    DateInfo
    {{ m_info['timestamp'] | timeformat }}{{ m_info['info'] }}
    +{% endif %}
    View workflow DAG -- colored by apps
    View workflow DAG -- colored by task states
    View workflow resource usage diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index bf218ab100..7aaa3bf7d3 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -12,7 +12,8 @@ Files, InputFiles, OutputFiles, - Environment + Environment, + MiscInfo, ) from parsl.monitoring.visualization.plots.default.task_plots import ( time_series_memory_per_task_plot, @@ -152,12 +153,17 @@ def workflow(workflow_id): have_files = True else: have_files = False + misc_info = MiscInfo.query.filter_by(run_id=workflow_id).order_by(MiscInfo.timestamp.asc()).all() + if misc_info: + have_misc = True + else: + have_misc = False return render_template('workflow.html', workflow_details=workflow_details, task_summary=task_summary, task_gantt=task_gantt_plot(df_task, df_status, time_completed=workflow_details.time_completed), task_per_app=task_per_app_plot(df_task_tries, df_status, time_completed=workflow_details.time_completed), - have_files=have_files) + have_files=have_files, misc_info=misc_info, have_misc=have_misc) @app.route('/workflow//environment/') From 27f6391eefd22580a091c1cd9cede5aa0b17f3d8 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 27 Nov 2024 15:50:23 -0600 Subject: [PATCH 41/59] updated docs --- docs/userguide/monitoring.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/userguide/monitoring.rst b/docs/userguide/monitoring.rst index c5cec837e1..44064e6882 100644 --- a/docs/userguide/monitoring.rst +++ b/docs/userguide/monitoring.rst @@ -99,6 +99,7 @@ This functionality also enables you to log informational messages from you scrip my_cfg.log_info("This is an informational message") +Known limitations: The file provenance feature will capture the creation of files and the use of files in an app, but currently does not capture the modification of files it already knows about. Visualization ------------- From 97ade3057c38b543da7f2e3ba8d3b101d6da80e4 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 27 Nov 2024 15:50:37 -0600 Subject: [PATCH 42/59] fixed bug for remote files --- parsl/app/futures.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index 3bb53c172b..b637b5daff 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -39,12 +39,15 @@ def parent_callback(self, parent_fu): self.set_exception(e) else: self.set_result(self.file_obj) - if not self.file_obj.timestamp: - self.file_obj.timestamp = datetime.fromtimestamp(stat(self.file_obj.filepath).st_ctime, tz=timezone.utc) - if not self.file_obj.size: - self.file_obj.size = stat(self.file_obj.filepath).st_size - if not self.file_obj.md5sum: - self.file_obj.md5sum = md5(open(self.file_obj, 'rb').read()).hexdigest() + if self.file_obj.scheme == 'file' and os.path.isfile(self.file_obj.filepath): + if not self.file_obj.timestamp: + self.file_obj.timestamp = datetime.fromtimestamp(stat(self.file_obj.filepath).st_ctime, tz=timezone.utc) + if not self.file_obj.size: + self.file_obj.size = stat(self.file_obj.filepath).st_size + if not self.file_obj.md5sum: + self.file_obj.md5sum = md5(open(self.file_obj, 'rb').read()).hexdigest() + else: + self.file_obj.timestamp = datetime.now(tz=timezone.utc) if self.data_flow_kernel: self.data_flow_kernel.register_as_output(self.file_obj, self.app_fut.task_record) From 33be080abcc673c9624b52999a6f7a36d2f48bde Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 27 Nov 2024 15:50:49 -0600 Subject: [PATCH 43/59] test for provenance framework --- .../test_monitoring/test_file_provenance.py | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 parsl/tests/test_monitoring/test_file_provenance.py diff --git a/parsl/tests/test_monitoring/test_file_provenance.py b/parsl/tests/test_monitoring/test_file_provenance.py new file mode 100644 index 0000000000..d9045753d2 --- /dev/null +++ b/parsl/tests/test_monitoring/test_file_provenance.py @@ -0,0 +1,126 @@ +import pytest +import os +import shutil +import time + +import parsl +from parsl.config import Config +from parsl.executors import HighThroughputExecutor +from parsl.monitoring import MonitoringHub +from parsl.providers import LocalProvider +from parsl.data_provider.files import File + + +@parsl.bash_app +def initialize(outputs=[]): + import time + time.sleep(1) + return f"echo 'Initialized' > {outputs[0]}" + + +@parsl.python_app +def split_data(inputs=None, outputs=None): + with open(inputs[0], 'r') as fh: + data = fh.read() + for i, op in enumerate(outputs): + with open(op, 'w') as ofh: + ofh.write(f"{i + 1}\n") + ofh.write(data) + + +@parsl.python_app +def process(inputs=None, outputs=None): + with open(inputs[0], 'r') as fh: + data = fh.read() + with open(outputs[0], 'w') as ofh: + ofh.write(f"{data} processed") + + +@parsl.python_app +def combine(inputs=None, outputs=None): + with open(outputs[0], 'w') as ofh: + for fl in inputs: + with open(fl, 'r') as fh: + ofh.write(fh.read()) + ofh.write("\n") + + +def fresh_config(run_dir): + return Config( + run_dir=str(run_dir), + executors=[ + HighThroughputExecutor( + address="127.0.0.1", + label="htex_local", + provider=LocalProvider( + init_blocks=1, + min_blocks=1, + max_blocks=1, + ) + ) + ], + strategy='simple', + strategy_period=0.1, + monitoring=MonitoringHub( + hub_address="localhost", + hub_port=55055, + logging_endpoint=f"sqlite:///{run_dir}/monitoring.db", + capture_file_provenance=True, + ) + ) + + +@pytest.mark.local +def test_provenance(tmpd_cwd): + # this is imported here rather than at module level because + # it isn't available in a plain parsl install, so this module + # would otherwise fail to import and break even a basic test + # run. + import sqlalchemy + + cfg = fresh_config(tmpd_cwd) + my_dfk = parsl.load(cfg) + + cwd = os.getcwd() + if os.path.exists(os.path.join(cwd, 'provenance')): + shutil.rmtree(os.path.join(cwd, 'provenance')) + os.mkdir(os.path.join(cwd, 'provenance')) + os.chdir(os.path.join(cwd, 'provenance')) + + my_dfk.log_info("Starting Run") + + init = initialize(outputs=[File(os.path.join(os.getcwd(), 'initialize.txt'))]) + + sd = split_data(inputs=[init.outputs[0]], + outputs=[File(os.path.join(os.getcwd(), f'split_data_{i}.txt')) for i in range(4)]) + + p = [process(inputs=[sdo], outputs=[File(os.path.join(os.getcwd(), f'processed_data_{i}.txt'))]) for i, sdo in + enumerate(sd.outputs)] + + c = combine(inputs=[pp.outputs[0] for pp in p], outputs=[File(os.path.join(os.getcwd(), 'combined_data.txt'))]) + + c.result() + os.chdir(cwd) + my_dfk.log_info("Ending run") + time.sleep(2) + + engine = sqlalchemy.create_engine(cfg.monitoring.logging_endpoint) + with engine.begin() as connection: + def count_rows(table: str): + result = connection.execute(f"SELECT COUNT(*) FROM {table}") + (c,) = result.first() + return c + + assert count_rows("workflow") == 1 + + assert count_rows("task") == 7 + + assert count_rows("files") == 10 + + assert count_rows("input_files") == 9 + + assert count_rows("output_files") == 10 + + assert count_rows("misc_info") == 2 + + parsl.clear() \ No newline at end of file From 07c2e45b02d5ab781490830907062ea1b85a74d5 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 27 Nov 2024 16:04:36 -0600 Subject: [PATCH 44/59] flake8 fixes --- parsl/data_provider/files.py | 2 +- parsl/dataflow/dflow.py | 4 +- parsl/monitoring/db_manager.py | 38 +++++++------------ parsl/monitoring/visualization/views.py | 8 ++-- .../test_monitoring/test_file_provenance.py | 8 ++-- 5 files changed, 25 insertions(+), 35 deletions(-) diff --git a/parsl/data_provider/files.py b/parsl/data_provider/files.py index 333a652340..0a296cd606 100644 --- a/parsl/data_provider/files.py +++ b/parsl/data_provider/files.py @@ -84,7 +84,7 @@ def __repr__(self) -> str: f"path={self.path}", f"filename={self.filename}", f"uuid={self.uuid}", - ] + ] if self.local_path is not None: content.append(f"local_path={self.local_path}") diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 72cc6f6507..868aaefe12 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -298,7 +298,7 @@ def std_spec_to_name(name, spec): return task_log_info def _send_file_log_info(self, file: Union[File, DataFuture], - task_record: TaskRecord, is_output:bool) -> None: + task_record: TaskRecord, is_output: bool) -> None: """ Generate a message for the monitoring db about a file. """ if self.monitoring and self.monitoring.capture_file_provenance: file_log_info = self._create_file_log_info(file, task_record) @@ -367,7 +367,7 @@ def _create_env_log_info(self, environ: ParslExecutor) -> Dict[str, Any]: } env_log_info['address'] = getattr(environ, 'address', None) - provider= getattr(environ, 'provider', None) + provider = getattr(environ, 'provider', None) if provider is not None: env_log_info['provider'] = provider.label env_log_info['launcher'] = type(getattr(provider, 'launcher', None)) diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 1cc7ccb6aa..aed18d1dd8 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -54,6 +54,7 @@ ENVIRONMENT = 'environment' # Executor table include executor info MISC_INFO = 'misc_info' # Misc info table include misc info + class Database: if not _sqlalchemy_enabled: @@ -248,12 +249,9 @@ class Files(Base): file_name = Column('file_name', Text, index=True, nullable=False) file_path = Column('file_path', Text, nullable=True) file_id = Column('file_id', Text, index=True, nullable=False) - run_id = Column('run_id', Text, - nullable=False) - task_id = Column('task_id', Integer, - nullable=True) - try_id = Column('try_id', Integer, - nullable=True) + run_id = Column('run_id', Text, nullable=False) + task_id = Column('task_id', Integer, nullable=True) + try_id = Column('try_id', Integer, nullable=True) timestamp = Column('timestamp', DateTime, nullable=True) size = Column('size', BigInteger, nullable=True) md5sum = Column('md5sum', Text, nullable=True) @@ -273,26 +271,18 @@ class Environment(Base): class InputFiles(Base): __tablename__ = INPUT_FILES - file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), - nullable=False) - run_id = Column('run_id', Text, - nullable=False) - task_id = Column('task_id', Integer, - nullable=False) - try_id = Column('try_id', Integer, - nullable=False) + file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), nullable=False) + run_id = Column('run_id', Text, nullable=False) + task_id = Column('task_id', Integer, nullable=False) + try_id = Column('try_id', Integer, nullable=False) __table_args__ = (PrimaryKeyConstraint('file_id'),) class OutputFiles(Base): __tablename__ = OUTPUT_FILES - file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), - nullable=False) - run_id = Column('run_id', Text, - nullable=False) - task_id = Column('task_id', Integer, - nullable=False) - try_id = Column('try_id', Integer, - nullable=False) + file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), nullable=False) + run_id = Column('run_id', Text, nullable=False) + task_id = Column('task_id', Integer, nullable=False) + try_id = Column('try_id', Integer, nullable=False) __table_args__ = (PrimaryKeyConstraint('file_id'),) class MiscInfo(Base): @@ -454,8 +444,8 @@ def start(self, task_info_update_messages, task_info_insert_messages, task_info_all_messages = [], [], [] try_update_messages, try_insert_messages, try_all_messages = [], [], [] file_update_messages, file_insert_messages, file_all_messages = [], [], [] - input_file_update_messages, input_file_insert_messages, input_file_all_messages = [], [], [] - output_file_update_messages, output_file_insert_messages, output_file_all_messages = [], [], [] + input_file_insert_messages, input_file_all_messages = [], [] + output_file_insert_messages, output_file_all_messages = [], [] environment_insert_messages = [] misc_info_insert_messages = [] for msg_type, msg in priority_messages: diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index 7aaa3bf7d3..e6829668fb 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -14,20 +14,20 @@ OutputFiles, Environment, MiscInfo, - ) +) from parsl.monitoring.visualization.plots.default.task_plots import ( time_series_memory_per_task_plot, - ) +) from parsl.monitoring.visualization.plots.default.workflow_plots import ( task_gantt_plot, task_per_app_plot, workflow_dag_plot, - ) +) from parsl.monitoring.visualization.plots.default.workflow_resource_plots import ( resource_distribution_plot, resource_efficiency, worker_efficiency, - ) +) from parsl.monitoring.visualization.form_fields import FileForm diff --git a/parsl/tests/test_monitoring/test_file_provenance.py b/parsl/tests/test_monitoring/test_file_provenance.py index d9045753d2..6b0594ede2 100644 --- a/parsl/tests/test_monitoring/test_file_provenance.py +++ b/parsl/tests/test_monitoring/test_file_provenance.py @@ -56,9 +56,9 @@ def fresh_config(run_dir): init_blocks=1, min_blocks=1, max_blocks=1, - ) ) - ], + ) + ], strategy='simple', strategy_period=0.1, monitoring=MonitoringHub( @@ -66,8 +66,8 @@ def fresh_config(run_dir): hub_port=55055, logging_endpoint=f"sqlite:///{run_dir}/monitoring.db", capture_file_provenance=True, - ) ) + ) @pytest.mark.local @@ -123,4 +123,4 @@ def count_rows(table: str): assert count_rows("misc_info") == 2 - parsl.clear() \ No newline at end of file + parsl.clear() From 97108e1d56e00e14ccf42c9133443d0ab2dc9d6f Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Wed, 27 Nov 2024 16:23:05 -0600 Subject: [PATCH 45/59] fixed missing line in docs --- docs/userguide/monitoring.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/userguide/monitoring.rst b/docs/userguide/monitoring.rst index 44064e6882..74b2a98dea 100644 --- a/docs/userguide/monitoring.rst +++ b/docs/userguide/monitoring.rst @@ -91,6 +91,7 @@ This functionality also enables you to log informational messages from you scrip hub_port=55055, monitoring_debug=False, resource_monitoring_interval=10, + capture_file_provenance=True, ), strategy='none' ) From a837f08a83088661a6fcd225eb37e18ff8bd591b Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 09:05:12 -0600 Subject: [PATCH 46/59] removed extraneous ignores --- .gitignore | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index e01da5d274..eb583cae84 100644 --- a/.gitignore +++ b/.gitignore @@ -120,14 +120,4 @@ ENV/ .mypy_cache/ # emacs buffers -\#* - -runinfo* -parsl/tests/.pytest* - -# documentation generation -docs/stubs/* -docs/1-parsl-introduction.ipynb - -/tmp -parsl/data_provider/dyn.new.py +\#* \ No newline at end of file From 6bef04ffc560d3caf9d6ac333a22d1b5197c7c02 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 09:23:19 -0600 Subject: [PATCH 47/59] reverted removal of trailing white spaces --- docs/userguide/data.rst | 95 +++++++++++++++++------------------ docs/userguide/monitoring.rst | 8 +-- 2 files changed, 51 insertions(+), 52 deletions(-) diff --git a/docs/userguide/data.rst b/docs/userguide/data.rst index 21f3462949..9350a6d96f 100644 --- a/docs/userguide/data.rst +++ b/docs/userguide/data.rst @@ -3,7 +3,7 @@ Passing Python objects ====================== -Parsl apps can communicate via standard Python function parameter passing +Parsl apps can communicate via standard Python function parameter passing and return statements. The following example shows how a Python string can be passed to, and returned from, a Parsl app. @@ -12,21 +12,21 @@ can be passed to, and returned from, a Parsl app. @python_app def example(name): return 'hello {0}'.format(name) - + r = example('bob') print(r.result()) -Parsl uses the dill and pickle libraries to serialize Python objects +Parsl uses the dill and pickle libraries to serialize Python objects into a sequence of bytes that can be passed over a network from the submitting machine to executing workers. -Thus, Parsl apps can receive and return standard Python data types +Thus, Parsl apps can receive and return standard Python data types such as booleans, integers, tuples, lists, and dictionaries. However, not -all objects can be serialized with these methods (e.g., closures, generators, +all objects can be serialized with these methods (e.g., closures, generators, and system objects), and so those objects cannot be used with all executors. -Parsl will raise a `SerializationError` if it encounters an object that it cannot -serialize. This applies to objects passed as arguments to an app, as well as objects +Parsl will raise a `SerializationError` if it encounters an object that it cannot +serialize. This applies to objects passed as arguments to an app, as well as objects returned from an app. See :ref:`label_serialization_error`. @@ -34,9 +34,9 @@ Staging data files ================== Parsl apps can take and return data files. A file may be passed as an input -argument to an app, or returned from an app after execution. Parsl -provides support to automatically transfer (stage) files between -the main Parsl program, worker nodes, and external data storage systems. +argument to an app, or returned from an app after execution. Parsl +provides support to automatically transfer (stage) files between +the main Parsl program, worker nodes, and external data storage systems. Input files can be passed as regular arguments, or a list of them may be specified in the special ``inputs`` keyword argument to an app invocation. @@ -69,13 +69,13 @@ interface. Parsl files ----------- -Parsl uses a custom :py:class:`~parsl.data_provider.files.File` to provide a -location-independent way of referencing and accessing files. -Parsl files are defined by specifying the URL *scheme* and a path to the file. +Parsl uses a custom :py:class:`~parsl.data_provider.files.File` to provide a +location-independent way of referencing and accessing files. +Parsl files are defined by specifying the URL *scheme* and a path to the file. Thus a file may represent an absolute path on the submit-side file system or a URL to an external file. -The scheme defines the protocol via which the file may be accessed. +The scheme defines the protocol via which the file may be accessed. Parsl supports the following schemes: file, ftp, http, https, and globus. If no scheme is specified Parsl will default to the file scheme. @@ -89,8 +89,8 @@ README file. File('https://github.com/Parsl/parsl/blob/master/README.rst') -Parsl automatically translates the file's location relative to the -environment in which it is accessed (e.g., the Parsl program or an app). +Parsl automatically translates the file's location relative to the +environment in which it is accessed (e.g., the Parsl program or an app). The following example shows how a file can be accessed in the app irrespective of where that app executes. @@ -113,23 +113,22 @@ As described below, the method by which this files are transferred depends on the scheme and the staging providers specified in the Parsl configuration. - Staging providers ----------------- -Parsl is able to transparently stage files between at-rest locations and +Parsl is able to transparently stage files between at-rest locations and execution locations by specifying a list of -:py:class:`~parsl.data_provider.staging.Staging` instances for an executor. +:py:class:`~parsl.data_provider.staging.Staging` instances for an executor. These staging instances define how to transfer files in and out of an execution location. This list should be supplied as the ``storage_access`` -parameter to an executor when it is constructed. +parameter to an executor when it is constructed. -Parsl includes several staging providers for moving files using the +Parsl includes several staging providers for moving files using the schemes defined above. By default, Parsl executors are created with -three common staging providers: +three common staging providers: the NoOpFileStaging provider for local and shared file systems and the HTTP(S) and FTP staging providers for transferring -files to and from remote storage locations. The following +files to and from remote storage locations. The following example shows how to explicitly set the default staging providers. .. code-block:: python @@ -147,12 +146,12 @@ example shows how to explicitly set the default staging providers. ) ] ) - - -Parsl further differentiates when staging occurs relative to -the app invocation that requires or produces files. + + +Parsl further differentiates when staging occurs relative to +the app invocation that requires or produces files. Staging either occurs with the executing task (*in-task staging*) -or as a separate task (*separate task staging*) before app execution. +or as a separate task (*separate task staging*) before app execution. In-task staging uses a wrapper that is executed around the Parsl task and thus occurs on the resource on which the task is executed. Separate @@ -168,9 +167,9 @@ NoOpFileStaging for Local/Shared File Systems The NoOpFileStaging provider assumes that files specified either with a path or with the ``file`` URL scheme are available both on the submit and execution side. This occurs, for example, when there is a -shared file system. In this case, files will not moved, and the +shared file system. In this case, files will not moved, and the File object simply presents the same file path to the Parsl program -and any executing tasks. +and any executing tasks. Files defined as follows will be handled by the NoOpFileStaging provider. @@ -208,14 +207,14 @@ will be executed as a separate Parsl task that will complete before the corresponding app executes. These providers cannot be used to stage out output files. -The following example defines a file accessible on a remote FTP server. +The following example defines a file accessible on a remote FTP server. .. code-block:: python File('ftp://www.iana.org/pub/mirror/rirstats/arin/ARIN-STATS-FORMAT-CHANGE.txt') When such a file object is passed as an input to an app, Parsl will download the file to whatever location is selected for the app to execute. -The following example illustrates how the remote file is implicitly downloaded from an FTP server and then converted. Note that the app does not need to know the location of the downloaded file on the remote computer, as Parsl abstracts this translation. +The following example illustrates how the remote file is implicitly downloaded from an FTP server and then converted. Note that the app does not need to know the location of the downloaded file on the remote computer, as Parsl abstracts this translation. .. code-block:: python @@ -235,8 +234,8 @@ The following example illustrates how the remote file is implicitly downloaded f # call the convert app with the Parsl file f = convert(inputs=[inp], outputs=[out]) f.result() - -HTTP and FTP separate task staging providers can be configured as follows. + +HTTP and FTP separate task staging providers can be configured as follows. .. code-block:: python @@ -244,8 +243,8 @@ HTTP and FTP separate task staging providers can be configured as follows. from parsl.executors import HighThroughputExecutor from parsl.data_provider.http import HTTPSeparateTaskStaging from parsl.data_provider.ftp import FTPSeparateTaskStaging - - config = Config( + + config = Config( executors=[ HighThroughputExecutor( storage_access=[HTTPSeparateTaskStaging(), FTPSeparateTaskStaging()] @@ -264,10 +263,10 @@ task staging providers described above, but will do so in a wrapper around individual app invocations, which guarantees that they will stage files to a file system visible to the app. -A downside of this staging approach is that the staging tasks are less visible +A downside of this staging approach is that the staging tasks are less visible to Parsl, as they are not performed as separate Parsl tasks. -In-task staging providers can be configured as follows. +In-task staging providers can be configured as follows. .. code-block:: python @@ -346,16 +345,16 @@ In some cases, for example when using a Globus `shared endpoint Date: Tue, 3 Dec 2024 09:40:56 -0600 Subject: [PATCH 48/59] fixes per review comments --- docs/userguide/monitoring.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/userguide/monitoring.rst b/docs/userguide/monitoring.rst index 4c4fff0d2f..caf63a44ce 100644 --- a/docs/userguide/monitoring.rst +++ b/docs/userguide/monitoring.rst @@ -65,7 +65,7 @@ The monitoring system can also be used to track file provenance. File provenance The purpose of the file provenance tracking is to provide a mechanism where the user can see exactly how a file was created and used in a workflow. This can be useful for debugging, understanding the workflow, for ensuring that the workflow is reproducible, and reviewing past work. The file provenance information is stored in the monitoring database and can be accessed using the ``parsl-visualize`` tool. To enable file provenance tracking, set the ``capture_file_provenance`` flag to ``True`` in the `parsl.monitoring.MonitoringHub` configuration. -This functionality also enables you to log informational messages from you scripts, to capture anything not automatically gathered. The main change to your code to use this functionality is to assign the return value of the ``parsl.load`` to a variable. Then use the ``log_info`` function to log the messages in the database. Note that this feature is only available in the main script, not inside apps, unless you pass the variable (``my_cfg`` in the example below), as an argument to the app. The following example shows how to use this feature. +This functionality also enables you to log informational messages from you scripts, to capture anything not automatically gathered. The main change to your code to use this functionality is to assign the return value of the ``parsl.load`` to a variable. Then use the ``log_info`` function to log the messages in the database. Note that this feature is only available in the main script, not inside Apps. Passing this vaiable, ``my_cfg`` in the example below to an App will have undefined behavior. The following example shows how to use this feature. .. code-block:: python @@ -100,7 +100,7 @@ This functionality also enables you to log informational messages from you scrip my_cfg.log_info("This is an informational message") -Known limitations: The file provenance feature will capture the creation of files and the use of files in an app, but currently does not capture the modification of files it already knows about. +Known limitations: The file provenance feature will capture the creation of files and the use of files in an app, but does not capture the modification of files it already knows about. Visualization ------------- @@ -156,7 +156,7 @@ the various apps and invocation count for each. .. image:: ../images/mon_workflow_summary.png -The workflow summary also presents three different views of the workflow: +The workflow summary also presents several different views of the workflow: * Workflow DAG - with apps differentiated by colors: This visualization is useful to visually inspect the dependency structure of the workflow. Hovering over the nodes in the DAG shows a tooltip for the app represented by the node and it's task ID. From 89d5e0a47d43531d93b7b911bd33da3ee73e0d81 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 10:03:56 -0600 Subject: [PATCH 49/59] ensure that md5sum is only calculated when file provenance tracking is on. --- parsl/app/futures.py | 8 +++----- parsl/data_provider/files.py | 13 +++++-------- parsl/dataflow/dflow.py | 23 ++++++++++++++++++----- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index b637b5daff..e959da68be 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -39,17 +39,15 @@ def parent_callback(self, parent_fu): self.set_exception(e) else: self.set_result(self.file_obj) - if self.file_obj.scheme == 'file' and os.path.isfile(self.file_obj.filepath): + # only update the file object if it is a file + if self.data_flow_kernel.capture_file_provenance and self.file_obj.scheme == 'file' and os.path.isfile(self.file_obj.filepath): if not self.file_obj.timestamp: self.file_obj.timestamp = datetime.fromtimestamp(stat(self.file_obj.filepath).st_ctime, tz=timezone.utc) if not self.file_obj.size: self.file_obj.size = stat(self.file_obj.filepath).st_size if not self.file_obj.md5sum: self.file_obj.md5sum = md5(open(self.file_obj, 'rb').read()).hexdigest() - else: - self.file_obj.timestamp = datetime.now(tz=timezone.utc) - if self.data_flow_kernel: - self.data_flow_kernel.register_as_output(self.file_obj, self.app_fut.task_record) + self.data_flow_kernel.register_as_output(self.file_obj, self.app_fut.task_record) @typeguard.typechecked def __init__(self, fut: Future, file_obj: File, tid: Optional[int] = None, app_fut: Optional[Future] = None, diff --git a/parsl/data_provider/files.py b/parsl/data_provider/files.py index 0a296cd606..24a33267e4 100644 --- a/parsl/data_provider/files.py +++ b/parsl/data_provider/files.py @@ -49,14 +49,11 @@ def __init__(self, url: Union[os.PathLike, str], uu_id: Union[uuid.UUID, None] = self.netloc = parsed_url.netloc self.path = parsed_url.path self.filename = os.path.basename(self.path) - if self.scheme == 'file' and os.path.isfile(self.path): - self.size = os.stat(self.path).st_size - self.md5sum = md5(open(self.path, 'rb').read()).hexdigest() - self.timestamp = datetime.datetime.fromtimestamp(os.path.getmtime(self.path), tz=datetime.timezone.utc) - else: - self.size = None - self.md5sum = None - self.timestamp = timestamp + # let the DFK set these values, if needed + self.size = None + self.md5sum = None + self.timestamp = timestamp + self.local_path: Optional[str] = None if uu_id is not None: self.uuid = uu_id diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 868aaefe12..641b7000a4 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -3,6 +3,7 @@ import atexit import concurrent.futures as cf import datetime +from hashlib import md5 import inspect import logging import os @@ -111,6 +112,9 @@ def __init__(self, config: Config) -> None: if self.monitoring: self.monitoring.start(self.run_dir, self.config.run_dir) + self.capture_file_provenance = self.monitoring.capture_file_provenance + else: + self.capture_file_provenance = False self.time_began = datetime.datetime.now() self.time_completed: Optional[datetime.datetime] = None @@ -300,7 +304,7 @@ def std_spec_to_name(name, spec): def _send_file_log_info(self, file: Union[File, DataFuture], task_record: TaskRecord, is_output: bool) -> None: """ Generate a message for the monitoring db about a file. """ - if self.monitoring and self.monitoring.capture_file_provenance: + if self.capture_file_provenance: file_log_info = self._create_file_log_info(file, task_record) # make sure the task_id is None for inputs if not is_output: @@ -310,8 +314,17 @@ def _send_file_log_info(self, file: Union[File, DataFuture], def _create_file_log_info(self, file: Union[File, DataFuture], task_record: TaskRecord) -> Dict[str, Any]: """ - Create the dictionary that will be included in the ,omitoring db. + Create the dictionary that will be included in the monitoring db. """ + # set file info if needed + if file.file_obj.scheme == 'file' and os.path.isfile(file.file_obj.filepath): + if not file.file_obj.timestamp: + file.file_obj.timestamp = datetime.datetime.fromtimestamp(os.stat(file.file_obj.filepath).st_ctime, tz=datetime.timezone.utc) + if not file.file_obj.size: + file.file_obj.size = os.stat(file.file_obj.filepath).st_size + if not file.file_obj.md5sum: + file.file_obj.md5sum = md5(open(file.file_obj, 'rb').read()).hexdigest() + file_log_info = {'file_name': file.filename, 'file_id': str(file.uuid), 'run_id': self.run_id, @@ -326,7 +339,7 @@ def _create_file_log_info(self, file: Union[File, DataFuture], def register_as_input(self, f: Union[File, DataFuture], task_record: TaskRecord): """ Register a file as an input to a task. """ - if self.monitoring and self.monitoring.capture_file_provenance: + if self.capture_file_provenance: self._send_file_log_info(f, task_record, False) file_input_info = self._create_file_io_info(f, task_record) self.monitoring.send((MessageType.INPUT_FILE, file_input_info)) @@ -334,7 +347,7 @@ def register_as_input(self, f: Union[File, DataFuture], def register_as_output(self, f: Union[File, DataFuture], task_record: TaskRecord): """ Register a file as an output of a task. """ - if self.monitoring and self.monitoring.capture_file_provenance: + if self.capture_file_provenance: self._send_file_log_info(f, task_record, True) file_output_info = self._create_file_io_info(f, task_record) self.monitoring.send((MessageType.OUTPUT_FILE, file_output_info)) @@ -353,7 +366,7 @@ def _create_file_io_info(self, file: Union[File, DataFuture], def _register_env(self, environ: ParslExecutor) -> None: """ Capture the environment information for the monitoring db. """ - if self.monitoring and self.monitoring.capture_file_provenance: + if self.capture_file_provenance: environ_info = self._create_env_log_info(environ) self.monitoring.send((MessageType.ENVIRONMENT_INFO, environ_info)) From c653cbc188dd98ef1312d943221cfdfc37fd45c3 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 11:03:06 -0600 Subject: [PATCH 50/59] fixes based on review comments --- parsl/app/futures.py | 4 +- parsl/data_provider/files.py | 4 +- parsl/dataflow/dflow.py | 31 ++++--- parsl/executors/base.py | 2 +- parsl/monitoring/db_manager.py | 83 +++++++++---------- parsl/monitoring/monitoring.py | 6 +- parsl/monitoring/visualization/app.py | 1 - parsl/monitoring/visualization/models.py | 21 +++-- .../templates/{files.html => file.html} | 6 +- .../visualization/templates/file_detail.html | 4 +- ...files_workflow.html => file_workflow.html} | 4 +- .../visualization/templates/layout.html | 2 +- .../visualization/templates/task.html | 4 +- .../visualization/templates/workflow.html | 2 +- parsl/monitoring/visualization/views.py | 54 ++++++------ .../test_monitoring/test_file_provenance.py | 3 +- parsl/version.py | 2 +- test-requirements.txt | 1 - 18 files changed, 117 insertions(+), 117 deletions(-) rename parsl/monitoring/visualization/templates/{files.html => file.html} (84%) rename parsl/monitoring/visualization/templates/{files_workflow.html => file_workflow.html} (84%) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index e959da68be..a8a5ad1e9c 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -40,7 +40,7 @@ def parent_callback(self, parent_fu): else: self.set_result(self.file_obj) # only update the file object if it is a file - if self.data_flow_kernel.capture_file_provenance and self.file_obj.scheme == 'file' and os.path.isfile(self.file_obj.filepath): + if self.data_flow_kernel.file_provenance and self.file_obj.scheme == 'file' and os.path.isfile(self.file_obj.filepath): if not self.file_obj.timestamp: self.file_obj.timestamp = datetime.fromtimestamp(stat(self.file_obj.filepath).st_ctime, tz=timezone.utc) if not self.file_obj.size: @@ -76,7 +76,7 @@ def __init__(self, fut: Future, file_obj: File, tid: Optional[int] = None, app_f self.app_fut = fut self.data_flow_kernel = dfk self.parent.add_done_callback(self.parent_callback) - if os.path.exists(file_obj.path): + if self.file_obj.scheme == 'file' and os.path.exists(file_obj.path): file_stat = os.stat(file_obj.path) self.file_obj.timestamp = datetime.fromtimestamp(file_stat.st_ctime, tz=timezone.utc) self.file_obj.size = file_stat.st_size diff --git a/parsl/data_provider/files.py b/parsl/data_provider/files.py index 24a33267e4..1dcdac4b68 100644 --- a/parsl/data_provider/files.py +++ b/parsl/data_provider/files.py @@ -31,7 +31,7 @@ class File: """ @typeguard.typechecked - def __init__(self, url: Union[os.PathLike, str], uu_id: Union[uuid.UUID, None] = None, + def __init__(self, url: Union[os.PathLike, str], uu_id: Optional[uuid.UUID] = None, timestamp: Optional[datetime.datetime] = None): """Construct a File object from an url string. @@ -58,7 +58,7 @@ def __init__(self, url: Union[os.PathLike, str], uu_id: Union[uuid.UUID, None] = if uu_id is not None: self.uuid = uu_id else: - self.uuid = uuid.uuid1() + self.uuid = uuid.uuid4() def cleancopy(self) -> "File": """Returns a copy of the file containing only the global immutable state, diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 641b7000a4..1e5b78c9b5 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -112,9 +112,9 @@ def __init__(self, config: Config) -> None: if self.monitoring: self.monitoring.start(self.run_dir, self.config.run_dir) - self.capture_file_provenance = self.monitoring.capture_file_provenance + self.file_provenance = self.monitoring.file_provenance else: - self.capture_file_provenance = False + self.file_provenance = False self.time_began = datetime.datetime.now() self.time_completed: Optional[datetime.datetime] = None @@ -304,7 +304,7 @@ def std_spec_to_name(name, spec): def _send_file_log_info(self, file: Union[File, DataFuture], task_record: TaskRecord, is_output: bool) -> None: """ Generate a message for the monitoring db about a file. """ - if self.capture_file_provenance: + if self.file_provenance: file_log_info = self._create_file_log_info(file, task_record) # make sure the task_id is None for inputs if not is_output: @@ -339,7 +339,7 @@ def _create_file_log_info(self, file: Union[File, DataFuture], def register_as_input(self, f: Union[File, DataFuture], task_record: TaskRecord): """ Register a file as an input to a task. """ - if self.capture_file_provenance: + if self.file_provenance: self._send_file_log_info(f, task_record, False) file_input_info = self._create_file_io_info(f, task_record) self.monitoring.send((MessageType.INPUT_FILE, file_input_info)) @@ -347,7 +347,7 @@ def register_as_input(self, f: Union[File, DataFuture], def register_as_output(self, f: Union[File, DataFuture], task_record: TaskRecord): """ Register a file as an output of a task. """ - if self.capture_file_provenance: + if self.file_provenance: self._send_file_log_info(f, task_record, True) file_output_info = self._create_file_io_info(f, task_record) self.monitoring.send((MessageType.OUTPUT_FILE, file_output_info)) @@ -366,7 +366,7 @@ def _create_file_io_info(self, file: Union[File, DataFuture], def _register_env(self, environ: ParslExecutor) -> None: """ Capture the environment information for the monitoring db. """ - if self.capture_file_provenance: + if self.file_provenance: environ_info = self._create_env_log_info(environ) self.monitoring.send((MessageType.ENVIRONMENT_INFO, environ_info)) @@ -390,11 +390,12 @@ def _create_env_log_info(self, environ: ParslExecutor) -> Dict[str, Any]: def log_info(self, msg: str) -> None: """Log an info message to the monitoring db.""" if self.monitoring: - if self.monitoring.capture_file_provenance: + if self.file_provenance: misc_msg = self._create_misc_log_info(msg) if misc_msg is None: logger.info("Could not turn message into a str, so not sending message to monitoring db") - self.monitoring.send((MessageType.MISC_INFO, misc_msg)) + else: + self.monitoring.send((MessageType.MISC_INFO, misc_msg)) else: logger.info("File provenance is not enabled, so not sending message to monitoring db") else: @@ -404,12 +405,11 @@ def _create_misc_log_info(self, msg: Any) -> Union[None, Dict[str, Any]]: """ Create the dictionary that will be included in the monitoring db """ - try: - misc_log_info = {'run_id': self.run_id, - 'timestamp': datetime.datetime.now(), - 'info': str(msg) - } - return misc_log_info + try: # exception should only be raised if msg cannot be cast to a str + return {'run_id': self.run_id, + 'timestamp': datetime.datetime.now(), + 'info': str(msg) + } except Exception: return None @@ -1014,8 +1014,7 @@ def check_dep(d: Any) -> None: check_dep(dep) # Check for futures in inputs=[...] - inp = kwargs.get('inputs', []) - for dep in inp: + for dep in kwargs.get('inputs', []): check_dep(dep) return depends diff --git a/parsl/executors/base.py b/parsl/executors/base.py index 383b047faf..c8caec6732 100644 --- a/parsl/executors/base.py +++ b/parsl/executors/base.py @@ -62,7 +62,7 @@ def __init__( self.submit_monitoring_radio = submit_monitoring_radio self.run_dir = os.path.abspath(run_dir) self.run_id = run_id - self.uu_id = uuid.uuid1() + self.uu_id = uuid.uuid4() def __enter__(self) -> Self: return self diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index aed18d1dd8..4b5bef8911 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -48,11 +48,11 @@ RESOURCE = 'resource' # Resource table includes task resource utilization NODE = 'node' # Node table include node info BLOCK = 'block' # Block table include the status for block polling -FILES = 'files' # Files table include file info -INPUT_FILES = 'input_files' # Input files table include input file info -OUTPUT_FILES = 'output_files' # Output files table include output file info -ENVIRONMENT = 'environment' # Executor table include executor info -MISC_INFO = 'misc_info' # Misc info table include misc info +FILE = 'file ' # Files table include file info +INPUT_FILE = 'input_file' # Input files table include input file info +OUTPUT_FILE = 'output_file' # Output files table include output file info +ENVIRONMENT = 'environment' # Executor table include executor info +MISC_INFO = 'misc_info' # Misc info table include misc info class Database: @@ -244,24 +244,23 @@ class Block(Base): PrimaryKeyConstraint('run_id', 'block_id', 'executor_label', 'timestamp'), ) - class Files(Base): - __tablename__ = FILES + class File(Base): + __tablename__ = FILE file_name = Column('file_name', Text, index=True, nullable=False) file_path = Column('file_path', Text, nullable=True) file_id = Column('file_id', Text, index=True, nullable=False) - run_id = Column('run_id', Text, nullable=False) - task_id = Column('task_id', Integer, nullable=True) - try_id = Column('try_id', Integer, nullable=True) - timestamp = Column('timestamp', DateTime, nullable=True) + run_id = Column('run_id', Text, index=True, nullable=False) + task_id = Column('task_id', Integer, index=True, nullable=True) + try_id = Column('try_id', Integer, index=True, nullable=True) + timestamp = Column('timestamp', DateTime, index=True, nullable=True) size = Column('size', BigInteger, nullable=True) md5sum = Column('md5sum', Text, nullable=True) - sa.Index("files_task_run_id_idx", "task_run_id", "task_id", "try_id") __table_args__ = (PrimaryKeyConstraint('file_id'),) class Environment(Base): __tablename__ = ENVIRONMENT - environment_id = Column('environment_id', Text, nullable=False) - run_id = Column('run_id', Text, nullable=False) + environment_id = Column('environment_id', Text, index=True, nullable=False) + run_id = Column('run_id', Text, index=True, nullable=False) label = Column('label', Text, nullable=False) address = Column('address', Text, nullable=True) provider = Column('provider', Text, nullable=True) @@ -269,26 +268,26 @@ class Environment(Base): worker_init = Column('worker_init', Text, nullable=True) __table_args__ = (PrimaryKeyConstraint('environment_id'),) - class InputFiles(Base): - __tablename__ = INPUT_FILES - file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), nullable=False) - run_id = Column('run_id', Text, nullable=False) - task_id = Column('task_id', Integer, nullable=False) - try_id = Column('try_id', Integer, nullable=False) + class InputFile(Base): + __tablename__ = INPUT_FILE + file_id = Column('file_id', Text, sa.ForeignKey(FILE + ".file_id"), nullable=False) + run_id = Column('run_id', Text, index=True, nullable=False) + task_id = Column('task_id', Integer, index=True, nullable=False) + try_id = Column('try_id', Integer, index=True, nullable=False) __table_args__ = (PrimaryKeyConstraint('file_id'),) - class OutputFiles(Base): - __tablename__ = OUTPUT_FILES - file_id = Column('file_id', Text, sa.ForeignKey(FILES + ".file_id"), nullable=False) - run_id = Column('run_id', Text, nullable=False) - task_id = Column('task_id', Integer, nullable=False) - try_id = Column('try_id', Integer, nullable=False) + class OutputFile(Base): + __tablename__ = OUTPUT_FILE + file_id = Column('file_id', Text, sa.ForeignKey(FILE + ".file_id"), nullable=False) + run_id = Column('run_id', Text, index=True, nullable=False) + task_id = Column('task_id', Integer, index=True, nullable=False) + try_id = Column('try_id', Integer, index=True, nullable=False) __table_args__ = (PrimaryKeyConstraint('file_id'),) class MiscInfo(Base): __tablename__ = MISC_INFO - run_id = Column('run_id', Text, nullable=False) - timestamp = Column('timestamp', DateTime, nullable=False) + run_id = Column('run_id', Text, index=True, nullable=False) + timestamp = Column('timestamp', DateTime, index=True, nullable=False) info = Column('info', Text, nullable=False) __table_args__ = ( PrimaryKeyConstraint('run_id', 'timestamp'),) @@ -488,43 +487,43 @@ def start(self, file_id = msg['file_id'] file_all_messages.append(msg) if file_id in inserted_files: - changed = False + new_item = False # once certain items are set, they should not be changed if inserted_files[file_id]['timestamp'] is None: if msg['timestamp'] is not None: inserted_files[file_id]['timestamp'] = msg['timestamp'] - changed = True + new_item = True else: msg['timestamp'] = inserted_files[file_id]['timestamp'] if inserted_files[file_id]['size'] is None: if msg['size'] is not None: inserted_files[file_id]['size'] = msg['size'] - changed = True + new_item = True else: msg['size'] = inserted_files[file_id]['size'] if inserted_files[file_id]['md5sum'] is None: if msg['md5sum'] is not None: inserted_files[file_id]['md5sum'] = msg['md5sum'] - changed = True + new_item = True else: msg['md5sum'] = inserted_files[file_id]['md5sum'] if inserted_files[file_id]['task_id'] is None: if msg['task_id'] is not None: inserted_files[file_id]['task_id'] = msg['task_id'] inserted_files[file_id]['try_id'] = msg['try_id'] - changed = True + new_item = True else: if msg['task_id'] == inserted_files[file_id]['task_id']: if inserted_files[file_id]['try_id'] is None: inserted_files[file_id]['try_id'] = msg['try_id'] - changed = True + new_item = True elif msg['try_id'] > inserted_files[file_id]['try_id']: inserted_files[file_id]['try_id'] = msg['try_id'] - changed = True + new_item = True else: msg['task_id'] = inserted_files[file_id]['task_id'] msg['try_id'] = inserted_files[file_id]['try_id'] - if changed: + if new_item: file_update_messages.append(msg) else: inserted_files[file_id] = {'size': msg['size'], @@ -589,8 +588,8 @@ def start(self, self._insert(table=STATUS, messages=task_info_all_messages) if file_insert_messages: - logger.debug("Inserting {} FILES_INFO to files table".format(len(file_insert_messages))) - self._insert(table=FILES, messages=file_insert_messages) + logger.debug("Inserting {} FILE_INFO to file table".format(len(file_insert_messages))) + self._insert(table=FILE, messages=file_insert_messages) logger.debug( "There are {} inserted file records".format(len(inserted_files))) @@ -601,19 +600,19 @@ def start(self, "There are {} inserted environment records".format(len(inserted_envs))) if file_update_messages: - logger.debug("Updating {} FILE_INFO into files table".format(len(file_update_messages))) - self._update(table=FILES, + logger.debug("Updating {} FILE_INFO into file table".format(len(file_update_messages))) + self._update(table=FILE, columns=['timestamp', 'size', 'md5sum', 'file_id', 'task_id', 'try_id'], messages=file_update_messages) if input_file_insert_messages: logger.debug("Inserting {} INPUT_FILE to input_files table".format(len(input_file_insert_messages))) - self._insert(table=INPUT_FILES, messages=input_file_insert_messages) + self._insert(table=INPUT_FILE, messages=input_file_insert_messages) logger.debug("There are {} inserted input file records".format(len(input_inserted_files))) if output_file_insert_messages: logger.debug("Inserting {} OUTPUT_FILE to output_files table".format(len(output_file_insert_messages))) - self._insert(table=OUTPUT_FILES, messages=output_file_insert_messages) + self._insert(table=OUTPUT_FILE, messages=output_file_insert_messages) logger.debug("There are {} inserted output file records".format(len(output_inserted_files))) if misc_info_insert_messages: diff --git a/parsl/monitoring/monitoring.py b/parsl/monitoring/monitoring.py index d5450e3ded..90dd00e9c7 100644 --- a/parsl/monitoring/monitoring.py +++ b/parsl/monitoring/monitoring.py @@ -47,7 +47,7 @@ def __init__(self, monitoring_debug: bool = False, resource_monitoring_enabled: bool = True, resource_monitoring_interval: float = 30, - capture_file_provenance: bool = False): # in seconds + file_provenance: bool = False): # in seconds """ Parameters ---------- @@ -84,7 +84,7 @@ def __init__(self, If set to 0, only start and end information will be logged, and no periodic monitoring will be made. Default: 30 seconds - capture_file_provenance : bool + file_provenance : bool Set this field to True to enable logging of file provenance information. Default: False """ @@ -105,7 +105,7 @@ def __init__(self, self.resource_monitoring_enabled = resource_monitoring_enabled self.resource_monitoring_interval = resource_monitoring_interval - self.capture_file_provenance = capture_file_provenance + self.file_provenance = file_provenance def start(self, dfk_run_dir: str, config_run_dir: Union[str, os.PathLike]) -> None: diff --git a/parsl/monitoring/visualization/app.py b/parsl/monitoring/visualization/app.py index 069eb2f598..e0c9510ee8 100644 --- a/parsl/monitoring/visualization/app.py +++ b/parsl/monitoring/visualization/app.py @@ -23,7 +23,6 @@ def cli_run(): app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = args.db_path app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False - app.config['SECRET_KEY'] = os.urandom(24) db.init_app(app) with app.app_context(): diff --git a/parsl/monitoring/visualization/models.py b/parsl/monitoring/visualization/models.py index 5aa24931f0..944bf6baa1 100644 --- a/parsl/monitoring/visualization/models.py +++ b/parsl/monitoring/visualization/models.py @@ -5,6 +5,11 @@ STATUS = 'status' # Status table includes task status RESOURCE = 'resource' # Resource table includes task resource utilization NODE = 'node' # Node table include node info +FILE = 'file' # Files table include file info +INPUT_FILE = 'input_file' # Input files table include input file info +OUTPUT_FILE = 'output_file' # Output files table include output file info +ENVIRONMENT = 'environment' # Executor table include executor info +MISC_INFO = 'misc_info' # Misc info table include misc info db = SQLAlchemy() @@ -73,8 +78,8 @@ class Task(db.Model): ) -class Files(db.Model): - __tablename__ = 'files' +class File(db.Model): + __tablename__ = FILE file_name = db.Column('file_name', db.Text, index=True, nullable=False) file_id = db.Column('file_id', db.Text, index=True, nullable=False) run_id = db.Column('run_id', db.Text, nullable=False) @@ -87,7 +92,7 @@ class Files(db.Model): class Environment(db.Model): - __tablename__ = 'environment' + __tablename__ = ENVIRONMENT environment_id = db.Column('environment_id', db.Text, nullable=False) run_id = db.Column('run_id', db.Text, nullable=False) label = db.Column('label', db.Text, nullable=False) @@ -98,8 +103,8 @@ class Environment(db.Model): __table_args__ = (db.PrimaryKeyConstraint('environment_id'),) -class InputFiles(db.Model): - __tablename__ = 'input_files' +class InputFile(db.Model): + __tablename__ = INPUT_FILE file_id = db.Column('file_id', db.Text, nullable=False) run_id = db.Column('run_id', db.Text, nullable=False) task_id = db.Column('task_id', db.Integer, nullable=False) @@ -107,8 +112,8 @@ class InputFiles(db.Model): __table_args__ = (db.PrimaryKeyConstraint('file_id'),) -class OutputFiles(db.Model): - __tablename__ = 'output_files' +class OutputFile(db.Model): + __tablename__ = OUTPUT_FILE file_id = db.Column('file_id', db.Text, nullable=False) run_id = db. Column('run_id', db.Text, nullable=False) task_id = db.Column('task_id', db.Integer, nullable=False) @@ -117,7 +122,7 @@ class OutputFiles(db.Model): class MiscInfo(db.Model): - __tablename__ = 'misc_info' + __tablename__ = MISC_INFO run_id = db.Column('run_id', db.Text, nullable=False) timestamp = db.Column('timestamp', db.DateTime, nullable=False) info = db.Column('info', db.Text, nullable=False) diff --git a/parsl/monitoring/visualization/templates/files.html b/parsl/monitoring/visualization/templates/file.html similarity index 84% rename from parsl/monitoring/visualization/templates/files.html rename to parsl/monitoring/visualization/templates/file.html index 62404e41d3..d576fb048b 100644 --- a/parsl/monitoring/visualization/templates/files.html +++ b/parsl/monitoring/visualization/templates/file.html @@ -7,8 +7,8 @@

    File Provenance

    Files by workflow.

    - Search for a specific file (use % as a wildcard): - + Search for files by name or path (use % as a wildcard): + {{ form.hidden_tag() }} {{ form.file_name.label }} {{ form.file_name(size=32) }} {{ form.submit() }} @@ -33,7 +33,7 @@

    File Provenance

    {{ file['file_name'] }}{{ file['file_name'] }} {{ file['size'] }} {{ file['timestamp'] | timeformat }}
    Creation date:{{ file_details['timestamp'] | timeformat }}
    Workflow:{{ workflow.workflow_name }}
    Created by:{{ tasks[output_file['task_id']]['task_func_name'] }}
    Created by:{{ tasks[output_files['task_id']]['task_func_name'] }}
    Used by: diff --git a/parsl/monitoring/visualization/templates/files_workflow.html b/parsl/monitoring/visualization/templates/file_workflow.html similarity index 84% rename from parsl/monitoring/visualization/templates/files_workflow.html rename to parsl/monitoring/visualization/templates/file_workflow.html index beebfc8c13..32c7fe20ae 100644 --- a/parsl/monitoring/visualization/templates/files_workflow.html +++ b/parsl/monitoring/visualization/templates/file_workflow.html @@ -23,7 +23,7 @@

    Files for Workflow {{ workflow['workflow_name'] }}

    {% if task['task_inputs'] %} {% for input in task_files[tid]['inputs'] %} - {{ file_map[input['file_id']] }}
    + {{ file_map[input['file_id']] }}
    {% endfor %} {% else %} None @@ -32,7 +32,7 @@

    Files for Workflow {{ workflow['workflow_name'] }}

    {% if task['task_outputs'] %} {% for output in task_files[tid]['outputs'] %} - {{ file_map[output['file_id']] }}
    + {{ file_map[output['file_id']] }}
    {% endfor %} {% else %} None diff --git a/parsl/monitoring/visualization/templates/layout.html b/parsl/monitoring/visualization/templates/layout.html index 3be3f30f50..3e337ad73c 100644 --- a/parsl/monitoring/visualization/templates/layout.html +++ b/parsl/monitoring/visualization/templates/layout.html @@ -36,7 +36,7 @@ Workflows (current) - File Provenance + File Provenance Documentation diff --git a/parsl/monitoring/visualization/templates/task.html b/parsl/monitoring/visualization/templates/task.html index 2054134ac2..0cb86066f5 100644 --- a/parsl/monitoring/visualization/templates/task.html +++ b/parsl/monitoring/visualization/templates/task.html @@ -32,7 +32,7 @@

    {{ task_details['task_func_name'] }} ({{ task_details['task_id'] }})

    {% if not task_details['task_inputs'].empty %} {% else %} @@ -43,7 +43,7 @@

    {{ task_details['task_func_name'] }} ({{ task_details['task_id'] }})

    {% if not task_details['task_outputs'].empty %} {% else %} diff --git a/parsl/monitoring/visualization/templates/workflow.html b/parsl/monitoring/visualization/templates/workflow.html index 65e6309bfc..bafcb6888f 100644 --- a/parsl/monitoring/visualization/templates/workflow.html +++ b/parsl/monitoring/visualization/templates/workflow.html @@ -67,7 +67,7 @@
    Misc Info

    View workflow DAG -- colored by task states
    View workflow resource usage {% if have_files %} -
    View workflow file provenance +
    View workflow file provenance {% endif %} {{ task_gantt | safe }} {{ task_per_app |safe }} diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index e6829668fb..68afe3f3af 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -9,9 +9,9 @@ Task, Workflow, db, - Files, - InputFiles, - OutputFiles, + File, + InputFile, + OutputFile, Environment, MiscInfo, ) @@ -70,38 +70,38 @@ def index(): workflow.status = 'Running' if workflow.time_completed is not None: workflow.status = 'Completed' - file_list = Files.query.filter_by(run_id=workflow.run_id).first() + file_list = File.query.filter_by(run_id=workflow.run_id).first() if file_list: have_files.append(workflow.run_id) return render_template('workflows_summary.html', workflows=workflows, have_files=have_files) -@app.route('/files//') +@app.route('/file//') def file(file_id): - file_details = Files.query.filter_by(file_id=file_id).first() - input_files = InputFiles.query.filter_by(file_id=file_id).all() - output_file = OutputFiles.query.filter_by(file_id=file_id).first() + file_details = File.query.filter_by(file_id=file_id).first() + input_files = InputFile.query.filter_by(file_id=file_id).all() + output_files = OutputFile.query.filter_by(file_id=file_id).first() task_ids = set() - environment = None + environ = None for f in input_files: task_ids.add(f.task_id) - if output_file: - task_ids.add(output_file.task_id) + if output_files: + task_ids.add(output_files.task_id) tasks = {} for tid in task_ids: tasks[tid] = Task.query.filter_by(run_id=file_details.run_id, task_id=tid).first() workflow_details = Workflow.query.filter_by(run_id=file_details.run_id).first() - if output_file: - environment = Environment.query.filter_by(environment_id=tasks[output_file.task_id].task_environment).first() + if output_files: + environ = Environment.query.filter_by(environment_id=tasks[output_files.task_id].task_environment).first() return render_template('file_detail.html', file_details=file_details, - input_files=input_files, output_file=output_file, - tasks=tasks, workflow=workflow_details, environment=environment) + input_files=input_files, output_files=output_files, + tasks=tasks, workflow=workflow_details, environment=environ) -@app.route('/files', methods=['GET', 'POST']) -def files(): +@app.route('/file', methods=['GET', 'POST']) +def file(): form = FileForm() if request.method == 'POST': file_list = [] @@ -110,14 +110,14 @@ def files(): filename = '%' + form.file_name.data else: filename = form.file_name.data - file_list = Files.query.filter(Files.file_name.like(filename)).all() - return render_template('files.html', form=form, file_list=file_list) - return render_template('files.html', form=form) + file_list = File.query.filter(File.file_name.like(filename)).all() + return render_template('file.html', form=form, file_list=file_list) + return render_template('file.html', form=form) -@app.route('/files/workflow//') -def files_workflow(workflow_id): - workflow_files = Files.query.filter_by(run_id=workflow_id).all() +@app.route('/file/workflow//') +def file_workflow(workflow_id): + workflow_files = File.query.filter_by(run_id=workflow_id).all() file_map = {} workflow_details = Workflow.query.filter_by(run_id=workflow_id).first() task_ids = set() @@ -131,9 +131,9 @@ def files_workflow(workflow_id): for tid in task_ids: tasks[tid] = Task.query.filter_by(run_id=workflow_id, task_id=tid).first() - files_by_task[tid] = {'inputs': InputFiles.query.filter_by(run_id=workflow_id, task_id=tid).all(), - 'outputs': OutputFiles.query.filter_by(run_id=workflow_id, task_id=tid).all()} - return render_template('files_workflow.html', workflow=workflow_details, + files_by_task[tid] = {'inputs': InputFile.query.filter_by(run_id=workflow_id, task_id=tid).all(), + 'outputs': OutputFile.query.filter_by(run_id=workflow_id, task_id=tid).all()} + return render_template('file_workflow.html', workflow=workflow_details, task_files=files_by_task, tasks=tasks, file_map=file_map) @@ -148,7 +148,7 @@ def workflow(workflow_id): df_task = queries.completion_times_for_workflow(workflow_id, db.engine) df_task_tries = queries.tries_for_workflow(workflow_id, db.engine) task_summary = queries.app_counts_for_workflow(workflow_id, db.engine) - file_list = Files.query.filter_by(run_id=workflow_id).first() + file_list = File.query.filter_by(run_id=workflow_id).first() if file_list: have_files = True else: diff --git a/parsl/tests/test_monitoring/test_file_provenance.py b/parsl/tests/test_monitoring/test_file_provenance.py index 6b0594ede2..695c3aad61 100644 --- a/parsl/tests/test_monitoring/test_file_provenance.py +++ b/parsl/tests/test_monitoring/test_file_provenance.py @@ -63,9 +63,8 @@ def fresh_config(run_dir): strategy_period=0.1, monitoring=MonitoringHub( hub_address="localhost", - hub_port=55055, logging_endpoint=f"sqlite:///{run_dir}/monitoring.db", - capture_file_provenance=True, + file_provenance=True, ) ) diff --git a/parsl/version.py b/parsl/version.py index 6503d18e3e..0ba4a3c991 100644 --- a/parsl/version.py +++ b/parsl/version.py @@ -1,3 +1,3 @@ """Set module version. """ -VERSION = '1.3.1-dev' +VERSION = '1.3.0-dev' diff --git a/test-requirements.txt b/test-requirements.txt index 7a3bf85a6e..82ec5172c2 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -2,7 +2,6 @@ flake8==6.1.0 pandas pytest>=7.4.0,<8 pytest-cov -pytest-mock pytest-random-order nbsphinx sphinx_rtd_theme From 7efebaddd4b85285cfadc3d52721c1e58af17bd7 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 13:40:06 -0600 Subject: [PATCH 51/59] added dfk as a required parameter to DataFuture --- parsl/app/futures.py | 8 +++++--- parsl/data_provider/data_manager.py | 2 +- parsl/dataflow/dflow.py | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index a8a5ad1e9c..301d932c55 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -5,12 +5,15 @@ import logging from os import stat from concurrent.futures import Future -from typing import Optional, Any +from typing import TYPE_CHECKING, Optional from datetime import datetime, timezone import typeguard from parsl.data_provider.files import File +if TYPE_CHECKING: + from parsl.dataflow.dflow import DataFlowKernel + logger = logging.getLogger(__name__) @@ -50,8 +53,7 @@ def parent_callback(self, parent_fu): self.data_flow_kernel.register_as_output(self.file_obj, self.app_fut.task_record) @typeguard.typechecked - def __init__(self, fut: Future, file_obj: File, tid: Optional[int] = None, app_fut: Optional[Future] = None, - dfk: Optional[Any] = None) -> None: + def __init__(self, fut: Future, file_obj: File, dfk: "DataFlowKernel", tid: Optional[int] = None, app_fut: Optional[Future] = None) -> None: """Construct the DataFuture object. If the file_obj is a string convert to a File. diff --git a/parsl/data_provider/data_manager.py b/parsl/data_provider/data_manager.py index db5d242d36..e1b259a652 100644 --- a/parsl/data_provider/data_manager.py +++ b/parsl/data_provider/data_manager.py @@ -63,7 +63,7 @@ def optionally_stage_in(self, input, func, executor): # replace the input DataFuture with a new DataFuture which will complete at # the same time as the original one, but will contain the newly # copied file - input = DataFuture(input, file, tid=input.tid) + input = DataFuture(input, file, dfk=self.dfk, tid=input.tid) elif isinstance(input, File): file = input.cleancopy() input = file diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 1e5b78c9b5..234d95f714 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -956,10 +956,10 @@ def stageout_one_file(file: File, rewritable_func: Callable): stageout_fut = self.data_manager.stage_out(f_copy, executor, app_fut) if stageout_fut: logger.debug("Adding a dependency on stageout future for {}".format(repr(file))) - df = DataFuture(stageout_fut, file, tid=app_fut.tid, app_fut=app_fut, dfk=self) + df = DataFuture(stageout_fut, file, dfk=self, tid=app_fut.tid, app_fut=app_fut) else: logger.debug("No stageout dependency for {}".format(repr(file))) - df = DataFuture(app_fut, file, tid=app_fut.tid, app_fut=app_fut, dfk=self) + df = DataFuture(app_fut, file, dfk=self, tid=app_fut.tid, app_fut=app_fut) # this is a hook for post-task stageout # note that nothing depends on the output - which is maybe a bug @@ -968,7 +968,7 @@ def stageout_one_file(file: File, rewritable_func: Callable): return rewritable_func, f_copy, df else: logger.debug("Not performing output staging for: {}".format(repr(file))) - return rewritable_func, file, DataFuture(app_fut, file, tid=app_fut.tid, app_fut=app_fut, dfk=self) + return rewritable_func, file, DataFuture(app_fut, file, dfk=self, tid=app_fut.tid, app_fut=app_fut) for idx, file in enumerate(outputs): func, outputs[idx], o = stageout_one_file(file, func) From d6e7e5b186ad6f0883bd7bee3675b951be05a8d5 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 13:45:54 -0600 Subject: [PATCH 52/59] make sure file md5sum is only calculated --- parsl/app/futures.py | 3 ++- parsl/dataflow/dflow.py | 18 +++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index 301d932c55..5fa98f1bec 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -78,7 +78,8 @@ def __init__(self, fut: Future, file_obj: File, dfk: "DataFlowKernel", tid: Opti self.app_fut = fut self.data_flow_kernel = dfk self.parent.add_done_callback(self.parent_callback) - if self.file_obj.scheme == 'file' and os.path.exists(file_obj.path): + # only capture this if needed + if self.data_flow_kernel.file_provenance and self.file_obj.scheme == 'file' and os.path.exists(file_obj.path): file_stat = os.stat(file_obj.path) self.file_obj.timestamp = datetime.fromtimestamp(file_stat.st_ctime, tz=timezone.utc) self.file_obj.size = file_stat.st_size diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 234d95f714..4b9a0a5167 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -317,13 +317,17 @@ def _create_file_log_info(self, file: Union[File, DataFuture], Create the dictionary that will be included in the monitoring db. """ # set file info if needed - if file.file_obj.scheme == 'file' and os.path.isfile(file.file_obj.filepath): - if not file.file_obj.timestamp: - file.file_obj.timestamp = datetime.datetime.fromtimestamp(os.stat(file.file_obj.filepath).st_ctime, tz=datetime.timezone.utc) - if not file.file_obj.size: - file.file_obj.size = os.stat(file.file_obj.filepath).st_size - if not file.file_obj.md5sum: - file.file_obj.md5sum = md5(open(file.file_obj, 'rb').read()).hexdigest() + if isinstance(file, DataFuture): + fo = file.file_obj + else: + fo = file + if fo.scheme == 'file' and os.path.isfile(fo.filepath): + if not fo.timestamp: + fo.timestamp = datetime.datetime.fromtimestamp(os.stat(fo.filepath).st_ctime, tz=datetime.timezone.utc) + if not fo.size: + fo.size = os.stat(fo.filepath).st_size + if not fo.md5sum: + fo.md5sum = md5(open(fo, 'rb').read()).hexdigest() file_log_info = {'file_name': file.filename, 'file_id': str(file.uuid), From 1fcdbc65f39294b8cc6553514b94fa26e336f267 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 13:47:23 -0600 Subject: [PATCH 53/59] added full path and parsing for path for file database entries --- parsl/monitoring/db_manager.py | 11 +++++++++-- parsl/monitoring/visualization/templates/file.html | 2 +- .../visualization/templates/file_detail.html | 5 ++++- parsl/monitoring/visualization/templates/task.html | 2 +- parsl/monitoring/visualization/views.py | 4 ++-- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 4b5bef8911..1b545fae95 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -48,11 +48,11 @@ RESOURCE = 'resource' # Resource table includes task resource utilization NODE = 'node' # Node table include node info BLOCK = 'block' # Block table include the status for block polling -FILE = 'file ' # Files table include file info +FILE = 'file' # Files table include file info INPUT_FILE = 'input_file' # Input files table include input file info OUTPUT_FILE = 'output_file' # Output files table include output file info ENVIRONMENT = 'environment' # Executor table include executor info -MISC_INFO = 'misc_info' # Misc info table include misc info +MISC_INFO = 'misc_info' # Misc info table include misc info class Database: @@ -248,6 +248,7 @@ class File(Base): __tablename__ = FILE file_name = Column('file_name', Text, index=True, nullable=False) file_path = Column('file_path', Text, nullable=True) + full_path = Column('full_path', Text, index=True, nullable=False) file_id = Column('file_id', Text, index=True, nullable=False) run_id = Column('run_id', Text, index=True, nullable=False) task_id = Column('task_id', Integer, index=True, nullable=True) @@ -486,6 +487,12 @@ def start(self, elif msg_type == MessageType.FILE_INFO: file_id = msg['file_id'] file_all_messages.append(msg) + msg['full_path'] = msg['file_name'] + loc = msg['file_name'].rfind("/") + if loc >= 0: + msg['file_path'] = msg['file_name'][:loc] + msg['file_name'] = msg['file_name'][loc + 1:] + if file_id in inserted_files: new_item = False # once certain items are set, they should not be changed diff --git a/parsl/monitoring/visualization/templates/file.html b/parsl/monitoring/visualization/templates/file.html index d576fb048b..1b3f547863 100644 --- a/parsl/monitoring/visualization/templates/file.html +++ b/parsl/monitoring/visualization/templates/file.html @@ -33,7 +33,7 @@

    File Provenance

    {{ file['file_name'] }}{{ file['full_path'] }} {{ file['size'] }} {{ file['timestamp'] | timeformat }}
    + {% if file_details['file_path'] %} + + {% endif %} {% if file_details['timestamp'] %} {% endif %} - + {% if output_files %} {% endif %} diff --git a/parsl/monitoring/visualization/templates/task.html b/parsl/monitoring/visualization/templates/task.html index 0cb86066f5..5ddaf0b948 100644 --- a/parsl/monitoring/visualization/templates/task.html +++ b/parsl/monitoring/visualization/templates/task.html @@ -32,7 +32,7 @@

    {{ task_details['task_func_name'] }} ({{ task_details['task_id'] }})

    {% if not task_details['task_inputs'].empty %}
    {% else %} diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index 68afe3f3af..cc8e05eb2a 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -110,7 +110,7 @@ def file(): filename = '%' + form.file_name.data else: filename = form.file_name.data - file_list = File.query.filter(File.file_name.like(filename)).all() + file_list = File.query.filter(File.full_path.like(filename)).all() return render_template('file.html', form=form, file_list=file_list) return render_template('file.html', form=form) @@ -126,7 +126,7 @@ def file_workflow(workflow_id): for wf in workflow_files: file_details[wf.file_id] = wf task_ids.add(wf.task_id) - file_map[wf.file_id] = ospath.basename(wf.file_name) + file_map[wf.file_id] = ospath.basename(wf.full_path) tasks = {} for tid in task_ids: From b443cbb8833586f3b9a391ecb5adf9b67fb670ed Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 13:48:24 -0600 Subject: [PATCH 54/59] fixed typos and tests --- parsl/monitoring/queries/pandas.py | 12 +-- parsl/monitoring/visualization/models.py | 30 ++++---- .../templates/workflows_summary.html | 2 +- parsl/monitoring/visualization/views.py | 2 +- .../test_monitoring/test_file_provenance.py | 73 ++++++++----------- 5 files changed, 55 insertions(+), 64 deletions(-) diff --git a/parsl/monitoring/queries/pandas.py b/parsl/monitoring/queries/pandas.py index 7dcc9ad885..50a72e3408 100644 --- a/parsl/monitoring/queries/pandas.py +++ b/parsl/monitoring/queries/pandas.py @@ -11,18 +11,18 @@ def input_files_for_task(workflow_id: Any, task_id: Any, db: DB) -> pd.DataFrame: return pd.read_sql_query(""" SELECT * - FROM input_files, files - WHERE input_files.run_id='%s' AND input_files.task_id='%s' - AND input_files.file_id = files.file_id; + FROM input_file, file + WHERE input_file.run_id='%s' AND input_file.task_id='%s' + AND input_file.file_id = file.file_id; """ % (workflow_id, task_id), db) def output_files_for_task(workflow_id: Any, task_id: Any, db: DB) -> pd.DataFrame: return pd.read_sql_query(""" SELECT * - FROM output_files, files - WHERE output_files.run_id='%s' AND output_files.task_id='%s' - AND output_files.file_id = files.file_id; + FROM output_file, file + WHERE output_file.run_id='%s' AND output_file.task_id='%s' + AND output_file.file_id = file.file_id; """ % (workflow_id, task_id), db) diff --git a/parsl/monitoring/visualization/models.py b/parsl/monitoring/visualization/models.py index 944bf6baa1..ca7c55bae1 100644 --- a/parsl/monitoring/visualization/models.py +++ b/parsl/monitoring/visualization/models.py @@ -81,11 +81,13 @@ class Task(db.Model): class File(db.Model): __tablename__ = FILE file_name = db.Column('file_name', db.Text, index=True, nullable=False) + file_path = db.Column('file_path', db.Text, nullable=True) + full_path = db.Column('full_path', db.Text, index=True, nullable=False) file_id = db.Column('file_id', db.Text, index=True, nullable=False) - run_id = db.Column('run_id', db.Text, nullable=False) - task_id = db.Column('task_id', db.Integer, nullable=False) - try_id = db.Column('try_id', db.Integer, nullable=False) - timestamp = db.Column('timestamp', db.DateTime, nullable=True) + run_id = db.Column('run_id', db.Text, index=True, nullable=False) + task_id = db.Column('task_id', db.Integer, index=True, nullable=True) + try_id = db.Column('try_id', db.Integer, index=True, nullable=True) + timestamp = db.Column('timestamp', db.DateTime, index=True, nullable=True) size = db.Column('size', db.BigInteger, nullable=True) md5sum = db.Column('md5sum', db.Text, nullable=True) __table_args__ = (db.PrimaryKeyConstraint('file_id'),) @@ -93,8 +95,8 @@ class File(db.Model): class Environment(db.Model): __tablename__ = ENVIRONMENT - environment_id = db.Column('environment_id', db.Text, nullable=False) - run_id = db.Column('run_id', db.Text, nullable=False) + environment_id = db.Column('environment_id', db.Text, index=True, nullable=False) + run_id = db.Column('run_id', db.Text, index=True, nullable=False) label = db.Column('label', db.Text, nullable=False) address = db.Column('address', db.Text, nullable=True) provider = db.Column('provider', db.Text, nullable=True) @@ -106,25 +108,25 @@ class Environment(db.Model): class InputFile(db.Model): __tablename__ = INPUT_FILE file_id = db.Column('file_id', db.Text, nullable=False) - run_id = db.Column('run_id', db.Text, nullable=False) - task_id = db.Column('task_id', db.Integer, nullable=False) - try_id = db.Column('try_id', db.Integer, nullable=False) + run_id = db.Column('run_id', db.Text, index=True, nullable=False) + task_id = db.Column('task_id', db.Integer, index=True, nullable=False) + try_id = db.Column('try_id', db.Integer, index=True, nullable=False) __table_args__ = (db.PrimaryKeyConstraint('file_id'),) class OutputFile(db.Model): __tablename__ = OUTPUT_FILE file_id = db.Column('file_id', db.Text, nullable=False) - run_id = db. Column('run_id', db.Text, nullable=False) - task_id = db.Column('task_id', db.Integer, nullable=False) - try_id = db.Column('try_id', db.Integer, nullable=False) + run_id = db. Column('run_id', db.Text, index=True, nullable=False) + task_id = db.Column('task_id', db.Integer, index=True, nullable=False) + try_id = db.Column('try_id', db.Integer, index=True, nullable=False) __table_args__ = (db.PrimaryKeyConstraint('file_id'),) class MiscInfo(db.Model): __tablename__ = MISC_INFO - run_id = db.Column('run_id', db.Text, nullable=False) - timestamp = db.Column('timestamp', db.DateTime, nullable=False) + run_id = db.Column('run_id', db.Text, index=True, nullable=False) + timestamp = db.Column('timestamp', db.DateTime, index=True, nullable=False) info = db.Column('info', db.Text, nullable=False) __table_args__ = (db.PrimaryKeyConstraint('run_id', 'timestamp'),) diff --git a/parsl/monitoring/visualization/templates/workflows_summary.html b/parsl/monitoring/visualization/templates/workflows_summary.html index c993f43006..2bee89adc8 100644 --- a/parsl/monitoring/visualization/templates/workflows_summary.html +++ b/parsl/monitoring/visualization/templates/workflows_summary.html @@ -31,7 +31,7 @@

    Workflows

    {% if w['run_id'] in have_files %} -
    + {% else %} {% endif %} diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index cc8e05eb2a..f237ff48f4 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -77,7 +77,7 @@ def index(): @app.route('/file//') -def file(file_id): +def file_id(file_id): file_details = File.query.filter_by(file_id=file_id).first() input_files = InputFile.query.filter_by(file_id=file_id).all() output_files = OutputFile.query.filter_by(file_id=file_id).first() diff --git a/parsl/tests/test_monitoring/test_file_provenance.py b/parsl/tests/test_monitoring/test_file_provenance.py index 695c3aad61..a063f092b5 100644 --- a/parsl/tests/test_monitoring/test_file_provenance.py +++ b/parsl/tests/test_monitoring/test_file_provenance.py @@ -5,9 +5,8 @@ import parsl from parsl.config import Config -from parsl.executors import HighThroughputExecutor +from parsl.executors import ThreadPoolExecutor from parsl.monitoring import MonitoringHub -from parsl.providers import LocalProvider from parsl.data_provider.files import File @@ -49,15 +48,7 @@ def fresh_config(run_dir): return Config( run_dir=str(run_dir), executors=[ - HighThroughputExecutor( - address="127.0.0.1", - label="htex_local", - provider=LocalProvider( - init_blocks=1, - min_blocks=1, - max_blocks=1, - ) - ) + ThreadPoolExecutor() ], strategy='simple', strategy_period=0.1, @@ -78,48 +69,46 @@ def test_provenance(tmpd_cwd): import sqlalchemy cfg = fresh_config(tmpd_cwd) - my_dfk = parsl.load(cfg) + with parsl.load(cfg) as my_dfk: - cwd = os.getcwd() - if os.path.exists(os.path.join(cwd, 'provenance')): - shutil.rmtree(os.path.join(cwd, 'provenance')) - os.mkdir(os.path.join(cwd, 'provenance')) - os.chdir(os.path.join(cwd, 'provenance')) + cwd = os.getcwd() + if os.path.exists(os.path.join(cwd, 'provenance')): + shutil.rmtree(os.path.join(cwd, 'provenance')) + os.mkdir(os.path.join(cwd, 'provenance')) + os.chdir(os.path.join(cwd, 'provenance')) - my_dfk.log_info("Starting Run") + my_dfk.log_info("Starting Run") - init = initialize(outputs=[File(os.path.join(os.getcwd(), 'initialize.txt'))]) + init = initialize(outputs=[File(os.path.join(os.getcwd(), 'initialize.txt'))]) - sd = split_data(inputs=[init.outputs[0]], - outputs=[File(os.path.join(os.getcwd(), f'split_data_{i}.txt')) for i in range(4)]) + sd = split_data(inputs=[init.outputs[0]], + outputs=[File(os.path.join(os.getcwd(), f'split_data_{i}.txt')) for i in range(4)]) - p = [process(inputs=[sdo], outputs=[File(os.path.join(os.getcwd(), f'processed_data_{i}.txt'))]) for i, sdo in - enumerate(sd.outputs)] + p = [process(inputs=[sdo], outputs=[File(os.path.join(os.getcwd(), f'processed_data_{i}.txt'))]) for i, sdo in + enumerate(sd.outputs)] - c = combine(inputs=[pp.outputs[0] for pp in p], outputs=[File(os.path.join(os.getcwd(), 'combined_data.txt'))]) + c = combine(inputs=[pp.outputs[0] for pp in p], outputs=[File(os.path.join(os.getcwd(), 'combined_data.txt'))]) - c.result() - os.chdir(cwd) - my_dfk.log_info("Ending run") - time.sleep(2) + c.result() + os.chdir(cwd) + my_dfk.log_info("Ending run") + time.sleep(2) - engine = sqlalchemy.create_engine(cfg.monitoring.logging_endpoint) - with engine.begin() as connection: - def count_rows(table: str): - result = connection.execute(f"SELECT COUNT(*) FROM {table}") - (c,) = result.first() - return c + engine = sqlalchemy.create_engine(cfg.monitoring.logging_endpoint) + with engine.begin() as connection: + def count_rows(table: str): + result = connection.execute(f"SELECT COUNT(*) FROM {table}") + (c,) = result.first() + return c - assert count_rows("workflow") == 1 + assert count_rows("workflow") == 1 - assert count_rows("task") == 7 + assert count_rows("task") == 7 - assert count_rows("files") == 10 + assert count_rows("file") == 10 - assert count_rows("input_files") == 9 + assert count_rows("input_file") == 9 - assert count_rows("output_files") == 10 + assert count_rows("output_file") == 10 - assert count_rows("misc_info") == 2 - - parsl.clear() + assert count_rows("misc_info") == 2 From 69cfc7b6e82bbc87e8729955ff3e5c76c1096239 Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 13:48:56 -0600 Subject: [PATCH 55/59] put back required SECRET_KEY so that the file search form works --- parsl/monitoring/visualization/app.py | 1 + 1 file changed, 1 insertion(+) diff --git a/parsl/monitoring/visualization/app.py b/parsl/monitoring/visualization/app.py index e0c9510ee8..069eb2f598 100644 --- a/parsl/monitoring/visualization/app.py +++ b/parsl/monitoring/visualization/app.py @@ -23,6 +23,7 @@ def cli_run(): app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = args.db_path app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False + app.config['SECRET_KEY'] = os.urandom(24) db.init_app(app) with app.app_context(): From 0316cf9a92719356124cc572455810353992f03e Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 14:28:03 -0600 Subject: [PATCH 56/59] isort fixes --- parsl/app/futures.py | 7 ++++--- parsl/data_provider/files.py | 5 ++--- parsl/dataflow/dflow.py | 2 +- parsl/executors/base.py | 2 +- parsl/monitoring/visualization/views.py | 19 +++++++++---------- .../test_monitoring/test_file_provenance.py | 5 +++-- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/parsl/app/futures.py b/parsl/app/futures.py index 5fa98f1bec..6425d0fa0d 100644 --- a/parsl/app/futures.py +++ b/parsl/app/futures.py @@ -1,12 +1,13 @@ """This module implements DataFutures. """ +import logging import os.path +from concurrent.futures import Future +from datetime import datetime, timezone from hashlib import md5 -import logging from os import stat -from concurrent.futures import Future from typing import TYPE_CHECKING, Optional -from datetime import datetime, timezone + import typeguard from parsl.data_provider.files import File diff --git a/parsl/data_provider/files.py b/parsl/data_provider/files.py index 1dcdac4b68..286212e783 100644 --- a/parsl/data_provider/files.py +++ b/parsl/data_provider/files.py @@ -5,13 +5,12 @@ on where (client-side, remote-side, intermediary-side) the File.filepath is being called from. """ +import datetime import logging -from hashlib import md5 import os -import datetime +import uuid from typing import Optional, Union from urllib.parse import urlparse -import uuid import typeguard diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index 4b9a0a5167..19a2b11263 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -3,7 +3,6 @@ import atexit import concurrent.futures as cf import datetime -from hashlib import md5 import inspect import logging import os @@ -15,6 +14,7 @@ from concurrent.futures import Future from functools import partial from getpass import getuser +from hashlib import md5 from socket import gethostname from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union from uuid import uuid4 diff --git a/parsl/executors/base.py b/parsl/executors/base.py index c8caec6732..751502ef09 100644 --- a/parsl/executors/base.py +++ b/parsl/executors/base.py @@ -1,8 +1,8 @@ import os +import uuid from abc import ABCMeta, abstractmethod from concurrent.futures import Future from typing import Any, Callable, Dict, Optional -import uuid from typing_extensions import Literal, Self diff --git a/parsl/monitoring/visualization/views.py b/parsl/monitoring/visualization/views.py index f237ff48f4..67aec121ad 100644 --- a/parsl/monitoring/visualization/views.py +++ b/parsl/monitoring/visualization/views.py @@ -1,19 +1,22 @@ +import datetime +import os.path as ospath + import pandas as pd from flask import current_app as app from flask import render_template, request -import os.path as ospath import parsl.monitoring.queries.pandas as queries +from parsl.monitoring.visualization.form_fields import FileForm from parsl.monitoring.visualization.models import ( + Environment, + File, + InputFile, + MiscInfo, + OutputFile, Status, Task, Workflow, db, - File, - InputFile, - OutputFile, - Environment, - MiscInfo, ) from parsl.monitoring.visualization.plots.default.task_plots import ( time_series_memory_per_task_plot, @@ -29,10 +32,6 @@ worker_efficiency, ) -from parsl.monitoring.visualization.form_fields import FileForm - -import datetime - dummy = True diff --git a/parsl/tests/test_monitoring/test_file_provenance.py b/parsl/tests/test_monitoring/test_file_provenance.py index a063f092b5..ed7ee6e746 100644 --- a/parsl/tests/test_monitoring/test_file_provenance.py +++ b/parsl/tests/test_monitoring/test_file_provenance.py @@ -1,13 +1,14 @@ -import pytest import os import shutil import time +import pytest + import parsl from parsl.config import Config +from parsl.data_provider.files import File from parsl.executors import ThreadPoolExecutor from parsl.monitoring import MonitoringHub -from parsl.data_provider.files import File @parsl.bash_app From 9ed699df64679b8a1e3a3b52f6e6d24f5ebf5b3d Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 15:30:15 -0600 Subject: [PATCH 57/59] removed unneeded import --- parsl/monitoring/db_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index 1b545fae95..bb6b3e1cef 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -5,7 +5,7 @@ import queue import threading import time -from typing import Any, Dict, List, Optional, Set, Tuple, TypeVar, Union, cast +from typing import Any, Dict, List, Optional, Set, Tuple, TypeVar, cast import typeguard From ce609cc94f58367726598bc8b6fd07ca3a9b7c0d Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 3 Dec 2024 16:17:44 -0600 Subject: [PATCH 58/59] mypy fixes --- parsl/curvezmq.py | 2 +- parsl/data_provider/files.py | 4 ++-- parsl/dataflow/dflow.py | 10 +++++----- parsl/dataflow/taskrecord.py | 3 +++ parsl/monitoring/db_manager.py | 10 +++++----- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/parsl/curvezmq.py b/parsl/curvezmq.py index e90e13a5bd..f1de25b05f 100644 --- a/parsl/curvezmq.py +++ b/parsl/curvezmq.py @@ -144,7 +144,7 @@ def _start_auth_thread(self) -> ThreadAuthenticator: auth_thread.start() # Only allow certs that are in the cert dir assert self.cert_dir # For mypy - auth_thread.configure_curve(domain="*", location=self.cert_dir) + auth_thread.configure_curve(domain="*", location=str(self.cert_dir)) return auth_thread def socket(self, socket_type: int, *args, **kwargs) -> zmq.Socket: diff --git a/parsl/data_provider/files.py b/parsl/data_provider/files.py index 286212e783..9d37d41813 100644 --- a/parsl/data_provider/files.py +++ b/parsl/data_provider/files.py @@ -49,8 +49,8 @@ def __init__(self, url: Union[os.PathLike, str], uu_id: Optional[uuid.UUID] = No self.path = parsed_url.path self.filename = os.path.basename(self.path) # let the DFK set these values, if needed - self.size = None - self.md5sum = None + self.size: Optional[int] = None + self.md5sum: Optional[str] = None self.timestamp = timestamp self.local_path: Optional[str] = None diff --git a/parsl/dataflow/dflow.py b/parsl/dataflow/dflow.py index fff183062e..d0bfdd80f4 100644 --- a/parsl/dataflow/dflow.py +++ b/parsl/dataflow/dflow.py @@ -304,7 +304,7 @@ def std_spec_to_name(name, spec): def _send_file_log_info(self, file: Union[File, DataFuture], task_record: TaskRecord, is_output: bool) -> None: """ Generate a message for the monitoring db about a file. """ - if self.file_provenance: + if self.monitoring and self.file_provenance: file_log_info = self._create_file_log_info(file, task_record) # make sure the task_id is None for inputs if not is_output: @@ -343,7 +343,7 @@ def _create_file_log_info(self, file: Union[File, DataFuture], def register_as_input(self, f: Union[File, DataFuture], task_record: TaskRecord): """ Register a file as an input to a task. """ - if self.file_provenance: + if self.monitoring and self.file_provenance: self._send_file_log_info(f, task_record, False) file_input_info = self._create_file_io_info(f, task_record) self.monitoring.send((MessageType.INPUT_FILE, file_input_info)) @@ -351,7 +351,7 @@ def register_as_input(self, f: Union[File, DataFuture], def register_as_output(self, f: Union[File, DataFuture], task_record: TaskRecord): """ Register a file as an output of a task. """ - if self.file_provenance: + if self.monitoring and self.file_provenance: self._send_file_log_info(f, task_record, True) file_output_info = self._create_file_io_info(f, task_record) self.monitoring.send((MessageType.OUTPUT_FILE, file_output_info)) @@ -370,7 +370,7 @@ def _create_file_io_info(self, file: Union[File, DataFuture], def _register_env(self, environ: ParslExecutor) -> None: """ Capture the environment information for the monitoring db. """ - if self.file_provenance: + if self.monitoring and self.file_provenance: environ_info = self._create_env_log_info(environ) self.monitoring.send((MessageType.ENVIRONMENT_INFO, environ_info)) @@ -387,7 +387,7 @@ def _create_env_log_info(self, environ: ParslExecutor) -> Dict[str, Any]: provider = getattr(environ, 'provider', None) if provider is not None: env_log_info['provider'] = provider.label - env_log_info['launcher'] = type(getattr(provider, 'launcher', None)) + env_log_info['launcher'] = str(type(getattr(provider, 'launcher', None))) env_log_info['worker_init'] = getattr(provider, 'worker_init', None) return env_log_info diff --git a/parsl/dataflow/taskrecord.py b/parsl/dataflow/taskrecord.py index f48aecceb9..1d3961a023 100644 --- a/parsl/dataflow/taskrecord.py +++ b/parsl/dataflow/taskrecord.py @@ -103,3 +103,6 @@ class TaskRecord(TypedDict, total=False): """Restricts access to end-of-join behavior to ensure that joins only complete once, even if several joining Futures complete close together in time.""" + + environment: str + """The environment in which the task is being executed.""" diff --git a/parsl/monitoring/db_manager.py b/parsl/monitoring/db_manager.py index bb6b3e1cef..9e71c1b18c 100644 --- a/parsl/monitoring/db_manager.py +++ b/parsl/monitoring/db_manager.py @@ -5,7 +5,7 @@ import queue import threading import time -from typing import Any, Dict, List, Optional, Set, Tuple, TypeVar, cast +from typing import Any, Dict, List, Optional, Set, Tuple, TypeVar, Union, cast import typeguard @@ -395,10 +395,10 @@ def start(self, """ like inserted_tasks but for Files """ - inserted_files = dict() # type: Dict[str, Dict[str, Union[None, datetime.datetime, str, int]]] - input_inserted_files = dict() # type: Dict[str, List[str]] - output_inserted_files = dict() # type: Dict[str, List[str]] - inserted_envs = set() # type: Set[object] + inserted_files: Dict[str, Dict[str, Union[None, datetime.datetime, str, int]]] = dict() + input_inserted_files: Dict[str, List[str]] = dict() + output_inserted_files: Dict[str, List[str]] = dict() + inserted_envs: Set[object] = set() # for any task ID, we can defer exactly one message, which is the # assumed-to-be-unique first message (with first message flag set). From 53f323db142adf29c15e1d09ab7014e2f8a6677b Mon Sep 17 00:00:00 2001 From: astro-friedel Date: Tue, 10 Dec 2024 09:49:34 -0600 Subject: [PATCH 59/59] fixed incorrect variable name --- docs/userguide/monitoring.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/userguide/monitoring.rst b/docs/userguide/monitoring.rst index 3df03fb205..065517b5b9 100644 --- a/docs/userguide/monitoring.rst +++ b/docs/userguide/monitoring.rst @@ -62,7 +62,7 @@ The monitoring system can also be used to track file provenance. File provenance * What inputs were given to the task that created the file * What environment was used (e.g. the 'worker_init' entry from a :py:class:`~parsl.providers.ExecutionProvider`), not available with every provider. -The purpose of the file provenance tracking is to provide a mechanism where the user can see exactly how a file was created and used in a workflow. This can be useful for debugging, understanding the workflow, for ensuring that the workflow is reproducible, and reviewing past work. The file provenance information is stored in the monitoring database and can be accessed using the ``parsl-visualize`` tool. To enable file provenance tracking, set the ``capture_file_provenance`` flag to ``True`` in the `parsl.monitoring.MonitoringHub` configuration. +The purpose of the file provenance tracking is to provide a mechanism where the user can see exactly how a file was created and used in a workflow. This can be useful for debugging, understanding the workflow, for ensuring that the workflow is reproducible, and reviewing past work. The file provenance information is stored in the monitoring database and can be accessed using the ``parsl-visualize`` tool. To enable file provenance tracking, set the ``file_provenance`` flag to ``True`` in the `parsl.monitoring.MonitoringHub` configuration. This functionality also enables you to log informational messages from you scripts, to capture anything not automatically gathered. The main change to your code to use this functionality is to assign the return value of the ``parsl.load`` to a variable. Then use the ``log_info`` function to log the messages in the database. Note that this feature is only available in the main script, not inside Apps. Passing this vaiable, ``my_cfg`` in the example below to an App will have undefined behavior. The following example shows how to use this feature. @@ -90,7 +90,7 @@ This functionality also enables you to log informational messages from you scrip hub_port=55055, monitoring_debug=False, resource_monitoring_interval=10, - capture_file_provenance=True, + file_provenance=True, ), strategy='none' )
    Name:{{ file_details['file_name'] }}
    Path:{{ file_details['file_path'] }}
    Id:{{ file_details['file_id'] }}
    Size:{{ file_details['size'] }} bytes
    md5sum:{{ file_details['md5sum'] }}
    Creation date:{{ file_details['timestamp'] | timeformat }}
    Workflow:{{ workflow.workflow_name }}
    Workflow:{{ workflow.workflow_name }}
    Created by:{{ tasks[output_files['task_id']]['task_func_name'] }}
    filesfiles