From 3d9a55aacc2623630dcaa3629134244598f0793b Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Wed, 27 Sep 2017 16:46:19 +0200 Subject: [PATCH 01/32] First draft for add/subtract contact freqs --- contact_map/contact_map.py | 50 +++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index d67deb4..fde2890 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -360,16 +360,6 @@ def __init__(self, frame, query=None, haystack=None, cutoff=0.45, (self._atom_contacts, self._residue_contacts) = contact_maps -class ContactTrajectory(ContactObject): - """ - Contact map (atomic and residue) for each individual trajectory frame. - - NOT YET IMPLEMENTED. I'm not sure whether this gives appreciable speed - improvements over running contact map over and over. - """ - pass - - class ContactFrequency(ContactObject): """ Contact frequency (atomic and residue) for a trajectory. @@ -409,7 +399,7 @@ def _build_contact_map(self): # we save it on a per-atom basis. This allows us ignore # n_nearest_neighbor residues. # TODO: this whole thing should be cleaned up and should replace - # MDTraj's really slow old computer_contacts by using MDTraj's new + # MDTraj's really slow old compute_contacts by using MDTraj's new # neighborlists (unless the MDTraj people do that first). topology = self.topology trajectory = self.trajectory @@ -439,6 +429,44 @@ def trajectory(self): def n_frames(self): return self._n_frames + def _check_compatibility(self, other): + assert self.cutoff == other.cutoff + assert self.topology == other.topology + assert self.query == other.query + assert self.haystack == other.haystack + assert self.n_neighbors_ignored == other.n_neighbors_ignored + + def add_contact_frequency(self, other): + """Add results from `other` to the internal counter. + + Parameters + ---------- + other : :class:`.ContactFrequency` + contact frequency made from the frames to remove from this + contact frequency + """ + self._check_compatibility(other) + self._atom_contacts_count += other._atom_contacts_count + self._residue_contacts_count += other._residue_contacts_count + + def subtract_contact_frequency(self, other): + """Subtracts results from `other` from internal counter. + + Note that this is intended for the case that you're removing a + subtrajectory of the already-calculated trajectory. If you want to + compare two different contact frequency maps, use + :class:`.ContactDifference`. + + Parameters + ---------- + other : :class:`.ContactFrequency` + contact frequency made from the frames to remove from this + contact frequency + """ + self._check_compatibility(other) + self._atom_contacts_count -= other._atom_contacts_count + self._residue_contacts_count -= other._residue_contacts_count + @property def atom_contacts(self): """Atoms pairs mapped to fraction of trajectory with that contact""" From bafa0287d0836a9e56c892323cb412328053714b Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Thu, 26 Oct 2017 20:03:13 +0200 Subject: [PATCH 02/32] Add API naming to docs --- docs/api.rst | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/docs/api.rst b/docs/api.rst index 4bcd5a0..b8228e7 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -28,3 +28,50 @@ Minimum Distance (and related) MinimumDistanceCounter NearestAtoms + +----- + + +API naming conventions +---------------------- + +There are several terms that are used throughout the API which are not +completely standard. Understanding them, and how we use them, will make it +much easier to understand the code. + +.. note:: + + This section does not discuss the code style conventions we use, only + the choice of specific words to mean specific things outside the normal + scientific usage. For the code style, see the (to-be-written) developer + documentation (or just use PEP8). + +Query/Haystack +~~~~~~~~~~~~~~ + +Many functions in the API take the lists ``query`` and ``haystack`` as +input. This nomenclature follows usage in MDTraj. These are lists of atom +indices used in the contact search. Every pair will include one atom from +``query`` and one atom from ``haystack``. In principle, the two lists are +interchangeable. However, there are cases where the implementation will be +faster if the ``query`` is the smaller of the two lists. + +Index/idx +~~~~~~~~~ + +Most of our return values are in terms of MDTraj ``Atom`` and ``Residue`` +objects. This is because these are more readable, and provide the user with +immediate access to useful context. However, there are times that what we +really want is the atom or residue index number. For this, we include the +``idx`` suffix (e.g., ``most_common_atoms_idx``). Note that these indices +start from 0; this can be confusing when comparing to PDB entries where +indexing is from 1. + +Most common +~~~~~~~~~~~ + +Several methods begin with ``most_common``. The behavior for this is +inspired by the behavior of :method:`collections.Counter.most_common`, which +returns elements and there counts ordered from most to least. Note that, +unlike the original, we usually do not implement a way to only return the +first ``n`` results (although this may be added later). From df00d48cd4926e3006e14efbba5c1182f5df1d6c Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Fri, 3 Nov 2017 22:56:49 +0100 Subject: [PATCH 03/32] bump to 0.2.1.dev0 --- ci/conda-recipe/meta.yaml | 2 +- setup.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/conda-recipe/meta.yaml b/ci/conda-recipe/meta.yaml index 383d990..c22c36c 100644 --- a/ci/conda-recipe/meta.yaml +++ b/ci/conda-recipe/meta.yaml @@ -1,7 +1,7 @@ package: name: contact_map # add ".dev0" for unreleased versions - version: "0.2.0" + version: "0.2.1.dev0" source: path: ../../ diff --git a/setup.py b/setup.py index 646cdbe..3f5963c 100644 --- a/setup.py +++ b/setup.py @@ -9,8 +9,8 @@ ####################### USER SETUP AREA ################################# # * VERSION: base version (do not include .dev0, etc -- that's automatic) # * IS_RELEASE: whether this is a release -VERSION = "0.2.0" -IS_RELEASE = True +VERSION = "0.2.1" +IS_RELEASE = False DEV_NUM = 0 # always 0: we don't do public (pypi) .dev releases PRE_TYPE = "" # a, b, or rc (although we rarely release such versions) From 2ecd1c1656701eaeb323a31ace27c1cd8964838b Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sun, 5 Nov 2017 15:46:48 +0100 Subject: [PATCH 04/32] Stop traj storage; check_compat to ContactObj --- contact_map/contact_map.py | 26 ++++++++++---------------- contact_map/min_dist.py | 4 ++-- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index b6108f4..f7d19b4 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -264,6 +264,13 @@ def __init__(self, topology, query, haystack, cutoff, n_neighbors_ignored): self._atom_idx_to_residue_idx = {atom.index: atom.residue.index for atom in self.topology.atoms} + def _check_compatibility(self, other): + assert self.cutoff == other.cutoff + assert self.topology == other.topology + assert self.query == other.query + assert self.haystack == other.haystack + assert self.n_neighbors_ignored == other.n_neighbors_ignored + def save_to_file(self, filename, mode="w"): """Save this object to the given file. @@ -546,7 +553,6 @@ class ContactFrequency(ContactObject): """ def __init__(self, trajectory, query=None, haystack=None, cutoff=0.45, n_neighbors_ignored=2, frames=None): - self._trajectory = trajectory if frames is None: frames = range(len(trajectory)) self.frames = frames @@ -554,16 +560,15 @@ def __init__(self, trajectory, query=None, haystack=None, cutoff=0.45, super(ContactFrequency, self).__init__(trajectory.topology, query, haystack, cutoff, n_neighbors_ignored) - self._build_contact_map() + self._build_contact_map(trajectory) - def _build_contact_map(self): + def _build_contact_map(self, trajectory): # We actually build the contact map on a per-residue basis, although # we save it on a per-atom basis. This allows us ignore # n_nearest_neighbor residues. # TODO: this whole thing should be cleaned up and should replace # MDTraj's really slow old compute_contacts by using MDTraj's new # neighborlists (unless the MDTraj people do that first). - trajectory = self.trajectory self._atom_contacts_count = collections.Counter([]) self._residue_contacts_count = collections.Counter([]) @@ -581,22 +586,11 @@ def _build_contact_map(self): self._atom_contacts_count.update(frame_atom_contacts) self._residue_contacts_count += frame_residue_contacts - @property - def trajectory(self): - return self._trajectory - @property def n_frames(self): """Number of frames in the mapped trajectory""" return self._n_frames - def _check_compatibility(self, other): - assert self.cutoff == other.cutoff - assert self.topology == other.topology - assert self.query == other.query - assert self.haystack == other.haystack - assert self.n_neighbors_ignored == other.n_neighbors_ignored - def add_contact_frequency(self, other): """Add results from `other` to the internal counter. @@ -661,7 +655,7 @@ class ContactDifference(ContactObject): def __init__(self, positive, negative): self.positive = positive self.negative = negative - # TODO: verify that the combination is compatible: same topol, etc + positive._check_compatibility(negative) super(ContactDifference, self).__init__(positive.topology, positive.query, positive.haystack, diff --git a/contact_map/min_dist.py b/contact_map/min_dist.py index 4d520ff..3c0b5c6 100644 --- a/contact_map/min_dist.py +++ b/contact_map/min_dist.py @@ -44,8 +44,8 @@ def __init__(self, trajectory, cutoff, frame_number=0, excluded=None): self._calculate_nearest(trajectory, self.cutoff, self.frame_number, self.excluded) - def _calculate_nearest(self, trajectory, cutoff, frame_number, - excluded): + @staticmethod + def _calculate_nearest(trajectory, cutoff, frame_number, excluded): """ Calculate the nearest atoms from the input data. From 927eb9bc2c16a9b7dee0f6a7301e4e21782b51d3 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sun, 5 Nov 2017 16:23:13 +0100 Subject: [PATCH 05/32] Add test for [add|subtract]_contact_freq --- contact_map/contact_map.py | 3 +++ contact_map/tests/test_contact_map.py | 39 +++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index f7d19b4..543da50 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -603,6 +603,8 @@ def add_contact_frequency(self, other): self._check_compatibility(other) self._atom_contacts_count += other._atom_contacts_count self._residue_contacts_count += other._residue_contacts_count + self._n_frames += other._n_frames + def subtract_contact_frequency(self, other): """Subtracts results from `other` from internal counter. @@ -621,6 +623,7 @@ def subtract_contact_frequency(self, other): self._check_compatibility(other) self._atom_contacts_count -= other._atom_contacts_count self._residue_contacts_count -= other._residue_contacts_count + self._n_frames -= other._n_frames @property def atom_contacts(self): diff --git a/contact_map/tests/test_contact_map.py b/contact_map/tests/test_contact_map.py index ca0ed8d..1c5e527 100644 --- a/contact_map/tests/test_contact_map.py +++ b/contact_map/tests/test_contact_map.py @@ -163,6 +163,8 @@ def test_saving(self, idx): assert m.atom_contacts.counter == m2.atom_contacts.counter os.remove(test_file) + # TODO: add tests for ContactObject._check_consistency + class TestContactFrequency(object): def setup(self): @@ -296,6 +298,43 @@ def test_most_common_atoms_for_contact(self, select_by): ] assert set(most_common_2_3_frozenset) == set(expected_2_3) + def test_add_contact_frequency(self): + # self.map has all 5 frames + # we can figure out what the [0:4] would look like + start = ContactFrequency(trajectory=traj[:4], + cutoff=0.075, + n_neighbors_ignored=0) + add_in = ContactFrequency(trajectory=traj[4:], + cutoff=0.075, + n_neighbors_ignored=0) + + start.add_contact_frequency(add_in) + + assert start.atom_contacts.counter == \ + self.map.atom_contacts.counter + + assert start.residue_contacts.counter == \ + self.map.residue_contacts.counter + + def test_subtract_contact_frequency(self): + first_four = ContactFrequency(trajectory=traj[:4], + cutoff=0.075, + n_neighbors_ignored=0) + last_frame = ContactFrequency(trajectory=traj[4:], + cutoff=0.075, + n_neighbors_ignored=0) + test_subject = ContactFrequency(trajectory=traj, + cutoff=0.075, + n_neighbors_ignored=0) + + test_subject.subtract_contact_frequency(first_four) + + assert test_subject.atom_contacts.counter == \ + last_frame.atom_contacts.counter + + assert test_subject.residue_contacts.counter == \ + last_frame.residue_contacts.counter + class TestContactCount(object): def setup(self): From 0e51675a382f22abfa783cef6ec75dd46aabb9d9 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Wed, 29 Nov 2017 19:38:01 +0100 Subject: [PATCH 06/32] First steps toward serialization (needs testing!) --- contact_map/contact_map.py | 45 ++++++++++++++++++++++++++++++++++++++ contact_map/py_2_3.py | 13 +++++++++++ 2 files changed, 58 insertions(+) create mode 100644 contact_map/py_2_3.py diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 543da50..33df6eb 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -6,10 +6,13 @@ import collections import itertools import pickle +import json import scipy import pandas as pd import mdtraj as md +from .py_2_3 import inspect_method_arguments + # matplotlib is technically optional, but required for plotting try: import matplotlib @@ -264,6 +267,48 @@ def __init__(self, topology, query, haystack, cutoff, n_neighbors_ignored): self._atom_idx_to_residue_idx = {atom.index: atom.residue.index for atom in self.topology.atoms} + def to_dict(self): + """Convert object to a dict. + + Keys should be strings; values should be (JSON-) serializable. + """ + dct = { + 'topology': self.topology.to_dataframe().to_json(), + 'cutoff': self._cutoff, + 'query': self._query, + 'haystack': self._haystack, + 'n_neighbors_ignored': self._n_neighbors_ignored, + 'atom_idx_to_residue_idx': self._atom_idx_to_residue_idx, + } + return dct + + @classmethod + def from_dict(cls, dct): + kwarg_keys = inspect_method_arguments(cls.__init__) + set_keys = set(dct.keys()) + missing = set(kwarg_keys) - set_keys + dct.update({k: None for k in missing}) + kwargs = {k: dct[k] for k in kwarg_keys} + non_kwarg_keys = set_keys - set(kwargs) + instance = cls(**kwargs) + for k in non_kwarg_keys: + setattr(instance, k, dct[k]) + return instance + + @staticmethod + def _deserialize_topology(topology_json): + topology_df = pd.DataFrame.from_json(topology_json) + topology = md.Topology.from_dataframe(topology_df) + return topology + + def to_json(self): + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json): + dct = json.loads(json) + return cls.from_dict(dct) + def _check_compatibility(self, other): assert self.cutoff == other.cutoff assert self.topology == other.topology diff --git a/contact_map/py_2_3.py b/contact_map/py_2_3.py new file mode 100644 index 0000000..7c99be8 --- /dev/null +++ b/contact_map/py_2_3.py @@ -0,0 +1,13 @@ +import inspect + +try: + getargspec = inspect.getfullargspec +except AttributeError: + getargspec = inspect.getargspec + +def inspect_method_arguments(method, no_self=True): + args = getargspec(method).args + if no_self: + args = [arg for arg in args if arg != 'self'] + return args + From b0bebad13e6ba128db6043d7ef62d487ecbf4905 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Wed, 6 Dec 2017 16:17:47 +0100 Subject: [PATCH 07/32] ContactMap serialization done (with tests) --- contact_map/contact_map.py | 88 +++++++++++++++++++++++---- contact_map/tests/test_contact_map.py | 79 ++++++++++++++++++++++++ 2 files changed, 154 insertions(+), 13 deletions(-) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 33df6eb..8fbd483 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -8,6 +8,7 @@ import pickle import json import scipy +import numpy as np import pandas as pd import mdtraj as md @@ -62,6 +63,7 @@ def _residue_and_index(residue, topology): return (res, res_idx) + class ContactCount(object): """Return object when dealing with contacts (residue or atom). @@ -267,16 +269,24 @@ def __init__(self, topology, query, haystack, cutoff, n_neighbors_ignored): self._atom_idx_to_residue_idx = {atom.index: atom.residue.index for atom in self.topology.atoms} + def __eq__(self, other): + is_equal = (self.cutoff == other.cutoff + and self.n_neighbors_ignored == other.n_neighbors_ignored + and self.query == other.query + and self.haystack == other.haystack + and self.topology == other.topology) + return is_equal + def to_dict(self): """Convert object to a dict. Keys should be strings; values should be (JSON-) serializable. """ dct = { - 'topology': self.topology.to_dataframe().to_json(), + 'topology': self._serialize_topology(self.topology), 'cutoff': self._cutoff, - 'query': self._query, - 'haystack': self._haystack, + 'query': list(self._query), + 'haystack': list(self._haystack), 'n_neighbors_ignored': self._n_neighbors_ignored, 'atom_idx_to_residue_idx': self._atom_idx_to_residue_idx, } @@ -284,29 +294,65 @@ def to_dict(self): @classmethod def from_dict(cls, dct): + if 'topology' in dct: + dct['topology'] = cls._deserialize_topology(dct['topology']) + for key in ['atom_contacts', 'residue_contacts']: + if key in dct: + dct[key] = cls._deserialize_contact_counter(dct[key]) + for key in ['query', 'haystack']: + if key in dct: + dct[key] = set(dct[key]) + for key in ['atom_idx_to_residue_idx']: + if key in dct: + val_dct = dct[key] + dct[key] = {int(k): val_dct[k] for k in val_dct} + kwarg_keys = inspect_method_arguments(cls.__init__) set_keys = set(dct.keys()) missing = set(kwarg_keys) - set_keys dct.update({k: None for k in missing}) - kwargs = {k: dct[k] for k in kwarg_keys} - non_kwarg_keys = set_keys - set(kwargs) - instance = cls(**kwargs) - for k in non_kwarg_keys: - setattr(instance, k, dct[k]) + instance = cls.__new__(cls) + for k in dct: + setattr(instance, "_" + k, dct[k]) return instance @staticmethod def _deserialize_topology(topology_json): - topology_df = pd.DataFrame.from_json(topology_json) - topology = md.Topology.from_dataframe(topology_df) + table, bonds = json.loads(topology_json) + topology_df = pd.read_json(table) + topology = md.Topology.from_dataframe(topology_df, + np.array(bonds)) return topology + @staticmethod + def _serialize_topology(topology): + table, bonds = topology.to_dataframe() + json_tuples = (table.to_json(), bonds.tolist()) + return json.dumps(json_tuples) + + # TODO: adding a separate object for these frozenset counters will be + # useful for many things, and this serialization should be moved there + @staticmethod + def _serialize_contact_counter(counter): + serializable = {json.dumps(list(key)): counter[key] + for key in counter} + return json.dumps(serializable) + + @staticmethod + def _deserialize_contact_counter(json_string): + dct = json.loads(json_string) + counter = collections.Counter({ + frozenset(json.loads(key)): dct[key] for key in dct + }) + return counter + def to_json(self): + dct = self.to_dict() return json.dumps(self.to_dict()) @classmethod - def from_json(cls, json): - dct = json.loads(json) + def from_json(cls, json_string): + dct = json.loads(json_string) return cls.from_dict(dct) def _check_compatibility(self, other): @@ -562,7 +608,7 @@ class ContactMap(ContactObject): """ def __init__(self, frame, query=None, haystack=None, cutoff=0.45, n_neighbors_ignored=2): - self._frame = frame + self._frame = frame # TODO: remove this? super(ContactMap, self).__init__(frame.topology, query, haystack, cutoff, n_neighbors_ignored) contact_maps = self.contact_map(frame, 0, @@ -570,6 +616,22 @@ def __init__(self, frame, query=None, haystack=None, cutoff=0.45, self.residue_ignore_atom_idxs) (self._atom_contacts, self._residue_contacts) = contact_maps + def __eq__(self, other): + is_equal = (super(ContactMap, self).__eq__(other) + and self._atom_contacts == other._atom_contacts + and self._residue_contacts == other._residue_contacts) + return is_equal + + def to_dict(self): + dct = super(ContactMap, self).to_dict() + atom_cntcts = self._serialize_contact_counter(self._atom_contacts) + res_cntcts = self._serialize_contact_counter(self._residue_contacts) + dct.update({ + 'atom_contacts': atom_cntcts, + 'residue_contacts': res_cntcts + }) + return dct + class ContactFrequency(ContactObject): """ diff --git a/contact_map/tests/test_contact_map.py b/contact_map/tests/test_contact_map.py index 1c5e527..24c7808 100644 --- a/contact_map/tests/test_contact_map.py +++ b/contact_map/tests/test_contact_map.py @@ -2,6 +2,7 @@ import collections import numpy as np import mdtraj as md +import json # pylint: disable=wildcard-import, missing-docstring, protected-access # pylint: disable=attribute-defined-outside-init, invalid-name, no-self-use @@ -39,6 +40,23 @@ test_file = "test_file.p" +def pdb_topology_dict(): + serial = {str(i): i+1 for i in range(10)} + name = {str(i): "C" + str(i%2 + 1) for i in range(10)} + element = {str(i): "C" for i in range(10)} + res_seq = {str(i): str(i/2 + 1) for i in range(10)} + res_name = {str(i): "XXX" for i in range(10)} + chain_id = {str(i): 0 for i in range(10)} + seg_id = {str(i): "" for i in range(10)} + dct = {'serial': serial, + 'name': name, + 'element': element, + 'resSeq': res_seq, + 'resName': res_name, + 'chainID': chain_id, + 'segmentID': seg_id} + return dct + def counter_of_inner_list(ll): return collections.Counter([frozenset(i) for i in ll]) @@ -97,6 +115,61 @@ def test_counters(self, idx): assert m._residue_contacts == expected assert m.residue_contacts.counter == expected + def test_to_dict(self, idx): + m = self.maps[idx] + json_topol = json.dumps(pdb_topology_dict(), []) + dct = m.to_dict() + # NOTE: topology only tested in a cycle; JSON order not guaranteed + assert dct['cutoff'] == 0.075 + assert dct['query'] == list(range(10)) + assert dct['haystack'] == list(range(10)) + assert dct['n_neighbors_ignored'] == 0 + assert dct['atom_idx_to_residue_idx'] == {i: i // 2 + for i in range(10)} + + def test_topology_serialization_cycle(self, idx): + m = self.maps[idx] + serialized_topology = ContactMap._serialize_topology(m.topology) + new_top = ContactMap._deserialize_topology(serialized_topology) + assert m.topology == new_top + + def test_counter_serialization_cycle(self, idx): + m = self.maps[idx] + serialize = ContactMap._serialize_contact_counter + deserialize = ContactMap._deserialize_contact_counter + serialized_atom_counter = serialize(m._atom_contacts) + serialized_residue_counter = serialize(m._residue_contacts) + new_atom_counter = deserialize(serialized_atom_counter) + new_residue_counter = deserialize(serialized_residue_counter) + assert new_atom_counter == m._atom_contacts + assert new_residue_counter == m._residue_contacts + + def test_dict_serialization_cycle(self, idx): + m = self.maps[idx] + dct = m.to_dict() + m2 = ContactMap.from_dict(dct) + assert m.cutoff == m2.cutoff + assert m.query == m2.query + assert m.haystack == m2.haystack + assert m.n_neighbors_ignored == m2.n_neighbors_ignored + assert m._atom_idx_to_residue_idx == m2._atom_idx_to_residue_idx + assert m.topology == m2.topology + assert m._atom_contacts == m2._atom_contacts + assert m._residue_contacts == m2._residue_contacts + assert m == m2 + + def test_json_serialization_cycle(self, idx): + m = self.maps[idx] + json = m.to_json() + m2 = ContactMap.from_json(json) + assert m.cutoff == m2.cutoff + assert m.query == m2.query + assert m.haystack == m2.haystack + assert m.n_neighbors_ignored == m2.n_neighbors_ignored + assert m._atom_idx_to_residue_idx == m2._atom_idx_to_residue_idx + assert m.topology == m2.topology + assert m == m2 + def test_with_ignores(self, idx): m = ContactMap(traj[idx], cutoff=0.075, n_neighbors_ignored=1) expected_atom_contacts = { @@ -202,6 +275,12 @@ def test_counters(self): } assert residue_contacts.counter == expected_residue_contacts + def test_dct_cycle(self): + pytest.skip() + + def test_json_cycle(self): + pytest.skip() + def test_frames_parameter(self): # test that the frames parameter in initialization works frames = [1, 3, 4] From dc3f830b69a34f9f3f0e97b592f16f794612270d Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Wed, 20 Dec 2017 15:04:40 +0100 Subject: [PATCH 08/32] Add hashes for Py3 Still problems with json encode in Py3 (Py2 is fine) --- contact_map/contact_map.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 8fbd483..032b9e3 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -269,6 +269,11 @@ def __init__(self, topology, query, haystack, cutoff, n_neighbors_ignored): self._atom_idx_to_residue_idx = {atom.index: atom.residue.index for atom in self.topology.atoms} + def __hash__(self): + return hash((self.cutoff, self.n_neighbors_ignored, + frozenset(self._query), frozenset(self._haystack), + self.topology)) + def __eq__(self, other): is_equal = (self.cutoff == other.cutoff and self.n_neighbors_ignored == other.n_neighbors_ignored @@ -616,6 +621,11 @@ def __init__(self, frame, query=None, haystack=None, cutoff=0.45, self.residue_ignore_atom_idxs) (self._atom_contacts, self._residue_contacts) = contact_maps + def __hash__(self): + return hash((super(ContactMap, self).__hash__(), + tuple(self._atom_contacts.items()), + tuple(self._residue_contacts.items()))) + def __eq__(self, other): is_equal = (super(ContactMap, self).__eq__(other) and self._atom_contacts == other._atom_contacts From 992185f208ffd9dc67789387787a3e316725793b Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sun, 7 Jan 2018 12:16:25 +0100 Subject: [PATCH 09/32] Fix serialization problems in Py 3.6 Issues with np.int64 not being JSON-serializable; must explicitly convert. --- contact_map/contact_map.py | 15 +++++++++++---- contact_map/tests/test_contact_map.py | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 032b9e3..9ed11b8 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -287,11 +287,12 @@ def to_dict(self): Keys should be strings; values should be (JSON-) serializable. """ + # need to explicitly convert possible np.int64 to int in several dct = { 'topology': self._serialize_topology(self.topology), 'cutoff': self._cutoff, - 'query': list(self._query), - 'haystack': list(self._haystack), + 'query': list([int(val) for val in self._query]), + 'haystack': list([int(val) for val in self._haystack]), 'n_neighbors_ignored': self._n_neighbors_ignored, 'atom_idx_to_residue_idx': self._atom_idx_to_residue_idx, } @@ -339,7 +340,9 @@ def _serialize_topology(topology): # useful for many things, and this serialization should be moved there @staticmethod def _serialize_contact_counter(counter): - serializable = {json.dumps(list(key)): counter[key] + # have to explicitly convert to int because json doesn't know how to + # serialize np.int64 objects, which we get in Python 3 + serializable = {json.dumps([int(val) for val in key]): counter[key] for key in counter} return json.dumps(serializable) @@ -353,7 +356,11 @@ def _deserialize_contact_counter(json_string): def to_json(self): dct = self.to_dict() - return json.dumps(self.to_dict()) + for k, v in dct.items(): + print(k) + print(json.dumps(k)) + print(json.dumps(v)) + return json.dumps(dct) @classmethod def from_json(cls, json_string): diff --git a/contact_map/tests/test_contact_map.py b/contact_map/tests/test_contact_map.py index 24c7808..e60a6b3 100644 --- a/contact_map/tests/test_contact_map.py +++ b/contact_map/tests/test_contact_map.py @@ -117,7 +117,7 @@ def test_counters(self, idx): def test_to_dict(self, idx): m = self.maps[idx] - json_topol = json.dumps(pdb_topology_dict(), []) + json_topol = json.dumps(pdb_topology_dict()) dct = m.to_dict() # NOTE: topology only tested in a cycle; JSON order not guaranteed assert dct['cutoff'] == 0.075 From 97fa637a9ccfbb5f8e6bd371c736ca96764df154 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sun, 7 Jan 2018 12:29:08 +0100 Subject: [PATCH 10/32] [codeclimate] Refactor from_dict deserialization --- contact_map/contact_map.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 9ed11b8..8358845 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -300,18 +300,19 @@ def to_dict(self): @classmethod def from_dict(cls, dct): - if 'topology' in dct: - dct['topology'] = cls._deserialize_topology(dct['topology']) - for key in ['atom_contacts', 'residue_contacts']: - if key in dct: - dct[key] = cls._deserialize_contact_counter(dct[key]) - for key in ['query', 'haystack']: - if key in dct: - dct[key] = set(dct[key]) - for key in ['atom_idx_to_residue_idx']: + deserialize_set = lambda k: set(k) + deserialize_atom_to_residue_dct = lambda d: {int(k): d[k] for k in d} + deserialization_helpers = { + 'topology': cls._deserialize_topology, + 'atom_contacts': cls._deserialize_contact_counter, + 'residue_contacts': cls._deserialize_contact_counter, + 'query': deserialize_set, + 'haystack': deserialize_set, + 'atom_idx_to_residue_idx': deserialize_atom_to_residue_dct + } + for key in deserialization_helpers: if key in dct: - val_dct = dct[key] - dct[key] = {int(k): val_dct[k] for k in val_dct} + dct[key] = deserialization_helpers[key](dct[key]) kwarg_keys = inspect_method_arguments(cls.__init__) set_keys = set(dct.keys()) @@ -356,10 +357,6 @@ def _deserialize_contact_counter(json_string): def to_json(self): dct = self.to_dict() - for k, v in dct.items(): - print(k) - print(json.dumps(k)) - print(json.dumps(v)) return json.dumps(dct) @classmethod From 77cbf6eb082cb7f3d4c3098a2800834407ead7f4 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Mon, 8 Jan 2018 09:22:30 +0100 Subject: [PATCH 11/32] Serialization for ContactFrequency Also std'ized names _atom_contacts & _residue_contacts --- contact_map/contact_map.py | 48 ++++++++++++++++----------- contact_map/tests/test_contact_map.py | 36 ++++++++++++++++++-- 2 files changed, 61 insertions(+), 23 deletions(-) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 8358845..7ef2e9c 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -295,6 +295,10 @@ def to_dict(self): 'haystack': list([int(val) for val in self._haystack]), 'n_neighbors_ignored': self._n_neighbors_ignored, 'atom_idx_to_residue_idx': self._atom_idx_to_residue_idx, + 'atom_contacts': \ + self._serialize_contact_counter(self._atom_contacts), + 'residue_contacts': \ + self._serialize_contact_counter(self._residue_contacts) } return dct @@ -636,15 +640,15 @@ def __eq__(self, other): and self._residue_contacts == other._residue_contacts) return is_equal - def to_dict(self): - dct = super(ContactMap, self).to_dict() - atom_cntcts = self._serialize_contact_counter(self._atom_contacts) - res_cntcts = self._serialize_contact_counter(self._residue_contacts) - dct.update({ - 'atom_contacts': atom_cntcts, - 'residue_contacts': res_cntcts - }) - return dct + #def to_dict(self): + #dct = super(ContactMap, self).to_dict() + #atom_cntcts = self._serialize_contact_counter(self._atom_contacts) + #res_cntcts = self._serialize_contact_counter(self._residue_contacts) + #dct.update({ + #'atom_contacts': atom_cntcts, + #'residue_contacts': res_cntcts + #}) + #return dct class ContactFrequency(ContactObject): @@ -681,7 +685,9 @@ def __init__(self, trajectory, query=None, haystack=None, cutoff=0.45, super(ContactFrequency, self).__init__(trajectory.topology, query, haystack, cutoff, n_neighbors_ignored) - self._build_contact_map(trajectory) + contacts = self._build_contact_map(trajectory) + (self._atom_contacts, self._residue_contacts) = contacts + def _build_contact_map(self, trajectory): # We actually build the contact map on a per-residue basis, although @@ -690,8 +696,8 @@ def _build_contact_map(self, trajectory): # TODO: this whole thing should be cleaned up and should replace # MDTraj's really slow old compute_contacts by using MDTraj's new # neighborlists (unless the MDTraj people do that first). - self._atom_contacts_count = collections.Counter([]) - self._residue_contacts_count = collections.Counter([]) + atom_contacts_count = collections.Counter([]) + residue_contacts_count = collections.Counter([]) # cache things that can be calculated once based on the topology # (namely, which atom indices matter for each residue) @@ -704,8 +710,10 @@ def _build_contact_map(self, trajectory): frame_atom_contacts = frame_contacts[0] frame_residue_contacts = frame_contacts[1] # self._atom_contacts_count += frame_atom_contacts - self._atom_contacts_count.update(frame_atom_contacts) - self._residue_contacts_count += frame_residue_contacts + atom_contacts_count.update(frame_atom_contacts) + residue_contacts_count += frame_residue_contacts + + return (atom_contacts_count, residue_contacts_count) @property def n_frames(self): @@ -722,8 +730,8 @@ def add_contact_frequency(self, other): contact frequency """ self._check_compatibility(other) - self._atom_contacts_count += other._atom_contacts_count - self._residue_contacts_count += other._residue_contacts_count + self._atom_contacts += other._atom_contacts + self._residue_contacts += other._residue_contacts self._n_frames += other._n_frames @@ -742,8 +750,8 @@ def subtract_contact_frequency(self, other): contact frequency """ self._check_compatibility(other) - self._atom_contacts_count -= other._atom_contacts_count - self._residue_contacts_count -= other._residue_contacts_count + self._atom_contacts -= other._atom_contacts + self._residue_contacts -= other._residue_contacts self._n_frames -= other._n_frames @property @@ -753,7 +761,7 @@ def atom_contacts(self): n_y = self.topology.n_atoms return ContactCount(collections.Counter({ item[0]: float(item[1])/self.n_frames - for item in self._atom_contacts_count.items() + for item in self._atom_contacts.items() }), self.topology.atom, n_x, n_y) @property @@ -763,7 +771,7 @@ def residue_contacts(self): n_y = self.topology.n_residues return ContactCount(collections.Counter({ item[0]: float(item[1])/self.n_frames - for item in self._residue_contacts_count.items() + for item in self._residue_contacts.items() }), self.topology.residue, n_x, n_y) diff --git a/contact_map/tests/test_contact_map.py b/contact_map/tests/test_contact_map.py index e60a6b3..0ec5757 100644 --- a/contact_map/tests/test_contact_map.py +++ b/contact_map/tests/test_contact_map.py @@ -168,6 +168,8 @@ def test_json_serialization_cycle(self, idx): assert m.n_neighbors_ignored == m2.n_neighbors_ignored assert m._atom_idx_to_residue_idx == m2._atom_idx_to_residue_idx assert m.topology == m2.topology + assert m._atom_contacts == m2._atom_contacts + assert m._residue_contacts == m2._residue_contacts assert m == m2 def test_with_ignores(self, idx): @@ -275,11 +277,33 @@ def test_counters(self): } assert residue_contacts.counter == expected_residue_contacts - def test_dct_cycle(self): - pytest.skip() + def test_dict_serialization_cycle(self): + m = self.map + dct = self.map.to_dict() + m2 = ContactFrequency.from_dict(dct) + assert m.cutoff == m2.cutoff + assert m.query == m2.query + assert m.haystack == m2.haystack + assert m.n_neighbors_ignored == m2.n_neighbors_ignored + assert m._atom_idx_to_residue_idx == m2._atom_idx_to_residue_idx + assert m.topology == m2.topology + assert m._atom_contacts == m2._atom_contacts + assert m._residue_contacts == m2._residue_contacts + assert m == m2 def test_json_cycle(self): - pytest.skip() + m = self.map + json = self.map.to_json() + m2 = ContactFrequency.from_json(json) + assert m.cutoff == m2.cutoff + assert m.query == m2.query + assert m.haystack == m2.haystack + assert m.n_neighbors_ignored == m2.n_neighbors_ignored + assert m._atom_idx_to_residue_idx == m2._atom_idx_to_residue_idx + assert m.topology == m2.topology + assert m._atom_contacts == m2._atom_contacts + assert m._residue_contacts == m2._residue_contacts + assert m == m2 def test_frames_parameter(self): # test that the frames parameter in initialization works @@ -578,6 +602,12 @@ def test_diff_traj_frame(self): assert diff_2.residue_contacts.counter == \ {k: -v for (k, v) in expected_residue_count.items()} + def test_dct_cycle(self): + pytest.skip() + + def test_json_cycle(self): + pytest.skip() + def test_diff_frame_frame(self): m0 = ContactMap(traj[0], cutoff=0.075, n_neighbors_ignored=0) m4 = ContactMap(traj[4], cutoff=0.075, n_neighbors_ignored=0) From 7e65d2807886de50ac3f3b0ea5c42572679101e2 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Mon, 8 Jan 2018 09:47:33 +0100 Subject: [PATCH 12/32] [codeclim] Reduce dupes in serialization tests --- contact_map/tests/test_contact_map.py | 56 ++++++++++----------------- contact_map/tests/utils.py | 1 - 2 files changed, 21 insertions(+), 36 deletions(-) diff --git a/contact_map/tests/test_contact_map.py b/contact_map/tests/test_contact_map.py index 0ec5757..21030a7 100644 --- a/contact_map/tests/test_contact_map.py +++ b/contact_map/tests/test_contact_map.py @@ -64,6 +64,20 @@ def check_most_common_order(most_common): for i in range(len(most_common) - 1): assert most_common[i][1] >= most_common[i+1][1] +def _contact_object_compare(m, m2): + """Compare two contact objects (with asserts). + + May later become pytest fanciness (pytest_assertrepr_compare) + """ + assert m.cutoff == m2.cutoff + assert m.query == m2.query + assert m.haystack == m2.haystack + assert m.n_neighbors_ignored == m2.n_neighbors_ignored + assert m._atom_idx_to_residue_idx == m2._atom_idx_to_residue_idx + assert m.topology == m2.topology + assert m._atom_contacts == m2._atom_contacts + assert m._residue_contacts == m2._residue_contacts + def test_residue_neighborhood(): top = traj.topology residues = list(top.residues) @@ -148,28 +162,14 @@ def test_dict_serialization_cycle(self, idx): m = self.maps[idx] dct = m.to_dict() m2 = ContactMap.from_dict(dct) - assert m.cutoff == m2.cutoff - assert m.query == m2.query - assert m.haystack == m2.haystack - assert m.n_neighbors_ignored == m2.n_neighbors_ignored - assert m._atom_idx_to_residue_idx == m2._atom_idx_to_residue_idx - assert m.topology == m2.topology - assert m._atom_contacts == m2._atom_contacts - assert m._residue_contacts == m2._residue_contacts + _contact_object_compare(m, m2) assert m == m2 def test_json_serialization_cycle(self, idx): m = self.maps[idx] json = m.to_json() m2 = ContactMap.from_json(json) - assert m.cutoff == m2.cutoff - assert m.query == m2.query - assert m.haystack == m2.haystack - assert m.n_neighbors_ignored == m2.n_neighbors_ignored - assert m._atom_idx_to_residue_idx == m2._atom_idx_to_residue_idx - assert m.topology == m2.topology - assert m._atom_contacts == m2._atom_contacts - assert m._residue_contacts == m2._residue_contacts + _contact_object_compare(m, m2) assert m == m2 def test_with_ignores(self, idx): @@ -281,28 +281,14 @@ def test_dict_serialization_cycle(self): m = self.map dct = self.map.to_dict() m2 = ContactFrequency.from_dict(dct) - assert m.cutoff == m2.cutoff - assert m.query == m2.query - assert m.haystack == m2.haystack - assert m.n_neighbors_ignored == m2.n_neighbors_ignored - assert m._atom_idx_to_residue_idx == m2._atom_idx_to_residue_idx - assert m.topology == m2.topology - assert m._atom_contacts == m2._atom_contacts - assert m._residue_contacts == m2._residue_contacts + _contact_object_compare(m, m2) assert m == m2 - def test_json_cycle(self): + def test_json_serialization_cycle(self): m = self.map json = self.map.to_json() m2 = ContactFrequency.from_json(json) - assert m.cutoff == m2.cutoff - assert m.query == m2.query - assert m.haystack == m2.haystack - assert m.n_neighbors_ignored == m2.n_neighbors_ignored - assert m._atom_idx_to_residue_idx == m2._atom_idx_to_residue_idx - assert m.topology == m2.topology - assert m._atom_contacts == m2._atom_contacts - assert m._residue_contacts == m2._residue_contacts + _contact_object_compare(m, m2) assert m == m2 def test_frames_parameter(self): @@ -602,10 +588,10 @@ def test_diff_traj_frame(self): assert diff_2.residue_contacts.counter == \ {k: -v for (k, v) in expected_residue_count.items()} - def test_dct_cycle(self): + def test_dict_serialization_cycle(self): pytest.skip() - def test_json_cycle(self): + def test_json_serialization_cycle(self): pytest.skip() def test_diff_frame_frame(self): diff --git a/contact_map/tests/utils.py b/contact_map/tests/utils.py index 9411d23..b0dc8ea 100644 --- a/contact_map/tests/utils.py +++ b/contact_map/tests/utils.py @@ -5,7 +5,6 @@ from numpy.testing import assert_array_equal import pytest - def find_testfile(fname): return resource_filename('contact_map', os.path.join('tests', fname)) From 60a58eb95533d0116a974fe51dcdb3e00aa6b2be Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Mon, 8 Jan 2018 13:50:19 +0100 Subject: [PATCH 13/32] Serialization for ContactDifference --- contact_map/contact_map.py | 28 ++++++++++++++++ contact_map/tests/test_contact_map.py | 47 +++++++++++++++++---------- 2 files changed, 57 insertions(+), 18 deletions(-) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 7ef2e9c..f38597e 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -794,6 +794,34 @@ def __init__(self, positive, negative): positive.cutoff, positive.n_neighbors_ignored) + def to_dict(self): + return { + 'positive': self.positive.to_json(), + 'negative': self.negative.to_json(), + 'positive_cls': self.positive.__class__.__name__, + 'negative_cls': self.negative.__class__.__name__ + } + + @classmethod + def from_dict(cls, dct): + # TODO: add searching for subclasses (http://code.activestate.com/recipes/576949-find-all-subclasses-of-a-given-class/) + supported_classes = [ContactMap, ContactFrequency] + supported_classes_dict = {class_.__name__: class_ + for class_ in supported_classes} + + def rebuild(pos_neg): + class_name = dct[pos_neg + "_cls"] + try: + cls_ = supported_classes_dict[class_name] + except KeyError: # pragma: no cover + raise RuntimeError("Can't rebuild class " + class_name) + obj = cls_.from_json(dct[pos_neg]) + return obj + + positive = rebuild('positive') + negative = rebuild('negative') + return cls(positive, negative) + def __sub__(self, other): raise NotImplementedError diff --git a/contact_map/tests/test_contact_map.py b/contact_map/tests/test_contact_map.py index 21030a7..1919b06 100644 --- a/contact_map/tests/test_contact_map.py +++ b/contact_map/tests/test_contact_map.py @@ -75,8 +75,10 @@ def _contact_object_compare(m, m2): assert m.n_neighbors_ignored == m2.n_neighbors_ignored assert m._atom_idx_to_residue_idx == m2._atom_idx_to_residue_idx assert m.topology == m2.topology - assert m._atom_contacts == m2._atom_contacts - assert m._residue_contacts == m2._residue_contacts + if hasattr(m, '_atom_contacts') or hasattr(m2, '_atom_contacts'): + assert m._atom_contacts == m2._atom_contacts + if hasattr(m, '_residue_contacts') or hasattr(m2, '_residue_contacts'): + assert m._residue_contacts == m2._residue_contacts def test_residue_neighborhood(): top = traj.topology @@ -277,19 +279,17 @@ def test_counters(self): } assert residue_contacts.counter == expected_residue_contacts - def test_dict_serialization_cycle(self): - m = self.map - dct = self.map.to_dict() - m2 = ContactFrequency.from_dict(dct) - _contact_object_compare(m, m2) - assert m == m2 + @pytest.mark.parametrize("intermediate", ["dict", "json"]) + def test_serialization_cycle(self, intermediate): + serializer, deserializer = { + 'json': (self.map.to_json, ContactFrequency.from_json), + 'dict': (self.map.to_dict, ContactFrequency.from_dict) + }[intermediate] - def test_json_serialization_cycle(self): - m = self.map - json = self.map.to_json() - m2 = ContactFrequency.from_json(json) - _contact_object_compare(m, m2) - assert m == m2 + serialized = serializer() + reloaded = deserializer(serialized) + _contact_object_compare(self.map, reloaded) + assert self.map == reloaded def test_frames_parameter(self): # test that the frames parameter in initialization works @@ -588,11 +588,22 @@ def test_diff_traj_frame(self): assert diff_2.residue_contacts.counter == \ {k: -v for (k, v) in expected_residue_count.items()} - def test_dict_serialization_cycle(self): - pytest.skip() + @pytest.mark.parametrize("intermediate", ["dict", "json"]) + def test_serialization_cycle(self, intermediate): + ttraj = ContactFrequency(traj[0:4], cutoff=0.075, + n_neighbors_ignored=0) + frame = ContactMap(traj[4], cutoff=0.075, n_neighbors_ignored=0) + diff = ttraj - frame + + serializer, deserializer = { + 'json': (diff.to_json, ContactDifference.from_json), + 'dict': (diff.to_dict, ContactDifference.from_dict) + }[intermediate] - def test_json_serialization_cycle(self): - pytest.skip() + serialized = serializer() + reloaded = deserializer(serialized) + _contact_object_compare(diff, reloaded) + assert diff == reloaded def test_diff_frame_frame(self): m0 = ContactMap(traj[0], cutoff=0.075, n_neighbors_ignored=0) From 2ea6da03997b9d3cdcab2a986bdc62cb0a704331 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Mon, 8 Jan 2018 14:15:07 +0100 Subject: [PATCH 14/32] Serialization docstrings --- contact_map/contact_map.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index f38597e..14782ce 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -286,6 +286,10 @@ def to_dict(self): """Convert object to a dict. Keys should be strings; values should be (JSON-) serializable. + + See also + -------- + from_dict """ # need to explicitly convert possible np.int64 to int in several dct = { @@ -304,6 +308,12 @@ def to_dict(self): @classmethod def from_dict(cls, dct): + """Create object from dict. + + See also + -------- + to_dict + """ deserialize_set = lambda k: set(k) deserialize_atom_to_residue_dct = lambda d: {int(k): d[k] for k in d} deserialization_helpers = { @@ -329,6 +339,7 @@ def from_dict(cls, dct): @staticmethod def _deserialize_topology(topology_json): + """Create MDTraj topology from JSON-serialized version""" table, bonds = json.loads(topology_json) topology_df = pd.read_json(table) topology = md.Topology.from_dataframe(topology_df, @@ -337,6 +348,7 @@ def _deserialize_topology(topology_json): @staticmethod def _serialize_topology(topology): + """Serialize MDTraj topology (to JSON)""" table, bonds = topology.to_dataframe() json_tuples = (table.to_json(), bonds.tolist()) return json.dumps(json_tuples) @@ -345,6 +357,7 @@ def _serialize_topology(topology): # useful for many things, and this serialization should be moved there @staticmethod def _serialize_contact_counter(counter): + """JSON string from contact counter""" # have to explicitly convert to int because json doesn't know how to # serialize np.int64 objects, which we get in Python 3 serializable = {json.dumps([int(val) for val in key]): counter[key] @@ -353,6 +366,7 @@ def _serialize_contact_counter(counter): @staticmethod def _deserialize_contact_counter(json_string): + """Contact counted from JSON string""" dct = json.loads(json_string) counter = collections.Counter({ frozenset(json.loads(key)): dct[key] for key in dct @@ -360,11 +374,28 @@ def _deserialize_contact_counter(json_string): return counter def to_json(self): + """JSON-serialized version of this object. + + See also + -------- + from_json + """ dct = self.to_dict() return json.dumps(dct) @classmethod def from_json(cls, json_string): + """Create object from JSON string + + Parameters + ---------- + json_string : str + JSON-serialized version of the object + + See also + -------- + to_json + """ dct = json.loads(json_string) return cls.from_dict(dct) From f2900c99d4cf7e54d5a3fd152f079b23b9cdf637 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Mon, 8 Jan 2018 14:35:37 +0100 Subject: [PATCH 15/32] Fixes for local docs building --- contact_map/contact_map.py | 24 ++++++++++++++++++++++++ docs/Makefile | 2 +- docs/api.rst | 4 ++-- docs/conf.py | 2 +- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 14782ce..b8a61fc 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -310,6 +310,11 @@ def to_dict(self): def from_dict(cls, dct): """Create object from dict. + Parameters + ---------- + dct : dict + dict-formatted serialization (see to_dict for details) + See also -------- to_dict @@ -826,6 +831,14 @@ def __init__(self, positive, negative): positive.n_neighbors_ignored) def to_dict(self): + """Convert object to a dict. + + Keys should be strings; values should be (JSON-) serializable. + + See also + -------- + from_dict + """ return { 'positive': self.positive.to_json(), 'negative': self.negative.to_json(), @@ -835,6 +848,17 @@ def to_dict(self): @classmethod def from_dict(cls, dct): + """Create object from dict. + + Parameters + ---------- + dct : dict + dict-formatted serialization (see to_dict for details) + + See also + -------- + to_dict + """ # TODO: add searching for subclasses (http://code.activestate.com/recipes/576949-find-all-subclasses-of-a-given-class/) supported_classes = [ContactMap, ContactFrequency] supported_classes_dict = {class_.__name__: class_ diff --git a/docs/Makefile b/docs/Makefile index cb44790..dfa817f 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -46,7 +46,7 @@ help: .PHONY: clean clean: - rm -rf $(BUILDDIR)/* + rm -rf $(BUILDDIR)/* api/ .PHONY: html html: diff --git a/docs/api.rst b/docs/api.rst index 4bcd5a0..7aaabf8 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -13,7 +13,7 @@ Contact maps .. autosummary:: :toctree: api/generated/ - contact_map.ContactCount + ContactCount ContactMap ContactFrequency ContactDifference @@ -21,7 +21,7 @@ Contact maps Minimum Distance (and related) ------------------------------ -.. currentmodule:: min_dist +.. .. currentmodule:: min_dist .. autosummary:: :toctree: api/generated/ diff --git a/docs/conf.py b/docs/conf.py index 26cc099..72bc1d2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -23,7 +23,7 @@ import pkg_resources import packaging.version # sys.path.insert(0, os.path.abspath('.')) -sys.path.insert(0, os.path.abspath('../contact_map/')) +#sys.path.insert(0, os.path.abspath('../contact_map/')) sys.path.append(os.path.abspath('_themes')) # -- General configuration ------------------------------------------------ From 63a8ee302104ff8fc369f90a69dfa0ae35ec4e2a Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Tue, 16 Jan 2018 13:15:18 +0100 Subject: [PATCH 16/32] Basic dask parallelization setup --- contact_map/dask_runner.py | 31 ++++ contact_map/frequency_task.py | 87 +++++++++++ examples/dask_contact_frequency.ipynb | 202 ++++++++++++++++++++++++++ 3 files changed, 320 insertions(+) create mode 100644 contact_map/dask_runner.py create mode 100644 contact_map/frequency_task.py create mode 100644 examples/dask_contact_frequency.ipynb diff --git a/contact_map/dask_runner.py b/contact_map/dask_runner.py new file mode 100644 index 0000000..215889c --- /dev/null +++ b/contact_map/dask_runner.py @@ -0,0 +1,31 @@ +from dask.distributed import Client + +from . import frequency_task + +""" +Implementation of ContactFrequency parallelization using dask.distributed +""" + +def dask_run(trajectory, client, run_info): + """ + Parameters + ---------- + trajectory : mdtraj.trajectory + scheduler_file : str + path to dask scheduler file + run_info : dict + keys are 'trajectory_file' (trajectory filename), 'load_kwargs' + (additional kwargs passed to md.load), and 'parameters' (dict of + kwargs for the ContactFrequency object) + """ + slices = frequency_task.default_slices(n_total=len(trajectory), + n_workers=len(client.ncores())) + + subtrajs = client.map(frequency_task.load_trajectory_task, slices, + file_name=run_info['trajectory_file'], + **run_info['load_kwargs']) + maps = client.map(frequency_task.map_task, subtrajs, + parameters=run_info['parameters']) + freq = client.submit(frequency_task.reduce_all_results, maps) + + return freq.result() diff --git a/contact_map/frequency_task.py b/contact_map/frequency_task.py new file mode 100644 index 0000000..ffd8ec5 --- /dev/null +++ b/contact_map/frequency_task.py @@ -0,0 +1,87 @@ +import mdtraj as md +from contact_map import ContactFrequency + +""" +Task-based implementation of :class:`.ContactFrequency`. + +The overall algorithm is: + +1. Identify how we're going to slice up the trajectory into task-based + chunks (:meth:`.block_slices`, :meth:`.default_slices`) +2. On each node: + a. Load the trajectory segment (:meth:`.load_trajectory_task`) + b. Run the analysis on the segment (:meth:`.map_task`) +3. Once all the results have been collected, combine them + (:meth:`.reduce_all_results`) + +Notes +----- +Includes versions where messages are Python objects and versions (labelled +with _json) where messages have been JSON-serialized. However, we don't yet +have a solution for JSON serialization of MDTraj objects, so if JSON +serialization is the communication method, the loading of the trajectory and +the calculation of the contacts must be combined into a single task. +""" + +def block_slices(n_total, n_per_block): + """Determine slices for splitting the input array. + + Parameters + ---------- + n_total : int + total length of array + n_per_block : int + maximum number of items per block + + Returns + ------- + list of slice + slices to be applied to the array + """ + n_full_blocks = n_total / n_per_block + slices = [slice(i*n_per_block, (i+1)*n_per_block) + for i in range(n_full_blocks)] + if n_total % n_per_block: + slices.append(slice(n_full_blocks*n_per_block, n_total)) + return slices + +def default_slices(n_total, n_workers): + """Calculate default slices from number of workers. + + Default behavior is (approximately) one task per worker. + + Parameters + ---------- + n_total : int + total number of items in array + n_workers : int + number of workers + + Returns + ------- + list of slice + slices to be applied to the array + """ + n_frames_per_task = n_total // n_workers + return block_slices(n_total, n_frames_per_task) + + +def load_trajectory_task(subslice, file_name, **kwargs): + return md.load(file_name, **kwargs)[subslice] + +def map_task(subtrajectory, parameters): + return ContactFrequency(subtrajectory, **parameters) + +def reduce_all_results(contacts): + accumulator = contacts[0] + for contact in contacts[1:]: + accumulator.add_contact_frequency(contact) + return accumulator + + +def map_task_json(subtrajectory, parameters): + return map_task(subtrajectory, parameters).to_json() + +def reduce_all_results_json(results_of_map): + contacts = [ContactFrequency.from_json(res) for res in results_of_map] + return reduce_all_results(contacts) diff --git a/examples/dask_contact_frequency.ipynb b/examples/dask_contact_frequency.ipynb new file mode 100644 index 0000000..325e8cc --- /dev/null +++ b/examples/dask_contact_frequency.ipynb @@ -0,0 +1,202 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Parallel `ContactFrequency` with Dask\n", + "\n", + "In principle, each frame that makes up a `ContactFrequency` can have its contact map calculated in parallel. This shows how to use [`dask.distributed`](https://distributed.readthedocs.io/) to do this.\n", + "\n", + "This will use the same example data as the main contact maps example (data from https://figshare.com/s/453b1b215cf2f9270769). See that example, `contact_map.ipynb`, for details." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import mdtraj as md\n", + "# dask and distributed are extra installs\n", + "from dask.distributed import Client, LocalCluster\n", + "from contact_map.dask_runner import dask_run" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "trajectory = md.load(\"5550217/kras.xtc\", top=\"5550217/kras.pdb\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: we need a more user-friendly approach for this than what we see here\n", + "run_info = {\n", + " 'trajectory_file': \"5550217/kras.xtc\",\n", + " 'load_kwargs': {'top': \"5550217/kras.pdb\"},\n", + " 'parameters': {}\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we need to connect a client to a dask network.\n", + "\n", + "Note that there are several ways to set up the dask computer network and then connect a client to it. See https://distributed.readthedocs.io/en/latest/setup.html. The approach used here creates a `LocalCluster`. Large scale simulations would need other approaches. Personally, I would usually recommend using `dask-mpi`. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "c = LocalCluster()\n", + "client = Client(c)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

Client

\n", + "\n", + "
\n", + "

Cluster

\n", + "
    \n", + "
  • Workers: 4
  • \n", + "
  • Cores: 4
  • \n", + "
  • Memory: 8.59 GB
  • \n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "client" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 175 ms, sys: 117 ms, total: 292 ms\n", + "Wall time: 2.65 s\n" + ] + } + ], + "source": [ + "%%time\n", + "freq = dask_run(trajectory=trajectory, client=client, run_info=run_info)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that on a single machine (shared memory) this may not improve performance. That is because the single-frame aspect of this calculation is already parallelized with OpenMP, and will therefore use all cores on the machine.\n", + "\n", + "Next we check that we're still getting the same results:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "101" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# did it add up to give us the right number of frames?\n", + "freq.n_frames" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnX+0HUWV77+buuONJkgiNyYZIMYfCChKAlHJCBIfMIIr\nGpxBMW/eDCAQ45vMQgVGMOZd72SyYARkMcM8GFB++JYDiI6AecKIPKNmPRATCQKTIEHjcCEJBPl1\noze8e6j3R1edU6dvV3d1n/5R3Wd/1jrr9KlTXV1dXb17965du0hKCYZhGKa57FN1BRiGYZhiYUHP\nMAzTcFjQMwzDNBwW9AzDMA2HBT3DMEzDYUHPMAzTcFjQMwzDNBwW9AzDMA2HBT3DMEzDGai6AgAw\nNDQk582dC+zTw3PHnOFL1HulykLXW8rezr/X4wP+t5uUyXXU5+P7ubjicj55n3MVbRh1zPCsff1f\nuB8kze7Peh5SdpeddH9W0G6bNm3aLaWcmZTPC0E/b948bHzggaqrUS0TE8CAw+WYmAi+XfLmhT5m\n+Li29F6PU+a5+XT8NIyPB99TplRbj7IYH++cq9nvzN9mW5jX0sxvy6uvue0+NI+vf4fLqQAS4rcu\n+WrQo/sEV+FShUC15ctbICbdbGmJOs+4susg4DVNE/C2a6UxBbZNMOv/x8eBadMmlzNlSnT5Zpqt\nD2Rt77z6co9UXwOmfDzoeLHkVb+ocqp4E3I9Zp3eKIpEa8tAtJYelQZ02i0slPXvsbHu/8IPCDMt\nCvNB4yr4PbmWftSin8nb/MH4Q9rr2fTrHzahRAlLmxZvy2P+1u33wgvA0NDk/cJCPurBappoxsft\n2n7NHsp+1dKT1xwA6S5kL/X25XyZelEnQeNiIokyr4TvK9s5h38PDQXaOxCYcJKUKfM4U6ZEvzmM\nj3eXUzPTmV+9xKdO6/vAqE9t1TR8UjjKpohzTxKuQPdAq04Pa9027T7qnjBt9GY9osqw1cssu2aC\nPUyf9uacsN0QRQrjfhVAZZJ3G5clPH0uN+k4pv07Kk/Y1BP3lmAT5nGeO1F1Sbq/4/J4Rj1qWTdq\ncvG9Jq3HjM/Usc5FE76WSUI6rN1nadM4byvTXVJvhx8unrhUZoF7IJOdst9c6iYw2cxmJ9wmSUI0\n7iEf3tc20Bo23USZjkytX9v59fHNt4Fw+S7eOhX2Az964Kuvdka4m3ZTeHCRY+mlfr6eky80qX3y\nfpsKC9yksk2tW/92KdvcJ1xelF++ORgb9sWPegOpyTX2o5b77FPL1yEnfO4ISQNTTH64PFB9VgrK\nGmNwmaVqPhii3DTDphjbgK4prHX+8ENn9+7gO8pd0wVPzI3V16CJRNn7fHyQedABU+HJTZOJsuvd\nS1vl9cBxHdQMC9eokAVp7eW2SVUus2vNbVPA84QppguzE0S5jTWFsjXQprVfmDzPr5ey8qqHza1S\n/xc3OBrOHxbycXUMe9dEzYZ1qastTw37Yf1qXFdq2DkSaeI5McWSpN2HBz1t3jhJ5p2ossN2+Sit\nfGysY5uP8/jKQ8kp0U2T79QiyUOLr6HPbi3hds6XrH3fxZ02yWPHFurANhnKNtHKFnMnD7K2T8b9\nEgOgE9FBRPQjItpCRI8S0bkq/Q1EdA8RPa6+Z6h0IqJ/JKJtRPRLIjoyda005sWoI0kDby7npl9x\nXbSWOrdV1bi2M+NGnOZuCt44U05YYOtPuJ9PmdIZdI26D5LKHhsLhLr+6DIGBjplm+n6vyrMYxn3\nc1npYgLAeVLKwwAcDeCviegdAC4EcK+U8mAA96rfAHAygIPVZzmAqzPVDPDjxkuaQZdVuOZ9bj60\nFcMkYQprs89qIav/i7uvwnnMfc3yww+U8P2h806b1hHoUS6UZt6o8mtAoqCXUu6QUv5Cbb8MYAuA\nAwAsBXCTynYTgFPU9lIA35AB9wOYTkRzcq95WcQJz7TCtWado+8o4/rYyu+3fhGlYZuukEC3Bh3W\nps084fvQNLmY/7v614fdN3UZ+oFi5quSFH0mVU2JaB6ABQB+BmCWlHIHEDwMiOiNKtsBAJ40dhtV\naTtCZS1HoPFj7ty5aarhD7YBGVt6Hvb6qjtXkymjbXvx+mgyUQOm4e0okjx0bMcJb9vKNt84fHOR\nTtFnnBcpJaJpAL4D4LNSypfiskakTVrUUUp5rZRyoZRy4cyZiUse+ontqZ7309726skUQ121617q\nXcTbTFyZcelR94/N7h51T4Tt6eY+Gm13j9LQo8ot0lxTQn9zkhxE9EcIhPw3pZT/ppJ3EdEcpc3P\nAfCMSh8FcJCx+4EAns6rwt5ie6Uz42JnJY0rmY20bx+2Mpr8sKmrgNdUMTiYtcyBAWD79mB72rTo\nmadp+1taP3dbKOO4sl2wuYVGvX1E5Y9z48zoCZRYeyIiAF8HsEVK+VXjrzsBnA7gEvV9h5G+kohu\nAfA+AC9qE0+jCF9A20y8pNCqaUjy4onLk0cHbqKQNx/QZU8A6xei2hjoCHdb2+dlEnWZpJUncX3J\nbAszfxTmxLAeZ9i7nPX7AfwlgIeJaLNK+yICAf8tIjoLwH8C+Lj67/sAPgxgG4DfAzgzU82yEn4i\nVhmCQA/g6O0ibfRZy16/PvhevDjb/nXHZdakj5T9UOrlbc62TusttwTbS5bYY8nkIaT1fuaasXm1\nm1k/F1lje+uw7ZtTPUnKSebz0lm4cKHc+MADQaONjnb+0Bc/jdmjCPNC1E0V1ujrqA0W0Vb6dXze\nvHzLzQuXc/Zp8lQd+5UNF5NG3TBdOKPCGIeDqpkkKYGmRm/xKqKpUzdJKRcmVdOvFh4Y6F1AlGVr\nNJ/gJjYbm9kRspK3YC6irYoU8C6eD1lNWOEyfBE+rrZbHwnX0VSIxsd7G7fyhahzc/HW2b3bPi4R\n9ZAwMWPnu1bTOafvVNHxXQR32gEil7Lyom5aVZr2zkLZttymE9bew14ved2zWcop4mFue+OPSjOF\n/NhYZ99wH487txT1b15vzusCJnUe23GKHCPIw+sG6H74RHkF2bRHc9+64nLdkqIjVkHaAUgfCN9D\nZj/Scd6BQOilPZ80D+Uo3/kiY9fYnDFsg8vTpnUvX2iW42Lvd8C/3mJewDSuiWU8nV2OEd7PJlSy\ndLi44yfFwLft6+JillZTSrtPmcSZdOruXumTyQmI70euwt02PpblPIt4U0uaJxCWY0nmHVM22AZ4\nM9xjHvUKTL6AvtjwbK9NWWbt6fQsHS6ug0fFwK8CnwRNWkxNqldvqSqErm9tH3d/uLZPjyaLTPmz\nlG1zzgCi5Zj51hi3QJH5ANBlZzgfv3qGTavyrQNr0tSrF5NLnnb+ovFdow+T1j0uTXlJeUyyvkGW\n5WWWpYy4/evSP5JI0uht26ZwHxiYLNA1toek7T8L/rV2nTqArcHzFHZ1ag+g2PpGjRX06o1i5ivq\neoVv9KgHd9YHumveNA+xstvBBd/MUhoXTTztG79J1DhH7TX6OmG+ermYZZo0oFkVLq/xebw5FenG\n6nLTF0EV5rwo98qsVHHPuPQDbZbR8XWA7nDH4fQoE4xNyPeiwISLyrQXE+8etllNID7wwM4EooWJ\ncxryx+xAWvMI2wv1BLUDDyynTr6St2ZfNHUwkSWZbq65Jtg+/HDgmGM6/2U9N3O/XtrHpqVHla+x\nKXg2X/g4E43N7JNUvxg87iUpqSLUga0TzZ/f2Z4+vZy6ROEysF1l/XwgSiBs3w7Mnt1J99EGHrVv\nXqF005okbelx9+Tu3R3h/ra3Za+rSV4Pa9u+prIU1Qa2B0FUvcIPI71tulTaFLW+Nt2U/Wpqm56s\n/9OYvrImvmhkvsXYLpuo9s9jdm+cqa6oa57XtUxrXnLxBAszNNRRMmztk8WOH1efNGVEoe/hqHrZ\nxlviHgC2QfmovmOaiPpa0JdNXCeO8nkNd46qBTzg7wCXjSIWf4jyujHJerwy29VXT7W4etlCAETl\ndaUs5web7TzqQWPT1sP7umKLkptUZfcjVIAvWm8UcULSvAA7dwbfs2d3v8rmfW5JE0tsk6g2bgy2\nqxhDSEsaoRt+KCS9Spt5xsfradLy7T6Jq8+0acC6dcH2woUdUxmQfG/0oqCUIVNclLqwM0dUnrGx\naJNrhol9nvUM+C3cXTHrbnbgrCFxXdokySPFpknkLeCL9MFOc4NnCfeqb6q8JuqV1Zd9v1dsmu6S\nJdH5k87HJ++dKI0+rMhFLRYSzhMlvKdN64SK0IqHGQyu1hp9ji5FhWLTnIHoKc/hPFlCH7i8RaR9\n9cx7ELvI1+e0D8detb60xwzjY7/1hfFx4IUXgm1TGXId6E1DXt44UZj3pu0esqUnvVkCk81bRS08\nQkTXA1gC4Bkp5eEq7VYAh6gs0wG8IKWcrxYP3wLgMfXf/VLKFZlqBvgxUOgiMML/mxphWStMZS3T\nhzZ2JY3wZgHtD1HtOW1aeTGsso6NuZpnw2mm0I8bV4rS9MODt1ErUkWlJeCS80YAVwH4hk6QUp6m\nt4nocgAvGvmfkFIa/oU1J08bej8IkCLdXItuP5/fIJtGHSYQplGsbN41trcIl5nQNg+dpP2iqpuU\nQUr5E6WpT0KtJ/sJAP/F+YhNIqu5pMkU+YbQLw/LrPjWPnH3R9p6lnluWR/4SW8O5sPANpHK3Deq\nvAwDsUDvNvpjAeySUj5upL2ZiB4E8BKAL0kpf9rjMfwly4Bq2v2KxDfBUDV1bwvf6h8WTnHjWq5l\nudLL7Nos7Rg+N9uC6DYTjVlOnDAP++i7Vs85ZzTLANxs/N4BYK6U8jkiOgrA7UT0TinlS+EdiWg5\ngOUAMHfu3B6rUQPyGkzKE98EQxJF1LfIgbq0x0/KV7frpclDo8/jmHntF+cVpsuIcqCwDbiG942z\n/5tlpyBzaxPRAIA/A3CUTpNS7gWwV21vIqInALwdwMbw/lLKawFcCwSLg2eth5cUObJf15u9SHpp\n76rbs1c327CGV/X5JGEOQGrvtOnTy9PY8yijF89A20IiNu+dcPnhtwXXKjvnnMwJALZKKUd1AhHN\nBPA7KWWLiN4C4GAAv+7hGOnJu7O7lhc1cJKXlpjhwjphMyf5KjBs9bJpV1lvYJdZm2Xj4nLq2zWM\nWiHONF1EhfJ1rXeSRu1C2n4TV36SvT2qbNtga9J52GLXx5DYIkR0M4DFAIaIaBTAsJTy6wA+iW6z\nDQB8AMDfEdEEgBaAFVLK3znXJg+qMm/YBk70djhGRZp6FjXA6SI80lKk+aNIm66JzX7qKzZbb97H\nSFtmnPukKejzqncWAe1aRvg/29tVmHBMLNu8mijM8npU9kjK6q0mCxculBsfeKDqahRPlgFZHzSz\nJhGnVVXRzlHCIa83FJ8Je6AUUT5Q3rUOX8e0Dx1b3cLxl0JtRUJsklImTm9vUM+pGBetoUgbcp00\n0CqJe4vJUxD0YoLImq9OD4O0JtFe7Ohxab2S5Dtv5jEXJIlTOMz6Rg3kZqAmvcJTbCPhUa9ZeXSy\nuJsjS/l1EgxFEL4ZzZuwV7IMLvZ6LepwLfW9ER50tNHrYHURRF2rsJnWZSlB04wTlT9uFbtwWgI1\n6Bk9ooICPTdrFvZvtfItO+oCjo11x/Aw40gXcbwY/iAEXht3znUQDEVSxBhFVvrlWqQ105hKU5o2\nMqPGmmXpaK3milZhbA8MHWBs2rTOPR41aO8SvNCmBJrbSW1VkteNN/xBCGgxOoDOSe1j5JkGYK8Q\nAIDBXgT+ChW6Ry+DBgBjY3huv/0AAPvfcUcnfckS4KSTsh+rR167YEFypqOPDr7vv7/YyjQZFVlw\nx8svY47qW78VAq+ovw/OW8HohfFx7Jg6tStpAsBBvtQxPBCut8fGooWqqQFr4X7ggR2BvmRJp4xt\n24BHHgm24wS9FuhDQ93asw6rfOqpHY8im3dWki0+L488R3gwlmFCrBMCB6jtUQAf8UUI1ox1SrHS\nrbc0rh214DQ1d5t/uc0dU5dhhhcwHxCm26ztgTIw0C3obX7vYRfHLK6tSfb9gYHE2FE8GMswGVmy\nZ0/7xlqQh8mtCkZHK13wfa0Q0BbkYZcHpRaMNrOHbaDc3DbdOaPKM7XvcBnmbzNflAto0qC9TVsP\nPwDSbvfAPslZSkQ/SQFcrLSBfuViIXCxEPiO0Q4jQgQ2x9mzcVWft0+hmMKhTmGcTSoS8iNCYEQI\nvIpAwDsJeSBoZ9flOdPQy8C6fgBk8ciKGlOocBzGL43eeJK+ArQb98rBQZzbZ6/PF0Wcr3nTrCyz\nMim4ST2AdgM4rwHXbI0QWN2A8yiDEUP5SGqzO4SIN+XEYTONZBHGcenmcbKYZnolx+P4JegNTKHW\nb0K+zpzehGtl3GBDAP5FCbBPqL9n+HqOGza0B4YvPeIIXFBSPU0Bn6TB67xHxeYyiAqjYDONJAnF\nOLdHF3u5ppfFhPKapZsSbwV93/PZzwIAbvunf8LHfRUsTcW4wT5Tp7Y3PEkKEfLnnx98X3ZZOymN\nkF8jRFvgLHGtny2MQpaJZnH2/6w28qT/48ouEW+9bq4TAufoznDMMYG20kdcqm4g2w37oBBYoP5b\nKwRW1UkgMbUnixbvkpdJh6vXjbeC3oTtpPXjUiHwe+N3XW/w64TAB9T2Leq7rueSF66CeyTkMNDv\n7VYEjXKvZCFfP8qyDxfNOcZ5vK5Gnk6XCtG+Bo8LkcukLS2490HyPemlFt/HIT/686xtXHIJcOGF\n5R5Tm6SOOQY4++xge9s2rPlpsALjJwAcsndvkG7rpOvWBTMAmUKp08PLrGseQn6to0eNlwJe06dC\nHqiJ6cbUTn6mOtL7euhEa4TA29X2aUY5FwsR6dZYCdu3B9/z5iXnPfVU4NvfBgBcJQRW+nIOCh5D\nqC8/Uvfb25AcJsFrId9QGmWjz53Fi4H168s7Xp9zhRD4XANu/GeVIJvZauEhtX1EDc6r60GbYsbs\n1cY4S9yciDWqLfQkKaY8XAV94sxYIrqeiJ4hokeMtC8T0VNEtFl9Pmz8dxERbSOix4joQ9lPoUBY\nyJdKE4Q8EAj4mepcjmi1aiHkAaDLqJdixuw4AgEfJ+T1LNhJQl67YvpEHuGna4pLCIQbAUSFYLxC\nSjlffb4PAET0DgRLDL5T7fM/icj/EayxseCjIzkyTINI9UA69dT2ZtwD+kkh8KTyi48MdWD42mcm\nb8Gcx2IyedYp7/JiSDxzKeVPiGieY3lLAdwipdwL4DdEtA3AewHcl7mGBRB217xJhRg+/aGHqqoS\nU2eiZm96yhVCQNW2ffOb41JrvvtdrE4o43IhcKTaLnTsxbfB07zrU+L59XKklUT0VwA2AjhPSvk8\ngAMAmIHNR1WaV4S9BhoxbZ+pDs8F/M1CYNnqQHy/hHg7epxHzRXKFv86AB/ke6ZWZBX0VwNYA0Cq\n78sBfAoAReSNHO0louUAlgPA3LlzM1aDYfziPiUMFz3xhJvHVAksa7W6tEftHTOc5LYbovZjLXHB\n0MrSrvNcbCSF2SdTmGIp5S4pZUtK+SqA6xCYZ4BAgz/IyHoggKctZVwrpVwopVw4c+bMLNXIjbVC\nBH7CZsOdcQZwxhm4WQg8rz4Mk8SiVguLWi1vhHwbZQ82tfmRwUGMDA7G7rZGiMCrxrDd1xYflo50\nWRLR1XZf9FKCRDRHSrlD/fwYAO2RcyeAfyWirwL4YwAHA/B+6ahVu3YFG2bD3XgjAGDZjTe2t7sw\nI+ExjKZGobVdXCF5VnoCRSwHWMCDJ7FEIroZwGIAQ0Q0CmAYwGIimo/ALLMdwKcBQEr5KBF9C8B/\nIFiK8q+llP73lEMPDb6NhU/aTEy0JyPhjDPwPcNneKl+9QUmLy3G9CfqJn1vQrYq8cXX/Ul1L3mz\nXm0WfBswttDsCVOhiVHaNvlGdIef1RM+rNqL8dS+V+U9vs6dk8kVvRqaN7Oqe2BEiC7bfZHntkOV\nPacB7VYVjQpqlpnQxCibJpP4emo8tVnAM2H0O9xVQuA5I90XzdkFM3yBttsPt1rg99Nm0GxBb8Nc\nDZ5hMqCDfJmCsK5CHuiurxb6I0Lg9VGZc1p4fM6ePT2XwbjRn4Kehbw31NXsoScKjQjRJSSvTPDO\n6sq/cSPwwx8G6atWefNwGCblJf2lLwFf/vLkDHktPF61M8P4uB/1KIFm2+gZJke0TfnaULovAjpv\nbhYi8MFX6EBu69A9I/ZxlZ5HOGQmHWyjZ7xFmz3qFrp4jnbDnTULwzNmAADWPP98LmVHhXK2hf0N\nv0UUxbLQMXTMnCNC+VjA+w9r9AyTgJ76/5KRVqUW/wch8NqUs1qLxLa+cWT66Gjw7Wr+KcJPvUpy\nPh/W6Jn+ZMWK4Puaa3IrUgv44WOPBQBcrlb/Kh0lJL4CYHjx4iBNr1BWIbaVty6IChKY1r6fR8RJ\nnx4SFdXFoxZgmBzIUcBrwtr7ebkfwREzXs19QUDY4arq4sILL6TfxzUeTRbN2GU2e9oHQ03eOPyu\nHcNYuEOZBZ4EupZObAfsytO0En5L2Lq1M5u6RGq3VN8xx6TfJyzM9e+wIHWJFxPGxbsmrcCuUsCn\nmIXPNnqmWdREw0pL7YR83hRpgvHNvJMCttEz/UlNb1gAwM6dwffs2e2kNAJ+RAgML1oU/Fi/vt5t\nESavc4lSBGxlmxrzwEB5SkT4uGEy+P83qCcwTDmsEwJLitCqDQEPuAv5rvAFynb/t4OD+IrDvn1H\nGiGd1lyUF0nHyTDBiwU94z2RQecOPxwAILdsAZUsyJbsu2+h5afV4rvyGlqn1wO1aamxecUHuOUY\n74kMOvdIsARC1JJmhZPFm8SBkVD4BFctvitfE4ShzURS9vhLkgmlRtS79gzTEHrS4hPy1c50EyVU\nqxC0Ng8gX0jhdeNZzZl+IK0A8i3w2R1CYGkedTnpJIzcc0/7Z14CnikA34Q8kO9SgkR0PYAlAJ6R\nUh6u0i4F8BEArwB4AsCZUsoXiGgegC0AHlO73y+lXJGm7kzzSSukirWIp6dXIb9XCexnjbQihDw/\nDBzxUVvPmUQ/eiL6AIAxAN8wBP2fAvg/UsoJIvoHAJBSfkEJ+nU6nyvsR88w0VgFfIQrZmNo6FwI\nANnt/pY2cfWj3ycpg5TyJwB+F0r7gZRS1/h+ADkFqGaYZhMecHXNO0k7nz07UcivFaIdKXREiFTH\nLp2JifLXW877mC7lDQx0PmnIso+5e+Y9O3wKwK3G7zcT0YMIYkF9SUpZUQQohvGPP3bIk5ct3gx7\nPLx2beZySsFFiOWt6ety8jLdePwG0lPNiGgVgtXUvqmSdgCYK6V8joiOAnA7Eb1TSvlSxL7LASwH\ngLlz5/ZSDaZmaEH2UQB3qrThPXvaGuo9L7+ME9Ms3l4jznE4h7PU94EnnpjfgU84Ib+yisYmMD0W\npL7jFOsmyvZORKcDWAHgeCnl7y37rQdwvpRyY1z5bKPvUyYm2gtRh+nngUQ9WDvYx21QCLYImEBt\nHyKFxrohopMAfAHAcaaQJ6KZAH4npWwR0VsAHAzg11mOwfQBxs11PoCpDRBserm9I1qt9qQuPYs3\niutU/qfRebgVIeBr61OfJ7YJWHmtGevxILKL183NABYDGAKwC0EI7IsADKKz8P39UsoVRPTnAP4O\ngTmnBWBYSvm9pEqwRt/HqIUz1hx3XCNMM0yNqFIw5zQu4KrRc5hiplrUzbZlcBCHsaBnysRHDTzl\nAyA390qGKZINg4PYMDiIb1ddkRxwcl/U5hwGjwuBx4tw+Qy7ONrcHnt0WcwNl7GCHl1BPThLpp85\nRmnxGdYi8g4n+3eMvb4swvb6+4SAfp8+t9UCtm8PfsybV2g9XhOVmIdJI8v+VWr3LsfssV4s6JlK\nqf0gocs6pAYPCREM1JbMlaqdo+JuLmq1sMjQFu9761vb6UXypqjyixC0LssO+qDZF0jjzs58ff4o\ngAV1FSB9wMXGtXpYCLyrjtcqRshHPcSqEPKA0tRVnfaPymAIuqIFvGaHap85VV/3hgt5oIGCfrjV\nat9gdwJYsHVr8Ie5mPPoKHAgR22ogouFwCsR6e/as6f0uhSNr28pz6tvp6igY2PB97RpuddjTsEL\nuDAdGifoAYcbjIV8ZVxkPIiHWy08qbX6vHyZqybDep5FoWcUvxpKT+XGWoCAb1PQAi7MZBop6JN4\nTAgc4qm21UTWCgGbv8BBTbsOHgh4zeoZMwAAI88/31Z+1ubg5VLVOAOTnb4U9Czky2XVnj0YmToV\nADC8axfWzJqVroAI80GT4t/YmLTAyfTpAIB1L7/cvTi5YZ68XLXLmKXMVTm0Fwv5+sETppjCiPIr\n99Vu3RgWLwYAjPz0pxjetQsAsGPWrFwHPJ8VAjON8i5V1/n36L6+z6v0GXzNC6PQWDcMk4bhvXtx\nsSV4WWZOOSX4vv32TtrYGNbutx+Abs31CiHwOT3Y65FpJTdWqEXcrrkGIz8NooK/HgCGhgDk79Uy\nM1TeBer3Y6EH+7fU96dzPTqTBdbomVxhLb5/uU6IrjDMV6u+sFv9Xt1qtQervzd1Kj5Sdr+I85f3\nMRyCA6zRM5Uw/OKLwcbAAC5XdvlS2a3EitJmgWAA8o1quyse/NBQO/9dQuBkfiD1RDjW/mei2lO9\nUTn5vaWdyGQKa709MdF5i8si6BsQyhhgQc/kjTFgel4VglNP3zcE/apWC/dGeZvohwLAQr4IooSn\n0uifArAgKq+Zf/fuzrZxPZ3Qrpume+jOnZ2wDjahr91jdT2izsEWNycvCni7YEHPNAsdSyZ0I/9f\n9X08T5YrjyhBpbTrJeEHq7msn8ZcEzf8IIh6MJjHixqLMWP3uGj9ZrqJmSfqARBOy7I+bBwZHgQc\nvZJpFlOmBJ/QTfCq+nQN3sZwlxC4y+fFtJuGjs6oBXBYaw4vqp20yPa0acHHNviujzUw0J3HPH7c\nkoZRxy4rGmaG47CgZ7IzNtbxca8Jl557rlO+k1stNudUQVwo3iyhes38Nnu77aGSpY5hPLHrOwl6\nIrqeiJ4hokeMtDcQ0T1E9Lj6nqHSiYj+kYi2EdEviejIoirPVEdLCKzZbz+s2W8/YPNmPCZE4F53\n4YXBBwgt2H/bAAAe/0lEQVRcILUbZBXs3Ans3IlnDc38AlfhPTSU3i7M9E6cpp5FYzbz57XoeA1d\ndF0XB/8Agsl239ALhBPRVxCsD3sJEV0IYIaU8gtE9GEAfwPgwwDeB+BKKeX74spn90q/0SFuzzWE\n5IgQbS3BOju14rgvepboGQD2Z+2caSC5uldKKX9CRPNCyUsRrCULADcBWI9gwfClCB4IEsD9RDSd\niOZIKXe4VZ3xjXP37p2U5uQbX5aAP/vs4PtrX2snmQ+iOCGvZ3VecOWVnbcPHqytljy8TnopI69B\n1SLIWI9eaj5LC28p5Q4i0q7KBwB40sg3qtJY0NcVHzp4HIaAv0IJ7n2QHAfHnNw1cu652EfZ7/8E\nwK9V+jnGJJ86vrLXkqr7m81s5AMZ61FE7SkibZJ9iIiWA1gOAHPnzk19EI5AWS23CYGPOwrS4VYL\nOEYtFrhhQ2F1MgV33BvHcyrff8fk6fya+42yrlATvz7H/a0++CKYPaGX1tilTTJENAfAMyp9FMBB\nRr4DATwd3llKeS2Aa4HARp/24CzkqyVJyAMhYZu3gFda9qVTp+L3UccLYcZmt+YzXtnNWDks4Csk\njQnGzMtvYV30IujvBHA6gEvU9x1G+koiugXBYOyLbJ9nMDoafOdk/9Zhj1+H5PGCESGCIF9IENpa\nUGze3JlcMzTUjuGeR4jf3JmYwIgKGDfcanUFOGsEaTTzpAlTYVweIj7HwEnh5unqdXMzgoHXIQC7\nAAwDuB1BgLq5AP4TwMellL8jIgJwFYCTEEQuPVNKuTGu/CxeN/8iBHYav4f1gKGPF8QHlEY9ctxx\neI1Kuuicc5IFgm3w55prOkLFBe2quHVrOrfF0PHDQdPihLyrKSeRApfTY5hecPW64eiVfYgesKyd\nSWLhQow8+CAANy1e05X37LO7Bm+ZmuCL14tncPRKxkrtBLxaTGPNgw8mCnjtLvk6WCZH1VjIS3Vu\nFDqvq1T6yrpd1zQUIeR9NsvkTH3PsCHhQ/uFW5UwehrAH6u00xwEUxrzS1devdBIHoQWOVkjRCVL\nGNJhh0WmHxSZyiTSR3KjGaabcDQ7Jh619ujzL7/s7TJvWmgPIHkQNDdbPNNfNECj7y/TDQv5dKhY\n3TMqroYNU3AnCfk1QmB4gYpsvjF2zJ+pI0nx4KNixpv2/PHx3lws83bTTFrgJMtCKw40Q9AztaJr\nIlVEetR/1jKOPRZYvz7fCiYxNpaLB47NBKRt7i8DuMj4X88FqMJsVBkus1TjfscJaBehmrcffl6B\n1VLu0whBf7EQXTfExeqGuKifboiasMEMOyBEpECPE/JrQ+6VXUK+LM+MnNwsbQLbNqjaVwKeyZVm\n2Ohz0rD6hm9/O/g+++zOkms1gG3xTGPJOF7QXzZ6FvLpOPXU7u+q2Lmze7k4C00T8Pp8/gTAiQ04\nH++oo8+9a30znltzVpjavbuz2PP4ePciv4yXjBxwQHKehgl5kxP33bfqKjSTugn5NNiWWkzaraDq\nlI85rZ4DGdUCF8FdC+GulIqHp07FuyIGT08FoIxl+Ly5304ziAfDOFJyPHqG6XueFALXG7//zfAo\n+qBKO2zvXqy+/34AQawhzcjUqaU9yNhBob9pnqAfH29HNqyFNsi0abtMPvVU23Zv88zxhYNaLUDV\n+zXoFqTHmPVW8fiHW632a/eDKupkGbCA72+aJ+jZbFNbbAI9yu9eh1RwCaOQN2uEwKsR6c7CVL16\n3wlgQUy2Xh9yXodXZkqldoJev4K+YqQtAXBUVGfeuRP3qQG/Rcb/VwnR7ABQDeJ4hDRjxaSVbIBg\nMD5NCOSMrN61CyOzZgEIHj4Xh337HUkS4r2+ybCAZzS1E/RaaxoRohO4KqTFmzfIoojOzkK+PkQJ\neaATGK2LQw8NFg0Buhc4OeaYnla4ilIuTNgswvhOPQS9YXfvIqOZ5goh6heql+ki0mSj3WvD9LiM\n4UVqUZv2Sk579mBtVH/sE64Qor18o/nW4Pt4Sj+TWdAT0SEAbjWS3gLgfwCYDuAcAM+q9C9KKb+f\nuYZAlzuR7kijGV+XgRrGY/eJv/97AMCa4eGuKfk+L2YySQDpORaf/GQ79HCYy9X5jEX9OWVKX5tF\nfLzGTDy5hEAgIgHgKQRrxJ4JYExKeZnr/rYQCOFl4wD2pGFKQj0MynSBrDuXChG52It+aJ7H7Zg7\nriEQ8poZezyAJ6SUv+21oCeFwJNC4HuhRSSGWy2+4Zh8ufBC+38ZZh/2O5EreiFYaDrTELlL+0fN\ngE973cz8tn23b09XpmfkpdFfD+AXUsqriOjLAM4A8BKAjQDOk1I+H7HPcgDLAWDu3LlH/fY3v5lU\nrulW1xfLpeVFUQsqTExgjbJTLwRwcsK18NmcAwCPCYFDPK0bw7hQ2uLgRPQaBN5u75RS7iKiWQB2\nA5AA1gCYI6X8VFwZNtONXv/zglYr/wUAmozWPubNy7XYxsWd2bwZmD+/6lowTDoMRa7M6JUnI9Dm\ndwGA/gYAIroOwLqsBXe9CrKAd6dXAR+KkNc0Ab/GOJ/VL74YbHAEVKZobJEnS4i2mYeNfhmAm/UP\nIppj/PcxAI/kcAzg8MODj+KqHrxu+omHhMBDQqSzOYeE/D4IOkqckL9LCNwVuiZrhOgSqoVzzTVd\nP68UAlcKgdtCdXhVfb4IBAKehTxTBnmtLjUwkHqfnh4jRPQ6ACcC+LSR/BUimo/AdLM99F86DBPE\n2i1bAACr1F+1sdWbJqcx5axXhGAxXufaYxuPPtp5krt0DO2HPjTUpcUnrWykHwZA8HrX3m9kJPmY\nebJiRdfPcy31bsJbCcOkwe8VphqwSnstueUWjPzFXwCIF4pdJh01qYivFVN7XOROlbKpIht9cbDQ\nKI/x8c4b1GWXJWq9a+pgt9eToU45pZM2MYErleeQTeNnmERqJpvqVVsmNfcqgfwLI22u+j6t1Wp7\nNr0egF4Gw1mL901Qhge1tm2bnGdggAU8E4/vQjxD/fw23TDZGB0NvnNedctrIc8wfUgzTDdMNszI\njXmwMOhHw9/8ZhAfRsNjKEzRVNHHGtivm3MmvlJ1p9F295Urg+/bb09VlxEhMPzoo8GPQw/t8sxp\n0o3AeEoVfayB/bp5Z+QbVXcaPXlKLWWXltlmGUApC3swDONAipg+zRH0ejLV5s3VC1efUJ3hO6uC\nGQj/sWpVol+8yUsAz0pmiuHoo4NvtXB6JGneiM05Kxs3BtsLF3bKGB8HXngh2I4zb+r5LlOmdB93\n/frge/Hi3t/UTSFdgryq92CsbqzDD+9cwJ077fmZ+jB9evCtr6vieTUgPCPqYbVixaTZsUxNsAnO\nqPQ0IQN6CS9g7pt3mIKcyuuPwVjdUBs38jT2grhViEoW4MbXvhaZPGPffSel6SiZ4wAuMgX9SScF\n33ffnXftmLxJEx4gSUCaQrQXYWrum7fWncfDJ83hsh3ND7S732IAb1dpc0JC6T6VJ2rtWKYz8Wm1\nntkKdHWk/yy7QppTT41OD2n4QCcM8qSFaljA9ye9CuWqHSjiyFgnD8/Eke3bofQ1vC9GiL+xnNrY\n8bnTAHiH3rjsss7aquscAo6WEHEvLcM//nHVVWB8wRbWPK94U57f12HqUUtMXsPz9QA+4LDfv6rv\n1QXUqQn8uRmjxlxFR90oR4byP6yuw6sAjvDtLSmjZxHTQGwOBC6OBS7CuyYCXlOb2p4Xej1Pu2rR\nGiG6vE3KMulcp+KqvA3AB/fsCRJfeAGYPbvQ4zpjdtiIOPbHh9rnXaZPPcP0gpqI94cHH8Rr874P\na6ZxF43frfDDHwIARj70ocxF2FwJF515ZuYy03COPv6GDbhu6tTuNJ/RE6NCbmgj73wngFAIhO3b\nO/n4xmJcUS6Qry2i7Kyx38fHG+lO7PddecIJ7c22YMlJk1xzww0AgNWGd8flQuC8r389+HHGGbkc\np820adCesyNCYHjt2uCHnoB09tn5Hq9XLH7GkTFucl6ykPGfxq7h3EAhD+SzZux2AC8DaAGYkFIu\nJKI3ALgVwDwEi498ImqBcI3pR79FdaBvhfI0IoiW8vEfOeCAdlLtzotfiZki6dXvHQj2z9pPXTR6\nlzqWdJ+4+tHnsZQgAHxQSjnfOOCFAO6VUh4M4F7124nD9u7FYWqAcLjVwnCrhdfnVMkk9hS97N3s\n2cDs2e0wwUCg3Y8IAYyP41Ih2mGDsX59ZyaeT2RYxoxpIKeeGnxCHlprhcDaXu6jXv3eTf/5LGXl\nOVjr0X2Sl0a/UEq520h7DMBiKeUOtYbseinlIbYyDiKSn4eabm9QO203BWEvotcAuIhXaWIYJgVl\navQSwA+IaBMRLVdps6SUOwBAfce6s+8DQD9Hy9biq+K8VgvntVqYi2AhkFcAjAwOYmRwEBgfx61C\n4FZeAJ2pGQ8KgQct/fYq7s+VkYfq+H4p5dNE9EYA9xDRVped1ENhOQDMQDB9/b8Z/6d1n6wrZ6rz\nvFkI/EqljUyd2lmDlWFqxIKY+3blzJkl1qTGJNn3M9j/e9bopZRPq+9nAHwXwHsB7FImG6jvZyL2\nu1ZKuVBKufAt7343PvfUU3ir9ngBOjPY+oRlrRamAdDz9draPcM0hJFnn7X/OTERHXZXp7uE5HXN\nl7Rv2m39Oy+S7PsZ7P892eiJaCqAfaSUL6vtewD8HYDjATwnpbyEiC4E8AYp5d/ayuGlBLu5XIj2\nBDGG8ZqiQ2GYoQxcNdkyw3O4aN8F1qUsG/0sABuI6CEADwD431LKuwFcAuBEInocwInqN+MIC3mm\nLjxmeeu8LcIe/x1XG72pLU+Z0vGEcdVk0wrWXrRxz7xrbPRUQynlrwEcEZH+HAKtnsmRESHatvtb\nBwc74YPXrw8WQ2CYslBxkb6F7jhS2j34gr/5m0m7/GpSioWyBWeRx/PkIVDvhUf6hLArJgAM79nT\n2Fl8TI1YvNjP+R59QtkTpprBI49UXYNItCumGVh1ZOrU9ivupey2xlTF295WdQ0YB7zQ6N9KJC8B\n8HG2TSdysxLqv0IwyQoALmLtnmGaiW0pRfVNU6fWR6OfcdRRXgj5q4TADerjK8taLSxTE61eUZ8R\nFRUTgHUJPoYpBL1YDVMeegA4hf3fj5ECAz0b9LRWK1j1CADOP7+UY69stTrrjHrOma1Wl+1ex+lv\nR8VkmDLwdbGXrAHO8gpTnFdQsyR/eke8MN2UMhi7c2fXYh96OvZedLsztgXmpk1Bwvz5yWWbvrJm\nR9mwoR2x0roGag7cIETX2q7tGEGhc2aYWmC6O6YRlLblA9Me2xNPGRdcB2P7R9A3HfVAufqAA9qv\naecUYbvPa81NhrGRJOjDwticrQoEfT5J6NvKcBHytodBBSG8XQV9fR5deaNWt8H8+flemKo0AqW5\nf2bTprYw/tHUqfhg3mMfLOCZojHfjtPMgtXC3Uzr9X6MemBkXb2qwreFvhH0dwmBk02hp9arxNhY\nvsLL5WJ++9vFmXIMU9M2AB8Mz/qLq5uLRpLH6zHDAMAppwTfd9/deVM0+54t7IHLtjaZzp7dKXvK\nFGDz5mB7YUgJNh8M5puBWabu+wMDne00ssPcL01IhxzoG0F/8m9/G/3H6GjvyxOatnAXAViS3Tz1\n2rQuHY4FPJMXt98efNtCEKTVgM2+qe+x8GIkLste2rR3nT4x4S7gw+fg8mZQAH0j6G1roOayBq1+\nSrviq6cCw5SJXp1q/vzO2slhDd3UopMEo8v40eho8D00lPy2ECYuJo7toRROSzt2kBP9I+g3b+40\n4OGHt5O3CIHDHDXfu4TA0Wp7hrlPnJYQ1VEbutI8w2Ri+nT7/WBq40mYAt6mRZtedC7x3s3tuMFb\nV+GcdN8XpOX3j6C3uEm6CnkA2BfAL9X2cbNnd+yAcURdWBbyjE+YAq1Enlu6FACwv3kPljVgGXec\nNJ4+NXHFrEcti2TDhmhTijmYo7afAnDasccG6XGBnFRkP0yZEm2Pr5mvLtNw0poec2L/F1+cnBi+\nL9LcJ0UK33CZZShrOcoJljY2e7kW0OvX477jg4jLU9TvRJIGfFjIM0y3qSWtkE5jX48yxdjSw2XY\n3nSi8uXl0lnAA4slDhAfOGjx4ra55tNxZh79YHAx5zCMR9wxOIile/YEP6oyK6YVaq6DpjY7e3ic\nzBTSZprpaeNanyLDHmQtMuuORHQQgG8AmA3gVQDXSimvJKIvAzgHgF4g8otSyu/3WtE8+J4Kb/AR\nQ2DfJgReVdunhW2FADAwEC/gAWDxYvxYrYf5biG6B2oZxlPuVffDPkA1An7FiuD7mmvyLdfFzJI0\n+OuaXhN6qf0EgPOklL8gon0BbCKie9R/V0gpL+u9evnyEYsAPu097+n8UAL+BhUR8swYoX2HulHG\nARyg0u4HcHKvFWWYEji+aoUkbwHPWMks6KWUOwDsUNsvE9EWdORdbfj43r24V617eTzQfnLHCXgA\n+Bch8G61veippzh4GFM/9FvrKae0Z2o/f9ZZ/f1GGhfHpsZafS41J6J5ABYA+BmA9wNYSUR/BWAj\nAq3/+TyOUwgDA3hDht0+3Wp1BmZZyDN1RAuu229vb9991llYVmGVJuEyMJnn4GUephsPHwo9LzxC\nRNMAfAfAZ6WULwG4GsBbAcxHoPFfbtlvORFtJKKNzz77bFSWUhgRAusArHPIe4MQwSDO+HhwMRcv\nDj5pB2B1vA2G8QFDKC37y7+ssCIRuMyITbkIRyJmvJss5FWXHOc29BSmmIj+CIGM/Hcp5Vcj/p8H\nYJ2U8vDwfyZVhCleq+zrEzDityeR05N6RAgMn3giAOCGe4JhjSRTkTM33giccUY+ZTEM4zWFLw5O\nRATg6wC2mEKeiOYY2T4GwLsVt282lgp0FvJAbk/q4VYriNh3993YA2CP/uORRzItUL7HOJ/Lzzor\nlzoyfUpYi9R98uiju5IvFgIXCwFcckmJlWOyklmjJ6JjAPwUwMNA20PxiwCWITDbSADbAXxaDdxa\nKUujHzHcyVYnCPg1Ku8SAL9Tace/5z249ec/BwCctnevd3Y4hkmD7uOrZ8wAtm4FAKydNQurjHvj\nJpXn9Bdf5LUIPKTwhUeklBsAUMRfXvjMhxkxtN44IT8SWhh8QavV1nJuGxzsvAKZQt4Io9AVJG3r\n1k7UTCO29eVCdC1fyDBVEHUfrAqlnc79tBHUTiXVtvVwh7QxksJMs1aIdoN0la8E9Mdt+xthFLqC\npJkhkDdubC92MJhc7cysEQKrzzwTAHDfDTdgEd+oTAHcqu6r07h/1YLaCfqTUuQdEaKtgcdp8foV\n9m0AlhXVcY0VbVYWeHOY57noa18r7DhpuEIIfE7V6yohCj3/snhM9ZlDWq1OjHPbmgc+sXt3O/b7\n1eocPuNwb3TdP4sX41fF1ZApgNoJ+qNSCokkW7yp8bsI+agwCl088khXvHsGbSEPFPuQK5NDzPOo\ng4DX6AU+ADzjkD3y/lm/HqtzqMpedS8NNqRP+EztBH0a4kw1aUw6JlYBrzG9FkZHcdeb3gQA3evV\nmksPFsgaIRIfdEz/ksrjrECeE6I7Jj2TO7UT9FpAfwDAT4z0t6vvZeeckxhDY01W90oXzAVODjyw\nW8BrSpxJq8/1v6rfzwCV2u3vE6J54wbKYyWXZSn7kP137aq6Cm4kLQPoMT1NmMqLst0rAX+0mb6j\npLeZMtH96qNQXlp1YfHi4NtljYUCYNNN7xTuXukDm1RHWQc3wc3CvXpGDuiOe9d1TSI0pouFwEU1\nuW53Igj4VBsqEvCaV5OzMDlRa0GvB2aPistUVMzrplDy2peRgl0T8UpcByGvzyk8B4OJxymSSxVr\ns8YtRFR2XeJIEQun8aYbHe6gMLfJmrFDCMzRbTF7dscLI0PohdzZvTv4NjxDUuFh1EDGzvPq3iwt\nLHJ4VSkbPgr1KCYmQIODxca68ZkRIdra1a/Uhwn4FQCMjQWf6dMzx9fJyqY4rXdoqCPkVR0vDueP\niVQ4MljkVDQmb6aoT3kHdDya7mM+C3kgVf08P5NsLKm6Ah6hBavWUdYDOE7HLClTi1dmmnVIMLVp\nVB0nmW60tlXFKz2TK6/lt+zSaORdYk6q+kCF9fAB7YL6uSeeAAC8b968zp89CEmXGa6j6iHz9cxH\nScckXx71MHhscLB7ghPD9BmNFPQmWtB90EjbJATuVtuuMXNqw6GHYuTxxyenmwI+B1xmuB6o8wjR\nHrCcZIrJSsRDatIi7ioPC/n8+Zm6ju/jtq0FjRf0US6VR7VabuaDOrJ1K6BuwuFWC5fn7AnSDip3\n2GEd08/4OK5Si6mvTPBAqYMXDZMMC/h60XhB3w9cIQResvyXdzjkyDegKVM6Gr7hMjm8d2+wkeOS\naIwfXKoe5BcY/WGNEFi9aFHwY8OGdvqVKu+5/HCoDBb0VXHZZcH3+ef3XNTnWq22Bj3cagE//GHP\nZUYyMdGJ1GiYgi4VAr+Pyq/NKzxg2jguiBDatrhK5+oHftFoJcPsby59z3TLHRuLXmDFlh5Xpuvx\nS6CwWhDRSQCuBCAAfE1KyWuOmWQR8EZni9PiccIJmasVy8BApK3fvOkTo3syjeY6df3PMa6/dnt9\nDQo23eURg8YmzHfvTifoPRHwmkJqQ0QCwD8DOBHAKICfE9GdUsr/KOJ4dSTTwg1GR+vS4vfuxRZP\nfMjnJ2dhGsw5Ef259NAjvUyca+iku6ImTL0XwDYp5a+llK8AuAXA0oKOVUtOa7XSr85z4414Qgg8\nYUwIAwAMDOCwVqt7dauKOKjVwkEe1IPxED3zuWjSCuqBgUDAxwn5ItYc0MeM+z8nihL0BwB40vg9\nqtIYC7e5eMecdBLuRBA8640AXq8+DFMLsoa2KIOkmbBFaPlJgj7pmOFYUTEU9Y4StWh4V1AdIloO\nYLn6uZeE8CDYSiRDAMpRRdK5Qrbr9Xm/gmmV117p4Hqlx9e6cb06vMklU1GCfhTAQcbvAwE8bWaQ\nUl4L4FoAIKKNLoF5qsDXunG90sH1So+vdeN6paco083PARxMRG8motcA+CQCiwPDMAxTMoVo9FLK\nCSJaCeDfEbhXXi+lfLSIYzEMwzDxFOZHJKX8PoDvO2a/tqh65ICvdeN6pYPrlR5f68b1SokXC48w\nDMMwxdHIhUcYhmGYDpULeiI6iYgeI6JtRHRhhfU4iIh+RERbiOhRIjpXpX+ZiJ4ios3q8+EK6rad\niB5Wx9+o0t5ARPcQ0ePqe0bJdTrEaJPNRPQSEX22qvYiouuJ6BkiesRIi2wjCvhH1ed+SURHllyv\nS4loqzr2d4loukqfR0R/MNqusIWOLfWyXjsiuki112NE9KGS63WrUaftRLRZpZfZXjb5UHkfc0JK\nWdkHwUDtEwDegiAUxkMA3lFRXeYAOFJt74tg1b13APgygPMrbqftAIZCaV8BcKHavhDAP1R8HXci\n8OmtpL0QrDFzJIBHktoIwIcB3IVgvsfRAH5Wcr3+FMCA2v4Ho17zzHwVtFfktVP3wUMABgG8Wd2z\noqx6hf6/HMD/qKC9bPKh8j7m8qlao/cmVIKUcoeU8hdq+2UAW+D3bN6lAG5S2zcBOKXCuhwP4Akp\n5W+rqoCU8icAfhdKtrXRUgDfkAH3A5hORHPKqpeU8gdSSj0l8n4E80xKxdJeNpYCuEVKuVdK+RsA\n2xDcu6XWi4gIwCcA3FzEseOIkQ+V9zEXqhb0XoZKIKJ5ABYA+JlKWqlev64v20SikAB+QESbKJhR\nDACzpJQ7gKATIoiKUBWfRPfNV3V7aWxt5FO/+xQCzU/zZiJ6kIh+TETHVlCfqGvnS3sdC2CXlNJc\nQq309grJhzr0scoFfWKohLIhomkAvgPgs1LKlwBcDeCtCAIz7kDw6lg275dSHgngZAB/TUTeLIVL\nwYS4jwK4TSX50F5JeNHviGgVgnXbv6mSdgCYK6VcAODzAP6ViMoMZ2S7dl60F4Bl6FYoSm+vCPlg\nzRqRVplsq1rQJ4ZKKBMi+iMEF/GbUsp/AwAp5S4pZUtK+SqA61DQK2scUsqn1fczAL6r6rBLvwqq\n72fKrpfiZAC/kFLuUnWsvL0MbG1Ueb8jotMBLAHwF1IZdZVp5Dm1vQmBLfztZdUp5tr50F4DAP4M\nwK06rez2ipIP8LiPmVQt6L0JlaDsf18HsEVK+VUj3bSrfQxAqcHXiGgqEe2rtxEM5D2CoJ1OV9lO\nB3BHmfUy6NKyqm6vELY2uhPAXynPiKMBvKhfv8uAgkV5vgDgo1LK3xvpMylYywFE9BYABwP4dYn1\nsl27OwF8kogGiejNql4PlFUvxQkAtkopR3VCme1lkw/wtI9NosqRYNkZnf4VgqfxqgrrcQyCV6tf\nAtisPh8G8L8APKzS7wQwp+R6vQWBx8NDAB7VbQRgfwD3Anhcfb+hgjZ7HYDnAOxnpFXSXggeNjsA\n/D8E2tRZtjZC8Fr9z6rPPQxgYcn12obAfqv72TUq75+ra/wQgF8A+EjJ9bJeOwCrVHs9BuDkMuul\n0m8EsCKUt8z2ssmHyvuYy4dnxjIMwzScqk03DMMwTMGwoGcYhmk4LOgZhmEaDgt6hmGYhsOCnmEY\npuGwoGcYhmk4LOgZhmEaDgt6hmGYhvP/AXqsjClbQPFoAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# do we get a familiar-looking residue map?\n", + "fig, ax = freq.residue_contacts.plot()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 0243b89dd55fca4304dd1aab4b701e425329558e Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Tue, 16 Jan 2018 14:23:10 +0100 Subject: [PATCH 17/32] Update docs for dask/task-based --- contact_map/dask_runner.py | 17 +++++++--- contact_map/frequency_task.py | 61 ++++++++++++++++++++++++++++++----- docs/api.rst | 9 ++++++ 3 files changed, 74 insertions(+), 13 deletions(-) diff --git a/contact_map/dask_runner.py b/contact_map/dask_runner.py index 215889c..993cf5f 100644 --- a/contact_map/dask_runner.py +++ b/contact_map/dask_runner.py @@ -1,22 +1,29 @@ -from dask.distributed import Client - -from . import frequency_task - """ Implementation of ContactFrequency parallelization using dask.distributed """ +from . import frequency_task + + def dask_run(trajectory, client, run_info): """ + Runs dask version of ContactFrequency. Note that this API on this will + definitely change before the release. + Parameters ---------- trajectory : mdtraj.trajectory - scheduler_file : str + client : dask.distributed.Client path to dask scheduler file run_info : dict keys are 'trajectory_file' (trajectory filename), 'load_kwargs' (additional kwargs passed to md.load), and 'parameters' (dict of kwargs for the ContactFrequency object) + + Returns + ------- + :class:`.ContactFrequency` : + total contact frequency for the trajectory """ slices = frequency_task.default_slices(n_total=len(trajectory), n_workers=len(client.ncores())) diff --git a/contact_map/frequency_task.py b/contact_map/frequency_task.py index ffd8ec5..8bdf589 100644 --- a/contact_map/frequency_task.py +++ b/contact_map/frequency_task.py @@ -1,18 +1,15 @@ -import mdtraj as md -from contact_map import ContactFrequency - """ Task-based implementation of :class:`.ContactFrequency`. The overall algorithm is: 1. Identify how we're going to slice up the trajectory into task-based - chunks (:meth:`.block_slices`, :meth:`.default_slices`) -2. On each node: - a. Load the trajectory segment (:meth:`.load_trajectory_task`) - b. Run the analysis on the segment (:meth:`.map_task`) + chunks (:meth:`block_slices`, :meth:`default_slices`) +2. On each node + a. Load the trajectory segment (:meth:`load_trajectory_task`) + b. Run the analysis on the segment (:meth:`map_task`) 3. Once all the results have been collected, combine them - (:meth:`.reduce_all_results`) + (:meth:`reduce_all_results`) Notes ----- @@ -23,6 +20,9 @@ the calculation of the contacts must be combined into a single task. """ +import mdtraj as md +from contact_map import ContactFrequency + def block_slices(n_total, n_per_block): """Determine slices for splitting the input array. @@ -67,12 +67,55 @@ def default_slices(n_total, n_workers): def load_trajectory_task(subslice, file_name, **kwargs): + """ + Task for loading file. Reordered for to take per-task variable first. + + Parameters + ---------- + subslice : slice + the slice of the trajectory to use + file_name : str + trajectory file name + kwargs : + other parameters to mdtraj.load + + Returns + ------- + md.Trajectory : + subtrajectory for this slice + """ return md.load(file_name, **kwargs)[subslice] def map_task(subtrajectory, parameters): + """Task to be mapped to all subtrajectories. Run ContactFrequency + + Parameters + ---------- + subtrajectory : mdtraj.Trajectory + single trajectory segment to calculate ContactFrequency for + parameters : dict + kwargs-style dict for the :class:`.ContactFrequency` object + + Returns + ------- + :class:`.ContactFrequency` : + contact frequency for the subtrajectory + """ return ContactFrequency(subtrajectory, **parameters) def reduce_all_results(contacts): + """Combine multiple :class:`.ContactFrequency` objects into one + + Parameters + ---------- + contacts : iterable of :class:`.ContactFrequency` + the individual (partial) contact frequencies + + Returns + ------- + :class:`.ContactFrequency` : + total of all input contact frequencies (summing them) + """ accumulator = contacts[0] for contact in contacts[1:]: accumulator.add_contact_frequency(contact) @@ -80,8 +123,10 @@ def reduce_all_results(contacts): def map_task_json(subtrajectory, parameters): + """JSON-serialized version of :meth:`map_task`""" return map_task(subtrajectory, parameters).to_json() def reduce_all_results_json(results_of_map): + """JSON-serialized version of :meth:`reduce_all_results`""" contacts = [ContactFrequency.from_json(res) for res in results_of_map] return reduce_all_results(contacts) diff --git a/docs/api.rst b/docs/api.rst index 7aaabf8..aa3634d 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -28,3 +28,12 @@ Minimum Distance (and related) MinimumDistanceCounter NearestAtoms + +Parallelization of ``ContactFrequency`` +--------------------------------------- + +.. autosummary:: + :toctree: api/generated/ + + frequency_task + dask_runner From 2594298f6dd894ec29883837f0fbccbd7b6eab8c Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Fri, 19 Jan 2018 15:26:08 +0100 Subject: [PATCH 18/32] Add cluster notes in dask_contact_freq.ipynb --- examples/dask_contact_frequency.ipynb | 117 +++++++++----------------- 1 file changed, 42 insertions(+), 75 deletions(-) diff --git a/examples/dask_contact_frequency.ipynb b/examples/dask_contact_frequency.ipynb index 325e8cc..47c6830 100644 --- a/examples/dask_contact_frequency.ipynb +++ b/examples/dask_contact_frequency.ipynb @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -26,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -35,7 +35,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -58,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -68,59 +68,28 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

Client

\n", - "\n", - "
\n", - "

Cluster

\n", - "
    \n", - "
  • Workers: 4
  • \n", - "
  • Cores: 4
  • \n", - "
  • Memory: 8.59 GB
  • \n", - "
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], + "source": [ + "# if you started the cluster with dask-mpi and the scheduler file is called sched.json\n", + "#client = Client(scheduler_file=\"./sched.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "client" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 175 ms, sys: 117 ms, total: 292 ms\n", - "Wall time: 2.65 s\n" - ] - } - ], + "outputs": [], "source": [ "%%time\n", "freq = dask_run(trajectory=trajectory, client=client, run_info=run_info)" @@ -137,20 +106,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "101" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# did it add up to give us the right number of frames?\n", "freq.n_frames" @@ -158,24 +116,33 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# do we get a familiar-looking residue map?\n", "fig, ax = freq.residue_contacts.plot()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Something like this is supposed to shut down the workers and the scheduler\n", + "# I get it to shut down workers, but not scheduler... and does it all with lots of warnings\n", + "#client.loop.add_callback(client.scheduler.retire_workers, close_workers=True)\n", + "#client.loop.add_callback(client.scheduler.terminate)\n", + "#client.run_on_scheduler(lambda dask_scheduler: dask_scheduler.loop.stop())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From e9b9d1684eb8fa4ded362d3e2b494c80085ac3f2 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sat, 20 Jan 2018 13:12:39 +0100 Subject: [PATCH 19/32] Skeleton of tests for frequency_task --- contact_map/tests/test_frequency_task.py | 44 ++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 contact_map/tests/test_frequency_task.py diff --git a/contact_map/tests/test_frequency_task.py b/contact_map/tests/test_frequency_task.py new file mode 100644 index 0000000..b1bef5d --- /dev/null +++ b/contact_map/tests/test_frequency_task.py @@ -0,0 +1,44 @@ +import os +import collections + +from .utils import * +from .test_contact_map import traj + +from contact_map.frequency_task import * + + +class TestSlicing(object): + # tests for block_slices and default_slices + def test_block_slices_even_split(self): + pytest.skip() + + def test_block_slices_remainder(self): + pytest.skip() + + def test_default_slice_even_split(self): + pytest.skip() + + def test_default_slice_remainder(self): + pytest.skip() + +class TestTasks(object): + def test_load_trajectory_task(self): + pytest.skip() + + def test_map_task(self): + pytest.skip() + + def test_reduce_task(self): + pytest.skip() + + def test_map_task_json(self): + pytest.skip() + + def test_reduce_all_results_json(self): + pytest.skip() + + def test_integration_object_based(self): + pytest.skip() + + def test_intergration_json_based(self): + pytest.skip() From f135c31ec7a6f960f4b1176c896af262721fa010 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sat, 20 Jan 2018 19:55:31 +0100 Subject: [PATCH 20/32] Most of the tests for frequency_task --- contact_map/tests/test_frequency_task.py | 79 ++++++++++++++++++++---- optional_installs.txt | 2 + 2 files changed, 70 insertions(+), 11 deletions(-) diff --git a/contact_map/tests/test_frequency_task.py b/contact_map/tests/test_frequency_task.py index b1bef5d..562cced 100644 --- a/contact_map/tests/test_frequency_task.py +++ b/contact_map/tests/test_frequency_task.py @@ -5,40 +5,97 @@ from .test_contact_map import traj from contact_map.frequency_task import * - +from contact_map import ContactFrequency class TestSlicing(object): # tests for block_slices and default_slices def test_block_slices_even_split(self): - pytest.skip() + n_total = 100 + n_per_block = 25 + results = [slice(0, 25), slice(25, 50), slice(50, 75), + slice(75, 100)] + assert block_slices(n_total, n_per_block) == results def test_block_slices_remainder(self): - pytest.skip() + n_total = 85 + n_per_block = 25 + results = [slice(0, 25), slice(25, 50), slice(50, 75), + slice(75, 85)] + assert block_slices(n_total, n_per_block) == results def test_default_slice_even_split(self): - pytest.skip() + n_total = 100 + n_workers = 4 + results = [slice(0, 25), slice(25, 50), slice(50, 75), + slice(75, 100)] + assert default_slices(n_total, n_workers) == results def test_default_slice_remainder(self): - pytest.skip() + n_total = 102 + n_workers = 4 + results = [slice(0, 25), slice(25, 50), slice(50, 75), + slice(75, 100), slice(100, 102)] + assert default_slices(n_total, n_workers) == results class TestTasks(object): + def setup(self): + self.contact_freq_0_4 = ContactFrequency(traj, cutoff=0.075, + n_neighbors_ignored=0, + frames=range(4)) + self.contact_freq_4 = ContactFrequency(traj, cutoff=0.075, + n_neighbors_ignored=0, + frames=[4]) + self.total_contact_freq = ContactFrequency(traj, cutoff=0.075, + n_neighbors_ignored=0) + self.parameters = {'cutoff': 0.075, 'n_neighbors_ignored': 0} + def test_load_trajectory_task(self): - pytest.skip() + subslice = slice(0, 4) + file_name = find_testfile("trajectory.pdb") + trajectory = load_trajectory_task(subslice, file_name) + assert trajectory.xyz.shape == (4, 10, 3) def test_map_task(self): - pytest.skip() + trajectory = traj[:4] + mapped = map_task(traj, parameters=self.parameters) + assert mapped == self.contact_freq_0_4 def test_reduce_task(self): - pytest.skip() + reduced = reduce_all_results([self.contact_freq_0_4, + self.contact_freq_4]) + assert reduced == self.total_contact_freq def test_map_task_json(self): - pytest.skip() + # check the json objects by converting them back to full objects + trajectory = traj[:4] + mapped = map_task_json(traj, parameters=self.parameters) + assert ContactFrequency.from_json(mapped) == self.contact_freq_0_4 def test_reduce_all_results_json(self): pytest.skip() + reduced = reduce_all_results_json([self.contact_freq_0_4.to_json(), + self.contact_freq_4.to_json()]) + assert reduced == self.total_contact_freq def test_integration_object_based(self): - pytest.skip() + file_name = find_testfile("trajectory.pdb") + slices = default_slices(len(traj), n_workers=3) + trajs = [load_trajectory_task(subslice=sl, + file_name=file_name) + for sl in slices] + mapped = [map_task(subtraj, self.parameters) for subtraj in trajs] + result = reduce_all_results(mapped) + assert result == self.total_contact_freq - def test_intergration_json_based(self): + def test_integration_json_based(self): + file_name = find_testfile("trajectory.pdb") + slices = default_slices(len(traj), n_workers=3) + trajs = [load_trajectory_task(subslice=sl, + file_name=file_name) + for sl in slices] + mapped = [map_task_json(subtraj, self.parameters) + for subtraj in trajs] pytest.skip() + result = reduce_all_results_json(mapped) + assert result == self.total_contact_freq + diff --git a/optional_installs.txt b/optional_installs.txt index 6ccafc3..9dba780 100644 --- a/optional_installs.txt +++ b/optional_installs.txt @@ -1 +1,3 @@ matplotlib +dask +distributed From ae49021e94e585a47e865c85bf99184c211036f6 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sat, 20 Jan 2018 20:28:21 +0100 Subject: [PATCH 21/32] Fix freq_task tests (still have 2 skipped) --- contact_map/frequency_task.py | 2 +- contact_map/tests/test_frequency_task.py | 40 ++++++++++-------------- 2 files changed, 17 insertions(+), 25 deletions(-) diff --git a/contact_map/frequency_task.py b/contact_map/frequency_task.py index 8bdf589..50bb247 100644 --- a/contact_map/frequency_task.py +++ b/contact_map/frequency_task.py @@ -38,7 +38,7 @@ def block_slices(n_total, n_per_block): list of slice slices to be applied to the array """ - n_full_blocks = n_total / n_per_block + n_full_blocks = n_total // n_per_block slices = [slice(i*n_per_block, (i+1)*n_per_block) for i in range(n_full_blocks)] if n_total % n_per_block: diff --git a/contact_map/tests/test_frequency_task.py b/contact_map/tests/test_frequency_task.py index 562cced..8fd017b 100644 --- a/contact_map/tests/test_frequency_task.py +++ b/contact_map/tests/test_frequency_task.py @@ -9,32 +9,24 @@ class TestSlicing(object): # tests for block_slices and default_slices - def test_block_slices_even_split(self): - n_total = 100 - n_per_block = 25 - results = [slice(0, 25), slice(25, 50), slice(50, 75), - slice(75, 100)] + @pytest.mark.parametrize("inputs, results", [ + ((100, 25), + [slice(0, 25), slice(25, 50), slice(50, 75), slice(75, 100)]), + ((85, 25), + [slice(0, 25), slice(25, 50), slice(50, 75), slice(75, 85)]) + ]) + def test_block_slices(self, inputs, results): + n_total, n_per_block = inputs assert block_slices(n_total, n_per_block) == results - def test_block_slices_remainder(self): - n_total = 85 - n_per_block = 25 - results = [slice(0, 25), slice(25, 50), slice(50, 75), - slice(75, 85)] - assert block_slices(n_total, n_per_block) == results - - def test_default_slice_even_split(self): - n_total = 100 - n_workers = 4 - results = [slice(0, 25), slice(25, 50), slice(50, 75), - slice(75, 100)] - assert default_slices(n_total, n_workers) == results - - def test_default_slice_remainder(self): - n_total = 102 - n_workers = 4 - results = [slice(0, 25), slice(25, 50), slice(50, 75), - slice(75, 100), slice(100, 102)] + @pytest.mark.parametrize("inputs, results", [ + ((100, 4), + [slice(0, 25), slice(25, 50), slice(50, 75), slice(75, 100)]), + ((77, 3), + [slice(0, 25), slice(25, 50), slice(50, 75), slice(75, 77)]) + ]) + def test_default_slice_even_split(self, inputs, results): + n_total, n_workers = inputs assert default_slices(n_total, n_workers) == results class TestTasks(object): From 44df300aa2cc8bb557641efee838eda25da6a5de Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sat, 20 Jan 2018 20:52:24 +0100 Subject: [PATCH 22/32] Add .n_frames in ContactFreq serialization --- contact_map/contact_map.py | 17 +++++++++++++++++ contact_map/tests/test_frequency_task.py | 6 ++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index b8a61fc..5f8c80c 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -724,6 +724,23 @@ def __init__(self, trajectory, query=None, haystack=None, cutoff=0.45, contacts = self._build_contact_map(trajectory) (self._atom_contacts, self._residue_contacts) = contacts + def __hash__(self): + return hash((super(ContactFrequency, self).__hash__(), + tuple(self._atom_contacts.items()), + tuple(self._residue_contacts.items()), + self.n_frames)) + + def __eq__(self, other): + is_equal = (super(ContactFrequency, self).__eq__(other) + and self._atom_contacts == other._atom_contacts + and self._residue_contacts == other._residue_contacts + and self.n_frames == other.n_frames) + return is_equal + + def to_dict(self): + dct = super(ContactFrequency, self).to_dict() + dct.update({'n_frames': self.n_frames}) + return dct def _build_contact_map(self, trajectory): # We actually build the contact map on a per-residue basis, although diff --git a/contact_map/tests/test_frequency_task.py b/contact_map/tests/test_frequency_task.py index 8fd017b..2b498eb 100644 --- a/contact_map/tests/test_frequency_task.py +++ b/contact_map/tests/test_frequency_task.py @@ -49,7 +49,7 @@ def test_load_trajectory_task(self): def test_map_task(self): trajectory = traj[:4] - mapped = map_task(traj, parameters=self.parameters) + mapped = map_task(trajectory, parameters=self.parameters) assert mapped == self.contact_freq_0_4 def test_reduce_task(self): @@ -60,11 +60,10 @@ def test_reduce_task(self): def test_map_task_json(self): # check the json objects by converting them back to full objects trajectory = traj[:4] - mapped = map_task_json(traj, parameters=self.parameters) + mapped = map_task_json(trajectory, parameters=self.parameters) assert ContactFrequency.from_json(mapped) == self.contact_freq_0_4 def test_reduce_all_results_json(self): - pytest.skip() reduced = reduce_all_results_json([self.contact_freq_0_4.to_json(), self.contact_freq_4.to_json()]) assert reduced == self.total_contact_freq @@ -87,7 +86,6 @@ def test_integration_json_based(self): for sl in slices] mapped = [map_task_json(subtraj, self.parameters) for subtraj in trajs] - pytest.skip() result = reduce_all_results_json(mapped) assert result == self.total_contact_freq From d3fbb7d71ca23608030972da289b5c181b55fc0a Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sat, 20 Jan 2018 21:15:06 +0100 Subject: [PATCH 23/32] DaskContactFrequency and tests --- contact_map/__init__.py | 2 ++ contact_map/dask_runner.py | 35 +++++++++++++++++++++++++++ contact_map/tests/test_dask_runner.py | 17 +++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 contact_map/tests/test_dask_runner.py diff --git a/contact_map/__init__.py b/contact_map/__init__.py index 33de73c..0d73c2e 100644 --- a/contact_map/__init__.py +++ b/contact_map/__init__.py @@ -11,4 +11,6 @@ from .min_dist import NearestAtoms, MinimumDistanceCounter +from .dask_runner import DaskContactFrequency + # import concurrence diff --git a/contact_map/dask_runner.py b/contact_map/dask_runner.py index 993cf5f..08597f0 100644 --- a/contact_map/dask_runner.py +++ b/contact_map/dask_runner.py @@ -3,6 +3,8 @@ """ from . import frequency_task +from contact_map import ContactFrequency, ContactObject +import mdtraj as md def dask_run(trajectory, client, run_info): @@ -36,3 +38,36 @@ def dask_run(trajectory, client, run_info): freq = client.submit(frequency_task.reduce_all_results, maps) return freq.result() + +class DaskContactFrequency(ContactFrequency): + def __init__(self, client, filename, query=None, haystack=None, + cutoff=0.45, n_neighbors_ignored=2, **kwargs): + self.client = client + self.filename = filename + trajectory = md.load(filename, **kwargs) + + self.frames = range(len(trajectory)) + self.kwargs = kwargs + + ContactObject.__init__(self, trajectory.topology, query, haystack, + cutoff, n_neighbors_ignored) + + freq = dask_run(trajectory, client, self.run_info) + self._n_frames = freq.n_frames + self._atom_contacts = freq._atom_contacts + self._residue_contacts = freq._residue_contacts + + @property + def parameters(self): + return {'query': self.query, + 'haystack': self.haystack, + 'cutoff': self.cutoff, + 'n_neighbors_ignored': self.n_neighbors_ignored} + + @property + def run_info(self): + return {'parameters': self.parameters, + 'trajectory_file': self.filename, + 'load_kwargs': self.kwargs} + + diff --git a/contact_map/tests/test_dask_runner.py b/contact_map/tests/test_dask_runner.py new file mode 100644 index 0000000..0566dcc --- /dev/null +++ b/contact_map/tests/test_dask_runner.py @@ -0,0 +1,17 @@ +from .utils import * + +from contact_map.dask_runner import * + +class TestDaskContactFrequency(object): + def test_dask_integration(self): + # this is an integration test to check that dask works + dask = pytest.importorskip('dask') + distributed = pytest.importorskip('dask.distributed') + + client = distributed.Client() + filename = find_testfile("trajectory.pdb") + + dask_freq = DaskContactFrequency(client, filename, cutoff=0.075, + n_neighbors_ignored=0) + client.close() + assert dask_freq.n_frames == 5 From d8cd82bd61f6cbb57f1cf770fa0f30dfce5dba40 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sat, 20 Jan 2018 21:47:14 +0100 Subject: [PATCH 24/32] fixes for tests --- contact_map/dask_runner.py | 2 +- contact_map/frequency_task.py | 2 +- contact_map/tests/test_frequency_task.py | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/contact_map/dask_runner.py b/contact_map/dask_runner.py index 08597f0..27742f9 100644 --- a/contact_map/dask_runner.py +++ b/contact_map/dask_runner.py @@ -3,7 +3,7 @@ """ from . import frequency_task -from contact_map import ContactFrequency, ContactObject +from .contact_map import ContactFrequency, ContactObject import mdtraj as md diff --git a/contact_map/frequency_task.py b/contact_map/frequency_task.py index 50bb247..0866a81 100644 --- a/contact_map/frequency_task.py +++ b/contact_map/frequency_task.py @@ -62,7 +62,7 @@ def default_slices(n_total, n_workers): list of slice slices to be applied to the array """ - n_frames_per_task = n_total // n_workers + n_frames_per_task = max(1, n_total // n_workers) return block_slices(n_total, n_frames_per_task) diff --git a/contact_map/tests/test_frequency_task.py b/contact_map/tests/test_frequency_task.py index 2b498eb..6a79038 100644 --- a/contact_map/tests/test_frequency_task.py +++ b/contact_map/tests/test_frequency_task.py @@ -23,7 +23,9 @@ def test_block_slices(self, inputs, results): ((100, 4), [slice(0, 25), slice(25, 50), slice(50, 75), slice(75, 100)]), ((77, 3), - [slice(0, 25), slice(25, 50), slice(50, 75), slice(75, 77)]) + [slice(0, 25), slice(25, 50), slice(50, 75), slice(75, 77)]), + ((2, 20), + [slice(0, 1), slice(1, 2)]) ]) def test_default_slice_even_split(self, inputs, results): n_total, n_workers = inputs From 4250e6b15af5eaa4ea80a0ecdaaa64361a2a0cb1 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sat, 20 Jan 2018 23:01:24 +0100 Subject: [PATCH 25/32] New test for ContactFreq.hash; update dask example --- contact_map/tests/test_contact_map.py | 11 ++++ examples/dask_contact_frequency.ipynb | 95 ++++++++++++++++++++++----- 2 files changed, 90 insertions(+), 16 deletions(-) diff --git a/contact_map/tests/test_contact_map.py b/contact_map/tests/test_contact_map.py index 1919b06..6bd1f0e 100644 --- a/contact_map/tests/test_contact_map.py +++ b/contact_map/tests/test_contact_map.py @@ -329,6 +329,17 @@ def test_frames_parameter(self): } assert contacts.residue_contacts.counter == expected_residue_count + def test_hash(self): + map2 = ContactFrequency(trajectory=traj, + cutoff=0.075, + n_neighbors_ignored=0) + map3 = ContactFrequency(trajectory=traj[:2], + cutoff=0.075, + n_neighbors_ignored=0) + + assert hash(self.map) == hash(map2) + assert hash(self.map) != hash(map3) + def test_saving(self): m = self.map m.save_to_file(test_file) diff --git a/examples/dask_contact_frequency.ipynb b/examples/dask_contact_frequency.ipynb index 47c6830..bc291c3 100644 --- a/examples/dask_contact_frequency.ipynb +++ b/examples/dask_contact_frequency.ipynb @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -26,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -35,7 +35,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -53,12 +53,12 @@ "source": [ "Next we need to connect a client to a dask network.\n", "\n", - "Note that there are several ways to set up the dask computer network and then connect a client to it. See https://distributed.readthedocs.io/en/latest/setup.html. The approach used here creates a `LocalCluster`. Large scale simulations would need other approaches. Personally, I would usually recommend using `dask-mpi`. " + "Note that there are several ways to set up the dask computer network and then connect a client to it. See https://distributed.readthedocs.io/en/latest/setup.html. The approach used here creates a `LocalCluster`. Large scale simulations would need other approaches. For clusters, you can manually run a `dask-scheduler` and multiple `dask-worker` commands. By using the same `sched.json`, it is easy to have different workers in different jobs on the cluster's scheduling system." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -68,28 +68,69 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ - "# if you started the cluster with dask-mpi and the scheduler file is called sched.json\n", + "# if you started on a cluster and the scheduler file is called sched.json\n", "#client = Client(scheduler_file=\"./sched.json\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

Client

\n", + "\n", + "
\n", + "

Cluster

\n", + "
    \n", + "
  • Workers: 4
  • \n", + "
  • Cores: 4
  • \n", + "
  • Memory: 17.18 GB
  • \n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "client" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 329 ms, sys: 226 ms, total: 554 ms\n", + "Wall time: 4.88 s\n" + ] + } + ], "source": [ "%%time\n", "freq = dask_run(trajectory=trajectory, client=client, run_info=run_info)" @@ -106,9 +147,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "101" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# did it add up to give us the right number of frames?\n", "freq.n_frames" @@ -116,9 +168,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# do we get a familiar-looking residue map?\n", "fig, ax = freq.residue_contacts.plot()" @@ -126,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ From 185546636c5404ec1fae1e34605ecb1aad58ef06 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sun, 21 Jan 2018 13:34:37 +0100 Subject: [PATCH 26/32] update for the docs on dask integration --- contact_map/dask_runner.py | 38 ++++++++++++++++ examples/dask_contact_frequency.ipynb | 65 ++++++++++----------------- 2 files changed, 61 insertions(+), 42 deletions(-) diff --git a/contact_map/dask_runner.py b/contact_map/dask_runner.py index 27742f9..5521a1c 100644 --- a/contact_map/dask_runner.py +++ b/contact_map/dask_runner.py @@ -40,6 +40,44 @@ def dask_run(trajectory, client, run_info): return freq.result() class DaskContactFrequency(ContactFrequency): + """Dask-based parallelization of contact frequency. + + The contact frequency is the fraction of a trajectory that a contact is + made. See :class:`.ContactFrequency` for details. This implementation + parallelizes the contact frequency calculation using + ``dask.distributed``, which must be installed separately to use this + object. + + Notes + ----- + + The interface for this object closely mimics that of the + :class:`.ContactFrequency` object, with the addition requiring the + ``dask.distributed.Client`` as input. However, there is one important + difference. Whereas :class:`.ContactFrequency` takes an + ``mdtraj.Trajectory`` object as input, :class:`.DaskContactFrequency` + takes a file name, plus any extra kwargs that MDTraj needs to load the + file. + + Parameters + ---------- + client : dask.distributed.Client + Client object connected to the dask network. + filename : str + Name of the file where the trajectory is located. File must be + accessible by all workers in the dask network. + query : list of int + Indices of the atoms to be included as query. Default ``None`` + means all atoms. + haystack : list of int + Indices of the atoms to be included as haystack. Default ``None`` + means all atoms. + cutoff : float + Cutoff distance for contacts, in nanometers. Default 0.45. + n_neighbors_ignored : int + Number of neighboring residues (in the same chain) to ignore. + Default 2. + """ def __init__(self, client, filename, query=None, haystack=None, cutoff=0.45, n_neighbors_ignored=2, **kwargs): self.client = client diff --git a/examples/dask_contact_frequency.ipynb b/examples/dask_contact_frequency.ipynb index bc291c3..a6077dd 100644 --- a/examples/dask_contact_frequency.ipynb +++ b/examples/dask_contact_frequency.ipynb @@ -6,7 +6,7 @@ "source": [ "# Parallel `ContactFrequency` with Dask\n", "\n", - "In principle, each frame that makes up a `ContactFrequency` can have its contact map calculated in parallel. This shows how to use [`dask.distributed`](https://distributed.readthedocs.io/) to do this.\n", + "In principle, each frame that makes up a `ContactFrequency` can have its contact map calculated in parallel. This shows how to use [dask.distributed](https://distributed.readthedocs.io/) to do this.\n", "\n", "This will use the same example data as the main contact maps example (data from https://figshare.com/s/453b1b215cf2f9270769). See that example, `contact_map.ipynb`, for details." ] @@ -18,47 +18,23 @@ "outputs": [], "source": [ "%matplotlib inline\n", - "import mdtraj as md\n", "# dask and distributed are extra installs\n", "from dask.distributed import Client, LocalCluster\n", - "from contact_map.dask_runner import dask_run" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "trajectory = md.load(\"5550217/kras.xtc\", top=\"5550217/kras.pdb\")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# TODO: we need a more user-friendly approach for this than what we see here\n", - "run_info = {\n", - " 'trajectory_file': \"5550217/kras.xtc\",\n", - " 'load_kwargs': {'top': \"5550217/kras.pdb\"},\n", - " 'parameters': {}\n", - "}" + "import contact_map" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Next we need to connect a client to a dask network.\n", + "First we need to connect a client to a dask network.\n", "\n", "Note that there are several ways to set up the dask computer network and then connect a client to it. See https://distributed.readthedocs.io/en/latest/setup.html. The approach used here creates a `LocalCluster`. Large scale simulations would need other approaches. For clusters, you can manually run a `dask-scheduler` and multiple `dask-worker` commands. By using the same `sched.json`, it is easy to have different workers in different jobs on the cluster's scheduling system." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -68,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -78,7 +54,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -89,7 +65,7 @@ "\n", "

Client

\n", "
    \n", - "
  • Scheduler: tcp://127.0.0.1:58414\n", + "
  • Scheduler: tcp://127.0.0.1:61226\n", "
  • Dashboard: http://127.0.0.1:8787\n", "
\n", "\n", @@ -105,10 +81,10 @@ "" ], "text/plain": [ - "" + "" ] }, - "execution_count": 6, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -119,21 +95,26 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 329 ms, sys: 226 ms, total: 554 ms\n", - "Wall time: 4.88 s\n" + "CPU times: user 954 ms, sys: 341 ms, total: 1.3 s\n", + "Wall time: 5.16 s\n" ] } ], "source": [ "%%time\n", - "freq = dask_run(trajectory=trajectory, client=client, run_info=run_info)" + "freq = contact_map.DaskContactFrequency(\n", + " client=client,\n", + " filename=\"5550217/kras.xtc\",\n", + " top=\"5550217/kras.pdb\"\n", + ")\n", + "# top must be given as keyword (passed along to mdtraj.load)" ] }, { @@ -147,7 +128,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -156,7 +137,7 @@ "101" ] }, - "execution_count": 8, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -168,14 +149,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -189,7 +170,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ From 912312d7d43c11ee844877acc7c9d837922c2dfa Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Mon, 22 Jan 2018 16:21:23 +0100 Subject: [PATCH 27/32] Add colorbar to default plotter --- contact_map/contact_map.py | 25 +++++- examples/contact_map.ipynb | 151 ++++++++++++++++++------------------- 2 files changed, 96 insertions(+), 80 deletions(-) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 5f8c80c..3ad0521 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -18,6 +18,7 @@ try: import matplotlib import matplotlib.pyplot as plt + from matplotlib.colors import LinearSegmentedColormap except ImportError: HAS_MATPLOTLIB = False else: @@ -139,7 +140,7 @@ def df(self): columns = list(range(self.n_y)) return pd.SparseDataFrame(mtx, index=index, columns=columns) - def plot(self, cmap='seismic', vmin=-1.0, vmax=1.0): + def plot(self, cmap='seismic', vmin=-1.0, vmax=1.0, with_colorbar=True): """ Plot contact matrix (requires matplotlib) @@ -168,7 +169,11 @@ def plot(self, cmap='seismic', vmin=-1.0, vmax=1.0): ax.axis([0, self.n_x, 0, self.n_y]) ax.set_facecolor(cmap_f(norm(0.0))) + min_val = 0.0 + for (pair, value) in self.counter.items(): + if value < min_val: + min_val = value pair_list = list(pair) patch_0 = matplotlib.patches.Rectangle( pair_list, 1, 1, @@ -183,6 +188,24 @@ def plot(self, cmap='seismic', vmin=-1.0, vmax=1.0): ax.add_patch(patch_0) ax.add_patch(patch_1) + if with_colorbar: + # identify minimum color + cmin = 0.0 if min_val == 0.0 else -1.0 + cmax = 1.0 # may change this later (allow arbitrary) + # all of this is to set up a custom color bar + # see https://stackoverflow.com/questions/24746231 + cmin_normed = float(cmin - norm.vmin) / (norm.vmax - norm.vmin) + cmax_normed = float(cmax - norm.vmin) / (norm.vmax - norm.vmin) + n_colors = int(round((cmax_normed - cmin_normed) * cmap_f.N)) + colors = cmap_f(np.linspace(cmin_normed, cmax_normed, n_colors)) + new_cmap = LinearSegmentedColormap.from_list(name="Partial Map", + colors=colors) + new_norm = matplotlib.colors.Normalize(vmin=cmin, vmax=cmax) + sm = plt.cm.ScalarMappable(cmap=new_cmap, norm=new_norm) + sm._A = [] + cb = plt.colorbar(sm) + + return (fig, ax) def most_common(self, obj=None): diff --git a/examples/contact_map.ipynb b/examples/contact_map.ipynb index 6197a28..b43cf87 100644 --- a/examples/contact_map.ipynb +++ b/examples/contact_map.ipynb @@ -18,6 +18,7 @@ "outputs": [], "source": [ "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", "import mdtraj as md\n", "traj = md.load(\"5550217/kras.xtc\", top=\"5550217/kras.pdb\")\n", "topology = traj.topology" @@ -52,8 +53,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 123 ms, sys: 18.9 ms, total: 142 ms\n", - "Wall time: 133 ms\n" + "CPU times: user 137 ms, sys: 6.93 ms, total: 144 ms\n", + "Wall time: 145 ms\n" ] } ], @@ -62,24 +63,33 @@ "frame_contacts = ContactMap(traj[0])" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The built-in plotter requires one of the [matplotlib color maps](https://matplotlib.org/users/colormaps.html) the set the color scheme. If you select a divergent color map (useful if you want to look at contact differences), then you should give the parameters `vmin=-1`, and `vmax=1`. Otherwise, you should use `vmin=0` and `vmax=1`." + ] + }, { "cell_type": "code", "execution_count": 4, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 868 ms, sys: 19.1 ms, total: 888 ms\n", - "Wall time: 1.01 s\n" + "CPU times: user 1.09 s, sys: 34.6 ms, total: 1.13 s\n", + "Wall time: 1.15 s\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -88,7 +98,9 @@ ], "source": [ "%%time\n", - "(fig, ax) = frame_contacts.residue_contacts.plot(cmap='seismic', vmin=-1, vmax=1)" + "(fig, ax) = frame_contacts.residue_contacts.plot(cmap='seismic', vmin=-1, vmax=1)\n", + "plt.xlabel(\"Residue\")\n", + "plt.ylabel(\"Residue\")" ] }, { @@ -109,15 +121,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.74 s, sys: 134 ms, total: 5.87 s\n", - "Wall time: 5.94 s\n" + "CPU times: user 5.46 s, sys: 102 ms, total: 5.56 s\n", + "Wall time: 5.6 s\n" ] }, { "data": { "text/plain": [ - "(,\n", - " )" + "(,\n", + " )" ] }, "execution_count": 5, @@ -126,9 +138,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nrGkJ3VUAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -165,8 +177,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.02 s, sys: 31.7 ms, total: 5.05 s\n", - "Wall time: 5.05 s\n" + "CPU times: user 6.02 s, sys: 28 ms, total: 6.05 s\n", + "Wall time: 6.08 s\n" ] } ], @@ -195,26 +207,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 3.38 s, sys: 39.2 ms, total: 3.42 s\n", - "Wall time: 3.44 s\n" + "CPU times: user 3.25 s, sys: 43.1 ms, total: 3.3 s\n", + "Wall time: 3.32 s\n" ] }, { "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWYAAAD8CAYAAABErA6HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJztvX+YHVWZ7/t5Wa2dMUES7UiYABNU\nRDBKkD4KV9B4gTPBB4U5gyOZRwe5CDLHzEVE7sAwmbbN5IFjzHCZwQMSQXAeD6CogFx/jHKMmntB\n7QhikCDBiUNjgDQC2mi3p3fW/aNq7V5dXb/2rqpda++9Ps+zn7131aqqVb++9da73vUu0Vrj8Xg8\nHnfYr+4KeDwej2cuXpg9Ho/HMbwwezwej2N4YfZ4PB7H8MLs8Xg8juGF2ePxeBzDC7PH4/EUQERu\nFJGnRWRHwnwRkX8WkV0i8qCIvDFrnV6YPR6Ppxg3AWtS5p8KHB5+zgeuzVqhF2aPx+MpgNb6e8Cv\nU4qcDnxOB9wHLBaRg9LWOVBmBdtlaGhIrzj0UNivxeeE6bUoUn6l2sHUR+vW96Wd7UC9+551/LV2\n59wkUfU+VHkM7HVHe/CKzN+3pF6+rdRP67nrSbrOK9zv7du3T2itlxZZx6tF9O9ylt0DDwFT1qTr\ntdbXt7C55cDj1v/xcNqepAWcEOYVK1Yw9sMf1l2N8piZgYGUQ5s1v+i2DWYbcdPaWWdVdba3U/U2\n8jA1BQsW1F2L9jH1t887BP/t/TLH2y5nl7HPR9y5sY9TB4+ZKPXLouv4HfDBnGU/BlNa6+ECm4t7\nQqXmwnDgLuhBssSlXfHJI1xx84uKXdrNmYfocknrcUGUoXtEOSqcBiO29gPVFuGp0PhbtGh2WbPP\nSec67ty0cpxceejWwzhwiPX/YOBXaQt4H3M3UfeF3e72o8t14m2hjHLdwtTUrBAPDMwe3wULgk9U\nYM10w4IFMDkZfOz1mN9px8sIfZZI133tRhAC8cvzKYG7gL8KozOOA57XWie6McBbzOVS1GXgKUbe\nY95t58ZcV1FXhD0vznKOc2UMDMBzzwX/h4Zm59nrtS1sgxHfqal4S7oLLeKyPOAicguwGhgSkXFg\nBHgRgNb6OuBrwDuAXQRelHOy1unWkez0yS3bF9xlF6YnAVdEJiq60ToZobb9xGlCaf4bQZ6cDNwZ\nSQaFvQ7js7YF3FjqZn6XUZYwa63XZszXwIdaWacDV59Fp2+GOhvoXLjxXaRXjk0ZDaZxQmxPM2Jp\nuy/iGvTM9OjyxsdsbyvJbRF1b5jtdzEuxwv1wB1QEXE3VFmi0QvCUxVFj00Z58jVcxwn1HEPgKTo\nC1MuTnxNg2BcNEfceqLT4+rnMIIX5t6hiy68yoiLBHDpuLhUl7KJi5SIE9GojzjPMUmKkrEF27gu\nou6MLrWcvTB76qVMAc0KoaqTXnGDJJEWR2yTdBxM+Tg/dNLDNhqnPDk5dzvGws7zIHDs/LgckubG\nUdq3b7a116ETl0jdlqJvlIzH9f0sKkzRRrqkddmWrvmftB67nF0+KrZGgG2/dFSMXT/+EbzFnMV+\n+3XX61CdF2CvxeBWQdaDsy7LrQrfd7SxL+6NxsyPdiKxewjGWcy2wNvCOzERfNvhdlk4Zi17H3Mv\nYcdyQj0PE4cu7trfHJKougNLK+svq7dkXB2SYpfz+oHtrtfR5aN+anuaLchx24vDtWsEL8y9g7n4\n4nIJuExVAtoN+x5Hu/VuZ7mythUNi0sqa4ukbe3aRCMwop1L0uoRt+0uvQ5cFmaX/d/u0y0XZBff\nPJ6QJOvZiGxcV2p72axu1XHrtDGNftGHQNzvVsjq8l0hHeyS3TL+bm2VIq+m4AUyCX98ZmnlGksL\nXUyK4ojrfm0vn9YZxRbtIq68Vs53BdeG6z7mzAeCiBwiIt8RkYdF5CERuTCc/jIR+ZaIPBp+Lwmn\ntzyMSiyuNnKlNShlLZd2Ybm6v53CW/WzpPmWkzqV2IJrjmXUGrVD25K6YZtyEFjJU1OzHyPWZlvR\n5Emt7mMrD58Krg3J+amDPJb6DHCx1vpI4DjgQyJyFHApcI/W+nDgnvA/tDGMSiyduknTejm1ggu9\nzTy9i90YZ0dVpLkpbIG2y0enx/mvBwYCKzmaoS5aJrquLqKrhVlrvUdr/ePw92+Bhwmy758O3BwW\nuxk4I/zd8jAqtZIWC5qHLrwgnaXsY5mUL6JbibNso5a0/YlGbtiCbvumo9Z1UmyzvS6zXFIDY1WU\neP5cFuaWjqaIrACOAX4AHGhyimqt94jIK8JiuYZREZHzCSxqDj300DaqXjFxr2dx01q9ILslkqMO\nqo4a6bXjnhbWFsWen+YbtoU+jqjF3umQ0ZL9zK6Su9FRRBYBXwI+rLX+TVrRmGnzhlHRWl+vtR7W\nWg8vXVpo+K5qyApLagcvytm4aNG2Wqcy9iFuHUnT4gwIm6ibwvYZx8VF27H69vS4B11V+1oxHU6U\n3zK5VEJEXkQgyp/XWn85nPyUiBwUWssHAU+H08dpcRgVp4m7QE3okN09NQ9R6yYPeS33PMu5joui\nDO01bFWxzYEB2L07+L1o0fyOHnm2nbchLXptt2OoJPUotP/b5eLK2O4SKNVC72qLWUQEuAF4WGv9\nT9asu4Czw99nA3da01saRsU5bEvCbvyweznF9ZrKQ6tRHe1a7t0kylHrzRNgW7bm99BQ8IlLcJ8U\nY2yXiSMtQqMI0dA72wWSVS9Txg7xK9lt4rKPOY+l/hbgfcD/LiIPhJ93AFcCp4jIo8Ap4X8IhlH5\nBcEwKluA/1p+tS2iF2Bcw0WZxMV9tkIrApzE1q2tbdN1zIMvOj5dXVT1gGh1vbZRYL5vvz34TE6m\nh9W1chwHBuaO+dcuWQ2I9vain7gkZhWHULoszJl7rbXeRnL9Toop3/IwKk1mZmB8PPhtrIJWaeep\nmvban+SDa5cy/NSrVxdbx+7dsGJFsXUUIc/xhs6IdJ6OGWXR7nrt4/Xe96avq91ttHOvJWEnR4p2\nXInzd5sHT5TodVKi0eV6BxMHzBOLgYHWBaMKf17UrwXx/rKsFu44ivp+y9jfskQ5K5lTVoRAK8tU\nRVw0gwv+ebsORtSmpsoV0LKJ1jctgiMuQ130vopa73ajZAm4nI/CLWFulSpvoDTBTWqlzkMZFnMZ\n6ymDsjOKxVlU/UpcY5gtVu0co7z3Sxn3VVwjn/3fFmTjlokbAbzCkEeXLWaXHxr5KOoTyzvdnmYH\n6Je1zbTy0VfCOGs+qbyLpIV91VXvTrgyWsF+SJljMjEx+2nlOGWJuX3NGNdC0brb3zC/u7hd1rwF\n2A2FSW+jJQtz1/qYO445MWZo9TTKfKrnCTNKKmtHa+TdZhT7Vc/+HVc+LZSpUxZREZLcG64+TOo4\nXnHndGioWIhanu0V2c80g8a+p6NuGtsnbe9D1P1R4nnwPuZWsA98J31pca9LefyjcQ2DWSSt174A\nq+5N5YJFGIftSzX/ix7XsurVadqNX2/H8i9r/+IeCLZY2/e0fY6N7zh63UdHVyn5PHhhzkv0RLpm\n1bVTxuCS/7RuizlKkoWUd1loPcoj6xiU5ctv51i302jqAlkuwLhGczsqI7p8Ow+mFvDC3AquXHzt\nWixJuLJfUF5doqIXPT55j1eZjalRIbAfhq284eSpS54HSZn71MnGu3aIi9LJGu0nqZHQXqaCBm/T\nJdtVHFILh4hLpxh3M7sUIVEHWS3m7bxRlBlOWGGLPlCty6nIK3yV12Pa+bGT6Rur2JS1p8WFAkZp\npf2nTbzF3G1ELx7DAw/AwQfP5isYHq6uDuZijYtdHR8P6tFLVORHbAsXXD1J1uV11wW/V66EE04I\nfrdS3yLx2nFvCHHRNHFGTNRVkea2iIvqSNp+AbwwV0WVaQfjLthVq4LvxYur2Wbc9uMaQTux/U5i\nC8Tu3bBsWfC7DJ98OyIbLV/kOotz70S3ETctbpsTE7Ni/OpXt1efdhoH08obwyG6P0mCbb6jDwc7\nxNMWcdsw8Y1/XUJVohzXb99Mh9mLxhbNTlpZnc6BWzX2cWu3V2KSW6mMc1JmF/y8jXpx2xwamn0o\nRwU2r1ut3es0KZQxGv5m1yFqnceJdZxw2/uyaFFlyfi9MHcbSTdiNKNchaE8ibjwmm3I6pKdFzsq\nw6aV9VZ1TOqKEop71Z+YmNtjLjo/D1U0XscJapxYx8X757meo+VLwPU4ZncbJuvsbJC0bXNhPflk\n8IH5VnRZ27Rf5WwGBmBsrNi2yiJPKsa4XopJ/sWZmdnuua48fKCe+pht2ttetAjuvjv4mOsPsq/X\nVijzvos7z3ZjYNqYhSbneVV1owcS5XcUlyzCKKZexgcK6T30oqTtW9Irb5x1UbTRscjrbJZvNEpU\nuNPKLlpUrGNRFddOnddi9PgODMBpp80vl/eaykOR/Y1azNHcHvYbVjSMLiq6ixYFbwiLF88uF81B\nXRCXLWb3FLADYTJt18HuUhqdn7c7dtJ+5dlf29qoI/VoO/7bVs9jEdeBqw/0spiagueeC37bDaQ2\nRTu0lBGrH3VXGNJyX8Q98I3bpqI2FS/M7dCpBq5WrFhjzRXpv1+GdeNK418ei9mLa/vEXX9V5I9p\nJVIjzbCI/o/28Iu7bm0rOmrwRBMqlZFgKaTrfcwicqOIPC0iO6xpt1mjmewWkQfC6StE5PfWvOuq\nrHwpFH1160YhKSunbdm+1zrbFboBI3Z1Hqc0wyItDC4uGsNMT0qSb5czZUu83srKLicia0TkERHZ\nJSKXxsw/VES+IyL3i8iD4QhQqeTZy5uAa4DPmQla6/dYG90MPG+Vf0xrvSrHet2mFddCt1GWxd0v\nPR/reADHbTNvHaqqbyvrTYpWilrSSb3+7OUrehCV0bAnIgr4FMHweuPAj0TkLq31z6xifw98QWt9\nrYgcRTD83opCddNafw/4dUKlBPgL4JY8O9FV5PWfdtp66WWr0lWBr6NetrVpyHvuWxHwvLQqytHo\ni5mZ+d2yo/uXZBHb5Upu/CvBYn4TsEtr/Qut9R+AW4HTI2U08NLw9wHAr7JWWvShcSLwlNb6UWva\nYaHJ/l0ROTFpQRE5X0TGRGRs7969BatRE62+WpVxUbkkXmW9WlZw0yVuo935dRA9vnVGnKSVjTt2\ntpvCjlyyLeWkh05UiONCBwuSV5RDYR4yWhV+zrdWtRx43Po/Hk6z+RjwXhEZJ7CW/yarfkX3ci1z\nreU9wKFa62dE5FjgDhF5ndb6N9EFtdbXA9cDDA8P64L16AxFXxHTojJ6hXbcG504Hq1GkKR1lqgD\n0y5g4nsXL67WtdGO2yLvuU9KgG+WTwqlK7HxD1pq/JvQWifFqMatJqpna4GbtNabReR44F9FZKXW\nel/SBtu2mEVkAPgvwG3N2mg9rbV+Jvy9HXgMeE2728hF2R074uZHX7vadWGU0egWt+26rL2kziJx\noU95GBiYHaSz08RZp1E/aSddV9EOFiZTm7FAW3nLaOd8xPmG40iyluPWF/eQi9uPpG2VHI1Ukitj\nHDjE+n8w810V5wJfANBa3wssABK6cAYUcWWcDOzUWo+bCSKyNHSGIyKvBA4HflFgG9kUfYLmaeAz\nHzvrnAnnaeVmtdMgFqlvu41ChrLEJc+rZTt1qzvywCaPD7SddWURFxZn/LNR90Ar5Al1y7ucPT3q\ncohi7pXoQy7qprAF3CxXESUJ84+Aw0XkMBF5MXAWcFekzH8AJwGIyJEEwpzqv80TLncLcC9whIiM\ni8i54ayzmN/o91bgQRH5CXA7cIHWOrbhsGuxL7pWnuCuCA3U/1qeFPMKQceJssPw7G0kiX7S+Smz\nHmU8lMt8aEXdNUXWnWUFR42SuDcre/u2OMe9vRTEJMov2iVbaz0DrAO+CTxMEH3xkIh8XETeFRa7\nGDgv1MVbgPdrrVPdt5IxvyMMDw/rsR/+sO5qxNOpkDAX/Jh1EfUltnMcqjx+rpwb28eaVJ866xrn\nl4+6KKJhcnb0hiHJ7REiSm1P8fnm4jUi+l9yll0DhbfXKu4mMaqbuKe17bpo17Ioapm5ZHkXJa71\nvV2qDG90RZTtV/8ksupaxfUT9wZkXH1Z1q4JozMWte0mNPPdDperhN4T5okJnlGq+HqiF9Hk5GzD\nVJFkOzlv8t8n7YMLIlEWcWFQVe5fFS6STrFgQb5rzgh4HuwMdSbeeNu25PJx652YCKZPTMw/l7ar\nL6lx1bTdRMtEhbqC68MLcwX8XimeVYrfKsXvlWLafA48kEXAdLvifMEFs78nJ3lGqUDot24NhpYa\nGIA1a4JPhfzRMcckzzzuuEq33RUsXswe6xz/UikeLeOB3CpTU+xRqvl5vNN1MBanbVmaREfRcjBX\njE362JkZ2LUr+OzYMX9ZgxFhe5133x18x6XpNGXSoohqfAN0WZi9j9njFHcr1YzOHwfe2WjUWZ3a\nuFspzJ6fnnQM7NzVUf9uNOWmcS9MTs71805OBlnczNvg0NDciAl7HSZRf3SAhLjtmel5XCtRf7Lt\nColpYC/Dx3yEiP7vOcueXIOPuUvf6zy9ymkvvNC8GY+pMFSqLcbDyNCKB8LdqBQzwEjWQynqBjDE\nNaKa37Y7xF7eHhnFdhvY64im4bSFNLo98z9LrONcFJ1wa+G2u8CtuoVP7SvqeCWtiCuU4gql+FK4\nT6NKwbJlXKMU1/TQfpaGbSG5kt7UcPDBlYvyqFLsI4coQ/YQaHlo1ZUQF2uc1RgZJ7oO4LIrw52j\nBM0n8h8AZma4enAQgAu7+HX2skjdzQ23ro7KhNysFBPAxY4f1w1Ksd7xOpbJaPigTtrnO5VKdmvE\nESec0Q4zScTNi7ocWnFZtEoHwv5czsfsljCHGPHqZkF2mbNdPq7WDTkEfFop/gJYUmedt22DxYvZ\ndPTRAFxScl1GrTenJEt5VCmOzbMyM8oOxAtnkthFE9bHuSmS4s2TYpOTyCO6HRBlL8z9zIc/DMAX\n/+VfeLfLgugK1g35164crxNOAEoS5I9+NPj+5CeBfKK8QSkGgNPybD8upC6PZRwNbYN8/uC828nz\ncOgwXphbZItSnNdoNG+I1NhKx9n0L0H/ouhNfX94Qx7TaLBRKS53RYQ81RIKMsyKcpqVbKjFpVOm\ngDoixjZuNbDNxb2jBYEoAxvuvReA9XVWpiBJVtYx1vQ6RHmTUvzO+p+rsanDbFGKtxJkHnexfkVo\nRZR7bd9dwVvMbdJPDT+dpmw/aRWYB/RLHIle2RTW45JGg0eV4vA2jqER3P1Ivr6zRLsSOpUTxhFc\n9zG7bM1Xw5VXVrfubdtm3S4f+ACsXs0GpdigFI8olRyadPfd1dWpB3DlIXJJo9GsSzuivDGHa6IW\nUYbu7q7eJi6Hyznd88+2UH6gFG9u8WLdEC7/GuA94bJXKDUvhK1Sdu8OvlesSC5z5plw++3NuOZ1\nHb4pvY+7er6jFK8GDkk5zrWJcpdRRs+/I0X0TTnLHud7/s3FtpRaFWWA9SeGQw5u3dqc1lFRhnRB\nNtx+O9B5QTa8pJat5mevUiwNj81PlOJoB4Sr+TAbH8/sdHJt6M9/e0rUhcGLcufwroy62Lp1jih7\n4rnIcTFYatXPBVEGOM38yNETcIrkzjymp9+c3n4mpK6TuDRqTAcoK1F+VeQZweRGEXlaRHZY0z4m\nIk+IyAPh5x3WvMtEZJeIPCIif1pVxdtictJnZvOUQuYD4swzgw/JD77Hw/jkkUZjrqVshdTlpqiw\ntutjLirmPrtcLHnOxE3ANcDnItOv0lrPuYJE5CiCIadeB/wx8G0ReY3WuhYzx7wimoaWmw84gLN/\n8pM6quIpG7uHW41cpRQm4eUAs66yDV/5CpAc6rlZKd5IiaGSdTXcFd1ujQ2OLrsyMo+K1vp7IrIi\n5/pOB27VWk8D/y4iu4A3EYwZ2HGiLd9Od0X2tEbNonyLUqxdv57fEO8XToq6uCo0Fl5Css/Z0xm6\nWphTWCcifwWMARdrrZ8FlgP3WWXGw2nzEJHzgfMBDj300ALV8PQz94ZCd/xjj+VraC2JtY1G09pr\nRlNMT2dagM7685MSHlVh0RZZb8lDS7lKu77ta4FXAauAPcDmcHrcvsbG42mtr9daD2uth5cuXdpm\nNVpjYzSW+P3v55ZwJBRPd3J8o8HxjUZHRbnJzMwca3k0zIYYxwalmj5nJ4nzMVflZigyLmFJdcrr\nX+6qoaW01k9prRta633AFgJ3BQQW8iFW0YOBXxWrYnlc/tRTc0/sTTexttFgyQ03zC3oWoJ2TzJh\no9fVDjxc00Ld1jcazbDInqWsyI4O+Z27OiojDhE5yPr7Z4CJ2LgLOEtEBkXkMOBwwJ0xo1772vnT\nZmbm3DBfVYo7Fy6cO7xOn/WI6irC8/Om7JKVMS+qokIer2Ncwbx02b3S1RaziNxC0Hh3hIiMi8i5\nwCdE5Kci8iDwduAiAK31Q8AXgJ8B3wA+1LGIjNWrg0/IqFJcG34MG559dv5yAwNwxx3Nvy8hHGPN\nHqWhj+I7u4XoKDfHO+a7HVUq8D2H105Zo/IM4HivsC7CZWHOE5WxNmbyDTHTTPmNwMYilWqLSEeS\nVlrK7af8SY7d4J54ZoBrlOIZa5orvebszHCjg4OMNBr4R7tbuJ7EqLcfvvbIv56ewAxUCjgpyjC3\nLsZyfmm0UI6u3HEc9MILxSrnaeKyMPd2l+yhIS/KBXBxUFzTIcP4dRcDixPKNi3XsTG48spZ90IH\nGRFhZP36+WFy7Q7qumBBZwap7YMGcJcb/5zOLufxAOxRiusj01yykLO4Rakg7pkgCRPA3cw+ZB4N\np7WTSrQfKSO73EoR/eWcZY+oIbtcb1vMnpbZqNScvMEucNBTTzV/jyxZ0vZFG903Y0GPRqaVzVpL\ncI9uNDi60ZjTFfvwRsOLcodxPY65t33MnpZxLS/zVUrxG3vCxETbQ41F9y3O6v6/oLoebwnYecft\naXMGCMjrk+5w3dvCkTp6H7OnP7nggsKr+A0wcuKJLAIqz44xM8MnYE7YZSewR0ZpTosm28rrk25V\n8OoIBXVAlMFbzJ5+5brrCq/CWLUXF15TDkzui3vvZaQT20vjuefylYuzPqPT8lioprEvqWExzzq6\nbNxAbzF7ep47lWoOjWUoxV9rrO6dO4NPhTg1tNMJJ+QrZ0TQ7giVN+eFbS1nRXvkEdtO9PwrycJ3\nPVF+dzzaPM5zeoyYjUxPF1+xsbrjutOXiFOi3A7tZIXLYwG7Zv2WWB9vMXv6E9duasOTTzZ/2lEZ\nSaI8qlRgwXZL9/wix93ev7j1mGNgylVxPJKOc8mx1WX5mEVkTThi0y4RuTShzF+IyM9E5CER+R9Z\n6/TC7OkK7laKu8sKZVu2DJjrakkVZQK/8+8HB/n94GDHO6l0lCxRN+4KU66Kh2+SS6TkjjVlCLOI\nKOBTwKnAUcDacCQnu8zhwGXAW7TWrwM+nFU3R00aj+tsUGpu7pGVK9EPP4xU5Ao4bf/9S11fLis5\nZKTRmPNaX3vDYBYuuiAcpCRXxpuAXVrrXwCIyK0EIzn9zCpzHvCpcDARtNZPZ63UW8yetpiXEGrH\njspEGQiiFPJGKmTQsiiD20IX99pflcsl6sroUlps/BsSkTHrc761quXA49b/uFGbXgO8RkT+XxG5\nT0TWZNXP4avN4ymXVlwXaY2Ao0q51UjYqZFHouuuwzKvZ2ipiZQu2XlGbRogyE2/mmDwkO+LyEqt\ndaKl4S1mzxzyJvrpdIKjO5Xizna3uWZNaaLssajjLaLkqIwSGv/yjNo0Dtyptf5fWut/Bx4hEOpE\nvMXsmUNeUSrX45tNXDheHqaVYm/4O8sKzipj6Bvh7nFfdUk+5h8Bh4cjNj0BnAX8ZaTMHcBa4CYR\nGSJwbfwibaV5RjC5UUSeFpEd1rRNIrJTRB4Uka+IyOJw+goR+b2IPBB+inf98jjJui4Rp8FGg4NT\nhn6KDZezwum6gqr8vVWJcit+6or2rawkRlrrGWAd8E3gYeALWuuHROTjIvKusNg3gWdE5GfAd4BL\ntNbPxK8xII8r4yYg6qz+FrBSa/0G4OcEoSCGx7TWq8JP8WQJHk+bZLlkEt0bYThdEiZDXe1hc1U2\nwBVdd9ZI13l7CVZosZcVx6y1/prW+jVa61eFIzihtf4HrfVd4W+ttf6I1voorfXrtda3Zq0zz9BS\n3xORFZFp/2b9vQ9weFx2T7/yxynziviTm8n6N3Z+BLU5pIlWUTeEGe+y3XV0gQvE5Qa2Mur2fwBf\nt/4fJiL3i8h3ReTEpIVE5HwTfrJ3796kYp4OY17t7zev+FNTsHgxLF7Mt+yBbeu2FnNwXoronguM\nnHJKsQ2cfHKx5csiTgS7QBjrxuXscrlGMAkt5ru11isj0y8HhoH/orXWIjIILNJaPyMixxI4vV+n\ntf5NdJ02fgQTB5mZYXRwcN7kXmn4mlaKwR7Zl1KIJkByOFNcGSOYHCOi/2fOsi+rYQSTto+6iJwN\nnAacpEN111pPA9Ph7+0i8hhBC+RYCXX1dJLwhvwosNBhATNDNR3daMCOHbByZWy5LUo1Y5hGGo1S\nRNm5eOYixKUOLdIFugsiOlxOYtTWkQt7rvwt8Dat9e+s6UuBX2utGyLySoJYvdSwEI+7jHz3u2x4\n29vaHjGkExwd6RaeRJpbo116RpTjKCqqXZC7uauFWURuIeixMiQi4wSpAi4DBoFviQjAfWEExluB\nj4vIDNAALtBa/7qiunuq5rjjfKuupxqSMtclzauArhZmrfXamMk3JJT9EvClopXyuMG2wUG+A85a\nzJmuhBTXRrdSyojacf7kTnbrjqtPUvhcRS4RkyvDVVyum6dmTmg05icrcohMV0KHRNnupHKvUlxt\nR6zs3l3qtl4cfpq0E2/cykgjnUhYlFaXLohjrgIvzJ5Eau9AkUTOhOk/qbj+V8fkFTm+0eBCa+SW\ne1/1qlK3+SeNBn9iP5DKEK60oac6MVxUTXhhrhA77vZ+V4WkCzFJin7q4jFNiBaIiuTRFVv7F4br\nf3n4aWIJ2fEl12GPUuzp1DnpUUE2uCzMXX/kRxoNRpXirvD/MTt3zo4PNz4efOcd+r3PuUIp/hCZ\n9voXXqilLu1QV5TEs+H3FUrPx23lAAAgAElEQVRxWVIdJidh0aLC2zqo5AED+pU6RTcPXS/MkHJD\nekFuicvChxwEx/RxpUofzqd0jFujg/XcoBT7rP+5/PAliDJQ2mABHrfdBS7XrTCPKMUjLr6KO8bG\n0B0UdQUc4nDDX5MFCzr+8Fi/ZAkQPLzatWyq9n97snHZldHTwnxEo8ER3SAuNXN56K4Yeeopezid\ndCYn5/zthtwZUeYl3l+8eP6Arzt3ArDZeniNPvtsc/blbV5fVfu/Pdm4LMw94crwtMe8qIuhofzh\ncZFXc5fD6pKYl3z/uec4LVoobK+4+MQTGf3+94HgAbbnwAMLbXuvUiwNt78pPA+/Y9Yt96xSLOnC\nY9otuO5j7mmL2ZOPkenpubGx7XDGGXP/T0428xYDXKUUV5lsdd3EBUFK8dHvf5+XAi8FGBrioIKi\nudRa/pJGg0saDc6y5n+h0No9eXDZYs6VXa5qfHa5zhK1lHs650MXsUWpZk6Pa5ViIpy+vtGAqSm+\nunAh76zqXCV1h3Ygp0WUMrLLDYvoH+Usu183ZZfzdC8jzz8PAwNsXriw2g1NTMDQEDA76scrsBIK\nhfOYmODrSnFqnz8g7ERLfx09FgsWkBpjlFdA7S7OplffggWtCbPdE9AhwW4V2S+nw2DfvuwyJdO9\nR9XTPqF/+OKqhXD37qb4mkaye2xrfWKi+bPfRXke0RwRU1M8ARwTLQNBOXMsBwZmH3hZPPfcbFuB\nGedwxYr4/BTGBWVGNjG/7XoYiop1p1KGemH29CUrV867yf4/4KTxcR9jnkVUmBYs4LTow8sWSXuc\nwrSk9/Z67TDDFSvmr9fOyWzOY1ye5riu21FxbUVss7qIl4FIfmGuAXdr5ul+FiyYdyPtA7jjjtTF\nvq4UX+/C8LuOY4ulTVQkk/JdLFoUHwNu1mvPSxsDMG79VVi8Za9zv/3yfWrAC3M/MDk5L+64TjZd\neGHq/FMbDe/ayEtS5re8GeFMOTuLXKsuijzbcs0XbSzmbhZmEblRRJ4WkR3WtJeJyLdE5NHwe0k4\nXUTkn0Vkl4g8KCJvrKrynmwaSrHhgAPYcMAB8MADQU/ISy8NZp5xxvwwtyp48kn2KsXe0Aq+JEt0\nh4by+0n7nSRruFW3QRGr1/Vu+0k4LMx5H2M3AdcAn7OmXQrco7W+UkQuDf//LXAqwZBShwNvBq4N\nvz0dwOQCNpnP/hHr6btq1dyekLfe2pE6bV6+nPeHv3OF5lmNgp4UXLNCuwkRp49frppprb8XjpRt\nczrBkFMANwNbCYT5dOBz4QCt94nIYhE5SGu9p4wKe9KxcwFDhhBWYel84APB92c+AwQx0/sBL0+p\nxyaluOTqqwPr3TcKtk67jWKtLlekQa8IVcVSO9z4V2RPDzRiq7XeIyKvCKcvBx63yo2H07wwd4K6\nrYBQkCHo7bcfyd217Y4uoxdeyH4XXsj/xuzoveeFHSu69lW5U3TqnNc1/FQV23E8KqOKIxvXi3Fe\n90IROR84H+DQQw/NteJHlPJJiVrki0rx7gxhHGk04IQTYNu20rY7Z90xPKMU/zX8vTRS5j67K/fC\nhVzkz3k11P0Qr5seFeanjItCRA4Cng6njwOHWOUOBn4VXVhrfT1wPQRdsvNs0Ity6ySJMkREs6go\nT02xaeFCfhe3bguTyzh2fvhqbGds86LcIlnuBXt+v7+NOCzMRWp2F3B2+Pts4E5r+l+F0RnHAc97\n/3IXYEZ7aZPRsHv3SKMRK7omZeYiUvzeMzMwNhY0/oUNgBvrimcOw8ea7pYwmZHzZFnBSR1MoqSF\nwHVigNa0bZeBafzL86mBvOFytwD3AkeIyLiInAtcCZwiIo8Cp4T/Ab5G4CbcBWyB5htrYT5t58RV\nqr6Lo5Ns29bc3yuUSheIuONx3XX5trNqVf5oiMh2RjPC4GxfcqoFvGABDA/PCZe7/Pnn89WpbMKb\nsvkQyXsce4WskavrcoOU3fPP0XA5n12ui7hKKbde7YeDhFuj99+faAXH+po/8IE5jYSekulUtERN\nlJJdbnBQj/3xH+fb3u7dPrucJxmnRHn1ajbcfz+Q7JrYpBQvIcaSdlSUtVJIpK7XKMU6l457HsoQ\n5R4Xd8BpH3N3HfkeSTfoIrcpxa8AY0O8J0WMsiIu5pQpOsr2GWfAHXc0h66qcqQUOfLIedMOiSnX\nF/T6/dWH4XLVEU3M0g8+ZpvFi3n2t7+tZMihNCG2GVWKAZLHurP9yaUk4A8THnVk6KodO+ZNmjf8\nVL/gLeZa6d4j32+iDPDccyypcfNGdJNEeYNSjBwTZgweG+tUtTw20UT4Bjs7nN2Trp2QOZObud1Q\nuzjRz/sgKDsqw1HcfWR4aqEZ8ZIwLa2Rb/2JJwaCXIUoF8iQFzeC9zUmyiWjXNcRl+7TTlRkT4dk\ncU0TrQULisU/l5F0qQxKisoQkTUi8kiYuO3SlHJniogWkcyGxK4VZvumit5gnvbYZneRjjmmSaLc\njDXeunV2YtlvNIsWzRuZOy9xbpB1jQaXRaZ340jfnjYpKVxORBTwKYLkbUcBa0XkqJhy+wP/J/CD\nPNVz15bP4DIrvjV6g/Ust98ehJo991wlqz+h0eCEmOlZoXCxZRx+TfQ4SB0+7XJ8zG8CdmmtfwEg\nIrcSJHL7WaTcBuATwEdzVa2MmtVCm9ZTV3PmmZWJ8jzMGHAJlN7IVxGjSvEt/0Y1lzp77iWR1Y28\n7Pq2ZjEPiciY9TnfWlNS0jZrU3IMcIjW+u681etus8aMwtzvff4rYHT58tY6jTjMKfvvX3cV3KLb\n3mbsxsyyfcz5mEjpYJKatE1E9gOugmZK8lx02RmKYEa58KJcOmmi64QgT03x04ULeb1Vlw1KcSZw\ne/j/I2ZGhvXv6RLKFOXyojKykrbtD6wEtooIwDLgLhF5l9Y6sZW8u4XZ05c8rhQ3hr+/bFnvbweO\nnJ5m/X33ATD6trcF3wsXVvIwuUKp/mnf6EXK8TH/CDhcRA4DngDOAv7SzNRaPw80x0kTka3AR9NE\nGXpBmKemKrvxPAFN18UTT8CyZYwqVevxPqTRAKV4MXMbfk8wv08ImjBHGg2YmeH+wcFK6uFFuYsp\nqeef1npGRNYB3wQUcKPW+iER+TgwprW+q531dr8wezdG5SSl8bSn36ZU7t6D7WBijPdZ03IJ48AA\ndwHHxMxq9wGzUanETjaeLqKknn9a668RZNW0p/1DQtnVedbZNcJ8hVL8wfp/GnCsfXOEfsR7ly/n\n+HD6NeHN3HVJaBznJCzrNGTeSAimYbYk1j/1FACjBx7ISKPRUux6kvi2a/V7Ue4RfJfs4lzWaAQW\njkmKY1nK9g12vPXbC3I1REUZZpMfNXnta+GBB2YHVw3dC62OlBJ9IBu8G8FTCMe7ZLtbM2j2yTej\nYwAtuS6uCq0qp9Jl9ijz3BjRpPttDl112fQ0o4ODzQfyRvta6GKuUorfMdf6rtt331f0anY5ETkC\nuM2a9ErgH4DFwHnA3nD634U+mDZqN1u9kUaD8RY7CvS9IP/jP7JhZGROV+O6ku3Pi32emoKzzgp+\nhxnkDJvDsnMyY4QP5F5xI/T9tekCDgtzKSOYhP3FnwDeDJwDTGqtP5l3+bgRTKK5Grwl0UdYb0r9\ndN43KTVnUAHzgLq4j45BHkoZweSAA/TYCXEJCGK297Wvde0IJicBj2mtfxkGUbfN40rxQPg7zp/s\n6SEuDRNxXXnl3OmudRfuENGRXlpqOrVTecZh947NKmuvM63X3e7dsGJFK7V0B8ddGWXV7CzgFuv/\nOhF5UERuFJHYFMIicr7pe753797m9EMaDd5pLtAwveA1/ZbroAxhmplhg1J8PeXYXaVU0w9fB49s\n2sQjmzbNnxFmkusnazmOsxsNzs57DLIGSLWNm7yDqUZTiEbpVlE2ODwYa+GtisiLgXcBXwwnXQu8\nClgF7AE2xy2ntb5eaz2stR5eunTpvPkvsX6vKzo8UbcxPl54FaODg+wDTk25sS9qNGr1dR6xfTtH\nbN9e2/Y9XUaZb1ImKiPPpwbK2OqpwI+11k8BmG8AEdkC5M6oZDPnta7fXBmtWiLWa2a3ZH2zk9Kv\nf/75/swW2I8UGb2kTPrAlbEWy40hIgdZ8/4MmD+QWqusXAnQdy6NnyiVz0qwRHk/gpOaJMq2a2OD\nUtWN2nHddc2fVyvFF8OPYR/wd+HHi3If4croJeC0K6PQnorIS4BTgA9akz8hIqsIUt/tjszLj9Ww\nsPHhh7kchzqM2GOeTU6WIywRq3fkoYeCp2bWxRj2sDOWctooHEa4Tw3/rx8dLVztRC64oPnzwpg6\nuWzNe/oEhy3mQsKstf4d8PLItPcVqpHB9BjDwdhV27VSlrUXidkG5qS0TGRoCG69dc5yUWz3xvrp\n6dkZf//3bVTU07ekuRw64Y4ocxt94MqoBoe7SzrB1FTw2bkTPvnJRFHeEPU513FcIx1ImJnh6j5z\nS/U83Xa/9kHjn6ci7lGKH1v/DyXo+rxJKV4aTnuSbEu5FreBbd3s2jV33sBArHvD4zh1i28VPmZH\n8cLsIuPjMDTESS+8wEkxESnRjghx1D78k30TfTTX+JMeT2fxwuxpCcu/3jLDQc/Rkc9/fjYXRd6e\nXp7up0pfbx1hbVXhuI+5R45yh+mU0O3eDevWzfpoM7ZnojmAIO2myYncKzeTJ5sqz3WvXUdemHuM\nTl2gK1bM5jHOwTKzjKHERPUejxOU1fvPcYvZ3ZrlYeXK3k54MzPDly6/nA2Dg2zIMW7db6CZX8TT\noxx3XPBJIut+MDH4AGNjs8tMTgaftHQAk5Pz1791a77txtXTfOrCR2WUiDmRK1fCc8/13uuVzcAA\nf95o8Oc5i+dpFCzM4sXBcbd4VimWRLd9wQVzev95SiIcARzI9vnGudzsh/bw8Ow6TDx+Wlz+okVz\nhXRmBlavnr+NVmh1OR/H7CjmKTY21hznzxNwWydigz/zmXmTluy/f/O3yVh3xZYtswXWrKm+Xv1I\nVvfmJIvPtlSLCGMRkWzFGq3Ksna4S3bXCfOoUowqxXcPOIA9MUJ0bx90XNhgcmhELtj/6MTGzzxz\n/jTLgjYZ6+aM0/eNb1ReLU8LtPuKXpfboQqXgrGYHRXm7vID7N6Nsb3enPDa/opO1KPm8LOjAD4Z\nDhCzbRvcnZLAr6YQp5Hvfrfj2/S0iJ0839Bu7pduDKVz2JXRFUdys1JMAi8F3ppR9n8A66uvUq38\n+fT07E2we3fwPTXFGyPlfqoU+4Cj6+hk0kI0iacm4hqJ0xqO04S320QZnBZmd2tmYcY8u6jR4Njw\nk0Y0lWXZ7o0tg4NsGRzkO0oFVkenfd32TWCFx50UOS6vf+ihekTZUx3DwzA8zO/LuKZ7OaIpC58r\no02+/W1G//RPW14sLu3l8eecU0aNmpxntrFtG1sWLpz9XycTE/N6DI6+7nVzu2Tv3h2U6UbrxhMQ\nhrj9URnraiU3cpzbo5vxURltcvLJzZ8jjQYjhx/e9qo2fPazzd+blYKbbgo+RVm0iBnCvBRXXhlE\nLMRELXSEmG7c8/JkrFjhRdkhumrgh14SZYNv/MvPw0rxhbgZO3e2vU7bii51KPhVq/jrJ55gdPly\nRi+/3L3k793YINNHlDLwQ6vnOGvk6yTSLOasPM3g5nUoUncNEiljMNbdIvJTEXlARMbCaS8TkW+J\nyKPhd+xI2XEcGSZyH2k0eCk001uWxQtlWynLlnFo+NOE8jE1xSazna1bZ3tHdRoXbwbPLGeeOS+i\nZmOr12en4pCLNAq6eB06Hi4nWutiKxDZDQxrrSesaZ8Afq21vlJELgWWaK3/Nmkdh4jojxB2KQ5x\nzvrMwESOALwYuMyOnPB4PKUhSm3XWg8XWcfw8uV67EMfyre9yy8vvL1WqepxcDpwc/j7ZuCMrEqY\n57GxlLuNixsNDiVIZv8HYHRwEKamuE2pzvTI8/QE98dcK13li+4WHLeYyzDpNPBvIqKBT2utrwcO\n1FrvAdBa7xGRef0+ROR84HyAJcAU8N5w3kVdZi0bzgnrfYtS/BwYXbiQEXuMPY8ng2Nirv11S5fW\nUJMaSfJZl91m0uNRGW/RWr+RYPDlD4lIVh8QALTW12uth7XWw698wxu46IkneNUNNwQzJyfTF3ac\ntY0Gpu/U6OBgYD17PG0yundv/Iy4OOSsvBLtZoGzl02a1u42oiSJb5mi3OsWs9b6V+H30yLyFeBN\nwFMiclBoLR8EPJ26khe9CJYtg/e/P/hf1sjTNXJxo8FmpcqNAvH0HjmswMT2liSrcsGC5PUODLQW\nKRHXWJg0LW29LkYI9arFLCILRWR/8xv4z8AO4C7g7LDY2cCdRbbTrXhR9mTxSMzb1BcjPuUvZfmY\nbQvVRE+UESnRquXragRGEiVZzCKyRkQeEZFdYbBDdP5HRORnIvKgiNwjIn+SWbU2d8lwILBNRH4C\n/BD4f7TW3wCuBE4RkUeBU8L/HsLOKDMzcxsF6wqn89TL7t3zYvY3KcW7/+Zv5kz7edZ6qhLDMtfr\nmmCX1CVbRBTwKQJX7lHAWhE5KlLsfoLItTcAtwOfyKpeoaOltf4FcHTM9GeAk4qsuxfZHArx6OAg\nIy+8MDvDJBv39BcrVrD+xBPnTIob7OAy/+ZVPuV1yX4TsCvUQkTkVoKotJ+ZAlrr71jl72M2ziER\nd50sVbFjR22bvthuFFy4kNGFC2FmZrYziqf/ePWr665B/5LflTEkImPW53xrLcuBx63/4+G0JM4F\nvp5VNSfeL57dvp0vKsW7O2EZrFxZ/TZSuLjRaIbTAVwxOMhltvXs6S/qyq3SDUQbDMseySS/xTyR\n0sEkrl93bK89EXkvMAy8LbNqeWtWJUuOPbYzokwQrP/Z8FMXa6OdURYuDGbUmQTJUw/bttVdg+6h\nzMbF8sLlxoFDrP8HA7+avzk5GbgceJfWOrNzgxPCbNNsEDMjdJTMukaDc045hXNOOaWS9eflnEaD\nc2zXhlJB6s6JidTlPD1GnQMKxMUgJ2GPrt3qNtq1cltJS9oO5Qjzj4DDReQwEXkxcBZBVFoTETkG\n+DSBKKeHDptliubKKIPh4WE99sMflrfCJ58M4qJDrlGKaWbD10ZD8R/Zvh1WrUpej/0qZbJrbds2\nmxg/bvy7NvisUnPG6xtpNObtg8eTiC18WcLVbl5lh+KQS8mVcdhhemx0NN/2zj47dXsi8g7g/wYU\ncKPWeqOIfBwY01rfJSLfBl4P7AkX+Q+t9bvStunGkS6biKBF0yvmTpAUN+x7BRbOOaEQX7s8aDPY\nohTnleF3bnf8Nk9vEO3wEbVck0Q6mhrUXkfSdqLzHRLyWEpMlK+1/hrwtci0f7B+nzxvoQwcPnIl\nMjYWWMZFLpSqL7Rly/jr7duD35OTfGfhQt5e1O/uRbk/GBiYdTWk5UU25Wyxbee6NttK68ySVQ8X\n6NWef67y9WjD3vBw+z4yQ5qf7Pbbi63bsGpV8DnhBHaZbWb559LmF91nj3uccUbwMd2uDQsWzJ9m\nN5bFdac2LrnJydlrbWxsfpdrI+C2+NsuvpmZ/Plt7IcI1DvuYC/nynCRU3/5y/kTx8fhta9tbUW2\nnzfNL1eBLzj3OIJp1kcvDgfU79xxR/AdFbS8+S/sa2LZsvk93KzBfROXjbr4Zmay385sS9muQ13W\ns+Nj/vWkMMeNf9eyKEN+i7POlnVPf2FGPFm1CoaG5lvCU1PpYWVZ7Q7j48F6oy6HrKGjotOi5e3/\nab7ttG2ViemS7SjuPjKK8MAD83r4PZwRt/x1pfi6Ujxrl0uyHqam5vrqvMvA02kWL44Xt6xYX1uU\n4yxYE6WUlCHOfNsiameWS1rWJulNrtNJkLwro8PEhMAdmeEa2D/8fhB427Jls/63OKIXlncZeAxR\nkSqZZ04/HYCXm+u5isa0tJShSeVcatTLi8OuDHdrVjZxPayM+D75JE8ATwBvO/HEZFHevTt+Xp0N\nGB63qPjt6eXPP8/Ln39+dkKayyCOMq/VuHDSsqj6nur1RPldQ5wfeNky2LqVe086qTnmYGoKziTX\nRrdZCp7uxXZF5LVS7XJZSextd0VS8vs40YzObzcUL1qfKvEWsyPEtWSvXs2DwOmNBqfHuTuWLfM9\n8Dy5uTMchLcj5BWvOBdE3PBQpmxUyM00U86E5mVtr11x7VTjn7eYO89XleKdltB+USn2Ae+xxTe8\nAD+Y5H9evZrvhuOtvUEplvi8uJ4U7lEqsHSqbHO44ILg+7rr2l9HVPjytJlUnbeiDhyuf9s1E5FD\ngM8By4B9wPVa66tF5GPAeYAZQfLvwi6LHeWdMSL6nv/0n4If4ZP/swsXNke2jnKnUkwxm1j1PoIh\nCjyeJE7qxIO7iCB7ZunhOOYZ4GKt9Y/Dcf+2i8i3wnlXaa2rSQ/XJu+enuaewcFgWJXwSZkkyp9W\nijcAxz/xhHdjePIzMxP0yjvzTJ4991yA3nnL6sZ8GFn0ojBrrfcQZkvSWv9WRB4mPXN/vQwM8LKc\nRT/YaASNgF6UPa0wMBD0zBsY4BuhMK/tdB3SxLKIkLbjynBZuB23mEupmYisAI4BfhBOWheOCHuj\niCxJWOZ8M1TL3r1744qUyqhS3J0yv5k833QcWb06PZbZ5oEHyqiipxcIhWjt+97H2ve9r7bttzwv\nD+2Mmt2pbbWDw41/hbcqIouALwEf1lr/BrgWeBWwisCi3hy3nNb6eq31sNZ6eOnSpUWrkcrGsDff\n+pTXynOmpzlnejpo+DAXVE6LefTYY2HNmuIjo9x0U/DxdD+9eC47af12KlyuF4VZRF5EIMqf11p/\nGUBr/ZTWuqG13gdsIRhFthZuUYpbTFL8LF9fge6gI40GfOMbvAA0syi3MOjrC2EdN597LpvDV2BP\nlxPNDLhjBxx33JwiVygFV17Z4Yp5gNlcGXk+NVAkKkOAG4CHtdb/ZE0/KPQ/A/wZUMuw1KMmdIlk\nS3mDUpwG/Bo4KYzYuO1HP+I909NtnZA5CflbGPR1Ybjcxb3SUNSnbFCK9UuWwM6dbDzwQAAuD8/p\nzUcfzdl2jz3gMn++68NxH3ORx8FbgPcBPxUR42T9O2CtiKwiGCl2N/DBQjVsg9EM18Wo5W44ptGA\nmRm+ODgIhK8QRpS3bWv2GHxYqSDfxs6ds9nrQrfHZqW8qHrmXG+XR66Hs/314R69KMxa623ED91d\nSczyRqXmXexxjGa4LjYq1dzp5voGBuJH6ba6cTeTINnpQ8fGYHiYwcxa5WODeaCccw73fvazHO9v\n5p7mNqXmdnjydBaHhdndmkVYkzF/VKmm+yJJlDcoxSsJBDmPyGcyHIzPGB1TsF3WNxqB1fWZz3RU\nlK8KHwjXFGm47BCPmDqOj9dbEYM1qvm1KcdvQ3Te6tX8vKo6ebJxvEt21wjzsTmFKs19sQ9Ym7Ge\nrybdXC005nUbF4XHpKwHTJUcYeoYNxhCHQwNNX+mjUs/77rcujU1SiiJaaWY7oIHqPM43vjXNcKc\nxUijkWgpZ7k3bOK6cgOzLezj482k+k3yxju3wDwLy+M8uUdfL4Fn/PVRHIctZke75cxnVCneCnzP\nmvYaYO155yXmD7DFrfBNY5LvH3wwp0bXVVEPwQ1K8ZfMWmJVuzfuVap7/No7d7Y3XFiP8PKnnqq7\nCgFJw0R1Aw77mLtGmI2wvj1n+dEyRbkG7NfcV3Vom8c/8USHtlSc0de9jncRRtW4wurV6fm8y8Ry\nodRKt4pyD4fL1cL2UHDvJl1wu1GM62Z0+dxUJ81jaPILhzfhFUo5EYN7F0EeAGfogCjvq3wLfYQX\n5vIwjYDHJhW44ILeT41YUXKYOQ8zO9l7xCpyQZRHGo05b0X9QmYGiSoTB0XX3clRraPbLIrjFrO7\nNWuTW7ZsqbsKpbNHKfYYEVq2LHaw2dKxxXhiYk5YWC46kISmH9+KZsgQ53ZF0oz8nlmByGgnrmaP\ny4OPyqgW23LqxdjQn4cfJieDYesrCt3bnmSBDg3N+jQnJ4McDzYxF+/oYFndbjw2C8JP+SvOGC4K\n3BDisrbveBxzFz/uZjmt7gpUxHalmAG2hv/ftmhRdfHUU1PcTYqLyLBo0XxXhknYU/dN2wf8UR++\nJVSGw66MnriT7M4nb62xHmXzPeCixx7jzfbo3C2K3zVKJXYcGQ8t3xvarF8acwIIZ2Z4JLSgj/DC\n4nEBx33MPSHMNt9jNqTOvJp/g/lJZZwkjMsdffTR2Wm2KLdBWm++g808pRhpNOa7KFoh8sCYM8Dt\nwIAX5Bh+oBRv9selPrwwdw67QSgzgsM1du4MvkOh3Fww6mCjUlx+5JGz7o+pKa5ZuJB1CRENLkRb\n9BNelGvGC7MnjauU4jcx04umEp33lrBgQWBBh63vI9PTwfRODOPjmccmpbjEOkcblGL98ccH6WaB\nq8OH54VewMvH5MpwFHdr1m188pPw0Y+2tehFoQXbtPa//e3i9ZmZCTKwWa6QTUrxO7uMuTAdvkB7\nmUsightNanSheXCWydTU3POddu7tBt3JSVi0aO78uGlx68jaTh14H3OfkFeUw4vZpNqMs5Q5+eTi\n9RkYmOefNkLwVaWSkzV5amWLUpwXnhsTcvhiSnQztduFOk6AJyayhdk1QbZxWJgrq5mIrBGRR0Rk\nl4hcWtV2XOG2vP7g8EK+qNFoptscmZ7mL6qqWAwd6J7iaZPzLAE2GRNL9/1HxyPMu0wvUWIcc5bW\nicigiNwWzv+BiKzIWmclwiwiCvgUcCpwFMFwU0dVsS1XyD0SxU038ViY1L/ZADcwMDtCSgc4xFvL\n3UWrvS6zyNtRZGAgPUa9jJzYSYLfiQdBCcKcU+vOBZ7VWr8auAr4b5lVa2uHsnkTsEtr/Qut9R+A\nW4HTK9qWc3wxzXpes4a7gFeEn5d2qE6eLqbOTHJpIl6GmyJJgJPWnafbeB7KS5SfR+tOB24Of98O\nnBQOZp1IVQ6g5cDj1qCPbqEAAAPoSURBVP9x4M12ARE5Hzg//DstSvXWECHZro0hYALgI/2VjKe5\n332E3+dy+ZOiK9i+ffs3Ram8T7wFIjJm/b9ea319+DtT6+wyWusZEXkeeDkpx6cqYY57Gug5f4Id\nux5ARMa01sMV1cVJ+nGfoT/32++ze2its4YRzUum1uUsM4eqXBnjwCHW/4OBX1W0LY/H46mLPFrX\nLCMiA8ABwK/TVlqVMP8IOFxEDhORFwNnEeQ193g8nl4ij9bdBZwd/j4T+J9a61SLuRJXRuhHWQd8\nE1DAjVrrh1IWuT5lXq/Sj/sM/bnffp97lCStE5GPA2Na67sI8oT9q4jsIrCUz8par2QIt8fj8Xg6\njLtdXzwej6dP8cLs8Xg8jlG7MPdL120R2S0iPxWRB0xMpIi8TES+JSKPht9L6q5nEUTkRhF5WkR2\nWNNi91EC/jk87w+KyBvrq3n7JOzzx0TkifBcPyAi77DmXRbu8yMi8qf11LoYInKIiHxHRB4WkYdE\n5MJwek+f605SqzD3Ydftt2utV1nxnZcC92itDwfuCf93MzcB0fjQpH08FTg8/JwPXNuhOpbNTczf\nZ4CrwnO9Smv9NYDw2j4LeF24zH8P74FuYwa4WGt9JHAc8KFw33r9XHeMui3mvu66zdyumjcDZ9RY\nl8Jorb/H/PjMpH08HficDrgPWCwiB3WmpuWRsM9JnA7cqrWe1lr/O7CL4B7oKrTWe7TWPw5//xZ4\nmKB3W0+f605StzDHdWdcXlNdqkYD/yYi28Pu6AAHaq33QHCxE6TP6DWS9rHXz/268LX9RstF1XP7\nHGZKOwb4Af17rkunbmFuuatiF/MWrfUbCV7rPiQivTRubDv08rm/FngVQYbVPcDmcHpP7bOILAK+\nBHxYax2bWtwUjZnWtfvdCeoW5r7puq21/lX4/TTwFYJX2KfMK134/XR9NayMpH3s2XOvtX5Ka93Q\nWu8DtjDrruiZfRaRFxGI8ue11l8OJ/fdua6KuoW5L7pui8hCEdnf/Ab+M7CDuV01zwburKeGlZK0\nj3cBfxW22B8HPG9eg7udiP/0zwjONQT7fFaYOP0wgsawH3a6fkUJU1beADystf4na1bfnevK0FrX\n+gHeAfwceAy4vO76VLSPrwR+En4eMvtJkPrvHuDR8Ptldde14H7eQvDq/r8IrKRzk/aR4PX2U+F5\n/ykwXHf9S9znfw336UECUTrIKn95uM+PAKfWXf829/kEAlfEg8AD4ecdvX6uO/nxXbI9Ho/HMep2\nZXg8Ho8nghdmj8fjcQwvzB6Px+MYXpg9Ho/HMbwwezwej2N4YfZ4PB7H8MLs8Xg8jvH/AyAGqI+9\nHnI8AAAAAElFTkSuQmCC\n", "text/plain": [ - "(,\n", - " )" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -223,7 +224,7 @@ ], "source": [ "%%time\n", - "trajectory_contacts.residue_contacts.plot(cmap='seismic', vmin=-1, vmax=1);" + "fig, ax = trajectory_contacts.residue_contacts.plot(cmap='seismic', vmin=-1, vmax=1);" ] }, { @@ -246,8 +247,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.13 ms, sys: 618 µs, total: 1.75 ms\n", - "Wall time: 1.28 ms\n" + "CPU times: user 14.2 ms, sys: 4.48 ms, total: 18.7 ms\n", + "Wall time: 14.8 ms\n" ] } ], @@ -272,15 +273,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 3.17 s, sys: 50.4 ms, total: 3.22 s\n", - "Wall time: 3.22 s\n" + "CPU times: user 3.3 s, sys: 49.9 ms, total: 3.35 s\n", + "Wall time: 3.36 s\n" ] }, { "data": { "text/plain": [ - "(,\n", - " )" + "(,\n", + " )" ] }, "execution_count": 10, @@ -289,9 +290,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nsVj6iP8LRtzz+wzT/n4AAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -338,8 +339,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 6.4 ms, sys: 2.96 ms, total: 9.37 ms\n", - "Wall time: 7.05 ms\n" + "CPU times: user 7.53 ms, sys: 1.97 ms, total: 9.5 ms\n", + "Wall time: 8.1 ms\n" ] }, { @@ -616,8 +617,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.81 s, sys: 8.27 ms, total: 1.82 s\n", - "Wall time: 1.83 s\n" + "CPU times: user 2.29 s, sys: 17.7 ms, total: 2.31 s\n", + "Wall time: 2.32 s\n" ] } ], @@ -636,8 +637,8 @@ { "data": { "text/plain": [ - "(,\n", - " )" + "(,\n", + " )" ] }, "execution_count": 20, @@ -646,9 +647,9 @@ }, { "data": { - "image/png": "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\nNTI3B6tWzU9L0giJzLZD6EM1NTWV0w/b8ZekpYixsV2ZObXYfP4yVpJqzqCXpJoz6CWp5gx6Sao5\ng16Sas6gl6SaM+glqeYMekmqOYNekmrOoJekmjPoJanmDHpJqjmDXpJqzqCXpJoz6CWp5gx6Saq5\nRYM+InZGxOGI2Ftq+8uIeCIi9kTE7RGxpmjfFBH/HRG7i8uXBlm8JGlx3fTobwQubmm7F3h7Zv4i\n8D3gU6X7ns7MyeJyVX/KlCQt16JBn5kPAD9saftWZjZPjvoQsGEAtUmS+qAfY/S/D9xTun1WRHw3\nIu6PiAv68PiSpB6M97JwRHwGmANuLpoOAhsz80hE/DJwR0S8LTNfarPsdmA7wMaNG3spQ5K0gGX3\n6CNiG3Ap8DuZmQCZ+WpmHimmdwFPA29ut3xm7sjMqcycmpiYWG4ZkqRFLCvoI+Ji4I+B92fmy6X2\niYgYK6bPBjYDz/SjUEnS8iw6dBMRtwAXAmsjYgb4LI29bE4C7o0IgIeKPWzeDfxpRMwBx4CrMvOH\nbR9YkjQUiwZ9Zl7RpvnLHea9Dbit16IkSf3jL2MlqeYMekmqOYNekmrOoJekmjPoJanmDHpJqjmD\nXpJqzqCXpJoz6CWp5gx6Sao5g16Sas6gl6SaM+glqeYMekmqOYNekmrOoJekmusq6CNiZ0Qcjoi9\npbZTIuLeiHiquD65aI+I+GJE7I+IPRFx7qCKlyQtrtse/Y3AxS1t1wL3ZeZm4L7iNsAWGueK3Qxs\nB67vvUxJ0nJ1FfSZ+QDQeu7XrcBNxfRNwGWl9q9kw0PAmohY349iJUlL18sY/emZeRCguD6taD8D\n+EFpvpmiTZJUgUF8GRtt2vI1M0Vsj4jpiJienZ0dQBmSJOgt6A81h2SK68NF+wxwZmm+DcDzrQtn\n5o7MnMrMqYmJiR7KkCQtpJegvwvYVkxvA+4stX+02PvmfODF5hCPJGn4xruZKSJuAS4E1kbEDPBZ\n4M+Ar0XElcD3gQ8Ws98NXALsB14Gfq/PNUuSlqCroM/MKzrcdVGbeRO4upeiJEn94y9jJanmDHpJ\nqjmDXpJqzqCXpJoz6CWp5gx6Sao5g16Sas6gl6SaM+glqeYMekmqOYNekmrOoJekmjPoJanmDHpJ\nqjmDXpJqzqCXpJrr6sQj7UTEW4BbS01nA38CrAE+BjTP+P3pzLx72RVKknqy7KDPzCeBSYCIGAOe\n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\n", + "image/png": "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\ndAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -677,8 +678,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1.66 s, sys: 3.27 ms, total: 1.66 s\n", - "Wall time: 1.67 s\n" + "CPU times: user 2.11 s, sys: 9.41 ms, total: 2.12 s\n", + "Wall time: 2.13 s\n" ] } ], @@ -694,9 +695,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -758,9 +759,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nHMXY7/sAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -850,8 +851,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 7.13 s, sys: 30.8 ms, total: 7.16 s\n", - "Wall time: 7.17 s\n" + "CPU times: user 9.58 s, sys: 82.9 ms, total: 9.66 s\n", + "Wall time: 9.77 s\n" ] } ], @@ -867,9 +868,9 @@ "outputs": [ { "data": { - "image/png": "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\ncf4/KaGPVse8J6cAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWYAAAD8CAYAAABErA6HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJztvX+0HFWZ7/15so+cjAkQ9CBBIBNU\nRH44BDmD8AoSX2AEFyPOvTiSWSowSGSumYsM+A5MzByPMQtGzPAyEy8YFILeGUBhBIYrMMg1Yu4L\n4okEDBIkOHE4EAJBfnjAc5zT2e8fVbt7d3VVd3VXVdfuPvuzVq/u3vVr169vPfXsZz9btNZ4PB6P\nxx1mlV0Bj8fj8dTjhdnj8Xgcwwuzx+PxOIYXZo/H43EML8wej8fjGF6YPR6PxzG8MHs8Hk8GROQ6\nEXleRDYnTBcR+QcR2Soij4rIe1qt0wuzx+PxZGMdcEqT6acCB4WfpcDVrVbohdnj8XgyoLW+H/h1\nk1lOB76pAx4E5onIvs3WOZBnBTtlaGhIL1ywAGa1+ZwwvRZF8q9UJ5j6aN3+vnSyHSh331sdf63d\nOTdJFL0PRR4De93RHrwijfuW1Mu3nfppXb+epOu8wP3euHHjTq313lnW8Q4R/XrKebfDY8CkVbRW\na722jc3tBzxt/R8Py7YnLeCEMC9cuJCxhx4quxr5MT0NA00ObavpWbdtMNuIK+tknUXV2d5O0dtI\nw+QkzJ5ddi06x9TfPu8Q/Lf3yxxvez57Hvt8xJ0b+zh18ZiJUr/Kuo7XgU+nnPcLMKm1Hs6wubgn\nVNNcGA7cBX1IK3HpVHzSCFfc9Kxi1+zmTEN0uaT1uCDK0DuiHBVOgxFb+4Fqi/BkaPzNnVtb1uxz\n0rmOOzftHCdXHrrlMA4cYP3fH3i22QLex9xLlH1hd7r96HLdeFvIY75eYXKyJsQDA7XjO3t28IkK\nrCk3zJ4NExPBx16P+d3seBmhbyXSZV+7EYRA/NJ8cuAO4JNhdMYxwCta60Q3BniLOV+yugw82Uh7\nzHvt3JjrKuqKsKfFWc5xroyBAXj55eD/0FBtmr1e28I2GPGdnIy3pHvQIs7LAy4iNwKLgSERGQdG\ngDcAaK2vAb4HfAjYSuBFOafVOt06kt0+uXn7gnvswvQk4IrIREU3Wicj1LafuJlQmv9GkCcmAndG\nkkFhr8P4rG0BN5a6md5j5CXMWuslLaZr4DPtrNOBq8+i2zdDmQ10Ltz4LtIvxyaPBtM4IbbLjFja\n7ou4Bj1THl3e+JjtbSW5LaLuDbP9HsbleKE+uAMKIu6Gyks0+kF4iiLrscnjHLl6juOEOu4BkBR9\nYeaLE1/TIBgXzRG3nmh5XP0cRvDC3D/00IVXGHGRAC4dF5fqkjdxkRJxIhr1Eac5JklRMrZgG9dF\n1J3Ro5azF2ZPueQpoK1CqMqkX9wgSTSLI7ZJOg5m/jg/dNLDNhqnPDFRvx1jYad5EDh2flwOSXPj\nKO3aVWvtdejEJVK2pegbJeNxfT+zClO0kS5pXbala/4nrceez54/KrZGgG2/dFSMXT/+EbzF3IpZ\ns3rrdajMC7DfYnCLoNWDsyzLrQjfd7SxL+6NxkyPdiKxewjGWcy2wNvCu3Nn8G2H27XCMWvZ+5j7\nCTuWE8p5mDh0cZf+5pBE0R1Y2ll/Xr0l4+qQFLuc1g9sd72OLh/1U9tltiDHbS8O164RvDD3D+bi\ni8sl4DJFCWgv7Hscnda7k+Xy2lY0LC5pXlskbWvXJhqBEe1c0qwecdvu0evAZWF22f/tPr1yQfbw\nzeMJSbKejcjGdaW2l23VrTpunTam0S/6EIj73Q6tunwXSBe7ZLeNv1vbJcurKXiBTMIfnxrtXGPN\nQheTojjiul/byzfrjGKLdhZXXjvnu4Brw3Ufc8sHgogcICI/EJHHReQxEbkgLH+TiNwrIk+G33uF\n5W0PoxKLq41czRqUWi3X7MJydX+7hbfqazTzLSd1KrEF1xzLqDVqh7YldcM280FgJU9O1j5GrM22\nosmT2t3Hdh4+BVwbkvJTBmks9WngIq31IcAxwGdE5FDgEuA+rfVBwH3hf+hgGJVYunWTNuvl1A4u\n9Dbz9C92Y5wdVdHMTWELtD1/tDzOfz0wEFjJ0Qx10Xmi6+ohelqYtdbbtdY/DX//BnicIPv+6cAN\n4Ww3AB8Jf7c9jEqpNIsFTUMPXpDOkvexTMoX0avEWbZRS9r+RCM3bEG3fdNR6zopttlel1kuqYGx\nKHI8fy4Lc1tHU0QWAkcCPwb2MTlFtdbbReQt4WyphlERkaUEFjULFizooOoFE/d6FlfW7gXZK5Ec\nZVB01Ei/HfdmYW1R7OnNfMO20McRtdi7HaGUs5/ZVVI3OorIXOBW4LNa61ebzRpT1jCMitZ6rdZ6\nWGs9vPfemYbvKoZWYUmd4EW5NS5atO3WKY99iFtHUlmcAWETdVPYPuO4uGg7Vt8uj3vQdepjblbf\nLtDlRPltk+poisgbCET5n7TW/xIW7xCRfUNreV/g+bB8nDaHUXGauAvUhA7Z3VPTELVu0pDWck+z\nnOu4KMrQWcNWEdscGIBt24Lfc+c2dvRIs+20DWnRazupPnGdV5IseXs90VA7208dtf7zigSJ0NMW\ns4gI8A3gca3131uT7gDOCn+fBdxulbc1jIpz2JaE3fhh93KK6zWVhnajOjq13HtJlKPWmyfAtmzN\n76Gh4BOX4D4pxtieJ45mERqtiG7TFuOoRW27QFrVy8xjh/jl3NPWZR9zGkv9fcAngP9bRDaFnw8B\nlwMni8iTwMnhfwiGUfklwTAq1wL/Lf9qW0QvwLiGizyJi/tsh3YEOIn169vbpuuYB190fLqyKOoB\n0e56baPAfN9yS/CZmGgeVtfOcRwYqB/zrx3M/RC975rdh3Y0h/nEJTErOITSZWFuudda6w0k1+/E\nmPnbHkalyvQ0jI8Hv41V0C6dPFWbvfYn+eA6JQ8/9eLF2daxbRssXJhtHVlIc7yhOyKdpmNGXnS6\nXvt4ffzjzdfV6TY6udfsbUbD8uyYaTNPXFieEeQ06UtzNLpc72DigHliMTDQvmAU4c+L+rUg3l/W\nqoU7jqy+3zz2Ny9RbpXMqVWEQDvLFEVcNIML/vk4l8DkZDYBLZpofZMiOCA+Q130vopa73ajZA64\nnI/CLWFulyJvoGaCm9RKnYY8LOY81pMHeWcUi7OoZipxjWG2WHVyjNLeL3ncV3GNfPZ/W5CNWyap\nETFuvTngssXs8kMjHVn8ge30+rPL7AD9vLbZbP7oK2GcNZ80v4s0C/sqq97dcGW0g/2QMsdk587a\np53j1ErM7WvGuBay1t3+hsbu4va85i3AbihMehvNWZh71sfcdcyJMUOrNyPPp3qaMKOkee1ojbTb\njGK/6tm/4+ZvFsrULYsoC0nuDVcfJmUcr7hzOjTUuh7NQtTSbC/LfjYzaOx7OuqmsX3S9j5E3R85\nngfvY24H+8B305cW97qUxj8a1zDYiqT12hdg0Qn4XbAI44i28OdxXPOqV7fpNH69E8s/r/2LeyDY\nYm3f0/Y5Nr7j6HUfHV0l5/PghTkt0RPpmlXXyTwGl/ynZVvMUZIspLTLQvtRHq2OQV6+/E6OdSeN\npi7QygUY12huR2VEl+/kwdQGXpjbwZWLr1OLJQlX9gvyq0tU9KLHJ+3xyrMxNSoE9sOwnTecNHVJ\n8yDJc5+62XjXCXFROq1yaSQ1EtrLFNDgbbpku4pDauEQcekU425mlyIkyqBVi3knbxR5hhMW2KIP\nFOtyyvIKn9VP3OpNImm6nUzfWMVmXrssLhQwaR8KfMh4i7nXiF48hk2bYP/9a/kKhoeLq4MdrB/1\nt4+PB/XoJwryI3aEC66eJOvymmuC34cfDscdF/xup75x8dp2Q3uzh2OrvBh2PaPLR10VzdwWcVEd\nSdvPgBfmosj5RNURd2EuWhR8z5tXzDbjth/XCNqN7XcTWwi2bYP584PfefjkOxHZ6PxZrrM49050\nG3FlcdvcubMmxu94R2f1iXujSJOwKKncGA7R/UkSbPMdfTjYIZ62iNuGiW/86xGKEuW4fvumHGoX\njX1Bd9PKKjpqo9vYx63TXolJbqU8zkmeXfDTNurFbXNoqPZQjgpsWrdaq+s0KUw1KZQxGv5m1yFq\nnceJdZxw2/syd25hyfi9MPcaSTdiNKNcgaE8ibjwmm1o1SU7LXZUhk076y3qmJQVJRT3qr9zZ32P\nuej0NLSaLylMtdlycYIaJ9Zx8f5prufo/Dngehyzuw2TZXY2SNq2ubCeey74QKMVndc27Vc5m4EB\nGBvLtq28SJOKMa6XYpJ/cXq61j3XlYcPlFMfs01723Pnwp13Bh9z/UHr67Ud8rzv4s6z3RjYbMxC\nk/O8qLrRB4nyu4pLFmEUUy/jA4XmPfSiNNu3pFfeOOsia6Njp8c4jb80SlS4m807d262jkVFXDtl\nXovR4zswAKed1jhfOz7hVmSN6DDrsCMwTJn9hhUNo4uK7ty5wRvCvHm15aI5qDPissXsngJ2IUym\n4zrYXUqj09N2x07arzT7a1sbZaQe7cR/2+55zOI6cPWBnheTk/Dyy8Fvu4HUJmuHljxi9aPuCkOz\n3BdxD3zjtimoTcULcyd0q4GrHSvWWHNZ+u/nYd240viXxmL24to5cddfEflj4hrukmhmWET/2wKd\nZEzYVnTU4IkmVMojwVJIz/uYReQ6EXleRDZbZTdbo5lsE5FNYflCEfmtNe2aIiufC1lf3XpRSPLK\naZu377XMdoVewIhdmcepmWHRLAwuLhrDlCclybfnM/PmeL3llV1ORE4RkSdEZKuIXBIzfYGI/EBE\nHhaRR8MRoJqSZi/XAWuAb5oCrfXHrI2uBl6x5n9Ka70oxXrdph3XQq+Rl8WdNkSr1ynjARy3zbR1\nKKq+7aw3KVopakkn9fqzly/oQZRHw56IKOCrBMPrjQM/EZE7tNY/t2b7PPBtrfXVInIowfB7CzPV\nTWt9P/DrhEoJ8KfAjWl2oqdI6z/ttvXSz1alqwJfRr1sa9OQ97lvZ33tinI0+mJ6urFbdnT/kixi\ne76cG/9ysJiPBrZqrX+ptf4dcBNwemQeDewR/t4TeLbVSrM+NI4Hdmitn7TKDgxN9h+KyPFJC4rI\nUhEZE5GxF154IWM1SqLdV6s8LiqXxCuvV8sCbrrEbXQ6vQyixzevWOV252s1b9yxs90UduSSbSkn\nPXSiQhwXOpiRtKIcCvOQ0arws9Ra1X7A09b/8bDM5gvAx0VknMBa/stW9cu6l0uot5a3Awu01i+K\nyFHAbSJymNb61eiCWuu1wFqA4eFhnbEe3SHrK2KzqIx+oRP3RjeOR7sRJM06S5SBaRcw8b3z5qVr\nqDNkidRoRdwxa0ZSAnyzfFIoXY6Nf9BW499OrXVSjGrcaqJ6tgRYp7VeLSLHAt8SkcO11ruSNtix\nxSwiA8B/AW6u1kbrKa31i+HvjcBTwDs73UYq8u7YETc9+trVqQsjj0a3uG2XZe0ldRaJC31Kw8BA\nbZDObhNnnUb9pN10XUU7WJhMbcYCTfOWEWdlpq1/nG84jiRrOakuSbHwaVw2OUcj5eTKGAcOsP7v\nT6Or4lzg2wBa6weA2UBCF86ALK6Mk4AtWutxUyAie4fOcETkbcBBwC8zbKM1WZ+gaRr4zMfOOmfC\nedq5We00iFnq22mjkCEvcUnzatlJ3cqOPLBJ4wPtZF2tSMpXYYS5nY5NNmlC3dIuZ5dHXQ5RzL0S\nfchF3RS2gJvlCiInYf4JcJCIHCgiuwFnAndE5vkP4EQAETmEQJib+m/ThMvdCDwAHCwi4yJybjjp\nTBob/d4PPCoijwC3AOdrrWMbDnsW+6Jr5wnuitBA+a/lSTGvEHScyDsMz95GkugnnZ8865HHQznP\nh1bUXZNl3a2s4KhREmfJ29u3xTnu7SUjJlF+1i7ZWutpYBlwD/A4QfTFYyLyRRH5cDjbRcB5oS7e\nCJyttW7qvpUW07vC8PCwHnvoobKrEU+3QsJc8GOWRdSX2MlxKPL4uXJubB9rUn3KrGucXz7qooiG\nydnRG4Ykt0eIKLWxic83Fe8U0f+Yct5TIPP22sXdJEZlE/e0tl0XnVoWWS0zlyzvrMS1vndKkeGN\nroiy/eqfRDsNgnkR9wZkXH2trF0TRmcsattNaKa7HS5XCP0nzDt38qJS2dcTvYgmJmoNU1mS7aS8\nyX+btA8uiERexIVBFbl/RbhIusXs2TB3Lrcrxe3Nrm8j4GmwM9SZeOMNG5Lnj1vvzp1B+c6djefS\ndvUlNa6atpvoPFGhLuD68MJcAL9VipeU4jdK8VulmDKfffZhLjDVqTiff37t98QELyoVCP369cHQ\nUgMDcMopwadAfu/II5MnHnNModvuCebNY7t1jn+lFE/m8UBul8lJtitV/TxdcB1Or1Q4vVKpibOx\nOG3L0iQ6sjGiaouxSR87PQ1btwafzZsblzUYEbbXeeedwXdcmk4zT7MoohLfAF0WZu9j9jjFnUpV\no/PHgT+uVMqsTmncqRRmzx8FdgEj0WNh566O+nejKTeNe2Fiot7POzERZHEzb4NDQ/URE/Y6TKL+\n6AAJcdsz5WlcK1F/su0KiWlgz8PHfLCI/h8p5z2pBB9zj77XefqV0157rXozHllgqFRHjIeRoQUP\nhLtKKaJ25EilwqhS9eIcdQMY4hpRzW/bBWcvb4+MYrsN7HVE03DaQhrdnvnfSqzjXBTdcGvhtrvA\nrbqFT+3LynglLYjLlOIypbg13KdRpWD+fNYoxZo+2s/csC0kV9KbGvbfv3BRHlWKaHcwI8oNN2ur\nIdDS0K4rIS7WuFVjZJzoOoDLrgx3jhJUn8i/A5ie5qrBQQAu6OHX2UsjdTcWz7IyKhNyg1LsBC5y\n/LiuVIoVjtcxT0bDB7URZnOtmPI/aHeFccIZ7TCTRNy0qMuhHZdFu3Qh7M/lfMxuCXOIuSB7WZBd\n5iyXj6t1Qw4BX1OKPwX2KrPOGzbAvHlcccQRAHwu57qMxrw5GSvZJtX7lT3KdZxwJoldNGF9nJsi\nKd48KTY5iTSi2wVR9sI8k/nsZwH4zj/+Ix91WRBdwboh/8KV43XccUBOgnzxxcH3V74CpBNl0wPt\ntDTbjwvjTGMZR0PbIJ0/OO120jwcuowX5ja5VinOq1SqN0TT2ErHueIfg/5F0Zv64fDGO7JSYZVS\nLHdFhDzFEgoypLeUd0E5Lp08BdQRMbZxq4GtHveOFgSiDKx84AEAVpRZmYwkWVlHWuVliPIVSvG6\n9b8hFMsBrlWK9xNkHnexfllIK8qm3JM/3mLukJnU8NNt8vaTFoF5QL/RkeiVK8J6fK5S4UmlOKiD\nY2iEdxbJjXxEyrtCt3LCOILrPmaXrfliuPzy4ta9YUPN7fKpT8HixaxUipVK8YRSyaFJd95ZXJ36\nAFceIp+rVKp16USUV1nCa4vyqFLlijL0dnf1DnE5XM5pYb5CqaqV8uMOrCYjijdby162fHlu9Wvg\nuONqfvGvfx3Wr2fFU0+x4qmnOLhSSb7w160DKC22eZUjFmk/8wOl+GSkzLsuysVlYXb6EWlbSu/t\n4GJdcXw45OD69dWyaFxx4Sxc2HqeW24BYFlJN+QbS9lqel5Qir3DY/OIUhzhgHBVG2zHx1t2Ork6\n9Offb5XZomyso9hu157CcNmV4bQwZ8YSZE8yFzouBntb9XNBlAFOMz9S9AScBEyKnzh/ctTXzMUX\n10VvdIUZ6GN22V2QZgST60TkeRHZbJV9QUSeEZFN4edD1rRLRWSriDwhIh8squIdMTHhM7N5cqHl\nA+KMM4IPYEYijvqT/5zAMhqpVOot5U5EOevIJp36mLNmh/PZ5WJJcybWAWuAb0bKr9Ra111BInIo\nwZBThwFvBb4vIu/UWpdi5qwMbwAT3XHDnnty1iOPlFEVT97YPdxK5EqlqtbwADVX2crvfheAXeE1\nGPUnzwW2kmOoZFmWbtbtlmih97QrQ2t9v4gsTLm+04GbtNZTwL+LyFbgaIIxA7tONNzO6a7InvYo\nWZRvVIolK1bwKvF+YXNj/Y56Ud4jLJ8NfMBfj6XS08LchGUi8klgDLhIa/0SsB/woDXPeFjWgIgs\nBZYCLFiwIEM1PDOZB0LBO/app9I1tObEEivKxojuyNQUDAzUWca2KDvdsJeU8KgIizbLenMeWspV\nOvV/Xw28HVgEbAdWh+Vx+xqbiV9rvVZrPay1Ht577707rEZ7rIrGEp99NjeGI6F4epNjKxWOrVS6\nKspVpqfrxHZ0cLBOhI0o70Z4o4U+ZyeJ8zEX5WbIMi5hTnVK61922cfcgNZ6h/ktItcCpofEOHCA\nNev+wLMd1y5nlu/YUX9i161jybp11TjiKgkjJ3gcJLyJrxocdCYbYdSf3PUQzbLIK7KjS37nno7K\niENE9rX+/glgIjbuAM4UkUERORA4CHBnzKh3vauxbHq6GkcM8K9KcfucOfXD68yQEKKeJDw/R5dd\nj5CoKOftvni6C+MKdkyP3SsuW8xpwuVuJGi8O1hExkXkXODLIvIzEXkU+ABwIYDW+jHg28DPgbuB\nz3QtImPx4uATMqoUV4cfw8qXXmpcbmAAbrut+veNBANe1o3SUGJIjyee6Cg3x5ZklT6Q4E+uEl47\neY3KM0C/dz7oHi4Lc5qojCUxxd9oMv8qYFWWSnVEpDNJnKWSmBTJesqfOFNeO3ucaYIu7C9aZWU0\nrv0byUmIIPA7j1QqDWP4ecrF9SRG/f3wtUf+9fQF9kClZYryaEx88h/RaLmbDiV7RFeQoit3HPu+\n9loHtfXE4bIwu+z/zs7QkBflDLg4KK7pkGGiHuYB8xLmrVqwY2Nw+eWxWdw6YWVElE1d4twpIyKM\nrFjR2O2900FdZ8/uTsO0ayOUF8CslJ8y6G+L2ZMJV6IJtivF2oRpzSIxqlb08DAMDzNyySXZKrJm\nDVBLNpRK5Keng84oX/gCECRhgiCMyTxkngzLOkklWhgzICrJZYvZC7OnDpMC1KWhrvbdsQP22QeA\nkb32im/ETUF03+KiJ4wFHCWu08gs0g3msCQmCdMR1nSnBHmG4H3Mnp7CJUGGIBfFq3bBzp0dDzUW\n3bc4Af5/oLFn2pYtdfOPKsXIVVfBsmUd1qQee2QUu6xugIC0PumieuvliSN1dFmY+9vH7CmX88/P\nvIpXgZHjj2cuQeKfQpme5svQEHY5ethhjSON5CTKUD8ySrUsmmwrrU+6XcErIxTUAVGGHg+X83g6\n5pprMq/CWKkXZV5TCkzuiwcegBjXxchjjwUFcR2V8ubll9PNF2d9RsvSWKimsS/Jt5xmHT2W09lb\nzJ6+5/aYYbHyiICoWt1btlRdCkXRcuTqd72rO6IMtSHKWmFE0O4IlTbnhW0tt4r2SCO23ej5l5OF\nbxLl+6gMT19zelyo2NRU9hUbq7tgQUwaDLUnMsNBZ1nh0ljArlm/OdbHW8yemYlrN7XhueeqP5NG\nqG4oP+643umen+W42/sXtx5zDMx8RRyPpOOcc2x1Xj5mETklHLFpq4jExmSKyJ+KyM9F5DER+edW\n6/TC7OkJ7lSKO/Pq8DJ/PpDCdWEx+sAD/HZwkN9aqT37klaibtwVZr4iHr5JLpGcY6vzEGYRUcBX\ngVOBQ4El4UhO9jwHAZcC79NaHwZ8tlXdHDVpPK6zUqn6GN7DD0c//jhS0Cv/abvvnuv62hHlkUql\n7rV+JNeaFICLLggHycmVcTSwVWv9SwARuYlgJKefW/OcB3w1HEwErfXzrVbqLWZPRzR0rNi8uTBR\nBoIohbSRCi1oW5TBbaGLe+0vyuUSdWX0KG02/g2JyJj1WWqtaj/gaet/3KhN7wTeKSL/R0QeFJFT\nWtXP4avN48mXZsKb1PiXtB6nGgO7NfJIdN1lWOblDC21U2s93MZqoqM2DRDkpl9MMHjIj0TkcK11\noqXhLWZPHWkT/XQ7wdHtSnF7p9s85ZSmVnI7ouyxKOMtIueojBwa/9KM2jQO3K61/k+t9b8DTxAI\ndSLeYvbUkVaU8vX4tiYuHC8NU0rxQkx5S9dFE2aMcPe5rzonH/NPgIPCEZueAc4E/iwyz23AEmCd\niAwRuDZ+2WylaUYwuU5EnheRzVbZFSKyRUQeFZHvisi8sHyhiPxWRDaFn+xdvzxOsqxHxGmwUmH/\nmBwZTUXZCqfrCYry9xYlyu34qQvat7wGY9VaTwPLgHuAx4Fva60fE5EvisiHw9nuAV4UkZ8DPwA+\np7V+MX6NAWlcGeuAqLP6XuBwrfUfAL8gCAUxPKW1XhR+sidL8Hg6xIhv3MjVUeqs4DCcLolVkfWW\nRpENcFnX3Wqk67S9BAu02POKY9Zaf09r/U6t9dvDEZzQWv+t1vqO8LfWWv+V1vpQrfW7tdY3tVpn\nmqGl7heRhZGyf7P+Pgg4PC67Z6byVuJHGrHpxC1RTda/qvsjqNXRTLSyuiHMeJedrqMHXCAuN7Dl\nUbc/B+6y/h8oIg+LyA9F5PikhURkqQk/eeGFOC+gpwxMY9jDplFschLmzYN587jXHti2bGsxBaYF\nJm7k6nOBkZNPzraBk07KtnxexIlgDwhj2bicXU60jkZ2xMwUWMx3aq0Pj5QvB4aB/6K11iIyCMzV\nWr8oIkcROL0P01q/Gl2nzfDwsB576KEOd8FTCNPTjA4ONhT3QsOXeWhERxqx6z6lFIM9sC9dI5oA\nyeFMcaLUxibha6k4UkT/75Tzvgkyb69dOj7qInIWcBpwog7VXWs9BUyFvzeKyFMELZBjOdTV003C\nG/JiYI7DAmaGajqiUoHNmxk9ojY2iC3KUbdGHqLsXDxzFuJSh2bpAt0DER0uJzHq6MiFPVf+GjhB\na/26Vb438GutdUVE3kYQq9c0LMTjLiM//CErTzih4xFDusERljBeFYqy3Wkk7fBPndA3ohxHVlHt\ngdzNPS3MInIjQY+VIREZJ0gVcCkwCNwrIgAPhhEY7we+KCLTQAU4X2v964Lq7imaY47pmVZdMwRV\n1J9clCh7MpKUuS5pWgH0tDBrrZfEFH8jYd5bgVuzVsrjBhsGB/kBOGsxJ6XrnBf+vyA6PFMfkMuI\n2nH+5G52646rT1L4XEEuEZPKzwFgAAAgAElEQVQrw1XcdgJ5SuW4SoWU42iUjhHlPYALumwl277r\nB5TiIbsO27bBwoW5bWu3aEEnwtXO/N2wYputu+A4ZlfxwuxJxNnGrclJRufMARqTEF1o1fcRpep8\n0HlzlVJEs9AcW6lwrNW54oG3v51jc6zD70fXlYdwNRt6yvEGvCx4YS4Qc0Oavo9HuigkPYhJUvQz\npXi3a8f08suB5E4jhiJFGQKreFQp3hydYIlZnqIMsD3c3327cU76WJTBC3OhmJvzjvD/kVu21MaH\nGx8PvtMO/T7DuUwpfhcpe/drr5VSlySSevKVadm/FH5fphSXJtVjYgLmzs28rX1zHjBgplJm55E0\n9LwwQ5Ob0gtyW1wa6YzxtFK5D+fTKddHRHhUKUZWrIBLYodYK5SVSrHL+p8q8iMHUQZyGyzA4xv/\nSuOJ8GY+2LVXccdYpRRxKWcOcOS42UJYZyl/4Qul1GfFXnsx+tJLjFQq1YRG7VK0/9vTGpctZpcf\nGpk5uFLxopyC5aG7YmTHDns4neZMTNT9LSp3xhOhKNuZ4RaQj+uiIfH+vHmNA75u2QLA6jB3yKhS\njL70UnXy8g7r4UW5fFzOldHXFrOnOQ0NZ0ND6TtkRF7NC+nIsWYNN1FvJc8CzslpWw3J919+mdOi\nM4XtFRcdfzyjP/oREDzAtu+zT6Ztv6AUe4fbvyLct9epPXBeUoq9vHgXhvcxe5xnZGqKy2ISFrXF\nRz4Ct91W+z8xwao996xalFeacLbXXmvpt4426o0qxZnh/66/AZ1/PlxzDaM/+hF7mLKhocxREXtb\ny38u/P2Etd/fBj6daQueVnhh9jhFg6U8MJAcTZAWW5QB5s6te82/MO36N1cHyqk18l11FSxblq1+\nnXLNNdW6FM39wMHh713U3EMrKhWYnORf58zhj4uqR1JHEgdyWhSFF2aPU4y88goMDLA67KRRGDt3\nwtAQUBv14y3AeUZcwmns3MldSnHqPfcw+sEPNo5cXZYod5nzLNH9i6gAz55N0xijtAJqdxoxwzvN\nnt2eMNujk/SwYMuslE1su3a1nidneveoejon9A9fVLQVuG1bVXyN9Xyfba3v3Fn9+RDwUCjK1ZC9\nRx6Bw+tSgM8cor3uJid5BjgyOg8E85ljOTBQe+C14uWXa20FZpzDhQvje/xNTtbWn5S72ZBVrLvV\n49ALs2dGcvjhDTfZ/wecOD5eF2NuerNVXRf33FNbfqYSFabZszktrju2EUV7nMJmSe/t9dq+fjuf\nh1mvnZPZnMe4PM1xSYii4tqO2Haji7hIemEuAS/MnuKIaeTbBYE/etmy2EY+gLs++EEATvVRCc2x\nxdIWrLSZ4pI6vcQJbbMxAOMywxVh8ea9Ti/MnlIxMcd59T7LyBUXXMDrF1xQ/W9EeSldygHRTySN\nRp3WurTFHepFtpXgt7Mt13zRjlvMqWomIteJyPMistkqe5OI3CsiT4bfe4XlIiL/ICJbReRREXlP\nUZX3tKaiFCv33JOVe+4JmzYFIVmmG/NHPhJ8iua553hBKV6w4nWhvtMIWKI8NJTeTzrTScpj3K7b\nIIvV60i3/baZNSvdpwTSPsbWAWuAb1pllwD3aa0vF5FLwv9/DZxKMKTUQcB7gavDb08XuCoUOZMP\n+EtYT99Fi+rjgG+6qSt1Wr3ffpwdKWuahMhqFPQ0wTUrtJcQcfr4paqZ1vr+cKRsm9MJhpwCuAFY\nTyDMpwPfDAdofVBE5onIvlrr7XlU2NOcC6am6v43jb8twtL51KeC769/HaiNu7cmUidblN8IsGZN\nYL37xFPt02mjWLvLZWnQy0JRsdQOuzKy7Ok+Rmy11ttF5C1h+X7A09Z842GZF+ZuULYVEAoyBL39\nZkFdJra4HMqvA6MXXMCsCy7g/6I2eu95YceKnn1V7hbdOudlDT9VxHYc9zEXcWTjOtTohplElgJL\nARYsWJBqxU8o5ZMStcl3lOKjCcfMTvHJccfBhg25bTduPD67fBk1wd47Ur8HrWWvnDMnfa9BT3uU\n/RAvmz4V5h3GRSEi+wLPh+XjwAHWfPsDz0YX1lqvBdYCDA8PNwh3HF6U2ydJlCHi5sgqypOTXDFn\nTrVhz96GycoGVC3oN8fVK3w17qgrtyeglXvBnj7T30YcFuYsNbsDOCv8fRZwu1X+yTA64xjgFe9f\n7gHMaC8dMhrTvTvObTGXJn7v6WkYGwsa/8IGwE7zHWcm7GBRrf/555dTj3ZpJ2ytmSgnheGZac2m\nF0le2zWNf2k+JZA2XO5G4AHgYBEZF5FzgcuBk0XkSeDk8D/A9wjchFuBa4H/lldlv2bnxFWqvIuj\nm2zYUN3fy5RqLhBxxyNMwtOSRYvSR0NEtjMaCYOD5PH4mlrAs2fD8HBduNzyV15JV6e8CW/K6kMk\n7XHsF1qNXF2WGyTvnn+OhstJEDxRLsPDw3rsoYfKrobzXKmUW6/2w8MAjD78cLWoIQFRpBwIIjes\nRkJPzvT76NZKbdRaD2dZx/DgoB5761vTbW/btszba5f+PXt9iFOivHgxKy1BhoQwOGr5hqs4Kspa\nKSRS1zVKscyl456GPES5z8UdcNrH3FtHvk/SDbrIzUrxLGBsiI81EaM4F0VSGNxI1lG2wwT8dbmJ\nC0IOOaSh7ICY+WYE/X5/zcBwueKIS6oyk5g3j5d+85tChhxqJsQ2o0oxAHWDtyb5k3NJLh8m4C9S\nkKtYSfoNDcNPzRS8xVwqvXvkZ5ooA7z8MnuVuHkjvubIR/3Js4AVR4YZg8fGulw7D9CYCN9gZ4ez\ne9J1EjJncjN3GmoXJ/rtJF3KA8e7ZLv7yPCUgh1z3KwsGp8MsOL44wNBLkKUJyYaRuZOS9wI3mtM\nlEuL+XqO6FulHUERl7AoSVybidbs2dnin/NIupQHOUVliMgpIvJEmLjtkibznSEiWkRaNiT2rDDb\nN1X0BvN0xgbrOMa5JgxR10X1Vlm/vjZT3m80c+d2nLY0zg2yrFJpGOewK+4SjxvkFC4nIgr4KkHy\ntkOBJSJyaMx8uwP/Hfhxmuq5a8u34FIrvjXzQKK9wi23BKFmL79cyOqPq1Q4rsU8cf7kaWL8yQ6/\nJnocpAyfdj4+5qOBrVrrXwKIyE0Eidx+HplvJfBl4OJUVcujZqXgSNL3rnLGGYWJcgPhGHBJo4zY\ndGME6U4ZVYp7/RtVPWX23EuiVTfyvOvbnsU8JCJj1meptaakpG3WpuRI4ACt9Z1pq9fbZo0ZhXmm\n9/kvgNH9atdWqk4jDnPy7ruXXQW36LW3maQRVbKS3mLe2aSDSdOkbSIyC7gSGlKSN6XHzlAEM8qF\nF+XCaJrQvkwmJ/nZnDm826rPSqU4A7gl/P9XZoIZAdrT2+QpyvlFZbRK2rY7cDiwXkQA5gN3iMiH\ntdaJreS9Lcye3FnZxHXhiig/rRTXhb//xUpd+gHgkKkpVjz4IACjJ5wQfM+ZU0jdL1Nq5rRv9CP5\n+Jh/AhwkIgcCzwBnAn9mJmqtXwGq46SJyHrg4maiDP0gzJOThd14M46dO6s5kmP9yc89B/PnM6pU\nqcf7gEoFlGI36ht+jzO/jwuaMEcqFZie5uHBwULq4UW5h8mp55/WelpElgH3AAq4Tmv9mIh8ERjT\nWt/RyXp7X5i9GyMXVivFBPX+5Fkkh5BFxflmpVL3HuwEY8nbo6GkEsaBAe4AjoyZ1OkDZpVSdTmj\nPT1KTj3/tNbfI8iqaZf9bcK8i9Oss2eE+TKl+J31/zTgKPvmCP2ID+y3H8eG5WvMaBn+JmqKPZJJ\n9feOHYkjVZ+IZZ2GNIyEYBpmc2LFjh1BXffZh5FKpa3Y9STx7dTq96LcJ/gu2dm5NBSNalIcy1K2\nb7Bjrd9ekJsTFwpXDUJsIqpRUYZa8qMq73oXbNpUG1w1dC+0O1JK9IFs8G4ETyYc75Ltbs2g2ie/\nbnSMNlwXV4bC41S6TEe4L6GR76IOj1WDGyOadL/DoasunZpidHCw+kBeFTNSSi9ypVK8Tr31Xbbv\nfkbRr9nlRORg4Gar6G3A3wLzgPOAF8Lyvwl9MB3Urla9kUqF8TY7Csx4Qf7Sl1g5MlLnJ75SKf47\nsIHG+OQiRaFhG5OTcOaZwe8wg5xhdThvXWaM8IHcL26EGX9tukA/CrPW+glgEVT7iz8DfBc4B7hS\na/2VLBWL62G2v7+Y2+Pzn2fF5z9fV/Qq8CXqreTjgBMLPrYNoj97doMgGy4KreOZFm3zxsj/1Rnf\nYjwt6EdhjnAi8JTW+ldhEHXHPK0Um8Lfcf5kT+dEG/mMZKuybvxLwkRcl19eX+5ad+EuER3ppa2m\nUzuVZxx279hW89rrbNbrbts2WLiwnVq6Q7+6MiKcCdxo/V8mIp8ExoCLtNYvRRcI+5svBViwYEG1\n/IBKhQOAnypVvZB6cnifLOTR9XR6mpWDgwwD9miKtqX8D2HZhdm21DFPXHEFAAdHhTnMgzKTrOU4\nzmpn/1tdL7Zx00mKzbhlelWUDf0szCKyG/Bh4NKw6GqCTEo6/F4N/Hl0Oa31WmAtBIOxRqfbr3XL\nsg5P1GuMj2e+6EfDThVJouyC6B28cWPZVfD0EnnmypgBURmnAj/VWu8AMN8AInItkDqjkk3da91M\nc2W0K8rWBdss+5tLomx3/V7xyiszM1vgTCTL6CV54rgrI4+aLcFyY4jIvta0PwEaB1Jrl8MPB2od\nRmYKjyiVzt9qifIs6k9qdKSRo61pK5UqbtSOa66p/rxKKb4Tfgy7gL8JP16UZxCujF4CuY1gUgSZ\n9lRE3gicDHzaKv6yiCwicGVsi0xLj9WwsOrxx1mOQx1G7DHPJibyEZaI1Tvy2GOBwLa6GMMedkZ4\n7S7LcfkuxghecQBWjI5mr3cS559f/XlBzHlzwWr3zHActpgzCbPW+nXgzZGyT2SqkcH0GMPB2FXb\ntZKXtReJ2QbqUlomMjQEN93UUJyU1H7F1FTtTySUzuNpSjOXQzfcEXn7mB0WZndr5rBj3gkmJ4PP\nli3wlVrI+EilUifKUbdGKcc1Gq88Pc1VM8wt1ff02v1qGv/SfEqgx47mzOI+pfip9X8BQdfnK5Ri\nj7DMTgEfZyXvoiS3gW3dbN1aP21gINa94XGcssW3CB+zo3hhdpHxcRga4sTXXuPEmIgUO2IlLjOc\nTWm+XPsmujjV+JMeT3fxwuxpC8u/nsS1CUmIRo4MMw9ffHEtF0Xanl6e3qdIX28ZYW1F4biPuU+O\ncpfpltBt2wbLltV8tOH2rlaK58NZGizl//k/g+93vauWE7lfbiZPa4o81/12HXlh7jO6dYEuXFjL\nY2w45hiep77TyFuB8yoVvqZUfeeUHBPVezxOkFceFW8xF8jhhwfJ2PvtSW6YnubW5cv5+fLlALHj\n8b2FQJQhyBw343pJzjSOOSb4DgecbaCVu8FOZjQ2BsPDwTImNv/ll5NdaRMTwbL2+tevh8WL23dz\n2AJb1v3rsG64W7MkzAk9/PDgInL44GZmYID/WqmwOcafPPKHfxgUWDdoNDtZIcybFxx3i5eUYq/o\nts8/v673nycnbEFuJYZxLjf7wW1EeWCgFo/fLC5/7tx6QZ2eDkQ5uo12aHe5GRLH3HuqZk7M2NiM\n6Mq7JqGRL85iKnpAVAC+/vWGor12373624waMwlcaoT5lFPg7ruLrddMpFX35madQcz0LMKYRSQ7\nsa59uJy7GGFaDLwT2DciRA8oVTfuXy8TTTpU12kk5lXwP7pRqTPOaCyzLOgLI3UFvCi7RqcCV1ZU\nRhHb9BZzjmzbxinhz/cmiO9bulGPLkRlbI+JT34zQb6QW5Wq9fbbsAHubJLAr6SbaeSHP+z6Nj1t\nYvubDZ3mfunFUDovzNlYrRQTwB7A+1vM+8/AiuKrVChXKcXLNIbCmSRO/3VqqnYTbNsWfE9O8p7I\nen6mFLuAI8p4g4hGk3jcI66huFnjcTPh7TVRBi/MWbkoFKi0A1iuVKpuANK83RvXhkno3wF84LXX\nglf5+fOzrzi0gm1RXkqju6buJrDC46Lj9r37sceCeGZP/zA8DMBvH36Y38t6TfeilZsXMyBRfjF8\n//uMfvCDbS+2IuZiPfacc/KoURUTnsaGDVw7Z07tfwauVYpnw99GlOcRI8pJ7NzZEOY0ethh9V2y\nt20L5nH4gvS0YGwMgN/LY13t5EaOc3v0Mo77mN2t2UknVX+OVCqMHHRQx6taef311d+rlYJ164JP\nVubOZZqwoevyy4OIhZiohZb1C0XZzgw38nd/116in5jY04Y8GQsXelF2iJ4a+KGfRNnQr4nyi+Bx\npfh23IQtWzpep21F5zoU/KJF/MUzzzC6336MLl/eUcKglaEf2PYnvxXySfwzk19Ve4BcBn7opGNH\ns5Gvk2hmMbfK0wxuXociZdcgkcyPAxHZJiI/E5FNIjIWlr1JRO4VkSfD773Sru+QMJH7SKXCHlBN\nb5kXr+VtpcyfjxnjuzqE0+QkV5jtrF8ffCKsUopVEVE2w0Ll4RoB3LwZPDXOOKMhomZVu9dnt+KQ\nszQKungdGldGn1vMH9Ba77T+XwLcp7W+XEQuCf//ddLCOzZu5Eqlgi7FFmkb+9phTgHrPKdSqUaO\nAFw2Zw6XmpFCTM8omy1bMFHItijH+cc9fcwttzQUOTdaTz/j4gMjpKjHwenADeHvG4CPtKqEeR4b\nS7nXuKhSYQFBMvvfAaODgzA5yc1KcbNlBY0qVW2UM6I8gBdlT8DDMRZzT/mie4UZYDFr4N9ERANf\n01qvBfbRWm8H0FpvF5GGfh8ishRYCrAXQRfej4fTirCUu8E5Yb1vVIpfAKNz5jBijbF3V0ynkREf\n0uaxODLm2l+2994l1KREknzWebeZOByVkcdevk9r/WwovveKSKpWulDA1wIMH3GEvvCuu2pdd/Ma\neboklliujdEw5tnQkD/Zi7KnBaMvvMBI3IQ4oWrV2NZpFriBgdqySWWdNCrGkbRsnqLseLhc5j3V\nWj8bfj8vIt8FjgZ2iMi+obW8L1TzusfzhjcEHTTOPjv438OibLgo4neGmigfDZzao28FnpxJIWKJ\n0T5JVuXs2cnrjQprK+IaC5PKmq3XxQghh4U5U81EZI6I7G5+A38EbAbuAM4KZzsLuD3LdvoB21L2\nouwxPBF5owL4TsSnfGsrH7Od0MpET+QRKdFuUnpXIzCSyMnHLCKniMgTIrI1DHaITv8rEfm5iDwq\nIveJyO+3rFqHu2TYB9ggIo8ADwH/S2t9N3A5cLKIPAmcHP6fUawMrWW7ka/K9HR9o2BMOJ1nBrBt\nW0PM/hVK8dG//Mu6sl+0Wk9RYpjnel0TbNMlO82n6WpEAV8FTgUOBZaIyKGR2R4GhrXWfwDcAny5\nVfUyHS2t9S+BI2LKXwROzLLunmZ8vKHTiHHOGL/zyGuv1eaPC6nz9D8LF7Li+OPriuIGO7jUv2Hl\nT34+5qOBraEWIiI3EUSl/dzMoLX+gTX/g9TiHBJx7DHWBTZvDkY/KYCVoQhHO41ArcdhtVFwzhwA\nRqamuGJwsDujj3jc4x3vKLsGM5f0wjxkOs+FrA2DFwD2A562po0D722yrnOBu1pt0AlhfmnjRr6j\nFB/thjgVJMrcdlvDmHwjv/pVQw6LiyqVajgdwGWDg1xqW8+emUUHuVVmDNEGw+np/AZjhXaEeafW\nejhhWly/bh07o8jHgWHghFYbdEKY9zrqKD760ENd2dYapZgT/j4npwdBRSm+RP1II7MgcVDLJZUK\n14fW9X8QxjtXKrWb9FOfyqVenh5gwwafuzotbobLjQMHWP/3h2qiSGtzchKwHDhBaz0VnR7FuXiR\naoOYGaEjZ5ZVKpxz8smcc/LJ+azwkkuqomxyZYzcemvLnnznVCqcU6lUfc+jSgWpO3fubLqcp88o\nU5SN9ZnGCjWjaHeyjU6t3HbSknZCPlEZPwEOEpEDRWQ34EyCqLQqInIk8DXgw1rr5qHDZhmtY63u\nrjI8PKzH8rSYn3uuLnH9GqWYoubnrfa627gRFi1KXo/9KmWya23YEKwfWPmxj9X5kz8fLqbatMSv\nV6puvL6RSqVhHzyeRGLGf0yk07zKDsUhi1Ibm7gWUjF84IF6bHQ03fbOOqvp9kTkQ8D/CyjgOq31\nKhH5IjCmtb5DRL4PvBvYHi7yH1rrDzfbphtHOm8ighZNr5g6PWfcsO/HHVe9EWxRHvnc54KczB1w\nTijEV++3HxAkzT8vD79zj/eg9GQk2uEjarkmiXS0F5+9jqTtxPVAdETIY8mx55/W+nvA9yJlf2v9\nPqlhoRY4fORyZGwssIyzXCjhhfakUvxzWFQXedGhKFeZP5+/2Lgx+D0xwQ/mzOEDWX3gXpRnBgMD\nNVdDq67Yk5PxXarbwWyrWWeWvLqEF4nDPf8cOUL5cpdS9b3rhoezW4/T09w1OMhD1DfyjUxNwW23\nZauwwXKrbAU+0Km1Yui34YA88JEwUePddwfXtDn35jzb10Or7tTGXTYxUVt+06bquIJ18xtf8ezZ\n9euYnKwJfpr7y8wbV99u44W5u5z6q181Fo6Pt58wyPLzVuOOrU4jfwbBRVWALzh1svxmF7UX5f7D\nGAFRt0Ta/Bf2NTF/fmMPN2tw38Rloy6+6enWomwLsF2HskS535MYOUlcmFonWdwmJ+u6UttJiAAO\nMuLpw5083cKMeLJoEQwNNVrCxoJNErxWb47j48F6o5Zsq6GjomXR+aNWdpJvu9m28sSPkl0CmzYF\nB93qTPK4UhzSxAo1uZKPAfYyroq3v706vS4JkWmYs/123jr1dJN58+KvuVb5HWxRjrNgjTutWYY4\nW0DjUn22Y7VH695NvMXcZWJC4JqJMsDu4fejwAnz53P9Cy8A9f5k+38dXpQ9Blu4CuDF008H4M3m\nOizCR9ssZWjSfC416qXFYWF2t2Z5s2FDY1kYj8xzz/EM8AxwwvHHs/KFF/gP6juNAIw89VRtGZsC\nb0RPj9FpR4yUvPmVV3jzK6/UCpq5DOLI81qNCyfNi6LvqRkwtFRvEOcHnj8f1q/ngRNPrI45OPqj\nHwE1UTYjYDftvt1rloKnd7FdEWmt1FZuhri45Ti3hT1/lOj0TkPxovUpEoct5pmlKHFJURYv5lHq\nXx3s+ORzZtp4a55M3D44yOmvvdYd91Za8YpzQdjTosJtt5nEdTSxQ92aba9Tce1W458X5u7zr0rx\nx5aV+x2l2AV8zLZ8wwvSdk7YjXwrjj+eH4YW9B8oVW0U9HjiuM90NipSlM8/P/i+5prO1xEVvmh9\nkxoV05T1Eg7Xv+OaicgBwDeB+QS9k9dqra8SkS8A5wEvhLP+Tdhlsav8cYyIfuwP/zD4ET7pr58z\np5qjwm7keyvwFuDmH/2I/cLpDxIMUeDxJHFiNx7cWQTZU6OPLeZp4CKt9U/Dcf82isi94bQrtdbF\npIfrkI9OTXHf4GAwrEr4pHw5nBYd+mkXgTAf+8wzPpGQJz3T00HPvDPO4KVzzwXon7esXsyH0Yp+\nFGat9XbCbEla69+IyONQNTDdY2CAN5nfYXzzqzSKcjUcbv16L8qe9hgYCHrmDQxwdyjMS7pdh2Zi\nmUVIO3FluCzcfWwxVxGRhcCRwI+B9wHLROSTwBiBVf1SzDJLgaUACxYsiE7OHdOYd0dMT749gHmm\n0PScWrw4ferNTZuapw/1zBxCIVryiU+Uuv22p6WhXaHNIWlYofSzMIvIXOBW4LNa61dF5GpgJcHw\nKiuB1cCfR5cLx8xaC0E+5qz1aMYqayw+iCQhOuSQYBzAuLCglBbz6FFHMXLyyVx/b+DJ6XhklHXr\ngu+zz+5seY87mHPZT3TT+p3h4XKZaiYibyAQ5X/SWv8LgNZ6h9a6orXeBVwL1dQSXedGpbjRspCh\nsdMImzcH3ymGKk9ipFKBu+/mNaCaRdmsNwWvhXVZfe65rA5fgT09TnTkjs2b4Zhj6ma5TKns6WI9\nnWFyZaT5lECWqAwBvgE8rrX+e6t839D/DPAnQHqFyhF7hOroIKmGWcDDSvFr4MQwYuPmn/yEj01N\ndXRC6hLytzHo65xwuYv6paFohrJSKVbstRds2cKqffYBYHl4Tm844gjOsnvsAZf6810efexjfh/w\nCeBnIrIpLPsbYImILCJwZWwDPp2phh0wGnFdQKMom+lHViowPc13BgeB8BXCiLI1UGY1CdKWLbXs\ndWFu2tVKeVH11I3zuDxyPZzlrw/36Edh1lpvIH7o7kJillcp1XCxxxEVX6gXZXuHq+sbGOCjceu2\nunFXkyDZ6UPHxmB4mMGWtUrHStOx5ZxzeOD66znW38x9zc1K1Xd48nQXh4XZ3ZpFOKXFdOM3jnat\ntkV5FvA2AkFOI/ItCUd6iI4p2CkrKpXA6vr617sqyleGx2dNzEPNNZ4wdRwfL7ciBmtU86ubHL+V\n0WmLF/OLourkaY1PYpQPR6UUqiR/spm2pMV6ol25q2ze3JbfuJe4MNzfvB4wRXKwqWPcYAhlMDRU\n/dlsXPoV0WO7fj0rOtjcVHhND/bAuXIaxxPl94zF3A5xomzKWxErylBrYR8f5y6lqon1gfhUoBlp\nsLA8zpN69PUceNFfH9nxFnN2RpXi/cD9Vtk7gSXnncfotddWy6KuCwgs5cw3jelAsv/+9QO9QmE9\nBFcqxZ9Rs8SKdm88oFTv+LW3bOlsuLA+4c07dpRdhYBeHr3HYR9zzwizEdYPRMqjI4tEc17Y03oJ\n+9X37U3my5Njn3mmS1vKzuhhh/FhwqgaV1i8OOjK3w0sF0qp9Koo93G4XClsDIX3TqssMd+Fpy1G\n96tPdVI9jmZUjvAmvEwpJ2Jw7yDIA+AMXRDlXa1n8aTFC3N+mEbAOy1LuU6UzzuvlHp1lYLyCNQ9\n0OwhkiJWkQuinNSO0O+0HHCpyBwTcQNNQHcb0fIacspbzPmyMmIZR10ZNyrFkj7LWbs93Md9K5XA\nnz001FaX746wxdiEhGGKGCoAAAdWSURBVLXz+tyFJDQz8c2opSx1eswjb0XJFWhjNGzXcbj+7j4y\nEthFrTEvzmLqx9jQX4QfJiaCYesLEuWNSRbo0FBNlCcmghwPNjEX+OhgXt1uPDazw0/+K57dWpRL\nzB1RV4c88HHMOXH22Yx+61t1jXyzCBrJEgWlx9moFNPA+vD/CXPnFmcpT05yJ3BUq/nmzm10ZZiE\nPWXftDOA35uBbwmF4V0Z2RiN8Sfbr7F255P3d7dqhXI/cOFTT/HehQtrhW2K3xqlEjuOjIfH8hsd\n1q8ZdQGE09M8EVrQB3th8biA9zF3zg0x/uSRFgnI76cWUmcs6btpTCrjJGFc7uiTT9bKbFHugGa9\n+fY305RipFJpdFG0Q+SB8Wl7uwMDXpBj+LFSvNcfl/Lwwtw+lynF78Lfdf7kFgnI4yzplq/nrrBl\nS/AdCuXqjC6aVUqx3AwEADA5yZo5c1iW4J93IdpiJuFFuWS8MLdHXKeRhfRv6sQrleLVmPKsqUQb\n3hJmzw4s6LAFfmRqKijPKwTJ0xZXKMXnrHO0UilWHHtskG4WuCq8Dy7o0+u+VBzPleFczVbH+JN3\nowdE+StfgYsv7mjRC42bxuzj97+fvT7T00EGNssVcoVSvG7P0y9hTz3K5yLXdDTR0QXmwZknZkxL\nQ7NzbzfoTkzA3Ln10+PK4tbRajtl4H3M6THui2goXE+8YqcV5fBiNqk24yxlTjope30GBhr800YI\nEjPoeUrnWqU4z7wphg2mu5HjPdBpF+o4Ad65s7UwuybINjNRmEXkFOAqQAFf11onDm72wsaNfC0i\nynPpraGWUic9Dy/kCy03zcjUFI93Me7Xj+ftLudZ11BhHWg6sWL7LRwyR4u5ldaJyCDwTYLmrheB\nj2mttzVbZyGPDBFRwFeBU4FDCYabOjRp/v8EnqMmyrvRW6IMpB+JYt06ngqT+lffCgYGaiOkdIED\neuzYznisZPy5kLajyMBA8xj1PHJiJ7VvdKPdI4cOJim17lzgJa31O4Argb9rWbWOdqg1RwNbtda/\n1Fr/DrgJOD1p5rcedVRVlOfTI66LJnynWTTFKadwB/CW8LNHl+rk6WHKzCTXTMTzsKCTBDhp3XYO\nlyzkN0p2Gq07Hbgh/H0LcGI4mHUiRb2b7Ac8bf0fB95rzyAiS4Gl4d8pUarape38fujJ13ofhoCd\nAH/VD/ubnup+zyD8PufL72ddwcaNG+8RpdI+8WaLyJj1f63Wem34u6XW2fNoradF5BXgzTQ5PkUJ\nc9zTQNf9CXZsLYCIjGmthwuqi5PMxH2Gmbnffp/dQ2vdahjRtLTUupTz1FGUK2McOMD6vz/wbEHb\n8ng8nrJIo3XVeURkANgT+HWzlRYlzD8BDhKRA0VkN+BMgrzmHo/H00+k0bo7gLPC32cA/1tr3dRi\nLsSVEfpRlgH3EISQXKe1fqzJImubTOtXZuI+w8zcb7/PfUqS1onIF4ExrfUdBHnCviUiWwks5TNb\nrVdaCLfH4/F4uoy7XV88Ho9nhuKF2ePxeByjdGEWkVNE5AkR2Soil5Rdn6IQkW0i8jMR2WRiIkXk\nTSJyr4g8GX7vVXY9syAi14nI8yKy2SqL3UcJ+IfwvD8qIu8pr+adk7DPXxCRZ8JzvUlEPmRNuzTc\n5ydE5IPl1DobInKAiPxARB4XkcdE5IKwvK/PdTcpVZjb7brdB3xAa73Iiu+8BLhPa30QcF/4v5dZ\nB0TjQ5P28VTgoPCzFLi6S3XMm3U07jPAleG5XqS1/h5AeG2fCRwWLvM/wnug15gGLtJaHwIcA3wm\n3Ld+P9ddo2yLua2u232I3VXzBuAjJdYlM1rr+2mMz0zax9OBb+qAB4F5IrJvd2qaHwn7nMTpwE1a\n6ymt9b8DWwnugZ5Ca71da/3T8PdvgMcJerf19bnuJmULc1x3xv1KqkvRaODfRGRj2B0dYB+t9XYI\nLnaC9Bn9RtI+9vu5Xxa+tl9nuaj6bp9FZCFwJPBjZu65zp2yhbntroo9zPu01u8heK37jIj007ix\nndDP5/5q4O0EGVa3A6vD8r7aZxGZC9wKfFZrHZta3MwaU9az+90NyhbmGdN1W2v9bPj9PPBdglfY\nHeaVLvx+vrwaFkbSPvbtudda79BaV7TWu4Brqbkr+mafReQNBKL8T1rrfwmLZ9y5LoqyhXlGdN0W\nkTkisrv5DfwRsJn6rppnAbeXU8NCSdrHO4BPhi32xwCvmNfgXifiP/0TgnMNwT6fKSKDInIgQWPY\nQ92uX1bClJXfAB7XWv+9NWnGnevC0FqX+gE+BPwCeApYXnZ9CtrHtwGPhJ/HzH4SpP67D3gy/H5T\n2XXNuJ83Ery6/yeBlXRu0j4SvN5+NTzvPwOGy65/jvv8rXCfHiUQpX2t+ZeH+/wEcGrZ9e9wn48j\ncEU8CmwKPx/q93PdzY/vku3xeDyOUbYrw+PxeDwRvDB7PB6PY3hh9ng8HsfwwuzxeDyO4YXZ4/F4\nHMMLs8fj8TiGF2aPx+NxjP8fp1TOa48dShwAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -898,8 +899,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2min 23s, sys: 1.62 s, total: 2min 24s\n", - "Wall time: 2min 25s\n" + "CPU times: user 3min 41s, sys: 2.95 s, total: 3min 44s\n", + "Wall time: 3min 47s\n" ] } ], @@ -924,15 +925,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 32 s, sys: 952 ms, total: 32.9 s\n", - "Wall time: 33 s\n" + "CPU times: user 35.7 s, sys: 1.51 s, total: 37.2 s\n", + "Wall time: 37.6 s\n" ] }, { "data": { "text/plain": [ - "(,\n", - " )" + "(,\n", + " )" ] }, "execution_count": 31, @@ -941,9 +942,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvX+UXXV57//eOQOZmmmZ1lGCjBAlapRUsMRC70WhN1qw\nC4ousOhVvoUrCK4bL7LECjdmHebGLPACRW7pFym2aNGL3EoLwipY4SvYfCu0sYRvg8Qa6tiOMupY\nxzqxEzwn+/vH2c/er/3Ms8+PmTNhQudZKyt79tn7sz+fvT+f58f7+fFJ0jTVMi3TMi3TMj1/acVz\n3YFlWqZlWqZlWlxaZvTLtEzLtEzPc1pm9Mu0TMu0TM9zWmb0y7RMy7RMz3NaZvTLtEzLtEzPc1pm\n9Mu0TMu0TM9zWmb0y7RMy7RMz3NaZvTLtEzLtEzPc1pm9Mu0TMu0TM9zGniuOyBJI4cdlq45/HCp\nVpNWZLInSaSBrHu1WutvSWImrx377F671lOUBdxolNux4/37i2fz/kMOmdvWihVFv0n79xd92b+/\nfE+jUX6OtcP/JenQQ6Vms3X87LNFG7Vaccx3lSRFn6N3xWfu318862c/K+7zY7F7/TjZF38uSYrn\nrFgR98W/H35jfkNrJ0mK87zPiL/zW7LPfA7fIfvHZydJeUwRsY2o3yT/vTk2mxNGAwPl3zk/fvaz\n4ti/E/+sWq18bPPJrm80yu/Tvqcfiz2f7TWbxZqo+ubWDudYkhT9WLFC2revdXzIIcV5tl2rFWO2\nd2Nk13Me8jfrx8BA+ZnRu+UYms3yO+B4/LOsXetHxGs4P3/2s2IMzWb5vfE7Wzs29sHBUpNf+9rX\nptI0fdHch5VpSTD6NS9/uXY88og0M1OcbDSKFzE8PHcRzM4Wgx5oMwy7b2CguG5goPys2dnW/4OD\n5fP8zX4fGirO228zM9LISPxsPp/3+vFUjWN2tjV+I+vf0FB8PDwsTU0V7dlz7F0NDkrT00X/7DzH\nyf6x39PTxfnVq8vPGR2d2z8jHjcaxbMGBoo2hofn9sGfn5kpzwnrEyc/5wTHYMezs0UfZ2eL7+bb\n4Jxgv+w+fhNrm9+U75ltTE2V34ef81LxO+fpyEh5PFXP8f206+2atWs1h/gOp6db39aTHxufwX7b\nsT2P18/MlOcj27Hrh4eL44GB4j1PThbXct6sXl2+1/pqx3zffu7bt+f4uZY9j7DzAwPSnj3FsdR6\nr9Y2eRPf29BQ+VvZNUNDxXjsb2vbr19HSa327fAHR0uC0Wv//tZL5QLgy5LmMsGqxcLz0X3+vGfs\n0XXWj6mp4sWPjBSTb3a2eC6Zp1QsmqmpuC92jm1w7BGjsWsouChoqoSOkY15cLA4TyY6OFh+PzY5\nh4ZiBs5zZIC+vxyv9YkLjMR3GAlFMhL7DsPD8fekIPTzzM5PTZWFhJ0fHS0LUfvfxtFoxMyaDJB9\n5fvxyocXGGR6VHysv1JZADQa5TnEecD5aWTjpTAdGZnLOD1x7pH8u/ffbWioeA7f28hIWdBYv3fv\nLs8x+86NRqFYUJni+6YAt3e1Zk15vnEMExOt/6nYDA2V175dPzk5V3BSCaKy5dc1hYs9k4rszExZ\nSEVCdx60NBi9EScKF1M7jd2IH9trPEZkNtQMed4LitnZ4qONjhYfeHKyrEFE7ZFJk3lQshsNDJTv\nM2oniLiQIu2VjDwSbFNT5QVjk5CCxWuuFEA8JuPj84wioT09Xbxb/90ixsSFYv9PTUnr1s0dO+8d\nHCyu98/hO6/qu58TVUQGyHdIITIzUxYoHCcFcETsn7XvGbqRt4I5Jj+nqE0ODsYMvkq7pHDx1/v1\nS6Y3OFgwOqk4PzFR9Ifrh++WzK/RKNaSvYfVq4sx7tlTzI+pqfKapXZtbfr3xH7xOccfX5y3c9G8\n8hRZvAMDhRAbGSlbK+1o9+72v4OWBqNvNsuaizTXVGrH9DkhvEbtr7NrqhZBdI8xQx6zjenpzsyA\n5qT9zf+rNNoqRu/7XMXIPOPxC5NmMiESMiA7rtJ6+Txq/1E/eDw8HMNZ7MvIyFz4zPpl/3uhaeep\nYUXjZ7tktJGw57Np5dGaIjNie2vXlsdDqMP3ge+HMIK38owJcPxcJ9QMPYzlGTmZFDVTb2VQabHz\n1HQpXPhNbAzj48W79Yrczp2t49HRAhbhu/Lw6K5dRTtGhBjtXVGL59rwlqUx2rVry5CkMfLR0eJZ\n4+NFXwhZ2vuZnJwrjOyaKhiJfKUTg7fn2D1d0NJg9EY0sWlydcIMvfSs0oyokXBB2P1kThHzqPIh\nNBplLYRtcxGQ6VZNOGuDC8Y+qPdLsI3IGoiEGd+xZ/oRvCKV8VGjqalizNPTxSIgtt4BX5xDVbBD\n5Ecw8s+JrvEMa3y8eB6/CTFWLkgvjL22zN8jvNr3ne+DFo23YgYHy7AUBS7hFWqdZGrUWPmdvW9r\nejoWOJ4iJu4FjV0zORkLTHuH09MF7MH3LbWYs7Vt88D7pDZsaB2PjxfrwwQE1yDh1sHB8rfneDh/\n7Zr164s+TU2VlQX7btan9evLSk6kqHkoiNdwvrWjycnYgutAS4PR799ffGwu9naD96Zk5PzxjI6M\nOVqonLQRlklrgW2wbe8YjRgJGbNRFTa3dm3xHiiUPExhxElbZanYfbagrH/UEnmeWK4Rx9bJMemJ\nlkM0Ho+Bk3l6qvJ9eAuB/eE4eQ3nG+ecX1heyBP/j+YPvwnb4710mNq1nkFTITHy/iD6WdgeNVPi\n+9Y/ChHi2/yenFec18awvSXmvxffI7Xo1aurAyuoQEWChn2PNFy+Ewp2Mlcy/dlZ6aSTivspXOg8\ntfdpwqAKnuN3p8LEOcS2q4jQThUK0IaWBqM/5JDig3CxdxoI8bt2Wp9UXtT+pUYLJ2rH94easX1Q\nj4F75ii1JqdnkoQDuCDIsCgA+K4IAXgtNWKCZDQcN/+2ibxmTTEmmqw09yM4pMqa4jhJHOf4ePm9\n8Fv49+ZhCI7XMxb7P4KfqjD6SGBVYfhkelLZoWvkvwm1Rr+AvfAxoiCiQlQF50mFUB8YKMME1h6F\nS+RPqYI6PSwUMS/OR2rOUdTazp2Ftk4LyUNrJgAItdChSyw+clxznISrZmZiX9rq1eV3YO+QDNgs\nCh8JROFH/kDBUUV0QEutZ0S+tA60NBj9z37WGpBnAPxYRpGj1TM9/k6NsZNlwIlKovDhouJCiuAi\nb66TGdtEoDZIU5r+CU6OKMKE/WJ/I4bFd8l2qRkRx6V24rW06Jmc4ISWqnwrZCR8P+wn+9KO8dAi\nI7xS5SuowtR9xFekbUbHXtui0OM1EUxCWIOC2JiU10bJvIgpU6Nn/yPLKepTlUXKd8+xe4uDTN0L\nSc43WrCMLlqzJoYEKaAHB8tWBEN07T4SLThew+cQIoqsm/HxMoRs7dAvwOdEQoTfxK/ZiPg+KVCM\nDjqN3sIrGZY0OloMbs2aGD/mxOOCMKJ5ZH/b9Z2YYCQUuHhJfA4nuLc0oggPUhXDIJHpUJuNNA+P\nTdv9kYbM8ZLpNxrlMDCa23ZMoRfFAHsmH70rCmK+H3/s2/LfjNp1BP/QxOb3oQbazkrwRIvDC6sI\ndvFx3ZEDmOf4HTjfI3+G9+FE/fewJfsWUScliFo6aXg4to6pzLA9ziuuH445EqKEYLh+2G7UBv0f\nVKbIpL3SWKVQSK01YtE9HPPMTNlhS4unioj/2/WdouM60NJg9ElSYIomFasiWaocht1EvUQRIZT+\n0YS0e+2+Ktw3glGoKXmhQ2eRkTmBvH/CJiExvuHhzkla7BeZK8cbCTSPWfIa4vpk7tT87Bz7EDFd\nHy3FfkXwE48jP0z0tycu2KroGjI1fjMPEfj7vDUXwSuEDCgY2D6xYwp6JvLYvB0dLY/Ha812H/vo\nE6zYj4mJshZNSy3CtCcnO4+fQpZt8NtHCU4+csvamZgoNHqO2aCT0dFyUEBkZVJA+lBp4u+0bqxN\nKjlUsIzIG9gXjwJE5J23fn3wO1TlOQS0NBi9YfQkD7VU4brSXDiCOC6ZCuEQwjF2TDM40r6pPdAL\nT4yT2pbHgzlp7YPauMkMOB6Gas3OxloDNVmv+XnyMFcVvEHtOtJMq6AZWhBVz+e1EezgYZtI6EQC\n1wulSJPjmPl9SF4wRZqikYe/2C9i7RHDJlzjrRtrm8Iicgz6eRMt/iooik5+O/ZCgX2momTEZ1KI\n8N1ynfL78fvY+T17Coze+sY2pLIfxCeg2bVcX1z3FHK8pspSZ5SQrUNG+pAiRZHfvV3YJJ/DNrj2\n/XMOOugmTVsv1Ts8Iq0tWuAcsMdgjWjuUTrT9PQvOepHJOEZwuX7yMXEfvnIGM9oI42AEBazCUmE\nEjpRo1HuXzRm7zysgqIi52vEMMj0PKMj7hr5EiKfAKEYRpd4RYHWkC0ej6NHjNQnwPl3UuWTIY5O\ny4UCkuNgfymIqhQOav9VlgbbjnwX7Hdk8bFNj3tHuLO3Yvw74vr2FrZ923XrysLfiPN9draIo1+3\nLlZWrD3G7vvoJ75DwiuWDMWILpb8YCQPQ3IZBm00M9M5Lp78w/tZ/HsnvN1D1mySRsV3DjBtOPbY\ndMcdd5S1BjplvFnUjqo0ySq83msZ3rHDa6sWte9XJIA8w4yksdeg7LqoPZqs9OaTGUbajlSGizq9\nB/oLiKvS+uEirMJDq6hKW49i1vkN2Wb0zbx25WO/rY2ISRDeqVIcIqgwwr/tPBk9n09mY8KIMA+d\n9mQkHHMER7AfVXh9xNypKPA9eGds5GfxgtUrMxTKfpy0fhjrTubOhCUqPJ7hjY/HODvbYASbQT5S\nOauWfeX68AmFRlVIQhVFORQ873MHjNBmcthhX0vTFCZQTEtDo6/Vig/AMDCayu0YvDcDq+AIUnS9\nVJ4I/Nueww/Hj1D1rGhCRFRVnMtrrISZGO/cbRKFn1QcC7V74u/EJqNIqKqIn6pvFlk/ZLpkjGSe\nPorJn7PnRs+PHFi+vUj4VjnnorHw+VVM3xfQ4ph9KOXAQBkWoZAlFMU5ViVoOilIRrTU2Bfrr39+\nFabM36qYGNcWoRtGtFiaP5UJKoQU4oSf7FqGBPPa2dlCoHA8U1MFD/JhlxGcGSlNjOKpIjqJaZUN\nDZX9lNE8j/hbB1oajH7FisK8jbITo1A5P6mjwfvfIy2NH5DXEBujR55tRMzIC5pIGFBjjfBvUpVG\n0C40sp0/g/eSuUQTyZ/3Ghn9GX5C+tT06FtF2cf++bQiKICisFTPpPh89pmaF/FOLmoKNGqb/N/3\n1VPVXDV4iQyD8A4jd/heI4Hnx8t7I2Wmk8VRpTRUPd+e5c9H1i/npsfLowJfu3cX63BwsCiTMDhY\nwHwUDFyP9s3WrIkhWea4DA8XTJ8KBxm9X6de6+cc7yYunvdOTMT5EuxvVWG8Lqkjo0+S5KWS/kTS\nakn7Jf1hmqY3JknyS5LulLRG0rik307T9EdJkiSSbpT0m5J+Kun8NE3/ru1DLI6eC4+TnMRJY8RF\n6k2cKhO2SuuPMEq+7CrsnhM4EgAkxtFHGl3VOD2z5iTje4swW2oeZPRVmjmvNQ2HEQy0KHivD3Uz\niiweJl3Rue2FJRmJL2Bl5208USSF/2Zk4tGY2/W9aizWj8gSozDifPI1eGzMhCKo6UWWAC0XzgnO\nw6o1UaURRnOvCgas8o/56CK7NsoPoeVC+InPnZkpAhH27Clr8cY8I1/A9HR5zlh769YVwsVbWXZM\nh6sPrfbBFNaXdkTllcKC46UfwVtINsYeNHmjbu5oSPpgmqZ/lyTJz0v6WpIkX5J0vqSH0jS9JkmS\nKyRdIenDkt4i6RXZvxMl3Zz9X00rVhR4FDWYqggKT1W1RzxFzkEuGt5LBsRrqyImjHzUAvsdObYi\n/JsMiFYE4RUuWL4rQl70C1Q5bqI2qgRkFQRA7TFiElXPJHPzDl2Pj0plPDqCN3itryZo5LNlI0us\nU7/teqMoCoJ+Dj+PyQA5V+yYWD3nBxlJpHBwDPz2fpxGkVVEa8ZbAlSm+N0iTJthkhGDZF8437yi\nEmn9LBHOCqxRYp2Ps+f7iaAj9psCgHCMt/Kt31VEGDiCiRuNMhQV+W0Y1typjHRAHRl9mqbPSHom\nO/5JkiRPSTpS0lmSTs0u+7Skh9Vi9GdJ+pO05eV9NEmS4SRJjsjaicmgG35wP4Ei6IZMpZPDqcrc\n9iGG/gNy8pJZ+igVOsGopfGZUeSFfSwKCEIQXnNnv6mxRXBLZKFUwRtVcIm3UNgXvisPqbSb+P5Z\nds6b4Pb8qnt9G3ymH4ORT5girhsJtEgAVFlq1r5RFSPtBNfxWo4tgmz4Hfy35RyOtPsoLJKQCq8n\nc/MKT+Ro5vPJgKldk9Ezeck0d0I3HBcL/VlbvIZWATVx3ud5APMSON8J6dAC6YbBR8/nHI8Uh8nJ\nch+9sOQarII+A+rJBkiSZI2k10l6TNLhxrzTNH0mSZIXZ5cdKemfcdtEdq7E6JMkea+k90rSUS9+\nceuj0ilSFT7Il1P1OxdsdB8/FBmp18iMoho1XDzeIUTBEWGsnPARzm332nlOFOsjE2WkuKQzJwUn\nZuQ8tTHx2fY7sxaNPEzgJ36V9svnsN/+ukjQRL4AKc4QJuQjlTHg6BsyxI3hc1H/21krkWXFd+Fr\nv0dWIRlkpIn7RJoqOC2anz6KSSoLH+LSPhSUQQGRIsK5wj7TUomqUTYaxdwaGZF27Ggd+4J+nFvm\npCXDj94zFSgflcV1HdWmYaQTNfqJiXKNoogiy7bRKFsl9kwyd+5UxWuMaMFGVWUrqGtGnyTJkKS7\nJH0gTdN/Tar2z5SiH+bEcKZp+oeS/lCSNrz2tanWri2b7x5S8czba1qRhlW1IP2iIVNhyJP/3TtU\no/NSXOCM56O+kol5Bm1tU9uglePhonZaotfQjWZmYuyez6Hji6Z0p6gfL8CiBelhCVpzEdPl+6ly\neEdwhB93BJFVaez01UTf0sfld9pAg8csFUw/QxTb7xOzqvJAOIej9+nfpVSuoUTiHKMy4TVaFvvy\nwp/z10NERlNT5XwKI//NmDTlmWq7SDnOtwjK5fvku6JQZtJiRN6CI0XKHIUGEyR37SqeRUWFGcBd\nUleMPkmSQ9Ri8p9N0/TPstPfM0gmSZIjJH0/Oz8h6aW4fVTSd9s+gOGVkVbNUKTIYceJb79J5QXG\ndrlTFDE+VmrkQqLThsyARZGoBVGb4OTjGKnB+GvZX+/gswnuISI7npiIF1PkF/CWjfWJVsn4eDHZ\naGKvXl2upOnDzTzUwAgDfkt799wth5mKk5NlfNKX2CXt3l3WOqndc8zUXo285WREBssoMDJL6/vU\nVJHVuXt3bBWyHTJMMkGjKkbnhRJxbDKSitjr/DkGSzCkkMW2Ij+J9SsSIlTOWBDMfqfV1GgUSU+D\ng0WSEt89M1Crnkmi5k5FgPk4nD+RRUEB5S2ATglKNh5a8kND5fdAxSKCdBhSyjVk72HnzkWLukkk\n/ZGkp9I0/T389AVJvyPpmuz/e3B+U5Ikn1PLCfvjtvi8JD37bOujcgJLscYcwTU0t1hh0S+CyJnl\nM+U89MA+eZiBjDtaVF5zpbOTGp79Hz3HR6bQ9Ce+bZPQT84oXCsaW1SZz65npiIXBLXNyLfBUrJG\n1P6pOXsnKd8FBZfX3nw9evvdl3PlGJh4w2dyzFFMtl90dp89x0clRT4Cj/VGUBTfCRk63zeZkQlf\nH2nEbx8JeuZhGE1MdE66ipyRfgx8F3wuE8BMuFQlRK5ZU4ZuaP3w2/pILCpk3ikcKQjE6KmtU4Hr\npD3v3h1bjRR+fD8UrlzXAwNlq8grNqOj5X2ou6RuNPr/KOk8SX+fJMnO7Nx/V4vB/58kSd4j6Z8k\nvT377S/UCq3co1Z45QWdezFQ/kjS3Jd2992tY5N2nEjeuWf3cluywcHCRKI3fWBAOuOM4poIr6fJ\nbFKbmxPs2VM8Z2qq7MCJGOnoqPTWtxbPtzFwInM8FEpchJFA2bFD+vzny22TPHNhhAc1OS7k889v\nHa9bJ33iE63j448v3ptP9rI27Ds8+mgxqe+7r1yC4B3vaB1PTBRx0u9+d/G9Z2akN72p6KONzfq0\nZk3x7j/3Oenyy4t3ZWMbHY3NbW7xZ2P178j7POy92fsZHm49196DPX96uvx8KhD8hnzPHkqglUFF\nwMf8RxFIhOhIFBL2vhuNGHP2VjPbiDBo72RmDLy1QV/Spk2t4/XrpSuumNvOwEDxbVkawStnVKCk\n1vtmopX1kRm1LJ3AypMUHFJnLZ7fuBMsxCgaRg75KDdez/o6Umu+ex9LF7Q0SiAcc0y64+qry5oU\ntVGak1GCCReJXW/XRi+cDJjmJE1yah5G0aL31GiU+0itjs4Xv1C4YH15Abt2167ypI7MdPaRk4KT\n1zsE7ZxpEmQGPtoh2vGH79km77p1c7UzG6eR9wVQ6HDjE0I9jI6w+6xNMhIP2/G72rvas6esPZnl\nQaiQ1ho3IY9glT17inH6xBiOIYpJj7TnKuiGxHkVCVujyLfD5ERaxJFT3h8b4/GJe+yvX0ve92Hv\nkzWcqvJD/PuhdWPfh5E79l1ZjdOvZa5Bu4aRPu2YvM1PrpPIb8J3S2SCjmn6Z/y7sHa4Qxj6nRx9\ndFclEJYGo//lX0533HPP3AUUOTgj8o5MUoTlVTEy4na0LKKPw3u95hSFGHoh5gVQo1GekBG8wvoc\nfqyRc8xre/Y/hVhk7nLirV1bHj8hFb4jb11VfTvP0NnXyNz1ETV+HnhHaxRG6BUBeyd+sUXknfX2\nf+RI9PMggks8RVBXxJj8PI38D/7deE3X9zdaA1J14lwkAFg0jDBfZHF6P4PfytLGYEzNO1yjb0vB\nXRWQUJWTUkXdlC+Iwh6pnNjY/W5pfBdRhJpf4x4upM+h0eia0XcD3Sw+1WoF840WThRHT6IpTYbq\nJWtkZvqMN++89Yst0hIZqeAXiYeV7F7vvPRMO2IqvI7vilADmVqUyCSVr40YBh2QVRbN1FR1OKpd\nG/lEZmdj3JX98taCPYfaTsR02jkfuTDJXMkko29IyymCefwiZX+iLN522DnbkcpOaVoCnLPUaMlc\nvYbJqBuvJft6LbSII6utKjxWKphzNC72g36T0dFyFBOhHo6H4Y38/t76ps+ODliuIzJrZtK2i4un\nxWAUOZ+peFYpr1QguZaIXnB9RcpRD9DN0mD0VqaY0pmSjVIsCjv0GklU5lSK8X8f2+tjVMkM2Tbh\nFdaqoMnOuGZ+ND4n2pCbGi21a46fkI4fayQ8jGZny9UBI6jMh6NxcnH3m8hCoWZm72Lt2lhbp1bD\ncVK75QKamiq0JovSsHulssVBWIaQE6sd0gnmHalVKfn23vi+DUf2+DsZcJS1aWO1Nqmg2P+RY7aT\nY9+oSrHx0I0XPnYf2/YKVOSE9b4lT16hMqEwM1N8Vym20OjPIJPkuqKFQN8H5wSDFqISHlXkN/3h\nlp7Wz8jHxXwXxsubf8Su4Ry34127ijFR4Pl50gUtDUZvjJwMw+PIERPiQqKWxnY5qSOTjFoGcTs6\nVijtaerb84mFS7El4s/TWWTnuMDsdy5CMgkyNd82x+8ng49KMvIZnfSJEJahJklNymu4TO4iZupj\n/o34nr2fg9/CGDyZC4UfY/vJJAhLUQuLNCRqm3xWVAVxcLBcy9zIa3HeR+Sv4ziiaIqqGHmOx+P/\nnDcRtBlFP3m4iX3yCoBdE71bQoGRU5htezg0slrJ4FgXiUw/stSohPnoHhtrOyzexjk5OTcix9qx\n/+2ZDPP1/o8oPNhH+9k169fPtSa9JdIlLQ1GPzBQaCzUYCLmXTXx+GEjLbkqy9DvsUrPvb/Wwytk\nNsTII8eo/WZjoCZn13JSGTGRibH4nnmwXySv1fPZ1JKoMVKgDA7GWn+jUX7P/jlVGPngYHmR2Fi5\nkGnxcLF7p6bvH5mHj3+Pchs8RMWQyipfkR8PiUyFjmMPY/G78f3T0uJv/j6+b84Dv/ApICNnHq+L\n1po9y57D/tj32bMnDkWl9sx5RcZFRstvHMFpXB+cw75f9hwjHxZJ4d+JUbKddeuKZ5LHeE3fnkkr\ni9a+aeiEksknaC3S0uFaixS1DrQ0nLGvelW64+aby4uNZliVWWvkB8zJWeUsi+6PriX+342DjwLK\nMwte7yvukYnyXiYycUMFaj5MEImchxxjxJTtOVxsFC70V7Btm4SRVuwXUVQQivi718C9w83IOyoJ\nl1Bw0NE8O1vAK7Qu9uyJlQgvRK0v9mxvCUTf0M8Nji3y23howvoRZbT6NiITnoqNtxa9BlzljK3S\n1im4vKXBtjwD5hgHBwsNmfPAtxfFjHvHNNu3a/kd7Hvzu7WDaqIxEMIdHY3HFjnRCQn6EtnE/Kng\nRgIlso4GBpQceeRB5Iy1j054xS9UTx7rNOJL4zG1Pd5bZb5Tk+DCoMbGNjiZIocttUcyBAqwyEnH\nMfjsyshh6bPv/KKmgPKmMfvHBV6lbVVFuNi1/D1aqHw/XohEiy0KS4w0On+tVI7gsHu5n2ijMVf4\nSq3vagItEvh+bnIzCyoL7SxDO+f7zO/jSxNwXvF7MmSSY4tivGk18b5IaaADmMKCFicVMn5v4tgR\n/MM15uu7sB0m4Fk+Cxkp4V0y9MiaqyImnREm4ffh96TgipIZydzZ78HBshCztrmuIliKimRVpFhA\nS0Ojt/BKMhJi4FxYkQTnscfi7bzfLszIiqlJcwsaWXskfmwjMikvDKKw0CrsnOUKvMAxonZJbTAK\nB63yZ0TOOy8g7Ll+n08Kl+j9R9aEZ9CR34IWSsSM7JqoffbB3gOZlNeg+TeZGt9nJLwiOIu/V5n0\nZIBSdYSWP8/v4IVFlM9AZYF99BCnn9OEnFhmg0wlmrPSXEXAvhvDLo18KRP6bdg/Zi5HDmA+J4Iv\neX7PnmI83UTUWB9sbOQVUaQXgxMii5D8xUNOHAOd3jz2vhWu2aEhJYcffhBp9IbR+3OcfDY5r7uu\n9b9nNFVmvxEZmT9/8smt49NPL5+Xygk7991XaHfr1xd9+sxnym1Gk3BgoMy0rrqqfI/X8uiFp1bH\nthlba8/A10MBAAAgAElEQVTavr31z9phm5646Pm+N2woxr97d5GFOjQkPfxw63jt2nLxKQo3658d\n79pVXPupTxUm+9RUkV07Pl5ULTz//OL5Dz5YZBFLhcCmhm7X3nSTdOGFRZ8iDZ0M0EeJRJYgBQCZ\nFJnxNdcUbViGJx26a9eWIYAoAiYK3bR3ZP2IfvfzmkyCuLwR5+F99xXt2XeoKqHhoSUK1Mh5TOFm\nbTJPZWCgWANDQ+WMZvvGPpyWWnSUIU4ohGPvFFHjFTVq4EbT00WABPezNiL/Yl8ZcebLQnA+Uckj\n3/PlKCgIIqSjgpaGRn/ccemO++8vFwSjpsAPa7/7vSA5wSMNg9AJMTxittGLq4p2qCqcxHvYHq+n\ndhbVFbG+23ma6ZG55gUeyz5EWi0XG+9jn2hRsNwDNRj6UVj4zdogM4hoerpIvZ+cLGfV2hhmZopI\nm5mZOJ7Y+r1jRzmVPdKupWIB79wZM0kfPumJZvfgYBEqNzBQjGdwsBgDnY1V2LqH0YwiDN/al+Ym\nl/kQRqnVp8jKo/CJnNJUpnw+CZkRGSxhlMhfwbHTaowco97hHwlDwpaR1dTO4UpMn8KXYcFsz+Y+\nE6L4fVgOIbKEqFitXVteSxSw7QoRcm3qYNsc3IhmmzePPYThQ7LI6CNTlhOFL4uaF50s7RJZPHkn\nKc1nChT6HHxkELWKKojCT4iIMU1NFczGayr2PydSVJiN+DI1UN7LyT47WzBYvvvIovC4PCNGvPAz\noiD2UVH89oSt2AY1as6p00+PI4BooXAc0blGo5wkROYR+T+8EImsUvbdZwbb8/k9o4JY1KjpXOc4\nCVNynkYwH/vMbzU7WxZuRl6Zsmu5jk05GBiIN8Seni7XeIn6QouCTuxutHhGPEXROISB/RrzgtML\ny8ivNDhY9otEPgoPb3k/JRXcyDdVQUtDo3/ta9Md991XdvhI5QXGqBapLIU5OdppsRHe54WEN5Wr\nGInPgow0Q49rcuJ73LdK+JDR0pRje17rj5h0FAvvYa4q/DtysNHiYoEmavH2HGpGPM8x8D37doyI\n45P4LiNmzdpCIyOFJcL6+ixPy0VLrZbJNjZ2vz9ppMV6mNELb7vGJ/rRJ8K5SQjEO0PJbKOQPGrd\nZC5RZioVpSqfFH1fnNd0MEZO6ampAir1jn0moHEMkTVi91g7HFdETHK0ecl1NTFRDq2OfCT0Y/Bd\ncn2wTyasmKW7Zk15zfjsaamczGltsBDfQPe1bpaGRm/16KughKkp6YEHWsdRdIBf/JS2LL5kC9xD\nEx/4QOuYTMVjzlLLRLf2iOfv3FlUVaSwajSKD8UIj5GRAneOTDzCPF7Tjoh9fPTRFq4txVaJh5CM\niDsODpbDFE89tXV88snSJz9ZtG24ahRFRNjsM58pFsauXeVxvPvdrf+npop+v+MdBV7faJQxesOV\njQGweuV990nnnFOM09pgDLSHAAg1RBYImbSdm54ux0N//OPFecOdBwfjYmM+jJXzkMqKnePvZG6d\nMk99tAnHZQzRIkA4Hlp57Xw89qwNG4rnENKhlsy1xD6Zv21kpPADMZxYqg5dpd+Buza1o8nJMnTC\nZ1ADp6Vjfa+qiGnkSyDQamU5YruGET1VigAtJ4aiRspOB1oaGj2jbiINOML4+HF8rQ6+qAiPJqTi\nQyA9Jumluo/gsGdS66NWSa2XWlNEUfEjr/1F5iv/9tqy/c1wL2qgfA6jj4yovVBr4WLsZCaToXkr\ni9orS7jSHI+gjsgSqIqGYUz5+HiZSVN7jUpk2G/t/rbnc3cgj6+y39H74jlalRwncenIYev9RpFl\nIJVDAqUyHMB++IiWyFnN53iLmMzOj3NmpmCcLGfBCCBaLt4/xYStTtv60VLmuuZ5IgZcH7SI21XE\nZN/4jfl+qixyCkDrg13vI6dofQ0PH2QY/f79rRdGxsMB8SNHhYWkWCLu2TO3XKynRqOIumE71Dzs\nPtOApPLkGh8vtAqashQoDL0bHy+05GgxeEyVphwXMsfMsVkfyBzI0Ci4qpxzPBeZwiznGsXIU2gP\nDRWT98EHyxPZHL0TE3GUyPh4IWgGBwvmEG039+CDxbf0igD7Zf0ldOOVCQoJI+sXBUejUVgZ09OF\nRUGmsnp1eVHz20bhpexDNN+98KdGbeSt00i5iGoekQH6vpDRR3Vy/K5aRtEa9L4ClgaOLBrvrGaZ\ngHbk10nkQ6JAoTZOeJLtMGiE1hkFHndis/GsWVMWCKzSGUWC0XKhxdEOmqqgjhp9kiR/LOkMSd9P\n03R9du5OSa/KLhmWNJ2m6fHZ5uFPSfpG9tujaZpe0qkTG044Id3x1a9Wax7R4LhIaGLR9JTKGjql\nI/Ex4oA+YoaOPMbE8hqvGXKiRBKcFMFF/mNHVo5PFKGg4DuMwrOid8JjLiSWXSB8QOeYd9j653iK\nis7RCVWlVXpHt50z8hEYXHicK7SsooQXCnfvZ/H98BBjFaYdnfdhit6apHVo47C+UihGQsBbhVGA\nAi2RKDkxmq/W72hsvJ7acJXPgRYc1xJxaUZ2MRmtE0xDIcZvzFpV9NtUbQJCK5sWvPcDekc0vyEh\nWQpu9iuyeqRysTdrA+uknxj9pyTdJOlP7ESapufacZIk10v6Ma5/Ok1T2GJd0I9/3MLgaXpSQlLi\nR9LMO/I4mag98WMwttcoWjBsm5EmXigZES7hM/lsCpQIluAzyVRYnpWTgQvPFw3zffSe+qqEHC58\nCj9aF1wcnnn4cDEyoAgq4/WrV5dhlAhSYRuRIGRfvJBnTSFeb8fe0e4FkBfgJPo5oj4SIyeRefDd\nR0XKpPLGK57p+GNry9pmtIm1wWJwJCoCvr/Wrg+99ONhFA3fMa0yKjAMUzSGPTpajihqR35TbW56\n4wWtH2eV05fKgq8ca9cRHqWzlg7/aP3OzJSvN4t8eHiuf47zstN7AHVk9GmafiXT1OdQtp/sb0v6\nT10/MaKhoZYJT4bhNSk/mamNeeYfaXV0jtFU9ZokP4pvm0yKzNqnKnOicIFzMvn4XmpAHn+1Nk46\nqdpsi95VlJxBAUXtln32kS58P5FDjJhk5EPwQpEMM5qsTJDzkUNR2BojGSggqY2RARsxCoLt+PBG\nPyZvpdGy8vkevg3vDGY7ZJ7S3AglH0ZoFMF8VT4pCpooQqbRqC41EVmCnklbf7lnr8eZjSiII0FE\nvxHbqaJowxIpLjw2O1t24nLNUDCQHxBS9N+Q2xFKxVhXry4HhNjYuAMbFR4WPmNAQeR89uNsQ72D\nPWV6g6TvpWn6TZx7WZIkj0v6V0kfSdP0rzq20mzOlbbUjKvKC0cOD+8c4vWczPZifREyOlU9+Q/P\neNaqQlTezJVa/faCxJu1RpzcHjM08kw6ckLyPUQZo9Q2vIZGDZCMlhmM3jHuoy6ib8Kkqgj3tGMu\nfB9K58P4yNDJXO0509Nl7SliqlVp/UZeEFIQRSnxNL8ZDUMByecwGiOKOrHrI6IiFJUCoaChdtku\n8ME/z0NBRj6Lm05NI1qQHCcVryhooR2T9/kt/H4+aoprk8l6HCcFbhQZ4/NPpBYjjvaD9dmtxsQb\njWL9sNql53XeB8HN26vyegJaKKN/p6Q78Pczko5K0/SHSZKcIOnuJEmOTdP0X/2NSZK8V9J7Jeko\n06w8vEFzJdJkqzDYSNvgBPbaZmQBRIteiheyd3ZF57lQI1yTH80nTRgRMvA1baqSJyKGwMnGRUDB\nyQkcRSFQ82N0QKQVewgpelfEZmdny9oKBYD3OVCYVllT9MMQM/UWH6EMjrNK0YiImjOvpYCOHJ/e\n8Wht0UJhvzkvIrPez2sKaN/HKjjPz3vCCPRL8P0wvj9K9onK9PpACuLonbB4OqOjsgh0cnOOT00V\njDaCs6Tyht8ebvVMlt+YUAz9eh57jzZKoXBhIATXQJXvqw11FV6ZQTf3mTM2Ozcg6TuSTkjTdKLi\nvoclXZ6m6Y527efhlVL5Q1Dzshdhpgzjp/1CinDvyKlm54kV+muIl3vnHaV6BPVQw/FMhXH40XMi\nM5lEc9xr5o8+Onf8RgMD5UQRtmfEyU6NeWSkXF6BiSVeYHns2I63by9vyG3vYWKiGD8XGLUnYrxG\njMjiIuGYRkaKeUNHHqNxpMLEHhgom8p+oVJoDw8XUTezs9Kb3lSMx4j77lr7dr1R5GPisff9ENqK\nQvPIMHkvE8NohTHTmEXAmKhDqnJeEg6KIFXrN+Plh4bKdZva+ePYlpEXGNTcqUD4QA+2z7VHQUjl\njALIC2UyYL4Tb5FynbBfUbQafSe0/ODoTVatWvTwyjdJ2k0mnyTJiyT9S5qmzSRJXi7pFZL+sWNL\nzWaxoDkJI2efhc9NTxfHnFTtHHNRvDXNSl/EyLft8WKjRqPsKKKfwcib+z6Zho5W77TipCLkRHOP\nk8NCFqPoAGKT3klKihgdTU/e4yNMPPH7HX98cUxrgVj39HRcM4Xx9ZH27XfdYtxz1TiNPPOmVebh\nDA+jMA6cwpdaJecNmQAVgSqHp42tav4SLmE/+M0ZqtwuNNBvTEIIMwqp9P4XMlgPwbDfdLhzbVRZ\n7yR+56mpMqYe9Y9lFBhCTJ9LlPvivyFDe6MAgWjshPP4fK+wREKHPkP2KeJBHagjo0+S5A5Jp0oa\nSZJkQlI9TdM/kvQOlWEbSXqjpP+RJElDUlPSJWma/kvHXvzczxVYVBX2F3mfkThQWgRVkRdRhIfX\n9P3LI45MYjJWFV7K8RDHj7Bzv9EKjzlpo4gNzyA4KTwxpp1mLe+bmZm725E0F7ohQzDhEQklat1c\nJI1GsXgYxum1UfaP1gD7LJUdX8PD5Try1ldChN785num0DEi46ISQqYTaelMAqqCl/i+yKD93qR2\nno5ZXk/I0cg7OAnpsA/S3HwOI/ozuPYIgVBxiGLnfaKRfUtacFwHngijGDEyh5aXjYO+NB5TgWOW\nKgWnD+eN9rglDMrYeeb9mJO2GxiYJTUo0Gi1VhXra0NLKzNWKkvcqLZIFNVh19vvUfSK18qoPRsN\nD8dJQ7yG5jvxSDptosXiHV5ew6SfgffR7Ka5SVORgo7hiFVUhfHxHdNyMCKDoRObwpKhcZGvwmOd\nbDvqHzXqCMailcVvwtA07+hnXRPPXO36CMqqyomg9UcHvXd62jGddpFGH93nLdII5vNOeVooVT4S\nqcUoo7IH3plb5RMj2d+0UCl8eM4sIX6rKmKfGZVFxYW+JHsOo1hoKXqFg8R1wHVVFWoqtYTdhg3F\nMwnzkFnTOuU64Hpjv7zCtW5dSeAlxxxzEGXGJkkxWGoZVQ5W+58aaISFk7x5GDEyqayp8G+p/KFo\nHkoxrkiGSYcg++7jzY04+aJ4Xx8ZQ200ikZiu1FYGxkqsVlqrHy+VI668ZaYdwYaDQwU74Hvxzuu\nI2YX4dy01Aj/8PnEpb32SoEfCWifzOP7xPGRAXuHLr8bYb5I6DKBjzAbx14lxDgP2O+qkE17HgVe\nFJ1GKIhWiRfchOX896fm7p3LVWRC0QsqY94DA3OjyDgnmPAoxTV9fKVRJgXS50Dy323DhsI65Tg5\nJ5kZu2NH8Z2pNLHUtvWf7yEqFtcFLQ1GbyUQ6Hzw8bNeSyWzrpLInKichMQpOWkjbdg7fdgezako\nqcg7hTlpPY5PBsBFRdjKR+tQu44YnPcL2DkKHzrkIuyPZQJ8tmMU4hgxa1+PPWKobNvHrkfMkwuT\nbRMei8JCfbgdBY0RtWGO06jKmmSUiLcQqBly3lIzj2CXyAHsYRQ6MqP5TsHA4+g50Tqz50fzmuft\nbxtz5Izlt+q0OTfLf/sxRPV9bH2RofqQaO8bszYia4nPYQhoZO3Tl+a/lTFrYvfr15cd5PYujj++\nLAxt3rL0eAQrdqClwegHBwspFmB0N9Zq+ml2/CzOr2AT2f8NSfuz4yG1gvntd1uuM5IOyY5XSXpB\ndvwC3GvXntJs5hUWv3THHTIZ+guSTvm1X5Mk3frVr+b9+Cn6uAJ9HJJ0aHa8X9IFjzzS+qOqVgeh\nICNvffC3TAO/7bjjZE6RZzWXBtAPvqsXS/pJdrzpLW/RD+6/X5L0SUlXNpv5/TfVapKkF0p6J86H\nlE38seweqfU+7FsNSLrsiSckSfcfd5wMcbyg2cwjh2447TRdhufsy9paeeaZrRN3353/trVW0xb2\nyaySTvVQ5kE3ZP24LEl0I+DPS+35AwO6Kzt/drv31AmyiKgTg2xDn8a3MHpW0kXbtrX+sB2yMroj\nu770rRsN/Wl2/u2d5sB8iAKafpYoIYkCjYz+U59qHX/gA0WNqkaj2A3uIx8p2qrK8/AYve0ktmlT\nob0z8IGWaoQw+DBXEwze4R1V74xg2k6hp6Clweg70AtwbLJ0v7vGzg/gmFN6hYrBrlDB6AdUMOME\nzzIB8UitJpObh0r58YykT2cM3hin9cP6dgjOD6osjHrJauuKMoYxqGIM/h3Jnd/vzll/77///vxd\nDUhFX/fs0crs/A879WdqSjcffnjbS1ZIuvm44/J+mxC9uVbLj6WWoJfK7/an994rSapPTOjLRx9d\nXPyJT7T+v+QSPZO1/VNJxyyEIWWM4oasvVkV7/jmNC3Ns1uzvh6Kvt5Rq+VzclbFfHlW0kV33ilJ\nuvPcc3Wu7+NJJ5VDZXsk6wvXxIDmLvoBSXdu3ixJWrF5c74euDburdVyxeFfVczlEu3atXCh6sM/\nuTkJ/WeRVWSa8M6d5fDcSENmPRqGDZOR0kIbHy8EBiOgaM1FTlwpjgAiXONhMYRPzoGuPGzXJS0N\nZ+zISLrjt35LY7fdphdn574v6ZXZ8aSkl2fHZ2WLYW+tplWLoU0sBWo0NLZyZf5n/TvfkSRdfeSR\nuvL975ck3fj7v69LX/1qSdJdTz2ls7NrFqLtdaTJydyBdtcPfpAzsoYKJv1PuNysojVqWTSStLFf\n38zq/596aj7x71u1Ss9kPx+hQtBPqxDcL1HB6P5BBcOeUTGGyBKSCqZ3vKQzn3yy9Qe1zH6TD128\n5BJJ0pduv1321ClJX8mOp9HH/ZJ+Kzt+3Wc/26rxv1C66ipJ0j1bt+ofslM/rbx4LtXbfXvbi5iQ\nKOGSPXtijX5qqnCCmlBcv77QuHfvLsKwJyfLiUy+MqQ9x55JfH98vGiH+Dr9LXSms1w1GTqjnyjQ\nGOrJIA9DOKIQ4uFhJStXHkTO2J/8JP/Q38fpf8DxWZ/9bOmW5yOTfyzTwP7WnR878sj8eNvv/76k\nFnO9/qmnJLWY1NmLyeCNoGGczcm5Z4+2ZdouyayfnZLqRxzR375YOWDQGXv36olVqyRJx+3dmzOD\n22s1nZpd86p9+/J+P1ur6axMQN565JGak77tyATb/yfpTOZwLBZ99KN6aOtWSdLGG2/UP99+uyTp\nURXlYV+t4j2zj5L0hez///dd79ImgxjahS962r27YIwf+YjGrr22p+4btWXwRlXZzfSt0AkZBS7Q\n3xLBG1URSmyPUBDxet++z09hRE+7wIIoam716thHQN9fFPFUFT0X0JJg9N999lmNfetbba8Ze9e7\nJEl1W+CdkirmQWO1WneTsg90S8bUu4+EbRE/LQ03w8FXSGWcerEI0QTXH3ecOk45h/0uCg0O6riP\nfSw/NhpWxuCl0rz5FynXvN4q6UV33SVJGjv77LaP2S8tLoM3uuoqbcy0aEl66aZNkqQtUsmU35jt\n1DT24Q+XbjcQZVjqjcEbrVuX7yK27YYber69p7XEKDTCFcy+jrJ0iYfTEczwRu9ot7Z5LopgYRAI\n+Y0vPyKV95sgnETmzr5SM6emTyJcxbwSCpcuaUkw+l6oBGkEi3cOmQkHs4/OwTmT8YwzWv9bWns/\nKZvA1ND7TftVjG9A0muz82fOl/kDb3yoVtP2efZr7NJLJUkvvPRSbVokQXR/raa/y443X355zqT+\nTtLfZfOm3mzmc+GfpLw0wv8tSR0YvBHf8YFSDEj31Go6a+/e1h8DA9rqGLzRLhxvnM+D3v1ubbvD\n50R2R53eyxylisyQFVXpyIzCjKs24ogylHmeG4J4K4LnqUkz+swn9DFvhMLFh4Ybk2ZWOAWRjxbz\nz/E5O13SkmD0L3nNa1S/4w6NBeZ/W+pGq6/AUCsn4mIweKNM4peebXuwXnhhSQDNl1ZI2vK977X+\n6MErX0lYABubTW3MJuHThx2mY268UZJ0/aWXKtBHQvqhVEQvLEDLvzp7V4wI2qnC4tleq+nkH2fb\nJFAbbTRy4f/iWm3BzsNbajVdvEjM/mo4QF8i6bv4bWcGUXVL12fv65XqXuiPzYPJd8Pg2xKZri+j\nQAZMPNxHr/g8kCjPQooTlqpKE9BJa32Q4oxjn3sSFU30ORdRoia1fBsbIdN2GfmOlgSjn/z613Vt\nl0zeOrx5AYtrQCq/fNvkWgotgEUhCz28+OLW3/b/Amm/NL+QvW4pa5tRLB8855yurZQ6MPKF0JXB\n97+y2Sw2EkfY5WsUhwG+77zz8sVCBtWLwL04i5pZMAXJbVc2m0U4Kfp3S61WPPecc/JQz3Y+hqOy\n/78rxRVGjc44o7UJ0DxoQUye2i3LBxgxb8TX64lqBEU5Bz6bndaCRd143DvKc+Dzo525rL9+bL4+\nVpSJXpVxHyX89bCOlgSj36/uvff2GbrG04O6EA1JY4cdJkn6DUl/icvHjj1WklTvp1Zs9OCDrWec\ndlr/2gxoLNP2zpB0Qr+1TROKZ5yRRyH0AkWNrVy5uHBHIKC/XnHp07ffrmMs3nq+xD2CF0IVi3al\nwZOgiy+6qBBoki7LLBeb0xFZBM41Uvs5zRpOXVoNC9bipXJ2MSNZouxZlj1g/RwjJkkR/ti1q1zO\ngkzccH+Wg/B7JBA+YVar9YMYfVWil8+ytjFH5TWYIBjBTD1kxi6J8MrXJEl6u6T5gib1I44olYU1\ns74qTM4TQ9LsuN8OzS/XanlE0e4e72X/5kv1LBSztMF5F/TtWk1HZ+/iR7Wa/tcC+jCnT/N5x2YJ\nGea+b18+prETTsgvW6H4fdW/+MW8NPLVaZpbBttqtTw2vPvoZNd2vwXYGWcU5ZUnJ/XtbF5/StL5\n2SVH792bC/ZuqZ5BbhOZ32QU/d5bq+m6XtpqM+ZODL6eJctp/fp4b9zx8eo9KchgTTDY3F6/vhDA\nU1NFTZ2dOwtFgFn4zIhnljdLQzC8swonj+LoPeREuIYVMKPyGsT6I4xeUlKrdRVeuSQY/YYNG9Id\nf/M32obEkm6o48KamtIPsqSdFzWb0kc/Kkkaq9eLNt78Zo196Uv53xakmOOuUb2YhRJSu00brmJM\n8yHLP+iYudpH2oakpm6pa8YYLIKvZs/7NdfGDy1z10Ex4bP85tO4fj5UbzaLTMkeE52urdX0IRdc\nwH68UUW8POlXpNwB3SuZWDxjHrBVP7T4UhtReZCdO+N9ZUmMsDFi/Zvx8cIPs2tXOS7dcHxuKem1\n6Ch5yp5B8qGbFABVVW6N0TO8km1zO0Zi9EaDg13H0S8JRn9UkqS/qy6yLUGHKsZpSbfWarkDa6Ok\nh3po3z7Tb0j65QsuaP3xgQ8UE8g2mOiWZmZy7HPrufne6n1j7iSzAC6X9HMHitkbc+piPnUVLdVP\n6lVYz872pCXbXPngYrxrg8quK/TsfbVaAelgXFtrtXnNp3qzWVhFXfjKFqLFV7YTbQHpq7UaY/SV\nUz0D5d87dpTLCzNJinHvLG/NnBTWxPJ7CVs79n8kIEg+qcraZsQOC7Jx3kZw29SUkqOPPngY/dFJ\nkl6hcrJULzSkYpH1anp2Q5ayPqLCqXHBmWcWDr+HH84FwK3vepcuykLfPr1qlcb73Jf5Uu7E3rat\nHO0SOXmkYkLu2VOYvjMzOQ48IGnz174mSdp6wgnzYjCnKqslNA+6OWMo78P936zV9IqAAVZq9A8/\n3Mqs9eQyk3uhLI1KG++5pwjV7YYiYdRoFDVbLrwwP/2ntZreHoyz39Cap75g8Rm9QFLGcjUg5ywn\ndh5lm/Jd8Tjaf1gqZ6kakeky6oWbg7NtH/fu/QK+7EFVMThG6VCjN/IF0yKMHpVbk8MOO3gyY190\nwgl639/8jfSBD+iOLPPzHzrcQ/rghz6UH69qNqU+hCkanS7pV7Pj5MkndWfmrGVUB5nFReeck3+I\n3/EFtrIJtLVWk7nS/iz7f0jV2HD9da+TJF3/+OP64B/9kSRp7D3v6ar/HWGcKk3XJhh3TxoaKhY7\nJvaWZnNe0M3Dkh7uFI/++c8XzA6hr5FS8IobbywsLUupb0cRk5cWVF/G8gy2n3VWPKa3vrU8d7KF\nvW3lyjmRZGMrV+YlQd534YU5Xv91qdDwr7hCf5+9wz/T4lG/tHijV0p58b0L9u2LNXTWtCczJMOs\nKvoXacjU6BuNcgVMZtL6rFepvDsU/QVUlKw9n6UeCSWe98TnRsJ/McIrkyT5Y7UCOL5ve8YmSXKV\npIsk/SC77L+nafoX2W9XSnqPWjtM/bc0Tb/YdW+uu07v/PjHJbUmz5rs9HhwKbV4T/WsMuTYKafk\n5w5V985Z0lck/XV2fNnllys36KvggKqPByx4yxvekFfP+7MsAqed/3zr448Xf4AJGcb6NSmvfbJb\n0n/Jjl/69NPzy4jshtwkMya1PVv07WCyksMb0SMhnXNOWO4gZDybNrX+dXNtOzr5ZNXHxiSV/Tm9\nUN2qa3ryewVnNCLlUVkmrN4q6S/sgomJvKbLCqkQZFdcoV/OxjeOhLF+UT+1eNJZW7borqy8Qyka\nRSozfTK9aFetqNQyI12ksuZOuKaqlEBUbpjWhY+pt34QcmJ4JyOH2N+q0tX8PdpusWrTlzbUEbpJ\nkuSNaimbf+IY/Uyapte5a1+j1vaCv6pWjseDkl6Zpmnb2bLhV34l3bF9e4uJZZN522GH6b9lv/+e\nijhgK5pVT5LKWg/9SDyKaEBF1b61Ul4nRVKhTTz6aFH8iISa5NcffnjO7DrVV5GKwluzahXUkloO\nOLT0g1gAACAASURBVBMpDVzzUxWhdCOSXnqgMzezMT62apUytlWp5df37s0LZeVJVEuM9tZqysqn\n9QzDhUyySkG4++5Y6PWa12EhryidPV/qlxbP0W426/uaa3Rv1saZzWaZGZOJEyIxHJ372pIHsF6N\nT2iya8kwo01diMUzSoZwULTXMqEihoX6De0Zi2+RQWvXzoVsrO0IujHqAaPvqNGnafqVJEnWdLou\no7MkfS5N032SvpUkyR61mH77WbdiRWsgMKVfrHIm4D+5W8bSVC/JJsoGSa/LJuViMXmp5Ti1abNT\n0neziJn/pMJsbkjaYhmZ4+P55Hz6rLN0TKYlzqiI7okYPSNw1kj6HcNjp6Zys3BXrZZDSttVzkP4\nAo7rKDF8QCibkH+pzo5mOjyPuvbaVh16R0/XamGJ4Wb2nWuLLMhWHXGExp95pvOFAUVlEkp5BNAY\nx84+ew5jfbxW0+sOOaS41qidczmLLNPGeRU9mNPfiOa7xjZfdlnRPxVz9o5aTe+0kg7UognRcHMO\nMkBq2hEsQscoN5Qh0/fx8sxSZWYun+lj2f2GNkZ0HDNyqKqQmt/IxX9n/n2AMmM3JUnyf0naIemD\naZr+SNKRahXXM5rIzvVMF3Gy1Wo51mzY/S9IudOTA643m31l9oeq0EhfowJX/CWVN5S40g7ofV+/\nPg/tIrOqn356jn3flDn9Nu3dq+szxne8Cqz3GKn4uMD+rkR1xu21Wh7JsnXlSm2xSp8PPliUWDjA\ntOUNb9DYX/1V19dfYN/SUVUd+Vrmq1h0euABqdfSHL20vXNn8beDbr4g6S9+9jNJ0mbctnXlyso8\nj7EFMHip/1i8JG1+5ztbB9ddV7JQbNWe1WyWd3Uy8hh5pMV3gi+84GCobgQRUaP38EyE3Ud98VtE\nRpUp2R7bqXI0L5Dm28rNkrZKSrP/r1cLGk6Ca0NsKEmS90p6ryQdddRR0SU51X/845x52mS77PWv\nDyXaU33W6BsqNNN/wPF3JX3fIj+OOEKPZVrfia9+deekpOOPzz/gpte/vnVucFAfRE35jdhAIyQK\ntyeeyNvb8rGPFbXHe4n66Dc9/LDq2cRvl7FpNLZqleqPPdb6YwMs0YmJwmQnJHb++f3pZydavz5n\nfvNldGO1mt7IE9l32Xr//VqN09/I/DWvQlkFc8aWnN9frHZ7zbev/dLi6yawq/bDBQRV+jWCLri9\nZRWRcUZMlPALnzMzU97gg0KE91KLj9pnpqs/Z9dV9THaOtJvZeitBMJZPZQp7iq8MoNu7jOMvuq3\nzBGrNE2vzn77oqSr0jRtC91YwlQlnXyytL2l41pxpipH7L/Vavqf7YezqLRC0hab7EzI+cxnck3t\n6mOOyf0P5uR4qyTTf9+swnI588knyw5VY/Bo+8u1mn49g4tuO+ywQju+777QkXmgaaxWy7MgGadN\niKp+yCE9pXQ/F/QMMlN7cewz56Mq1PPfarW+5zxszfrbCULrlxZ/uaRVlnMyOdmxQGBpO0Jktpdw\nb2O0ExNlP0Wk3TP8knsoU6O29bNnT3G8Zk05Xp7751qUDp/J6B0y4EhAkOgMHhws4FSOi7tqDQ/P\nbYd1dmZmlBx7bP/i6D2jT5LkiDRNn8mOL5N0Ypqm70iS5FhJ/1uFM/YhSa/o6IztxOhJZuoy7A80\n36SRKiIz4h61+4O/7Zotf/AHrT8uvDA2vZi2nQmw0IH7PKFmrZZj6e0Yx3NR8ndetHNnqdxCN8Qy\nFvk4R0byRbsYeyHclr1r798y6kt26xNPzLsC6J1Z++du21ZES/lwSDJ0U3h83LtpuFFpYG4IwtLE\nExPlqpfGXImps6bN1FQM6TCkswpGIrOmozUKEaUwYD1+S9Sk43h6un8JU0mS3KFWbsuIpO9Jqmd/\nH68WLDMu6WIw/s1qwTgNSR9I0/T+Tp3ohdFbvPbmD30od+zctnJlvpDGu2qle/KMvhshcij+N3G0\n8TvfySdNqbRtVONiIfTgg4XlUKt1zB4+EDRWq+k3suO/bHOdsQv6Pp6o1XTcEhhDiUZGNPajH/V0\niy3PaR1AgZZBRGP3l5dgP52tCxmLCaKGpIsMtmT5AjLDiYlCuWOy08hIAe2R0VsbhGVWry4Uq7Vr\nCyY+OFhcPzJSZrQsPWDPWbOmEAzWJzpXPeREZY8ZwJGTdmqqHOnDNm0M1r+ZGSXHHNO3qJt3Bqcr\nPWFpmm6TtK1Tuz3RSSfp03/b2mDPDLWt116rFdnWZr0k6fRK87EO7J5n1YrOkaS/OfJIXZntM4ry\nTbonc8CetZDFj02Zx047TS/E8/MMUosE8rWyF5MQM96OwRuZZ4Pbf9wt6bhIGM6jgt9CaSFO/ksf\namUWjG3cmC/wW1au1MWZEz2s6rnAzcE9g5f6H1EzVqvl+RzHq1wgrRPZLFzhfzDNfWqqYIYjI2Vo\nhjHzvkItHbesY8NEJ0IyrB7pI2aijFRWz6Sj14h73XqHamQBMByThdTYX/aPG7N0SUuiBEJHjR4v\nixPRcO5PSvrt7PhTfe4btfgBHBO6GVQ5vDF3Kq5bF2N1GzYUVQk7OV17pXPOyTfOXkoafS9Uf+yx\n3CE7VquFFUXvz9p8ywEc32KG7kpzC+qN1Wr6hezcZT2O0/d1sUImS8+48cYCgiHUUUG3w4fwO+ZX\nYrLRxESxfqamipo1s7NlaMaOKfT5e5T1SkiHGL0PbeT6JaRDQWPEhCreE2n0dNL6uHzCSEy8snFh\nDMnhhx88JRA60bUrV4b16lnX41N9epbXMs5RkZ34n1WUUn5W0sVZrRdNT+vOLKzt3D/4g3LUSER0\nUjEyhpLccgq6SOXfV6vlG1Ns+/M/17tZphk7WB1QevDBedfdHzvxxEJYClbVgw/m78XUgrfgvsVw\naPZa4GwhZJYeme6/BuckqY6NR3KlYcOGkGEfCCYvZdtFZqWPV6vlpJOqd7QyS3yFVNaWjag509lJ\nTZYZrtSu7dpoE3E7T/w/0tyj2jV27C3Kqmt9ZIzH431/pbIvwK6JFEZfb6cNHRwaPXZg2ZqF6u0X\n6rjAIVTljD1Dcb37+pNP5puNhBUxd+xoVa2UpO3b9VC2KDYuAU15qdNCGEhVDf76t7/davvoo1t/\nP/lkEbXApJo+0mJr8guhV6oQED757kAxeJKVy/uCCidwKUIOOPet2fMvYhw9teXJyQJimZ4umCaZ\n3tTUXGbIsEQSGefgYBHTT2fs2rWlomFhVqtUMFm7j36D1aurmX1UX8cLCXtHIyNzGXyjUdL4D36N\nfnKyiJ2viMO2EMSx447LJ/U6xTsK/UVwTpKesSJlyjRgi882SGVwsEhkkbTRtPh+ERJI0mziJ+9/\nv8ay4m5r5IqjGTGrEglTt61cqQuyDFydfHJ14a7Fos99rtWnd71r3k28QNKHss0xbFNxo/syBm/0\nzWOP1Suy93P1kUfmWiJhnntqtd58ILOzuinT4nspnV1F9WZzzoYp/aKq4n+LkfjUDUWFLOx5J0t6\nKju36bOfjZkPfUis9eJ9SxHTj6pEeocqifHodkxYiLkA3j/ksXPvXGVfGRdPS4ACiglTJty4CQrb\n9lFGXdDSZfTQzHrZXOHt3/lOuLXdFrfY6uacHBpS3V7i7t1zQ8X83xVhnfMmxNAmzJ61DSwyxjmH\nXDawUVRG4ICSxe0vgNH/VHMZvJEXs/9bUj2r5FiKbUcI605JZ0WhbBV0/apV895lKqRPflJ39WlP\n4E40Hy2+/pa36LbMcTuhxdkjQWpFHJngfPxd7yoHUbAcMSNQyICNqgqSMRKHe7ratbt2FUx0dLTM\nXKOSxd1UimT5hWh/Wb93bFTt0idGmXDjXrKkqKBbB1qyjP7mWk3ve0sLge3E5OtMn1+9uijtundv\n2bvuPeP+/GJVepwHmUZ8qFBegYRJ+EytpiOeawafmZNjTuPulqoYFBnTf1CBzZemf1bxlHT10UeX\nYLhtmVVYKgXsmMpN2W5k82Xyv6IWRCiVhbYknZ35SHYhXr7fmnWvWnxJQehwbT+I+eJfcM8PmSTP\nz86WNd0qTNzaMCKcx52fZmbKIYudQiOZ+cprKAiYMBUVIZPmFinzRI2dDmP6Kgg/dUlLltG/r9ks\nKhoGYWKka1et0ocwafJwrWiDgHbUgym02JQvAov79YTJ3ZbJG55HgRed65FurdVK9Yi2z5PBv5J/\nWHjcqafqn7/5zTnX/vWcMy0aC4qOPasyw7LldmOtpkuzjd+fOfxwHZEpCWMZk18IVTkdSYsRQ9+r\nFt/pegqiehYWqo98pC8VMY3mhFRW1a/hcRXuzbLCUospRho62/PbBEZ8gnAMn1NV64b9pICKIndI\n3gIg1OPLKlTtXtWBDg5nrDS35sOFFz5nBbsOKPWxsNGBoE5p9y9WsWlIt0wvrwL5trcVfpvbb89/\nN5Bv0t1Xv+yy1rU33FCcQzE4Ov6+UaupAiTrSAti3lmuAfct7tez5xOB046srPDfqQhtvknzh3pK\nfTHlwzNlwjgGZ7IkMGEPZrpaJJLXtKuYrjF6bkjOe7mB+PR0Oabffmd4JX0LNobJybI2Tqcv8wVs\nfLRGaInAiuh2h6mDhtFbXQzTQf9SxV6dL1AG00jS4GAen3tes1mEMjKMcceOziGQzzeyybN9u246\nu5WStOmWWzqHXfot0jK6t1YLNViLb9+hzgxgWMXmKSfv26cbM0dl98jj/CgPTVy3Ll9IC9HorSRf\nV/6Rqancj9FLdU9PvWrxeTw+chTmS39fq+Wbnfhnme/rhsMOy6OA8jyIj31MYx/+sKTWt7+UYzBr\nbmKiun6M9dvXfvfFwUZGiiAHu8Z+5w5TUZVIv9k4I2loOfjwTV+KgVAUcwFodRixNg+tEXsWnzM1\nVWb0XUbdHDSMfpkOPso3lti7N49Frz/2mMZOPLF1XMWsLr883yrP74PKDVaMoppDklTPKoOOZVnV\nklT/7GeL6p6k009fFK06pAVG4MwnoqbjlpILIH5nKgVRPX4LT/4lFXtISCoqvkYaup33WrQRa8JL\nLaZokCdj8cfHyxE10S5QjNKhs3Pt2nLSUuQIrbK8o20N/XnG1EcChffgvuTIIw/y8MplOujJnOgT\nSDjamjF5o73Zwl/FRW/7oUr6xUMOkbKa7AOSPpRtxDGWnZOkLe9/f+s5v//7eW2O35Ly8gEvrNX0\nY7s4YvKS9MADOiHrS88BtD0UpvtSraY3c2eyHmghcfF5GObnPz//iqZW0uLUU1vCOCP7zq9dtUpH\n2yY53BcXmLOFV57l244gkKmpIkDC49L822CfyFJhJimPfUQLoeFoS0Di6N4C8Pf5UEsWYGM0EGPq\n7ZhZuoSIzOJhuYYesPqDR6N3MbBjhx2m+nnntf6wzaON3AYOnr5cq+nXn+solec79agh15vNPIHm\nuyoKnHWo7N++zQxGYB5GJbOcndW2TCDNt3ZSvdksMpkr8hfGarXSFpA9tV1B/a49b+tn62mnaYsx\n7oGBkv/lNdmlv6Vy7Hz9ooskSbfcemvuM7GA5LOazbyNkyS9mf0wqIUx5YyuYfIQmTQZKaNrrMot\nyx7s2VMuL1yllUdVMAmpsI/E5enoZXv0MzD+n0KCGD2KlrVl6kNDSlatep5p9PbCUT4gd8jdfrvq\nWSSFRkby1Pt6sxmWNf71Nhs3PO9pZkY/yBjfixZQYrajk/iBB6QeGJBnVgth8EZbo0S7Kif+4GCO\ntf/jfB94xRX5pu/tqF8MXlqkUMhMQfK7WOV/ex9X1ofzpTzR8OJPfCLvG5PVzs/+f6kpaUaMl4/C\nK/2WgcS0/WbZvNauMarapi/aYarRKGvgUa0bI5+MRWFBTZ9MnNf48dozfbsUCj1sDn7wMHqjzKna\nbgGUfosSnCo0/X8XNDSkF/XDmukiEij/Do1GjkcPqYhTP1RFklN9376ijMU3v6ktwUYlUozRW43M\nE7/4xULIv/71ReXH2dkCAmgTqXVe1t99tZpWZpVGtW5d98z0mmtKdWcWSs9Vdmtl6ewKiMR2zzra\n9fclmksvzTKe5wQBRM8kRu3DDiPt3mhgoGDWQ0NlJymvjQqf+c3JSYSXon5H2wGScdNCmZmpzvpl\naKbPzK1quwMdfIy+GzIs8YEHntt+/Dunb2fM6DM4Rx2EmazeMbm3Yp/WaGenE43BUMNhed/BwfIO\nRh1o5S23FM7BK65ofzGoFH3CGjw90mJr8TfYdpwVz7k1g7C+L2mzbU6+c6euzsqFDEt63y23tM7v\n3q2vZPf9OmrG7Fu5Ut8N2n4oy3je6Bl9tFXe9HS5YiVDEyMmR6YYJSwR5hkZKXBvH2bJiJqofAGZ\nOq2MCMZhG4RrvODiebZtAsuHlNq1XdLBx+izlzO2alUebfEClQsnGTZcf/DBwkGGl7K1VqvcXHmZ\n+kefWsC911Wcj2CPrRHjO/30XNA/VKtpo2HN3dCb3pQXsvvGvfd2fx9o7Nhji7DCt71NY3/+5x3v\nOVAwTV78zOLSXc17MujHM6f369at029m5+6WippQAwOS5Sls2JAzoZXNpg4N+rtxy5biPj6fdeI9\n5m7XMzKFNWOIzdu5SAMmE6dj1idVRVYE24+sAvoCWI/eh2JSGBFSMuHGsdECYdY+d6nqkrrZYeqP\n1crs/j62ErxW0plqKVhPS7ogTdPpbMvBpyR9I7v90TRNL+nUiQWHV+7cWYJoHs8m2OuWmfnSIEA3\ni0Evz/4/77zzcr9NPzNQu2WwL1eB79effFLfzDTg/VLHZKwDicV3fDfZfgYHdL9hbpVnx1JcPdJr\nxsTRpTKznJmJY9CHh4s9W+0ea9va2b27OKaT1O5nv31iFrcgpACKHLC+NEPVJuf+vpkZJccd1zdn\n7KfUSoD7E5z7kqQr0zRtJEnyMbXKsXw4++3pNE37XPmrAzkcfpnBLzEaGMh3vdoo6f90cUv9kUck\nSdtOOaWkxVtdI4vL/w1Jv8ZicIuw9279iCMkSTdkpRZ8OWAjOnFvPvZY/Ut2vPnOO6Vzz43bfg6c\nrbdkbV5c8exvZH191Re/WPZnVUWz+az1+RCTniJt3LfPa7xjlKGLVQXLqMHzmSx2Rqevh2CMvJAx\n4naIdBYTf6dwYTsUer68A7Nue6COXyZN069kmjrPcWe4R9Xan2PJ0NXZRK7cXemqq1r/lunA0Nq1\nedXCbpi8JI2dckr8g2HnGc2pTvTWt/bQse7otg4MPqLv43hsCTF5ae4GJ/VmMz/+XcH6wMYx9bvu\n0i1ZRvWUpM0Iu7w2s9ZYb6qb0h355uDNZrzBho9MiSAVPid6no+WMSIsQocta9N45h1tZRnBSdTu\nyeiHhopa86zDVVWgjZuTsz2fldsF9QOj/y+S7sTfL0uS5HG11sVH0jSdf553t8QJ0WiEDrsSLTP5\nA0u7d0t9gm7GXMLVg5J+mScWYQ/ZC37t1yRJV2dFvTrOrw60WAy+/uY395a7AL8F+/QS2xBky5bS\nWrmYfg4wpA9F4+lCuz/3TrANz+CkubtKsZRxpHXzfjL3iBlbm1I5jHJ0tLw5OCNt2BcfgeOrbkbZ\nsGT6PJbiGjyRs7VTQbUKWhCjT5Jks1r+sc9mp56RdFSapj9MkuQESXcnSXJsmqZzlKEkSd4r6b2S\ndNRRR/mfO1I3i2GsVtPvZselLeb+vRREq6Isq/HbN9wwJyRuUWi+sfpd0L9qbiljySXjLJD+tE8M\nXlrkkMkecxduyYTvxc1mKbojR8iPP74cPtjn4nq3ZpbORdTofQmEiJlRsavShqM9Xf3ffCaxc7ZN\nph9ZF0aM56ejl3vn+m0PuYE4LRRL6qqCiDqVOg5o3l8uSZLfUctJuzHNPLppmu6TtC87/lqSJE+r\nVWZjh78/TdM/lPSHUssZ2+vz681mviPT/2hz3c9F0Rb/npm8lGtpDVR1XFTavVtXZN/qmg6X9kpH\nCcXE1q4tO9j6RG93zLlqu8p21E8tfkDSZiujMDJSwsz5nE5tljR0hO9tyfaBWAwYjHRodJJ14r3D\nkhtykAkSRzeK8HTPrHslOkar6u3Y77Q+omt89UreGzleo/o/ix1HnyTJ6Wo5X09J0/SnOP8iSf+S\npmkzSZKXS3qFFpBo2LEf2aSuT0zkKdRXn3Zarnn9ihRrIRs2FIkt/x4pm+zHHECndb8YfN1tMXgB\nN51ZBCZfomzO9JPJz0eLb0j6UraL2pubzSJKpsd2O0ZCMS9g375CQXrggXItm3lSyUKKIlZYydKH\nNNKp6dvwjJPE+PaIaTIyhuSrU7Iej7XH/pm2TScuHanMwGW8vBd0jNjxY+hh/4xuwivvkHSqpBFJ\n35NUVyvKZqWKncEeTdP0kiRJzlZLwW5Iakqqp2naMRB5weGVH/iA7sr2WKWr7h2SXrUcgbO0aO1a\njX3rW/O6dYXmpuU/V7Q9Y4IPtbmmH1r8QsJE78raP3vfvpCp26YiN27cmDuatzSb+nJ232LXgyqV\nEzfmxnDJ6ely0hnrwbNMgS/9S7hEKsMyRqxAOTBQJNQRruKG5D4E0mfPjo6WNu3OyTulrabP6Gi8\nl22jUbSzenW5To71G5BN3zYHT9P0ncHpPwrOKU3TuyTd1anNvtN112l9wOg/L2kzr+tDGNi/ZZPz\nQUlnmvm8erV+kp3/+SXCiJYsnXOOdO2187p1qTB5STr5gtbmew/ddlv4+3y0eKuTn4c3vu1tC+mi\nzrbs1Yr5PrZx45xzV9dquab96wt6emcq9SqKjJmZiTNG7W+pXL6Ajs78IQNlXJxtRwXGWHjM18Lx\nIZm+zQhe8Vp35BfwCVvWNoUcoahIy+9AB0/1yoiyCoHz2cCBEQdbM20nZCSNhp7Ifj/uzDN1a5Yp\n+X0VFRbPet3rtPXxxyW1rIhX3HNP6wdudrIU6e67iz722dE2hxZYg12S6t/+dnnjCGnx+11Blcx6\nAVq8jeS3s/8/p4UJtwOaZDUPui3r3y9IOjurNKrZ2XK6Pxm6acBRnXa7RiqHVA4OlksdGEPlNppD\nQ0XY7rp1ZaHDsEtrH6Uecka+Zk0BHTLpijj7wEABGY+OljV/WjTc6tPXtWF4pfqo0S85MmzwrW/N\nS8JurNX0SPZztwFHxtxXCJjrSScV6eBZevbTf/u3sqSBR++9Nzdx96uwHv758cfzNv4fSa9YwF6s\nB5QW2dmW065d+reK2jUREaIZq9X0G/ZD1UbvB5jumQeT74bp/lL2/yuygmr7jz22MPXnWTenXzRW\nq6l+5pmt43vvVb0PyoyViDg7SYqTjUZZY420VjpjCY1Qe66Ki2fNI2rjUUz68HA5A5Ybn9gzq8oY\nRBE4vN5bGlEega+fb/cxpLNLOug0ekuyGJR01i/+oiRp7Ec/mvez6/fco7GzWtsglApR2Uv85Cf1\n1H/9r5KkVz/0kG7LzN2GpIuyCouantYtWYLPxY880tUGFP+eaFut1nON96hKZf1738sXyrXZPAhj\nuBeJbHek7e78gUh8qj/2WDE3d+yorHdvlNZqbaPRFko2wzc2m5U1czqR7T9wUbM5t9Sw1NJyTbj7\n6BXuGuUTm3ykTRVGbxr4mjWFAPAMPxIAdMzSGUuLgsKKDmWWd2A/KXSsX6tXx0XNEDrabT36g47R\nL2Z51tVCWrh9kKkpfTnTRqeyf1JrX1Mzsb+uYpcdqQgbe7mkH2THm8gMxsfLRYr6TQFMYtrTfkmm\nG/6jir5+cBEZ5mJ+Mx9OuBgQA9tv9/xuru+GrHYPw9XqzWZRSfOazjFM99ZqpTm5WLSQ931T9n6a\nki799rdbJ4eHC6Y7O1sw1EcfLQu3qFSv7VVx+ul5XXxdfnnR3vR0cc2mTWVGaxmro6Nl5k2BYtFN\nF15YMGMTvsT57W/fV6nM6ClEGHdP3wH3m5XK2r/U9ebgBwd08+CDeZ3xxaRJFZUQjTEep1bVNqnQ\nMqXWi7Nt0dapzOjt8/2CinRzrVuXm+H3HXOMzlgkhtRNjPe5d7X85XvPPntugkO31CnFfZELmRlt\nq9W0me+yj/XgjXpl8FX3dEtRPHKpvWuvzWsB6eSTc6z7ApQyOFB0fa1WKj09b8ZP2IO7KhFrJ2Nk\nuWHfxurVxbHfmtDOMwN2cLBQvBivT8187dq4j1XJS5HDlLALYSlCNH4nK19qwdrpkQ4Ojf7hh8MI\ngX7Qi1XUJVmnrO4GieFOa9boT7OF9Ha3EXJp+zOWVz3QNDGRaydXn3JKvinH68z5vGtXkan6qU/N\n3QCiT/TlWi2vU77YtCn7/yacI8OZIwx6oEhwPmcbghwEVN+2rXWwdq1uyaKHqoqn3Zy9q/clSTUW\nXxXV0i7yxGegMhSSzNrWtS+LwNII0fPtfj6f9XeqNk+hY9aXP6jC26M8AlCycuVBrtHv2qVbM8gk\n2sCgX8TiU7uFHe1tu8GTTy47AY28BLcPR6eNFEeHsKgaJwe87fdn/XhLFwxqrFbLYSRfNOwL2f/3\nZdr1frUgKkm6UFKtE6Ov0NxvqtXmwlGSPn3MMa0/O/a6f3RTcG6sVlM9c/I1pI77CJfopJM09rd/\nO+f0fLX4+gUXaHsWhtku7v75QGObN889h+JpuSa8fXsexnlDmuqyqLHx8fJaokbPdRUxQzvmevTR\nOlEJZH8+qqlTtTVhRC5KJgzprGonEiz+fJe0dDX62dm8FO1iUr3ZzGPj/0LS2UslVjvY67aS4Ai6\nsVaTlXgaUrGj03/O/v+8Wo5sSbrsRS8qY4YRea0qI4+HP5G9w4XnSy4u1eksn5goC/GKcN35MPjj\nVd4rldfSX7IUqP6Lv5gLwqtPOKEvNX0iWqECEn2tiqi1K+mMJRPbs6ccjeKdrlIZjmGMuoVLDg8X\njH7nzhii8cpMVEPGbxriE6ZY68YLnyhjl4yeFgi1fhKtDJR8ODg1esAkY5lm2C3V3/zm1sF99/WG\nDV9+uUzE7JJ0dk9P7S/lmYKPPJKX6T1Ucbnlq2s1XZmNeewnPwmLWRE7tXiI9ZLOtH07N21SBnY2\nsQAAIABJREFUR9qzp1SU7Go+J2OSNz/zTMkymg/Vm019LWv7hC9+UZ/OfDLjC2zX062nnKKLsvd2\n/5e+lFtMVb6NXpl8KRolau+xx3L/wVitljvDn1XLpyP1Vg65L4SIjvOVFaBaBNqvQrjtlCsxTSZY\nVfqX1xo2PjxcjrW3c8ZcmUXrI3cYU8+KmdS6oySoiYm5GH1VVcl2QiSqx2Pjllrfxf/m4aQuaWkx\n+snJ3PTvmRifmlH9ggs0lpnMdWDqY7Va4Vi97jqdct11kqQ3Psf46nlgDsYArqi49sobbyzi4I8+\nOj/PvABuvm3tzUjamtWJ2XL88R1DQe887jidaxmaV11V3uc1q9M+XxqWdOnLXpb//eLs/3tOO01T\n4R0Lp+9KpVK+f9PHxKeuHJFwEr9G0tuzEsi3ffWruiDb4GSh77UTtevnEc2m6tkxx7hG/RW6+yVd\nZuHJUllDJuOOKlL6AmJ2PUMkybgJ/0TZs3wOQzqp9e/eXSg8LH1MoWRUBbMQx/cWSlUCoBcG09Ox\ncOlAS4rRj4Fh9UL1ffvKDB4TebWlqDspGL2if5Q0TzHTHzLcHgz1M5LOs9/POCNPGBu79FIpY9gk\naqVkyuda5iG1lC6893sk3ZrtdzrZxb6nvdCljuG8NPv7pW3uMWf417O/B9R9kly31AuTX0j9HVbF\nvIDPz/7/Rq2mV2VJSrr77gU5evMx9ZA2X3/iiVaooqS9zzxTuY/vvInlq1mZMtLuuSUfHabUwI38\nZiT8nVEvxtAnJsrMk3VlmCVLR2rkeK1ynHaCdFivh/2Nipa5Wjfd0pJi9PU/+ANdnyUn9VREtE2o\n38VPPz3nXN1HzGR0IKs5hmSMXhXMxmKA7fdsQuxbuVK/l52/8qGH8gil+pNPaizbtzSP+12/Xvr4\nx1vHWV36kG5quTgb6r8zvG41grol4Ldfdz/1k8nPR4tfzPo7rzrzTOnd7279YRmy86AX8o9emMT6\n9bmWvEpS/aMflSSN1ettbponMWotCqOUijU+ORnHoHMDEm4ZSMbL5ClmyZKiPV7J9Cl0Igcx++TH\nGJVpIPnIHP+96FfqIcxySTF6XXKJPph1fuzii8NL6llixdjRR3dnKkeJSfOQiEuSsne1stnUlTjN\n9xK+o3YM3ijD7+vnnKO/z0rirldRbni+Drv6E0/0Hn6K71XPcgDGsm3tSiUsFkC9hkzWX//6Pjy1\nA33847mTdJ8J7B7I9MFNLOW8EPrIRyRJ9VNPLbJhG43+BE2wMBkds8YYWZHS14OP4BgyS2PWvM/j\n9RXOzlJ7UfYuf48sZUItfpy0OqIyxBGjp0Z/sEI3kvK47vqFFxYRIatXlzPXVESRLNMi0+rVynIW\n9cuPPKJLMifx/1IRQbFC7TXr+s//vLb+5CetPxa625QzZxfK5OeFxb/hDXmdpUWlNWvy9bDywgv1\n8qwv/6RWIp8kfa3i1hfKZWP3k+jXGRjI3+H1tVopw9q/u/pdd+UCes6mI1FW6dRUmUmT0RqT40bg\nRtTsqSH7bf18uQW7N6pjs3p17JglU2YtHCNfgoGJXqxeSebNcXpfAH/vgZYeo88yG3944ol5fPSp\nUp58syXTTu6W9KED3LWDhmhuRkWxqnauJ2XfYduJJ+ZM/PFTTikx1v3u/yq68Sc/yR2tC6Y+Fvfq\nVYs3wXZAmHxA5xFnzxb+GaefnjuX36FiY+9N3/veAe9fJ/bzg7PP1kuy4zk6cYRHM5OUzJCwh8fa\npXIo5MBAwYAnJwsmTm19fLz4m2uCNetd9NkcTbvKGcutCVlgzY+XWx/Sweu3RJznnshLj9FnUQkv\nbDb1nmyxje7dq51mHmYv4TnMPV36REa/PSvBtXZt6/+BgWKnIKudIpWx0c98Rp9+z3sklTX1+WrP\nl+7d279KmdmiNpz/9iOP7HkLs/kmPi2ZevhkMg88oDoEdz1yEh4g8tnHdYOMLKZ9wwZdlFnpt2Zw\nYE6RFi3F4YjUdHk+gjSoifM5ft9XY6iTk2Urgpm0bMNH27C8MsM7veUQbS3I57DsA6+x9nzkTpfU\nFaNPkuSP1dof9vtpmq7Pzv2SpDtVRF79dpqmP0qSJJF0o6TfVKv44Plpmravr5SmUqOhe1eujAsx\nAQO8PluEM1KRvn8w7gGbhXR2hZdX0LdNEKrAzn9H0h3Z8Yfe9jaNZZEydXvejh36SZa9+PNk9BMT\nuu/wwyW1aviwauRCaduqVTosO97UqUZOJ8oWk/kN/qnH2xdSviDPVmZd/KVABnEODuqZw1pv+oiK\ngIO+kVk1p55alNw45pg8Q/uY887TzbffLqnIPj9KRSnmyvnl94P15Qkklbbhm5wshx5aG0bT0+Ww\nSD6HsAuFCOPu7TzDLq0PJIZi+uSqKOu2ai9ZJlJV3cetCbukrjJjkyR5o1q89U/A6P+nWvvDXpMk\nyRWSfjFN0w8nSfKbkt6vFqM/UdKNaZqe2K79UmasvaCPflRjW7d2NYj6y15WvV+omfoLiFpYENGE\nXMzNMiw++xOf0NiJrdf9ArVn2G9UUXK3E87eL6rfddf8tfsFZEv3ZVs/S8p74IF59WHRyKoqnnNO\nd7DcYlFVVmewBu+v1crlPcwHJ5VL80bhi76UgV3PrfxYx4bQDY/JPBmLz81t+Ey7d/fuwkKO8PfR\n0TiKiDkCVfvH2nXWRwsmMWHG9zQ01N+NR9I0/UqSJGvc6bPUgs8l6dOSHlZrw/Cz1BIIqaRHkyQZ\nTpLkiDRNu8sCsRd71VVanzH6s++8U2NZgaRXZpf9g4oqkRocrK5lYtDFUqDF3CwDm53XLRFl3bo8\nS9h0pONVMPdfVfEBk5e9TDdme7kOq7/JMaXImG7fgU38k0/OGcRN3/zmvJ7fryJkt2ZY+EXbtz83\new5EFuznPqexd71LUgsquTGzynyOwgEhLwCN2VHJys7NEQdMWDJiBiqZ4Z495fLAxhgZUmlWDjH6\nPXvKmLf1b2KiYKi8l2UN/FZ/PvLGO0nJxDlGtk0/Ax291NjpsLV+RE7fDrQQznO4Me80TZ9JksT8\nbUdK+mdcN5Gd6zndz2ph7MqYvNRi8EbmW//hU0/phVXFqj6Xuae6SfdfDHoOdkK6PisG90HsOWrT\nEvEIWkVmMDmpS63O+dq12pYlY/VDyye2v/Wss7rDum3BT05qIoNpftzjc/tdStjyCcZOOUV1K3rX\nTZG0+RIX8uioxn6Q7W5w2235wuX3obWzrVbTZibJHQAaO+208v4ArhRJfd8+fSM7Nyc3g7i4EXFv\nMvrh4TJO7TNm160r7ScxZ/Nta4PMmALGjlkawYdaeuucpRaksoCKat00GrFj1vsCiPXbtUskYSoJ\nzs3Bh5Ikea+k90rSUUcdVfyQfaBt3lnThm6SNJQt2g82m3lN+S233NLKIFWW7GFt12oFZrzYmk9V\nUkSfnxHV9xkLMll38XfUWrnyDW/Ii3m9RosH4+wXqhn++MeVTOgb2TWfC3/tTItdStj2RxjQXCdk\nv+ihlSuLmjnj4yVflc3fH1bc25A0luH1VQXW5kt8f/V9+0pzz357TXDfvStX5orGL0h6Orv2mGaz\nzKwJb9h5Mt3Vq8vM0zRcOkjpvOwk6AyGkapr01DrZp16o9HRzhEx3klbFanDQm6ef7B2/QHS6L9n\nkEySJEeo8LlMqJzFPqpAgKdp+ofK6idt2LChEATZR9vcbBa48/HH5zVrquiDWSKNJG352MdaBxde\nqI2WeIUqjYu1MEM6EBo9YpkllXDaTptRX/nqV7f+uOkm1c85p3V8zTW6OYt37qZY2byTlqoW4DXX\nzIvBPxd14hdzLm00n4A0Z+vA/5j9/wXFdKikK23Xpj47jv17tr+31mola2179s5P5vUZM7xv1apy\nJnrkWCQWT+x8aqocpeOjUKp2euJzyNB9UhPhEmubzN1n2/pztBAoaAjLRGUbfN8Zg89nRzV/OtBC\nuNAX1AryuCb7/x6c35QkyefUcsb+uGt83tFdjz8uSdqd/d+OLBGjvm+fxj784dbxpk15/W8iqk/U\najpuqYTKLQLdnOG0nQy8hqR9T7X2yVq5dm3h5xgd1fuy8MWxI4/M48ffqJYjxtN8Gb0vdWyVMXvN\nuj0Qe7a2a7v+2GOtP3rc1epLtZrebMx4cLCoY8Ss8Iq+VzF4o2dV1I5aSD2ekE49tZgrAwP6YdbH\n/VIRsrt7d772Hsl+3/yxj+mJbG0+IxXb/V1ySQGjMGHJM2Aj7hlL5kmGb+0NDZWZrh37mjJ0qpow\nmJmJo2PYPvtBYWVWBh2wPqPXaHCwUEQZsWP98cSIni6p26ibO9Ty241I+p5adZfuVmufi6PUinJ7\ne5qm/5KFV94k6XS1gj4uSNN0R9SuUdUOU/1eoP8h+/+vVUi4vmtk7kNem5m1H7IdnqTF1fJPPXVO\nPfVeqV9lBQ7EM5fabk9dleXIoIKxb30rvv788yVJW2+/XVsMZ3/00dJ2mu/J/r9Nnd/boZKuzAT3\nvx35/7f3/mFSVGfa8F3UyEycccHNEEYhAYNEDLyvGngD2SVBXzFKLlz1RYMmGiCBKCtZ4EM2sDjb\n9o5zEYMussHX31FXE2UjUSNf1ChfJOFaxUAcNriQdUyG3TEOcbLBOJhBpqnvjzpP1X1On+qu6q6e\nacjc1zVX11RXnTpddeo5z3l+3M8ofKDcMb9xI15XJtHxBWr2ysQtFRVmEe/8lvp6sPrWLPxHTAdw\n8KAuAKPYI+Wde+QR/3PmzICuAatWhZPFCy+E0TirVun2d54A5JjTT9dZMB980N++8sqw45zAZytS\nEmVTZxOVGWsvMMsaAn7fuGZszKib6i08wkgQVvdxhMyGmVtuCbX7gdLgKxlSGYF3yb4dl5BsCG1/\njM5jbvSocM2/RWhLX/Cd7wBAEAlSDGZx77gYSC2esQR+cl8piCpmLnUJOhBq4jtcFxzTkvna1wAA\nLd/6ViDomxDWKM6ccgqwbJn/Txm5GonQ1havUA4A9Pbix+qdPi+X052uHIHDJgsRql1doQCcMEHn\nw+G+yPecOSvb7IxljZ61eNOcRPkKeeGrrOXzxBGldZsOWDb72AqSSF/27dOibpxRo44jQY+waHcx\n7SWzf3+wZGVH0YAJ+gFGMYGXWa6KuN18c76HH8ruOmKE/w9lDWaHDdMKVOdNaN/4hrWsXGQ/stlY\nrIhpCvga+MtRQC/IzauLGhR3TCdaHfb24gEl4P4TYbGRmQgjo35UvJVE+AKA8a+95v+TIoVEHpIk\nw3V3h0Js9OhQizajbjh5iR2jTGVgJhiZNnIJnWROeda62dHa26sLeDmG/RwdHflkiaa93EaNzOVC\nOWPXJDVjLV62bRQINTWxBX31USBY8MeI6j82MKc9RwOsdV2sVlpQ9lvfgrBWVE3pwBSxNuakCAAt\n69cDAJpvvtm6+jgKBKYEACHFMaCXIZQXSw3EJEIeiEd9m7YW/1cA/gf5IgR83+LENcgxXNBmJdFI\n8/00V6ayYvp+3E6XgO8CALFfflJ9zjrhBH8jyqn34IPIKSoM11h5SSz14lwOL6n7/iPAarqxVUjD\niy8GuTGZiy8Ok74OHtQFti1jlbVnIJ/6oKYmTCyaMKG4LdtMvrLVjOV71NioR/VIGzZaBrMiFK8E\nbP3iuH8+np3SCTJiBceMRl/uUjyzaFHg/NnuunokQCUxEJmKKkHlmYkTUfiu6hAfxgXkT8jW1kJZ\nO/2XXbWdnTjRL/gC2LW4G25AVk0i5aJSZprMgQO67VMSe3p6Auc+mwJjtVlsXG3cGIT8auft2BFo\nmzwZyJ0dCt1sllFCet2RI8H+zDXXIKtoB3glMhnAbHH6cmhi2khIb7FOPbe/AVArvDhcSIQ14Lq6\nMAyS+Wg4rFGe3+jRYe2Gc8/Vs0rleZ9+ut3p2denm32YAkEc0LNnh22yM5bbYt4bGzcN3yt2ErNT\n18Z5Y9AiHF82esIWNTii6Fmj8KdqujErMpmQhfxco0qXYIfrYqrl3m1w3eLZl0ozCRJ9SkBaQl5+\n2TAQP3shTY/spIl8B8IayWn4o0fHNj3GhS1hKkPcRn8BP+ggr3/PPVfZJK8EEN6qFaaN3lZwm7lm\nOHqFbe22mPfe3tDM0tGhm2Bs5GXMgdPYGK4MODGLQxwZPJ44GUuOravT4//ZoWxLDOOQTfM3qu3j\nynQDILj5SQV8gOuuCzR6M973uEVvb1FtNAhljNDEpmaz1v0Xxbh8NQh4wTz1OXr8+HhhaSVqvVkV\n2vpZpG9rZ9hMSpwgZxPygJ/oJY735qgJT2hDomgeZs/Wqp1Zy+rFgHaHuQ1bpqgZdsiC2UYUZiNG\n42Qjjq5hpyebWnp6dPZKdpKa7JXmaoaFtS26hvvC/eUVDa8GGCVQFh8zgl6y/Eo+/957gXvvDXfw\nDU8T5gOv1HUKQQ2AlhiRSoET0uZgAtCayWCNhKoRHkNY2zRtVCJkcrSE7113XbwTymR+LEXI27T0\nKIjp5vdHjuCfZF8uF+v+yKpCTESXAnpeCY0DLXtVwD4boOR7Jf1Y77pYLpOOGWfODlNxpDLXDDss\nhdhw7NggJwEzZ4YCva0tPO/yy0NhzJp2TU1oAho7VtfM2XQjmr7cKw7zZEcvywPml+ffyolZ3Bf5\nHyhbjhwzgl5efrHrJaXR1erEdndXTvCamuBAlC1U12x+553YE+Sd48ZhsXDjiGMMSuhYnIrnxmhT\nnllc4VwpW/yVQOjgKoHkTkaKeFk6ChzLztik/V2jopiyqooXAEhgZP3u3cgqDqNJQCAYTga0pKov\nq88P0/UzGzagRfkFmnfsKJ7YReYNax1lyaBOCcufe043UdiiUdgByWGUtmM46Yq18oYGfbJgRFWP\n4kQulhm8opB+REXRcASQbbVgctDzKoFNOmbbaSdMVRpJbPSCpC/Rn6qN3nRUZSdP1r7ObFX5i0aK\nfarYvl0TXjakrcVnWltDgVamTfopdf1LFJEZJy5FIe2kM7O94H6R0zuTy2mUwHLfzPyHUjN508ad\nqn+LOUKJtXXWktmMwUKxsVGPbwfyzTlMe8zOUxvZmRnSyEKas12ZZEzOZwFcrHgJTxycGNXdrTNp\nCpj1kiaC4y6OXrBbDY4nE17jg7RdC2BR2oKfCzH0Fwd9Mdx8M1pU2GKU0AnstVEEY7aanAlxm+vm\nl45TSFuLD0jacrnQjjx7dqI2TPyX6oPw/myJPrRiyIwfj6yiaT4V+vjdoPq3NJfT6izHvXeTYIQZ\nC+V1hScCEfR1ABaw6YbNHuyEtHHdAKFAZJOLrNwuvTT8vrMzNO9ceqluOpExfvrpdtv9wYPAyy/7\n27Nnh8czX7xJZQzolAqsjZuFv23Vs7hNjt6j354qH3014SylVT0ZQ6tiRLH8JcUONTinbtoUFtDo\n68Od558PAFi8Y0f48I2H0u+48UY0m/b1+fOBq68GAKy/8EIs37TJ3x9lyipTyAN+VIW1yHYKWnwm\nmw3S3VtcV4/ZLlPACz6s2hSmvi0lmpDKwp49gMoLMZWUpUyvwTHYcZsGsEfMPCecgOyRI/72oUNB\ncteCCqyIRcw1AdE2aPk9XFmJtW4gFNgyETQ1has4s/C2TeiyBs6skmxfb2oqnPXLk9Lw4fo12Xkq\nEw0/J47B50gbTgzjVYxpt4+BY06jTytMLcMRB6ZjpRDkAe3caS8tNpCC3QazX08+GURT/HLkSJzR\nDyYtU2inrcWzL6AiJjripqkWBLb7XE5jiXxUbf9HxHmlIrNyZWj+e/rpVO5zYLrZvTs0ObFA7+wM\n98fRhnmsF+OXAfTVgqyEJk3SM23leJNv3iyUwitfFvRdXfrkIoK+ocHOWc8JY3w9kVFNTZpPwhk2\n7PjS6JNke8aBRBxk3nkHm8eNAxAvS/Z7KmTwCp6Re3qwUTk9lzQ3h0VOOA54AJyyxQTmEABnq2Mu\njvrtUUkw+/YVTaevlBZf6LzAAUnJXRg9uizn+4YqEPBDobN6ctEYCTmejvIFfKRv4aabwjHsugEj\n5YwyBL78nvVnnYXlQt7GY62pKRTGO3eGWjpzybCTVkwr06aFBGfsON6zJxTol1+us1fy+2zSDsi2\nFDG6+motRyL43ixOwufKJxdPYU3ftPmb1+cIIRsdcxEcE4L+dddNTF0bFw8NGxZEUcxJktlnhEAt\nueMOf3vKFH0mloHFq4WEGYRJcNh1g0LhcVBsqGyrrbW+zC0TJxbMRai0Fl8MXFTl/RjXz4N6btkE\nBXAqCXP82+5XGvcwSpHK1tdrxHcvqs8ZRtEb7T5LxTIuQk+wvtPsmGQfl2mSYiphdqQC+ZO6/B9F\nARxlLjHpi7kMYSHFjc0/Jl0Bx9SzEmijHmYZwdmyPEHFRPUK+p6esmPn46CDtrO1tWGmaIRgCIYJ\nZ8d1dmLT9dcDAOoBzBaisJ4erFWx++9DldMCcB/S5Qff7Lpa5ai4OArSAHt7dX4QNQh/AmAGDUjr\nyqqvD/dGlYjDwFEJsyAJqo499VT4osyebZ9w9+wJQhnTQGblyiBktZD55/Pq818s3zVAn5QDJ/qO\nHUEx+A8hXqGYUmGbBMzKZsGK6vDhgO/og+rTrOampftE2dFFc+7stDuHufaqaPSAHi3Dwl1WeTNn\nRidS8bZMMN3denlCm6k2irvGlhhlnht1jPl9gqpSjKq10fcnl7i4WNpQgTBMiWBgro7bb4/UcgIk\nMPmUeq9qoGLMoeKlKWJDuLezX/kKxqpjLgdwa4L2q4VKOAofBLBEVXG6+/nnAyGZhnnwbwF8wMIF\nlHVdyJM3V14SGZZW4EBcfBbAp+RZpTzJMTIbNgRa/ta33gqK1AM0VliQtbeHphGTVdImaPlcKVQ+\nbVoorNvawnfQ5HrniYEFPbcp74etYlfUCt1cvRfz5RVb7bPfoK8PTm3tMRhe2U9afBzIrV6zY4fm\nbf+e0mCuiBJi27eHqeO9vVirfAHmMlU0MhEqmauuQvbRR/3tlSuRXbfO3z7ttNCBQ1ibgjnrYwBO\nUtuzcznsV4J3TC6Hh4gTvRQk1eIzuVzIfbJtW9G4+1JhUhCvUU75DfX1WHqSfzey775bcvvBuNm9\nO0zOicKECb7dWLblOSthkK2tDdszarMG7JGHDsWu1VAIEpt1c9ktxcPZ8BUrgXW87Ntnr9pkpv6L\nYGRFRVhWr746NOnsoXXvpEl6+T6O47cFZXR0hO1Pm5Zvaolrik0ael3kGMd1KyvoHcc5A8Am2vVR\nAH8PYDiARQCE6OTvPM/7YaG2RNCvd12t0EUSZC6+2N948slITdEUroCqvqOShrLnn4/M7t3+F8Ve\n0rhQg2vvWWcFGsxvAGQ+9Sn/Hxk87e1h6CZnNUaQjaWhDWdeey2M/589O6B4PhXxC5bktZlQi09y\nfGbEiLL4cyqNtFeDWdfFfLU9JiJE9RMAfp6w3aCfFynGItF+BVRzQFCDeNQMcTEcYc7D4sOHw0mO\nC4Lv2xdtd5cJgJOgpI3Ro0MGSsAXzIBv2inGx//yy6GgP/10PTNW9re35xck55WAyTppKyXIhb9N\nmgSDc1775Czamho49fWVjbrxPO+XUFYPx3FcAG8CeALAAgDrPc+Lvco/umsX/liGkP8oEHJbwK9t\nCvg2TX4JmlVGoNg0g3Pp4e9Qy1YbY2NJUAPi+9BflOxLL2mHZTo7A36UqfwFF0t44QV9AJeAzMkn\nh22MHq39dg45TRrGWoqZJo5gzCtEraolBdmgra2Jue/TxGcAnMdx7Ckiqgg3LrpIE85tMZ5VcK7w\ntQD5Al6ghGrm059GiypLORNAxNEl4SCI6TOKy900eUQ5H20C1kYvwGGPhcjQbFEtLIxNzvq4MH9P\nMZNOMa0/QR/ScsaeD+ANz/P2+yVjk6ELwDfLuPg1xgtxHv1/8a1qvqFyalcDUMFXeU7XqWm/tGrA\nrdm1C62KfsCmGT08ZkwY1SBOUUAbvOsuvDAxx48gw1WiokBcQEns1Glr8QWhnmdGQljHjkVGaVpx\nyxemgbHq87y0fTpxYAhoUed2wqBJkLFM3EWJ6CBefBHNst3biyPKRLQ18oSE4Og0W6SNSVMgjtnG\nRp2OgKtQUX8B6GaZ7m6tDJ+WdcpUBrbwyn379EpVTGYmsDFTHjyoO5f5t9kStjgyqKtLj/QxrzMA\ngv5KAI/S/0scx/kS/LG3wvO835snOI7zVahAlI8MG4bM3/wNsi0tKXUnxG2qZuwKEvTjzjwT2Ls3\n79iLgPTDHpWTZ9PkyVYBL0Fj1xgViTLCtkhhZStJqLQkqLoFhJTBmba20PHEL70RJhcHpWjxpya6\nQgHQcviBfhTwgGJ7fOONfr1mIcxSz2EWECZP7d8fjmUuZl0q6uqCYj3bXDcYyxnHQasy/8Yx7cjb\nlTcOWBiyzZ1NJMwNYzOZsOBjAcmhjpwAZbOvm6sLzozlfUxDbO4DdBs+rzj4mhzeyZWkeAIweXJ6\ne+3CvwjKlmqO4wyFX5Vttdp1J4AWAJ76vA0hqV4Az/PuAXAPAJzhON6PSxDyny9+CFbcf3/+zj17\n8BmLEJq6NTVdJYTSpqKE8sf4HzNZpACaUKIdva8vjASaOTMckBJ2FhOlRtQsSmvFRPdHxNg3EQ7o\no0gePSPnRgkscYCeNRBafEz0R+W0NblcYNpDXx/EcKb5U958E7epHATRyRsArFA+sEfNyB6OgOG4\neNbSWZPl7FVb4pAIVHbmcjUqU0iyLZyFMdd75UpRJgcNa+tmHVsRzEZ1KG2lwcfYVgOC3t7wmgnq\n/6ahvs4C8HPP8w4AgHwCgOM49yIGB9RJkyfjvFdewXk33ZRIq5d440K86L9UNS/PMDi0zztwIP/g\nSjA4Km3qqoULsVktfefcfz+2qH6VuvRflMsFA/K/jhzBt2Oe1zJ1alAQe96qVdivtHhb7LYNZYdM\nlrtikpdDfDJNTZrZrxyHYbGJYfEpp5TR+vGF5l32EkBcXnLFhg0AEJROXHHgQCDQ8kadT841AAAg\nAElEQVSBjIuOjjAEkjVgtml3dOgROKbDsqdHpyiQY9mMI//LJyck2ao58TH79ukJVnIem4v4PKZH\nZ82dGS4FZnUs6Qv7DThaKCbKDq90HOcxAM95nveA+v8Uz/PeUtvLAUz1PK/g2pHj6CXELv5P0PFR\nhCGBExCW0DsRwErlbNxYXw+xJVW00lRfH9YrQToEumbzObU9vpzrq1j3H3/lK/hJ6a3ERlqJT0Gy\nz2uvRWolkmL/IkKN/Vn4TrxqgMS8L4koAl4RRFznaaKxuFdtp87OyujtRatSWtYYRcOZ9lqKlog/\nLHP4cCAMNw8bhrfU/g8CuEqi3QxqEc2Mw7w3LCTlHIkgmzAhzMqdPz88b8+eUBhPmKBXdRJwPdqx\nY0PBvHOnzlgp17QlTLG2zhOUWT6QuXtsZp+urvzi4EYFqopH3QCA4zgnArgAwLW0+5uO45wN33TT\nYXxXGL29JQn4JiAIQ6t97rmQ56KpKYhHfw8IWBuXnHZamKE4YUJotnjyyXC7WEKTCX44SiPZcOSI\nNZLoIIDvqu1MVIhbDKxVq4JS4+njlrtLM/FpKKAzTEZAaBc4mv4MIHw+4mBctiy13Iu/UZ93wX5P\nNQpkRn8R2UVch3mKKirgBXV10SsnKso9Tvhr5PkQjcCcESNwr/Ib/Q7QtVgbkyWbPZjL/eDBMHhB\nNG4mEuOasg0NYSw9m3HUbwKgZ7zX1ITCvbc3jFabNk3nh5dPXgkwFw+vLiTZin0E7HTl67OJilcX\ncm3TrFMA1ZUwBaBVCY0kS/BCgihSwylWFzMN9PXhbaXRtyGs4zkcoSBZWc6LqaIQ9o8ZgwcTnBZo\n1LfcgqxyVkchLS2e2RbTBlcdO1ftezFhG0MANKsKT96MGfgH3p92bsXxAIsw/r3r4mTL892qns/5\n/B07WoHwfeQVXne3XZiZESg2G7igr0+PyrHREbP5x9SiOZGKI304jh/wlTtO2OL4e2mPlECtehQQ\n/gYuPMKJkmxakt/Q1HTs8tGvkWiT0aORjTkJbXRdLBk/3v/HcCoGDkszblWSKCoMyRSb19qKdhXv\nvTgtYae0gzG5nFZOrhiCmqEFhHza9AUS4DfPpIqNQoSZIqeu665c6e948EEt5LRUE9ZRAFtUNu4Y\n2t8E+MyNgB6m+KcOS0y7TcgDhoAXNDWFQq+9XRfoMj5MckA5vqPDzubI9nIuEmILTeRaEYX4Z7gP\nIlt4HwtoG18OH2tzrMqnbWUA6OGggD7JHNPFwdWN251gpfE7IKi+U0NhhzwUW2pr0SyOot5erFfL\nyeVpa5g9PeEkMnNm4C9oXbMm6NfbrosRr73m/5PAc95fqAQJWYf6bKmvDxLaZphZv1TyTUI9awCs\nyWYBADsymTBpR5nkmFERKJ2npgY+DQQAoKsL31cRI78FsOmJJwAAc2XZf/rp+Q7AgcRAUGGLGYPo\nQfa7rq90mIjo3zplPu1zXaxWqylNMPb06BWe+F6bphwgjCZraNArvonm3NER7l+1yh4lw9smIZry\niWHVqlDoy/vLArqvT69xwQ5lmwOWo4s4ooe3ORKI+xoTVTBKDSxbBgA4a8ECPPnAA7FOWQWgVgpb\nP/igdtOEB+QzgGY3u05O5qUfkM5Lo3wBr1PGJpuivgvgCxMnAgBGWIivYsP0/JeJNLV45pQZC2Ce\nhLleeWX0vaWlrK0vU2+8EVMtmv561a8/AEH+wZ2jRmlMjlGhk2PV5zypowoATU0+ARcQ1haoZgxE\nAXrRrglWIQ9E9u9s/pRjOjv1GHXmnWHiMT5G9st73Nho19IbGkLBzKYjdnByO729ujmG4/HNd88k\nQOMELA7FlN9jrmzl3I6O0I5vq2nb0JBf2DwGqk/Q33dfsPm3StB/YNEiZBXdL+NE9Vl72ml4W2ld\nIx57THvI4kCbkc1qNsEPJByUsVFXF5SwG9/QgBNVaNnfAPhndUhqDjMawBkJd9u+PQhnS4K0tPgg\nrb2xMfCPzKuwg1CSb3qA4Bkv3rwZ2TlzAAAfB3CFEtwPLV0arC5OBE1AJgXusSDgBxJlFHIRiFgc\nMWtWOJbNWHfJhuVrmoqNCH0+lu3/rA1LG9z/hoZwsjCdsbZz5X/+BKKjr9iMw+YljsYR7ZyZMTnU\nMsq8FBPVJ+gJHzj5ZADABouQB8LK9szx3VBbG3DFTN+2LXB6tmQyaL5O6fGNjfCUEHIOHUpXI+rr\nw0sqGWQf9VGjeFi4ENi40d9O69pqFXGbJeO3EFKnEibHl/hH9rsuxojv5eDBeOYqqQxk2MWfVyad\nC4SXp6Ym4NQ/CoQvO0VN/TsQOLZYFzoTCO7bIPof/6k+Nz7zDJbcfLP/j7nCtpGKmUlSJmcNl+Nj\np2d3d2jemT5d18p5EmEzChc44fZN8wnH/JukZFHcOQImOJNz+Dv+jRytc0zb6Blq2bS0piY2yVYP\nqLQaDZgGQLP/OWlrmTQIxB3ciHAwT4NPDAUAuOuu9G27yn68AgkKa5epxcuKaiXX/BTU1SGzf7+/\nzVpKIbsi2SbvVCu0xR0d4Qve1xdELl0g55iFGOQZP/44oCbczKc/HQj+pVu2oFUpBrN37dIzMgfR\nr5DVdh2gO0k5Bp3B2aYspE0zCjs3Tbs4J0lxTLuAGSbZRNPZqQtqk5venHyiQkSj+POpDqw1A9jG\nv5PAhFPdgp44IpI42eTntygSMcCfAMSUcCYAyYudc801oZOlVHR3Y//IkQCAJ4Egdp4pCnYCQUbq\nGVu2AJdeWt41oxCD3TItLT6goJgwwT5xqZjqLddf72vP8JNnhPahARQD/vjjaJk7FwDQvHVrYF/P\njhvnM4wiFAyA79QFgObly7WxcVjtrz3zzGDf2p/+FKvVUt779a/D48mRWA4kuWsngBV8b/srkWog\nkMJv67btZDMGX4e1btMsw/ZwARMD2rJKGxrsyUumU1X60tioTxg2E5CNc4fj6Pk8TgYz+XU4pt+M\n3mGTTxGaFMaxMQJragLyrwLci3lgATAEwKKrrvL/mTbNN58A6ZhOGhsxRjlVl3K8bXs7sqrw+OoI\nXvnUcfbZyFxzDQAg+/DDeV+Xo8VnbrkFL6mQzB+hgPNNoCgl3gXwGO2m6GB8TF3zh6Cwz/PP15r5\nlaXp4FhFVyxQ+ZCoIRMWJz+9B7+IdiKYORdNTcipZB/37rsD9sh/Nc+T5CFjUpeM0RrEuIcMifox\n4/nFryVjuj+Q4lgeAuSbKOQaNpMGm1dMXhluC/C/Y803qoA3J2CxWYYTpjjUMcoOL9s2+ztHzPB2\nlAxiQc/MnSWUE6xuQU8/KImAtzYFhGnRHR0l3ayC4NlcslzNGbefNLykAh6Ip8W3fP3r2uQpVajm\ntbaGzkxhxOzsRFZFFpngNs5Qztsz2tqQvfDCon2IC/Pp2n7fFNfFSa2t/j8LF+rmG6G3XrYMLSq+\nvlk5dNe//XZgtrp2/nzUq/M+qpy/ASJWbUHGqMTnx8TbyhQ1wniWG6/1k8+XLFwYCgRbubsqg7wF\nQ4BQGLK92iz3Z7NdszbMRGY2YrLOTrvWLcfJZxTdMLdZ7F2OCr8tVmCcs3FtQn2g2Cv7A0npcyPb\nGTMmb19m8+Z0zCjqBXt7zJiA24NdJdna2iCc7JJNm0JnY8oop4JTMZjmM/E/YObM/EEX1ywi2jIV\njqkERAceDgSVvk56553o6BEV5ouaGkgg4dMqmqkXoXkOe/YE0T2xIdeUySQmRsgEYWDJ5s3hP0kE\nfDmKhyhNSalC+PL8DwtgdjLK79mzJ1zJcOYpn8sCkMOkbZq+jYpY9otPiCcJXkWwxm4rZMLX4smC\nzT88WZi/2eZf4ASxElDVgj4tAV8IrXPmaMRMJYEcOI8jJC8zBaNYz9vmzrU7KstAKRWcyi1HGJhP\nqGKXFDjJ/j6vBIEdMsleeimgViKZXbuQJf9KGlBGDy2JDlOmhOYQU9hRcpQkZYlouRxkipo0KS9p\nq2KImpRKpfGwCcCYaFU5ImtY0E+apNdljYk+IF+gCTjZKDihTxe0pvOW7ewslBmmqYWZJ23X5P/N\nvph9LXQt234bA6fA1N7NgiUxUX2CXmWumXbaSqEPocBrQBgOaWW1JO4abfnc3h5o9FYHkwWyuuDy\nfaWiklp84r4krelKWmUgMCPCLz+OkI20VDBpXvb115ERR/z06dp1C0007DN4tba25Gzc1MDCsZjp\n5r77Alv+nSo7vCAlB9MUKDxKhUcY2b17rZThzK4ZiaRCMsp2D+h2eLbhsxZt2s6j+mRr0xahZZpz\nbBp4lLm40LtvTjo8KSWYoKtO0D/QTwLeBk0ISHHuO+4InIp3T5wYvNTXuS4c5YDdNHFiEFKZFJK5\nmzl0KLTNxdTyB0KLTx30kjUrqgPU1SGjzBQtw4ahmSbDZ1T/pRbwGqLm/Q3CyKYFRjHtjGROP/YY\n1qnJeuVll0U6MDOKoiI7cWIQ7SNO3QaEYyU552iFYRs7L74YjOHstddiqLLpy+9Z67ohI+fjj4dF\nw5ctC3JUvuy6+LCqqiV5CwDwR9fVkg93qXs+mfb9m/q8OE7/o7ToQnZxLv4B5PPIR4VrcnusMdu0\nZzNMkiNzBFErARvMFYWN1th2fNT3xS6X+IxKwPOAvj60VIN2ZGLhwuDGXnvmmXhKRXNwHP7c3bsD\nx2t25MhAM01U6k8JfEAJa9EgImJl09DiM9dcY3Xc9hfy+nzjjeG2erGajYS2WUoAt5GjV/jq/xHk\nF+nW11a3qbj8Ffv2Bau2dU88gZUSD81FoQHNkWxSFrNCsHrbNmSVszZToSLhZWP79kDQz0cY6bNR\njYkl/Bxmzw7v98yZgMpO7wYAFUHGuBXA6TS2VJwRJlNceZTYk7v9HqAxMgYwhRoLUE5kErC9nLV1\nToayhWvaipGY53IAB4d08rH8vUnLAOgOXY7XZ7ApypwAzH0JBH5V0BSPchzvOpROSPUZUKWmvuS1\nT4shc845AIBNr74avPRaQfLt2wPnY3bYsJKpcq3XXrAgCJ+LqhObNGRSO57IqaToy4oNG0qiUYgL\nserWpp20du65IWkVELwQ2dpa/Ter7MjOqVMxOqoPZEI0J+7hCO31mf370aLMcBUtYlMGHnBdLFB9\na3VdrFGrm6ya/DLPPRdESz3gulhwyy0A8qOsksK8b0Og36NH1XjrBbBAavAypwwrOWZxDjbXmElF\nDQ0h6di0afr34kOYMsUeC28k6AXXaW8PY/OnTAmvJea+QslQXGGKM2nZLm8rmcgJW7a2e3pi0xSn\nUWGqA36odA5An+d5UxzH+XMAm+BzRnUA+LytQLjgVMfx4lcnCRFZCEJQUxOb6jgKGY5/j7Ns4mPm\nzy9bY8489VTAnZOKFl/oHIlqeOSR1J2hsftQAWRdV7+mCgVtffXVSEf8WnXvbAVIMrkc9kryXZUK\ndw1JlvtMQUBK04kIzWKlmikBevZdXboDlAuFsNBj2zibaDhkkukBgPxqTcyFw8U+uEqU7G9vD4U3\nm246O/MLhAP2giWA7jDlVQG3Yfs97Azm9lng02rVGTWqXwX9FM/zumnfNwH8t+d533AcZxWAkz3P\niyQ/L1XQFxUYjz+OrMq2LBV/AeACCWvjiu5R4JeqtxePKpPMfxQ4pRSUpcXHgSWFe7/rBgVOPgME\nYYdx69UCfpjjnP4WjhGCLue6cCP6cljdw29YvsucdBKy777rb1epoH/LdXGK6htPdIddN1xJWRKw\nfuy6OE8VWsmaBbxTRN444KQnNsHYQiZ5PxcKEYcxrwp4JdDVFfowmCWTOd47O3VaAxGw7e2hY9os\nawj4Kwj5noV1T08o3Lu79d9mc/TyvWAzjS3Rq6MDzllnDWjhkUsQFvt5CL4Vo3Apo4SI9YJdfrn1\nuDtdN0ix/wRCmysLY4m/uIBtxEmdLHV1uEpdf53ragUySkVSLb5kQWSJBBizfz+GKjPFefffDwhJ\n3JEjRZsbUIEYMTl3Qi8ywqgVe3ttbRgKK47bZ58tWJC+GnAK3W++95q5zFIx6zzjPKkO9TIAEfv2\nsuDxIGrDHKKoAKBTELNmziX52JTDmay26BMbBzw7XTkxigU9w3zfbefa7Ps8QfAExaUETW4c+W1m\nP0wfnc1uHwNpCHoPwI8cx/EA3O153j0ARkqBcM/z3nIc50MpXAcA8JUU2lh82WVoVfbJizdvxjaV\n8MKCfq6KB9dQRkbrylwOd6qX5rdFjo1CxbV4hu23jh6tm8nmzwcAnOq6QeayzaY71LKvGlCQfoB/\nv0rmWvv88wCA1ZXsVFowVpaxw3fZRt3bi1ekOZQn4AUi2jbs3QvNC8Tl/hg28jJzbHKtWBOs0XMb\nbCJiYcwslCZTpC3z1nZeVLQOJ0/V1YU2fw4EsOUFmL95gDJj/9LzvN8oYf684zixTHiO43wVwFcB\nIE5p51Q1wscfxxr6VwpRv+i6COZT26ApExKvvNZ1ExX07jctvkQwv34QlnrLLcANN/RrPyoB9tGs\nPpY46s1sz7jgQh91dcHE/rTr4uJFi/z906Yh+5XSVC7p1dKvfc1+AHPDA7odW7RbtnMzlw370qJg\nq1hlRrrYmCJNZ6sZu8+mIPN79kUIeOXCFMhmlqxN6JvO5xgoW9B7nvcb9flbx3GeAPBJAAccxzlF\nafOnwKLEKs3/HsC30Zfbj7SwVLz/FcRqI8a7EJJq8f2WpRkB4YBJixlywHHppSE52Z8CTO1fKTxt\nANpUXYgTI+pDxIGIq7Xf+hZW3357+AWHI4pQM8sH2jhgWJAyAyWfY9PE2QFsmlFY0xeFr7c3vP7B\ng/mTjkmkVkzr5trWLNjNylcmbNw+MVCWoHccpx7AEM/z3lXbnwXwDwB+AGAefF/WPABPldJ+IORu\nuqmcbsbGFwBdo6kgMuQoK/R9FAZai4/CyirpR2r4UxLyNiihWYcwR2HFOecg++qreYdy+chiWC2F\naAQiGE0bNQtK+Y61YU4QY6HLdAjSBmvO5jWlIAm3xxPGpElhO6efni+EORTSjPoxrwf4ckYmEZMj\nh+P+eQIykYA+pVwFcCSA7Y7j7AbwCoD/1/O8Z+EL+Ascx3kdfo0IW/BCcajZOtvSUmY3413nu0B0\nIkM/opgWb50ctmzx//qTqtaGtjb/b8+e8F5a6oseK3jYdeGpv7Xqr2rR1+fndGzf7vfz0kuBSy8N\nWEZjgXjct7suHqqtxUO1tXgPvhA/CliFPJAwQVAVXw/Q0xNmsdbVhSYM0Z5NgSdjS+zu/MftmVWd\n+Bhpm820ci0xCcnxYt7h6/K1AX0fQ/aLNi4JVSzUZVucxz09emlEgUxyUQ7kCJSl0Xue9yuEznje\n/zsAZXMZcLboOjVYpQhFSSF6ajZvoXa/BAQhg0BIpCZFNc782tdClsGU6IXT0uK17y65JGxHyu+V\nUES4ZKiXJSr+PpNG0fUBwK8QaimBX6WtDc+o3zmrmlYwNTUBwdn7gF+IHUDH00+Hx5hJZQaenjgR\nF99xBwBga2V6aQdrwTxWZL9Zbo8drDbHKEflCJiDxtS02ZHKAlTe+a4uvZShGenD8fKm45T7yhnA\ntsLjjLFjw37amDe5uEoRVAcFQgykYhJQN6i5tRV7FfvemPvvx1DlWLI6SJn8v4JIqzg3gP4V8AK1\nbM6Ij4NNYKtWHXMCXqA9F6FUPvvs6hLwFnC/My+/HH5RQMgDqvqXCpudfv31QTGVtKhJPqg+l5h0\nETw+bI5JNo1EnceClqmBeQJgRytXe5J2xo7Nr/kq7Qi4L2K3N52ltkLmosXL8Rz2yWGk7IswVzIJ\n6sQyqoICoZSEqdg2aXF6vPgi3rj+egAI+OLjYAiAZlWkHPv2lV5bdMsWTesWVJKELLN/f/8VoFAD\nvVWtiI7Cd9gAPvFXtfgQEuOmmwIf0cPqWVyTyx1TBT481w25mYpkyW50XSxR9vPbRo1CAQtxSVB0\naZhqjgeutiSabmNjuN3QoDtJmQtKtllY2ojJOHlJvpP9Nh4bbnvPHp0aweSi6u4O2zYd2kyBYNIt\nALrmboZ6mg5mnvw6O+FMnjygCVOpQ6I5/jrpiZLBNnw4xqm4b5DpphgagFSKYrQaQr5fWCb7s+C1\nerEkTf4ammSmXn11//UjbVAggMZvdAwIeAET8BVbnX4aCATWikOHNPOpnFkHndgtisTPFnCQJ+AF\nMnGOHWvX7k3tNqrgt4BJzWz88bxS5zKBvBrmME+O7uF2OOJH+t3ZqVfM4mNsdCp8nYYGe/KULRKp\nkKPWwDEj6CWrVGryxMpM7OlBq+LcLtW9+gcgKCU3BICIzmvfeSeckQ8e9MmTAL+MoOKmwZ492KDS\nyPn6/UUlnK2vL53vPio5RShspVwi/LR5STYTt1Z2zBhkTjvN3/71r5F5JMk66hjAseRz2LcvVHg6\nO4NIoqfUCveSQ4eCqJMnAZylxvLGn/1Ma0bGsCleIs06Uss2DljT5dhxmVDZXs+hkexINUMcpQ0b\nkVh3t66hs+DmDFjZ5mQn1rQ51FG+5xWFOF/lmrYse27bLKUo4D6VECxyzAj6PGzfXryyTmdnyQKe\n0azqim5aswZzlaMKDQ1hCvkLL4QHr1oVCH2TK6RcErJSJoCA7z5ORSsavEGBlddeC4QE0zh8wXXx\nS7UdmTGptKQhitO86nDrraUndR0LAl7AhVxGjw5s8JcIhQUQvEs3AICy6S/p68Pdahy8B2D5c88B\nAH5x4YX4vjptCIBmZerhSBqNDFDx35PRxIcI6fZ2uwbOWjebLFjQ2SgQWECz4O7u1le5ZlFx8xjW\nxnkyMGPz5ZqiiZs2flvxkYMH7Y5hXlHYViKMBIVHqsJGP8pxvL9Gcq1b6IMxf37At43HH8d2FY6Z\ndtTAidAdtvL44iygStXizfMKsSrGQcasVytmqdmzQ+6a++7DBnWdLyCsprXBdQN63uEAlt5/v9/3\nGFmSGTVZtqxZg2ZxxPWDk7tiEJPOTTdhi7pXs994o9/yMEpGV1fIhqrCJJsAXKsUgbVjxmC1PJ+2\ntqBMZAOAFZ/+NACg5ac/1amHlQM+S3z1NgXFHMsaTfGOHf7OpiZdoxXB194erprNpCrZFkfzzJnh\nivOii3QBLRFpV14ZClo2C/Hk0tOjE6JJ++eeG5pbFBOq5oA1Qx+ZMVPQ1GR3rJqTm/mOGIldzpgx\n/cNemQamnHWWt/OZZ4Du7kSMeV9Wnx/mIs+0rGodNqxsjf6jAK5R5o876+sD4b6ABu0W14WI6Veg\nI3UqYQUmZkuCswFcQoL2l+r6HwNwszqmCX61JkA3V/H1ahASv+0x9gP+pH2q2v4NwpKJb9XXa4Rb\nqcJ0NEZxhZRQuOG4hAQqsMbPXDcAcLMaFdddp2nDgfAmxWGT62Ku0vqF3x6AHkZI+J5q4z0A83bt\nyj+GteidO0OzIYc3HjwYCkwxpU6YAEiJyCuv1E0nYkK8+mo9wUoEN2vrDQ169qyEWV99dXhNWdWb\nlArMKc8hmrwSYO1d9vPKgDOAmU2WJrm4gr46RvoJJ/g3vakJyrodVKopBKHHHTJsGOSXvoJo51Ap\n+C0QDPxekCY9aVLwEkSZLpKETNYAWPNU/ATixblckFuQhBWzDT61KACgry9YgvNI+RLC2PEhABYr\nbfz5NWuCcLsGAHOU8H6/vj6453PVC9s6eTLEsPYvQEAhew9i+lfSQBT3SdoCXgQlp7UfA1irqmit\nfvPNUOi98IKWdPdGxn9a45YtC0/k+G0RvgA+BOgCXtCUZ7QBEGbaaqvTri6dm92iwKGhwU5ZwBOK\nCG6z7J9ZzATQBappkrMVLe/uzhfAbHIynba2cciTGMfxm5WvTN4dMy8gJqpD0BMmK21zck1N8AJl\nX3+94DlHoWvSSQU834Q+Y9+KWbOCF7iOCl8/vXcvpijWSxNJtHhZ4C0tQcuV3IJHyRkaB7YKXP9K\n2/9E230AHlI5B5+j444CwSC/asOG0BykXog1Bw4EL97Qs84KBv9QIBQUTU12+6X50rAtkmOMjfPW\n1dbq+RZCX0DCKFLLTwrq6wY1Pl3X1cvyVTmEVXTrqFE4X/ptREiNE+XDTN8X0P7zEv52VeUBRwBd\nGEZF1NiicWy26+5u3UxiM/NIm/I9/74owcxhnzKpm/VppW826gN2zJqrT54cmD3Tlpgl/eivzNiK\ngH+8KoyQWbgwrMm6bh0A32nUrg5j7b8PyTV6eSTMByHnPvrMM/id2s7RsfsQFqhmJE18WqqKPJSD\nqw4dCuzrxSpaDQWwWiJxurrQquyq/xOqLiiABRs24HVVSnA8ZwYDGK4miaXsbLOxOjY2BsJ4NXH6\nr160KNqObWMHNAe6LWRUHbvSTMKR6Keoa5QDaudj6vMP6bRceSiBJJp0G4DzRTB1dOimnIhnZd9b\nGvLeU1tEk+mwZEWAtXc5lhOZbLZw047O7UcpEzbnqK1t8zhbWChr8Rxfz7TKUZOYyZwZA9Un6Bny\ngx58MPjRE5Sgr1++HPvWrwegEy4NQemmm/kAJH5GWCZORBgyCEQ7XhOTkB044G+kEeteVxfYJM99\n+GH8RO0+inwyozogzPC86KLgHnUjtLnj3HMxXplr8MgjmlBbesIJ/kYSgWnLXgT0CAeup3mM2c47\n1KeWj9zWFsaG2yacgYTSRuXZvw+EoZCSayKIEPTzRFkoA1Ku5iigm07YHCJgh6mZkMR2dGmLwxFt\nmbacGGWGV3IRFAGfy5ms7CtgAcxtcztsiuEkMdb0+RibMI9Sggrg2HijyM4mWjymT8dnlaC/C3rE\nTqm2eVtJvLYY55VEXyBRQt9Q1vByhAHN/C9GHCLTyeVAGL3Q1YU/GzkSALDgzTd1QSsvuKmtt7cj\nMSgUdsv69ZitOFiwZUsYvdLREUYwMIpkcg4YpKh6U5PuFFeT6N0zZuB/q13jq8mcc9ddyKr4eUaL\n7Lv+ejRL9aeXX0aLykNp3rYtDGfu68O9Kmx3URm/TcTf+6pNAPladlRYIQtsk4CDVpwAACAASURB\nVPKDTYIsoHl/T08YahzF3c9RLz09OteNqaCZXDQm/45cx3YtU5gzNYMpzM3s2piowjfIgrq6wHSz\nRio/zZ6Nk197DQDQOHFiYHYoNexQkGQ1kFSL/6T6fAUIBUUaoMGTeeedYOBkR45Es0RBCIMkc3zU\n1eFSOZG5uoHowRThWCsIync4BATJORtbWrDkxhsBAHdOnYrFW1VArEyC0t+46M8JQe6n4by7WyXX\ndQF4TO1b5ro4qUqE/SaLkAf08b5j714AwNSGhlBAiHIAADU1WPSd75TdF8l2rwHspf9Yu48S+ja2\nyK4uOwkYg4Vud7d+TRburPywcDcnFz42KjFKvrP1hVcjvHJhoS/HloBjQ9AzJDmJnLWLDh0Kbvzr\no0Zh/MUXAwBann460BriRKbUIH4sfylavHaGxOTKgCiW/BUXbW3BgJsAhFqLTXupqcEYMSHFTQAq\nU5jOfeONoC9Lrr46aG8x1+Y9FkCC5Avqcx+Ai7dtAwBsnDEDSyTPQ7jOqwBzt27FuvN9Yll+J1jB\nmXrKKcH+/yMbzOUClDbhFwInG7HQZW2cj7U5ZnmMS3AAc9CbNncxrTFJGZtUTLMVF/+2OWxZiNu4\na7iv7CPg7F0uds594bqzx61Gz7AUNGaNf/xrrwWDoPHpp7F4wwYAQMvSpYHWMhTASWr7d9TMiQgF\nfdTEkFSL/6r6PGXzZp8fHPBj1yUMbc8epAqaMOaywzQK/cmHA0RGbFSleSYmJEP440Dwwr4D4CmV\nkHQJVw0aaAwfDovVV8Odb70FAFgM4P9T+84wD+JVV5lY9KlP6dwwAiYvA/RwRCYwY+ZJwBeiUuHs\n4MFwf01N6INgSgV22LKv6OBBvZi3yJ7eXj0ElPsmbbO9nh2wcs2oMEmOOOPfz34DGzNmERy7b1cE\nXp04Ef+mtg8CuFdFj/DS9H3oAl5QLGoiqRZ/IgDR5S6+8cZA0GuPp4KZlF5trU5oVQ0wY6MlVOzl\nl/WM3WMFvb3YqzZ/AaBRJfwdRZhINmTUKFxcJc/h7smTrWZJ3ic+h82UlPfUqFFaop2M5XII/yS8\nc9tLL2EGC10uxsHFN3g/Kyic4GSCfTwsoNmhy9fs69M5dWzx7YBOkyDgOH92mNqYLG1Zr2Z7thj8\n00+3UzcUQcmC3nGcDwP4Z/iJlEcB3ON53gbHcW4CsAiABJ3/ned5Pyz1OgC0hyJp01ft2hXMsC/V\n1gZmkTcQ2ulPQulkZoxS6QuGIIze2bB3L/6Mj7vrLgDA3cpmem1KguBh18Wfqe3fALhcXXPEAAqa\n77kurpCY/2HDtEF3hfK57Hj77WhmwyrE9+hZsniR31aHMEfCkkLUv2hrw1ZVKGUo7H4o3ie/4b/p\n+3YAW1Ro7SGEK94FL7xgT5KKAXk3/wDoWqytrisnUjU26klQAlkdjx2rUyBwgpccM2lStBCX481i\n3xKtNmGCHtUjfeXJIviRxiRiq3trEpXZYu3Zn8Amn5goR6PvA7DC87yfO45zEoBdjuM8r75b73ne\nrQXOTQaaEa+S6vFUfPpTJCCmT5qEp5QzicMihyKcAJLUtizFFi+C1ozLl/l3KEKnWGDVY/teXHOK\n5UEPBXCJipq4e+9ejDBjywcAV1Afroq4n1P7qzMp4Qr6HfeqcTAcwBXKoXz3+edjkfIVpUFzXRbO\nPjtIiHrbdXFPkcNl3P45wneoF8DsWbP8f269FfeqrNpyTFIyymsAuwmENV4WxEx7wMKTz2NmSt7P\nGabs4LQVJOFQy5qa0HTDjmHzE9DDhtksxNc3JwYb1TJPACLcOzt1SoWYKFnQe573FoC31Pa7juPs\nBTCq8FkpgCvH27Bnj28ThV84QYYHR+NUIqLGBhfAYkXVi56eQFPI1tdjLpF8AfBjm2U5zCnWhWzX\nlkEz95xzAufftfv2HdO276qGPJ/OzkC7PR3AXuXo/AOA3aqEX3z2pgqhtzfQur+L4qtceVf+HeG7\nchTA+meeAQAse+aZUEG5/fZkdMSW68y66qp8QS4wNVognwKBE7wA//eKIsjc8H19YRjzzp167Dy/\nS8xZIxMZryhsOR/MI88cOZzcZZpimF6BuXHM3yK/wzy2vykQHMcZC+AcADsA/CWAJY7jfAm+iXqF\n53m/T+M6AOLxgKvZtAbJY+rTEPBS1/Y9IBiEtz3zDD5ERRyyIuAV1s+YESRjNS9cGA78qImN7HPP\nDxuGC5TWnH31VWSYzc98CQYCbW32GPljGXKPR4+GcDaet3t3sLwfev31GFcFqykAfu6DGkefmzo1\nCPtkBkrQPvm/BrqCJBPEK7T/Fw88gP+hzJBJlYpApD3yiF5JSsCJSVKcm7+T/WzqMdswz7OZSGzn\nAPbQTTmWJwY5tlhmtxlDb/s9fE3uH9edLQFls1c6jtMAYBuAVs/zvu84zkj4FgkPQAuAUzzP+7Ll\nvK9CBaV85CMfmby/AGf5va4bJGZEUZ4GoGVVNkElqYJtKsTlgx9i2U7iK/g8bZ8Z1aemJmxS3DuF\nqLSqoYRfq+tiTRX0I1VImO/MmWhV42LNm2+GL+T06QGv+4CDfFxrXbfsXBNGA4AV/Gxt9AEReFrd\ntz8DMEPqJTBYMHKhkJoafWIQbVeOb2wMBWx3t+4kZcpgdqiKwO7sDLV4Nq+wYDYjaeTaNlOTWRqR\nqRnk+OHD9SpULOhNBzOvZNrb4cyYUXn2SsdxTgCwGcB3PM/7PgB4nneAvr8XEUSUnufdA5/MEOMc\nx9vsuvgDgP+MuFaekOUYW4Z5w2OgVAEvCR/vQXdmqYAs/CdKy9L9F+4bD4iODmxQ3DQH80+zokX1\nvTmpoI1aOUkm76pV9vPUIN1RW4upiseHJ7lNrou5x4HQf/rCCwEAF+dy4TNme3W1CHnA50FSFBlp\nFfkW9AC4W42x31L7GSpYE5hLtuiiQEbWQUAXemy6iUpC4tJ/ZhEQFtzMKW9G9LAwZjOKzVxjFj4x\nTUq2uH4Bh1TaqBnYL8DnRxVEF/QHBYLjOA6A+wHs9TzvH2n/Kcp+DwCXQacrt+II/OiUuMILALJH\njiBjW6oBuC1BJaZytPga+uTHITEID6I0jV67fm1tkJDz3RLOP7H4IXZEmcZspqAXX8QOZZt+lnY/\nS7UFtPt4DPHBv+G6gSnuH9TnJISD+j3XDYTb3a6La1W2NubPH1hhzz6hhx/GUEV2l0YUmgmbSzAr\nzlqG62rvmxi2hgC6bZq1ZAE7QNlJaUbGyCfLBOajEZjhjSywbRq1WTPWDIs2nau2yBmOFho+XA8d\ntZmizHvAv8X2XQGUbLpxHGc6gJ/CDx+Wsf53AK6CX9/Cg8/3dC0JfiumTJni7XzFKNlx0UWBkyc7\nZoz1vMw7iuiUQrLimlf6q26rPIokLxhHCGUiMka3uW5QHCQORXG/m3C6ugLyrOz550NipJj4YRKA\nOao6UdVXZoJ/zwGfyuKbMY6XST7xaiotiAnTQktdCXA0W2b5co311AYJUT0KYK4qR4jhw/UoGs6Y\nlTHCGjtv20IXTacnh0hyJq1ch6mBzdBIk4MeCLNleRLgVQSDJyg2/5hJYexsNUM2jbKHzsSJlTXd\neJ63HYBj+aq8mHmFdc8/jyERAl6QVYRLAPDXCdouiYSsRJSiQa2+/37sl/J8EZr1jM2b8XQEH74N\ngR2ZMnQBhJmCDz6om2siVktxi2xsGjUKv6L/WcCPVZ9zuDLYMYAZy5f7G7feCqj7+SHolbcyir+9\n9ZJLsGagnbFK4/sqgFPUSsOqaZeJzAUX+G0//zw+KzuLCHkgDDfuA4rT/ba3h+GNZtw5J90BvqlI\nghhuuCH8vrc3FPSNjXpcPkfDyITBpriamjBMdsqUcGJgojNeifBEw6uCYg5jkxufj5E2OOkqJqpr\n7dzXh2eoGHES/N8Yx6StxX9QfdqybMvB3q98BY+r7eaIY1rnzEk0icix2TlztJXQZrWkn/Pgg/CU\n89rJ5fBHNYneBWC5CKyXXw6KwAxxXTQrnpwfjxwZUCPHQYf0ZdiwoMRg5KC1MfjBz9oEgDn0TPOc\nvkp4bKyvL7kgyFrXDV6SYEwq1lQAeeUcs5f49btMeugBgRIq9wBABQS8IPv888H2j9Tnp+i5RQVQ\nyP3UCo8AuobL5hg+hh2mtlBHW7EPFsYTJtjNRVyztqnJXsKP6RP4muxnEJhmGC4ZaCscYkbm2Jgt\nbWarIqguQV9Tg1lqMLySsmadhhZvJlq9W16XInFmaytghF+aWHPZZbjziScA5AubohDmzLY2jKTd\nTJfwASWAl7ONcfp0ZFRewMZf/zoYaOflcjhPaVtvqGS1R2J2hSOjpMbsolwu0KqyI0dqJpDt6lmJ\njZzXNH0Adqvvz8rlgn6/gxKgXrD3URoj6lGEJhNt7E2ZEpKcLVwYxqDfdFNI2azQ4rq62UdF+vz4\nwgv1ak7S3pQpqa9IS0Wces0iwo4CdiIvXlky2IzCse5Bw732CcIUmuwMtXawV9f0bU5S27lR7ZmC\n3qQwjjrH9gnY700EqkvQE2xV5Mttx4YkbZsRC2mGqWUOHcIbIvRWrUIz1+i04fHHsVhtJr4/sty8\n666Ap2U6oNs4uUAxQyWiLDHJ2NT/ElOe2bkTLVP9fNe4kR6aoYOuy8Juutqebrk/fwEl4AXqpSgp\ntFO9kKmMQ54smcmSE40MIQ9YbPsq6SmvZB/lKGjjvZ9s9Jls1r9OJpPIFyQZ5H2A3aTBGbCALlzZ\nqWkT4LYKUzyWu7p0kjKzgpW0zZMOa+DiSBU7PztgTR4dFs5RbfNkZGun2KRUBFUr6NHdjddHjix+\nXAGkbYtnJymQbhFyHDyIcXfcEf5fQcpecW5zQtl61w0TtrJZbFNFoX8CoJnIrLJqFXFifb1en9W8\nxtQySQ345VVlEnHXXcH22nvvBQCspoSyfwVwAbchfoRzz02ULl6wL6VgoKKL1HWHwK/3C0TEOseE\nkJDxO3A+AKiaAsgkK/suXDpHAT3WXcAasMlHz3VVbY5K4asxi4jbioqboZNRXDKi3MShFLdp6zwZ\nRDFz2iKBpI9R7cZA1Qr6tSNHlqwxp6nFfwj2WrI1ABYpCuR1S5cm9ikIggfQ1JQq9Wsc8DBm5s61\nmYx270UjPJX2vQdFtwzgjPvvx23KebzilltK7o/4Osznk1VCHfLJ35nHqv/PB7CV9mc2bvQ3rrwy\nfFELOZSVoLh73Dhr+GBZUC/1H2tr8YFCY9UsmScmN+J5AhDGp8+eHUaBHDyI7O/DhPRyBLzA9j5u\nBXAGPwOOQRfIfTZCc7V3JipjlTVZFnYsmE0fjhkvz/w2sv/00+2CkuP4eQLga3KFq6jfIIgS3GYm\nrS17N0qQlxCeXLWCfnWJS+a0tfj3EQrEBoTFQw4CuFNRIMfV9zjUMiPx1rL0A0qmK8hs2uQLMADZ\nhOGygf17165Q25k+PRjI6+vrsZzvqUqU+t66dTiD9q8wao1+4utftxZPTxuZw4eDCIvs17+uOXen\nS4TFvn2+PVxQJGIIQGDeujaXC87NPvBASX1sdV0IAfN/QC8qX1AH3r5dZ4Y0BbyAy1BKqcfeXiBh\nZngpOBXACCleM3KkfeUUMa5PVp85wC60ouLJo/bLJNPQYA/XjTovikhN2pJjZBJls4sNcQSweUxU\nWUFBiZp8cEriMwYAZgibDWlo8Vo6t6UQ8FOjRgX9OAnAPIkBX7YMWUVgBYQ39Sh0PpE1Ktpl+7Bh\n6XLQXH55OFgTTmbSvw2TJ2Oy2p6eywUDOW84qxe5mKjsr6BJ0/4szt3MLbdg/de/DsD/Dc0s6JNe\no0QBL+hDWFYwr231vIYiVG5eVft+gDB0Ec8+G0avPPecNgE8rPZfk8sFWappZ8ACQEZVz8qqcomA\nXjN2aN4ZhSHBDEcBu7MRsFdnYocta+zyDnR16cfaTDtme3x9GyNlT49OtWC2ZWrrAg6d5PNMamTb\nNaNCLUvAMSHoF9MAti2j09LiV1gceaipCTSFS848Ew+pqJL/CQQP7XUS8oDO+KftU7P29OaooMny\nkTl8uCTn20H4jHQAMJ1siXlhgldfDQAYq8Iyo3BeLofz1HYlI0Ey+/fje8rn8O9QGj4A1NRgucQ9\ni2Zf6jVkXKTg3DT9PNxfwTnqeudE9cPANbRfq2ugJuXvjRoVTMxRE4A85xsQhr+emctZQyMzuRwO\nWZ7p6gSOWMBIJrQlOLEGzvtNh60p6E0aYRtjJFMJA+FKZPTo8HgO7T14MDTp9PTYBbNtsuD9UeRq\nDHOSMFcOUSuRIjgmBD2QXMAD8QTMXyOiKIdtebRnD8apNs+hc8a/+SaGjvIZmt9H+NIMQWj2+SS3\nWclKSmU4/mRIvV1bixGXXQZA9Z+SpA4rjpdf5Z1tASdmVQhm1nQQ0rh5M7IvvQQAaHDdcBIvpVCG\nmtyshZ0jUIPw2V8JCgd97jlk1T30D0zwvKIIw6J4iZSCcoVhBp2vth9Un2MBzKNjzqQmot6x+hSy\nfeX+5N0BG3skZ4ma98yMRze1a5vQN0MkufJUlCnHLOsXdU1Az261TQA8WXElKzN23pwkIvJKiuGY\nEPStFoGdlhb/fwFk4lAfK1hbHj48KKLQjXAJy4u7nQBmycN/8UV77dsU8OMUtOcRp52Gwyq6BgA2\nqiSpJQiFQzE87LrxJoMKIUtZwz0AfqfuywfPPDN8kcSebQMt67OPPpr4+jMQOoPPOHwYZ9xwg/+P\nabKzaanK6Xrb5MnaKjOrotDMsX+nMlctzuWwTv3OlYcOaTkKGUUwB+ikeUBhM8+rFsUGq1bhtnXr\nABir4NGjdf6WIugzPv1/SBibGaNRduxC/OxmJilHvUQ5gAVsajHLAdrCHXniiNpvtg/4E7e0xwlg\ntvDKElHVgt4msCvCUZNgtvyULa29rg6LlHP19xMnBtmBEwBIbaGjAP5LZZt++JxzgCVLkvezANaq\n351GbP+6X/9ai4iIjIZR/38e+cKj2qBibjB8796APC/DCUsGklJcCzInKxdjdzemSxRVTY1WV+Dv\n1ec/APbxppyukZFc8+cHbJTmcbJt9v9RIpgTb4Vkky+Iomro7Q1qHrMZKauEvInsW2/ZnctJiuhw\nRAtnoLIDnQWpLbuUKQ1Yc48ydbDQ5+geM0OXNXPbdW2rD/5t8vvMffy/rb6suX08Rd2YQqWSJGTM\nmZM54QR/I2oGlVhaMwJCeeRP3rwZc5VN+BClygPAt2Xj1VeREbtxnJjcIkjbBp40VLTahTyDGVKz\nDzyAjypHaxcAMTSVwhIqeEqFNF4C+Cs3C4IM5CLPLUrTzj78MDIk6AMrbgGHMxPf/ZP6DPwvN94Y\n0k8DwLRpAID1P/tZGHZbU4PbLBFdJr892/QLvcOHiPVT2geQn7gk2jqHQ5pC1wRPFmzj7u7WzzMI\nwoJzbRMCJ0zZQibNGPkoRK0oeKITFLPj2yabCFSdoO83LT6qrSNH/A0ZsMweuWwZHv3WtwAYtU/3\n7Ansvq1vvw0VhFUwMoUjFwDfCSY0UJlczsrlwuh0Xdwf5wdVOYLwzueew25luz6LTBA86UwGsKvM\n630ModBrADkyaZmc6eyMZEwthkB0PPlkUR9FsXEdhIrK/4owzcy3CIjE7rsPiIgQsiX3yXbrunVY\no8Jzb5s8OT/SCtFhu1ErSJu5lc0y9bkchnCEkM2RykJ3z54wAzjKqcnRNfLONjaG5qSxY/XMZE7G\n4gpOUSYgpjku5Izl/aZJyEa1XIz+wEQJyZRVJejT0OKbYHfcJoX12rffjqtspf0mTQq89mu4cs2N\nN0Yuc02YpGzF7NtpCHm+V0kKpqcFDikEdPoCybrNum5IwtbQgF3GM0/ab9ZsewBsUO39AUCzCpfN\njhuXd14cpE4Fbb7QEi9vRGIEVvECURjN6h5mhw0L+vmQ+u3siGWb+6OuG9yvjyC6KJANtp5ka2uR\n+c53AABPffGLAQVC3gqSq0CJsDNLUTJlgGwz5w07TllLVhNa3n6mQ2YtnSNwxL9ictbIsTYbvRn1\nEzWJ2FYoheL7o/ZFoCoE/W927SpLyNdA5zO5kyrelIp7VRuLzH4Uc9wOHx4+gARp9zzY+bdlXRcZ\nFY6ZbWmJ3V4haCF9NDhF6C1dtCjMRq0ApJDK+BiC0RwH8v8fVV8/kMsFzyRbXx8M6DULFljj3zOb\nNiE7d27w/1KlNW+rry+JEz+zdWuiMLdUYNj1r4i4j59Qnz8HgjF5IhD0d97/+l/5J02fDjz7LAB9\nUkwi5Ash+8UvAvB5brRfYQtpZF531u5NimIR8GzKuOgi/7O3N/y+o0OPWLIlPfX2hu3w9z09epsC\n27M390WND5vdPeq8KHNRTJRdMzYNnOo43rVquxQtPk4EzhcQChZuowHAClWvkpfrqWhnfX1BdI3Q\n+yYFm47SMFFl2PFmag/qhfjj738fq7BGyX2oUCGOrOtCYpnmnHMOsq++mncMV4cCAMX6j/sBZFTx\ni6wKlS0EjWmzmiC29u3bQ2qEEkPygJDm4lQA31f7OsrqoI+PwTB/irPVjIwRodrUpCtOIrzb20PB\nLFFUZ5+tFxKRjNaOjjATnePozUIn0jbb3dvawkg5plIoFjrJiVHd3WHbTKnQ06OXRuRJT/rI0TcU\nZeSMHFn5mrGF4DjORQA2wI9IvM/zvG8UOSVxyGQcgSGhjuMPHLB+fxQo6MQqCzU14QAuUUiXGv1h\noui9ogzgD0BFpADY/cADOMvx68skpVew9uOdkkiD47Vtav/q0+Spn3PTTQD8FdJotX+J6+bT3UZd\n59ChwqGZAwlFUXGn6wbspuUIeqkz8FvYzTGlIrIqWk2Nnrwk2z09oWAcPVrX7s1SgWbsvAhG3o5K\nRGKhz9cxtXhbBi8Trck2h0uaYZTMKy99b2gI+1BXl18EhX8b+wyKoCKC3nEcF8Ad8MkEOwH8zHGc\nH3ie9++240+dPBkZs5QgoVQhD9iz9TK5HJ5Rbc7i7yuRwakeymykQyyVBB8BsGDr1qLHFcJZ77wT\nvBQ1o0ZpvD/x2bAHoJQhYY2UqRMI2yKZwj64Y0ewnbn7btx2rb/G7EFYESugvKirq1geRFpYzPc7\n5gRmQ7BiocmCbfel4kPmDhZuHIHC5f64UhTHmgv4d9pCE4cPt9d13bMntL83NtoLetTV2QWrtNfe\nrhch5+xeEcy8omCzy7599nBMZubkiaBYuKgFldLoPwmg3fO8XwGA4ziPwY84swr6KJQj4IthVkTs\n8EdSaZ2gHtrkXA6TVWhmlmKaKwGJsFhQzr3i+HI1CNeQPRx1dQGHepTvQJxtyyuoxceCKejUM/kE\n72Nn38KFWCF0B9dfj3nKtFeOwDzmsXNnEAp81de+hqyKPgMMKoOYyPOfMbkfm0WKkXzZHJlRiVBc\nS5ZWsOjpsdMksDmGNfOuLr08oBxr8zP09ekc9LwS4ExnGzcP18MtdA9ioFKCfhSA/6L/OwEkIihP\n6pxNDIvHejhC4VQRqBm/BukugxlDQPzxlQC/OErQf6alBecZDuO/BQpT8FYBLi50nxTvfUa48P/U\nMW1a+M7cfjs+pAR9DgjKNO5y3WDVeiKAlSoblxUbqVCWR8nNFMBmLD2gFxjp6wu32abNkTg27Vra\nl2NEcJtlAjlenq8psBGYsc2ftf+mJr2vNoHe2alPDLy6MWHy78RERZyxjuNcAeBCz/MWqv+vAfBJ\nz/O+Rsd8FX7dYiDfR1ZNaITPbFBtGOxXMgz2KzmqtW+D/QoxxvO8EcUOqpRG3wngw/T/aAC/4QM8\nz7sHqm6x4zg743iOBwLV2rfBfiXDYL+So1r7Ntiv5KhUsfqfARjvOM5pjuMMhU/g94MKXWsQgxjE\nIAZRABXR6D3P63McZwmA5+CHV37b87zXKnGtQQxiEIMYRGFULI7e87wfAvhhzMPvqVQ/UkC19m2w\nX8kw2K/kqNa+DfYrIaoiM3YQgxjEIAZROVTKRj+IQQxiEIOoEgy4oHcc5yLHcX7pOE674zirBrAf\nH3Yc58eO4+x1HOc1x3GWqv03OY7zpuM4bervcwPQtw7HcX6hrr9T7ftzx3GedxzndfV5cj/36Qy6\nJ22O4/zBcZxlA3W/HMf5tuM4v3UcZw/ts94jx8c/qTH3b47jfCK65Yr0a53jOPvUtZ9wHGe42j/W\ncZw/0r27q5/7FfnsHMdZre7XLx3HudDeasX6tYn61OE4Tpva35/3K0o+DPgYiwXP8wbsD76j9g0A\nH4VPS7MbwMcHqC+nAPiE2j4JPh3HxwHcBOCGAb5PHQAajX3fBLBKba8CcMsAP8cuAGMG6n4B+Az8\nZNc9xe4RgM8BeAaAA2AagB393K/PAqhR27dQv8bycQNwv6zPTr0HuwHUAjhNvbNuf/XL+P42AH8/\nAPcrSj4M+BiL8zfQGn1AleB53vsAhCqh3+F53lue5/1cbb8LYC/8DN9qxSUAHlLbDyEskDQQOB/A\nG57n7R+oDnie9xMA/23sjrpHlwD4Z8/HywCGO45zSn/1y/O8H3meJ6mWL8PPM+lXRNyvKFwC4DHP\n8w57nvdrAO1Q9e77s1+O4zjwK1cmL+JbJgrIhwEfY3Ew0ILeRpUw4MLVcZyx8MtkCtPVErX8+nZ/\nm0gUPAA/chxnl+NnFAPASM/z3gL8QQgLT1Q/4kroL99A3y9B1D2qpnH3Zfian+A0x3FedRxnm+M4\nnx6A/tieXbXcr08DOOB5HnN+9/v9MuTDsTDGBlzQO5Z9AxoG5DhOA4DNAJZ5nvcHAHcCGAfgbABv\nwV869jf+0vO8TwCYBeB6x3E+MwB9sMLxE+L+CsD31K5quF/FUBXjznGcNfBpj76jdr0F4COe550D\n4P8B8F3HcSpKv2Qg6tlVxf0CcBV0haLf75dFPkQeatk3YLJtoAV9UaqE/oTjOCfAf4jf8Tzv+wDg\ned4Bz/NynucdBXAvKrRkLQTP836jPn8L4AnVhwOyFFSf5RTUKgezAPzcp42J6gAAAcxJREFU87wD\nqo8Dfr8IUfdowMed4zjz4LNXf9FTRl1lGvmd2t4F3xb+sf7qU4FnVw33qwbA/wGwSfb19/2yyQdU\n8RhjDLSgrxqqBGX/ux/AXs/z/pH2s13tMvQz+ZrjOPWO45wk2/AdeXvg36d56rB5AJ7qz34RNC1r\noO+Xgah79AMAX1KREdMAvCPL7/6A4xfl+TqAv/I87z3aP8LxaznAcZyPAhiP4uWD0+xX1LP7AYAr\nHcepdRznNNWv6AISlcFMAPs8zwtK5Pbn/YqSD6jSMZaHgfQEe6F3+j/gz8ZrBrAf0+Evrf4NQJv6\n+xyAhwH8Qu3/AYBT+rlfH4Uf8bAbwGtyjwB8EMBWAK+rzz8fgHt2IoDfARhG+wbkfsGfbN4CcAS+\nNvWVqHsEf1l9hxpzvwAwpZ/71Q7ffivj7C517Bz1jHfDL/V6cT/3K/LZAVij7tcvAczqz36p/Q8C\nuM44tj/vV5R8GPAxFudvMDN2EIMYxCCOcwy06WYQgxjEIAZRYQwK+kEMYhCDOM4xKOgHMYhBDOI4\nx6CgH8QgBjGI4xyDgn4QgxjEII5zDAr6QQxiEIM4zjEo6AcxiEEM4jjHoKAfxCAGMYjjHP8/7hDO\newSSwGMAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWYAAAD8CAYAAABErA6HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsvX+UXFWZLvzsnIbuIT2TnrGFxrTQ\nSqvRRBNMHPBOZsAblHBXEOYLDjjCJ9wBgWWcyAeMcGO+oiZkgUMYzBUvRFDiIBdw4A4/sgQk+QQn\n9xIwSDKTSDs2TjPTmB5staMd7EBVzvfHPk/t57x1qquqqxIarXetXl116px99tln72e/+3l/bBfH\nMVrSkpa0pCXTR2a83hVoSUta0pKWpKUFzC1pSUtaMs2kBcwtaUlLWjLNpAXMLWlJS1oyzaQFzC1p\nSUtaMs2kBcwtaUlLWjLNpAXMLWlJS1rSgDjnvuace9k5t6vC784599+dc4POuX9yzr2/WpktYG5J\nS1rSksZkI4Clk/x+GoB3JH+fAnBLtQJbwNySlrSkJQ1IHMffBfDzSU45A8DfxV62Aehyzh09WZlt\nzazgVKV71qy476ijgCgCZswAnAPa2vx3wH9nhKL9z9+t2IjGQsEf4x8AHDgQ7sFjhx0WPs+Y4f9U\nDhwI9ztwIJxbKPjvFHvt4YcDxSLw6qv+Gr0vn5flRlH2cx444P9mzABeey2cq/fJqjuP2XuyvjNm\nlN+Pz6nPy+tsOziXLk+Psb21jrxW68P76rvk9ZXer/1N76/fZ8xI17dQ8P/b2sI5zoU2e+21UF8+\nhy03isL/YjGcWyik2yKK0m3Gcnl9sej7HK/nOfpsr70WyuG9ZswA9u/31xaL4fhhh/lz2T/4nIA/\nh21OKRb9vfQcbS9tB9ZX24P11HJZF+3HFLYn69fW5s/XtuF7iGN/XkdHqohnn312NI7jN6MB6Xcu\nfqXGc/cAuwFMyKGvxHH8lTpuNxvAv8v34eTYnkoXTAtg7nv727H9ySeB8XF/oFDwL6yrK3wHgImJ\n8JLaKlSd1/IPCOXyen7nMSCU29npj01M+PO6u8vL14HN83mMYus3MRGeZ3zcX6efx8fD76Oj/vpC\nwdeLdRsbC8cmJtJl87lZLs/t6fHlsU69ven785n5bCy3rc1f19VVfi8eYzvyXY2NpQdRR0d4DrYH\n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\nYA6CIGgYfwCB8c1H2F13OwAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -964,23 +965,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 4.55 s, sys: 66 ms, total: 4.62 s\n", - "Wall time: 4.81 s\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/colors.py:496: RuntimeWarning: invalid value encountered in less\n", - " cbook._putmask(xa, xa < 0.0, -1)\n" + "CPU times: user 1.5 s, sys: 35.9 ms, total: 1.54 s\n", + "Wall time: 1.54 s\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvX+UXVWVLvrt7IKqa6o7ZVtKQUqollKixE5oygZ7pIW+\ngQZ6hMZ+QaNXeJIWBEfHjgzhAjdmHE6HDPASGnLBBwg2IPokLahIruglvAblteAtBF7HptCiLexC\nCiy0okl3Baqy3x97zb2+Nc9c51edChWsOUaN2mf/WHuttdeaa85v/lhJlmWYp3map3map9cvLXit\nKzBP8zRP8zRPs0vzjH6e5mme5ul1TvOMfp7maZ7m6XVO84x+nuZpnubpdU7zjH6e5mme5ul1TvOM\nfp7maZ7m6XVO84x+nuZpnubpdU7zjH6e5mme5ul1TvOMfp7maZ7m6XVOba91BQCge9GirO+ww/If\nCxYASZIft7UBaZofyzmO5M2y8LeQ3KtJ3zs1VVmO/N+3z7+bzx90UFjOggXhf6F9+3xd5Jifk3fL\nNSmDyzn44Pz/9DTwyiu+DKlXloV9JcdpWtlPum7y3gULgFdf9c/pdsjzVju5Lvweqce+ff5+XR+r\nf5KksgwpR34nSVi+EF/nb8n15fdwH3Ld+L16zFUbV7F6M+lvrdsmYwLIv6e+zuPj1Vf9MfeJfp+0\nk4+npyvfyd8hTe12LFgQljc9nR8fdFD8m8t5HmNybnra37t3b16OnOey5Z1SBveP3M/jkM9LPeR+\nfqfuW26DPMv9wO3h98m9fF7POR6f0o62Nv8s9xt/Zynn1VeBjo6KJj7++OPjWZa9ubLxIc0JRt93\nyCEYvOOO/EdHh/8o3d1AV1d+LOd4MkxNhb+F2iLN0veOj+f/Jyf9Nfm/e7d/N5/v6QnLkc7v7AzL\n3r3bX5djfk7eLdekDP6YfX35/4kJYHTU11XqNTUV9pUcd3VV9pOu2+Skr9/YmH/OGEyYmrLbOTVV\n+Rvw9Zic9M/p+lj909ZWWYaUI7/b2nyZ3HdyvaPDt03Xj9/DfWgxWD626sTEZfA9XD9ph5C0gdsm\nYwLIv6e+3tHh2zM25svgPmHiMczHExP+fnlnW5uvb1dXZf/L+6WMycm8HCCfE7FvLud5jMm5iQnf\nnuHhvBypK5ct75QyuH+kHJ6rfF7qIfdz27lvOzv98e7d4VgR4vbw++Q9fJ6/NRB+K2lHd7d/dvdu\n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\njX/E8zQAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsfXt4XVW172+V0OSSnDZqoYHGEqFA\ntdUW2gN4vgpoRcALwrE85KjHVuUlFURBwNqz2dQekMfBCl7AogVRoUo9IFx5VgV65VWep0rVwAkY\nINQKpaQ1DWnX/WPNsedvjj3mfiQ7IXAyvi/fXll77bnmXGvOMcf4jVeSpilGaIRGaIRG6O1Lo97s\nDozQCI3QCI3Q4NIIox+hERqhEXqb0wijH6ERGqERepvTCKMfoREaoRF6m9MIox+hERqhEXqb0wij\nH6ERGqERepvTCKMfoREaoRF6m9MIox+hERqhEXqb0wijH6ERGqEReptT3ZvdAQAYN3Zs2rbLLtk/\no0YBSZId19UB223nL0wSgCN50zT8n6+zSF/b11fcjnxu2xbeW85vv33YzqhR4afQtm2+L3LMv5N7\ny3fSBrczenT2uXUr0Nvr25B+pWn4rOR4u+2Kn5Pum9x31CjgjTf87/Q45PfWOKVd7o8Qj3vUqOL+\nWM+H3y+/w23b/P9J4o/52fH3/C65v3wf7rPutz62+sTEbeh+M+l3rccmcwLI3qf+nufHG2/4Y34m\n+n4yTj7eurX4nvwettvOHseoUWF7W7dmx9tvX9wGv/MkCeeYtL11qx/Dli2+na1bw7blntIGPx+5\nntcqnweyfsj1fE/9bHleyW/5OfB64/vJtXxerzmenzKOujr/223bwjUmx9KO/KahIWj20UcfXZ+m\n6Y7Fgw9pWDD6tvHjsfq667J/Ghr8Sxk3Dmhu9hf29IQD7esLF4dQXWRY+tr163278p18dneH95bz\nLS1hO9Kfpqaw7e5u/70c8+/k3vKdtMHja2vLPjdsADo7fV+lX3194bOS4+bm8F563N3dWTvSv64u\n/zs1kQq/t8Yp7XZ2Aq2t4W97enx/dtjBb1TyO+v51NX5Nvkdclt1df4+/Ozk+4YGP7a+vrC/fB9+\nhhaD5WOrT0zcBl/D/ZNxCMkYeGwyJ4DsfervGxr8eLq6fBv8TJh4DvPxhg3+erlnXZ3vb3Nz8fOX\n+0sbPT1ZO0C2JoBMMNm8ufh+PT122xs2+PG0t/t2urvDtqUdmaf8fKQdXqt8HsjejVzPY+dn29Tk\nj7u7w7kixOuN7yf34fP8roHwXck4xo3zv+3u9s+C3zOvMQB43/uCZpMkea544MU0LBg9GhszRiHE\nTFcz4J6ecOLFFh+3xQsFyCbkxo3hYrKYh7Uwm5r8+Z6ecHHq+wLZi+TJIb+VSc2kxyJtNzcDkyf7\n/skkiB13dYVMSvoun5rxW5OWn1tTk5+cfX2+7+vXh32W/upJqttjBrx+fbg45Bre0GR8QMjUpH3N\n5Pj+fE9eyNLXcePC3/P9NaPv6/Pvz2Iscg23x0xFxsBzSG8G8j3Pd5mnvEGyUMCMRvdFvmNmyH1n\n5iLETFTa0ccNDeH6kc+GhvCe+t2sXx/OR2mPhYyeHj/HmptDBi/vRG8M+l2xsBMTwpjR8vsZNy4c\ns4yPhan2dt+fSZP8eKU9HpseP/enuTm7Lz9z3nSE2toygamfNDwY/bZt4eCZkQvxwC0pTZ+3fqfP\nW4vM+m1Dg2cMLB10dfm+8uLkfre0hFKTdQ9ug8fOE59J/q+rCyV6oVILFcjGzczSYqL8fFjy4mfc\n1FQ8aSslflbWe9CaG5NmbF1doeTKxBshM0khZvosOHR3e+GDpVFrjHxP3gyY0crvhVhDsTYUlr4t\nbWH9+nADYKbGjImfg8V4eJNlqbead8nEc5XvJ8+ctWdmcLxBjBsHrF3rf8cCjPy2tdUWCLkN1lpE\nO9YapFBnZyjY8AbI61c2HbnPpEmhcCTPbf16e13z5tLZGdd6WIAUWJvpD38oPleChgejB8LFIoO3\npDHAY9dMMfUZ8DuhqJVyjSVJWhvO+vV+0W/YEEIdfE9uz1IPWepmBsBSJDO4chtRKYmZGTnfX0gm\nEi+YcePChWpBV7wB8bHVN7lvb292LO+NGeD69fZ704xJM6/mZt+GaDuaQWltkLVG+S1L//zOLKas\nGaUFb/DGLeMDQgbDGwqPk7+3iJ8pa7Z6Y2dYyuqr1v6E5L6ayVsQVqxt1tas58bPm9dAU5OHJ1jq\n53HW1YWaMDN3eQYs5YvUPXlyqB3z7+Q+LS027Nbd7fvF95k+Pfvs7PTnrPmgiZ89/6ary7cjfbUY\nPBDysQppeDD6rVvDXdFSlZg03guEk0+rz3y9NfliUr+0wfiznmiaYVjE6qQ+xxK1vneM0Vv9ZXVT\n48wsYeq+MrSk4QW+Pib1smRaybOQa+VZsLSjGZmGBuT+GrphhsESMEtYQDG0JGNgya9c3y1iCZDn\nYXe3V+s1BMMSrhC/P4YRLC2PbUX8DmNYewxfZiZlwXYsQOkNkCVd6zy339HhnxULcgLdrVnjN+L2\ndhuu4g1tzRobgmLohKV4frZ6YwIyRivvSkOS0q/mZj8O6Utrq+9fT4/fODWfiEFuloYC2Ez+xRd9\nP1hoqYCGB6MHQhWbF56FZVtkqaWx6zSz7+kplkI0PKDVc7lWjlkK4cXGi4CZLi9MbpeZmPShtdW2\nS/CktQzVQlpb6e62mT5rH0ws9clY5VP6yPYHLVFWii3GYAc2sDLxfWIwl8WwOjrC9y2/2bAhVLf1\nhsIGRv2c2OBu2Sgsew8QajSWdsGwFG+4rL2wNMxMjSVWfs88hxijFoqtJS2FWxtNX5+fL5Z2zIZW\nYaz62ra2UMu07FAzZ3qm29rqpXdegwy3ynl+9zwenr8dHcDUqb4/ltMGO1PItQxxakHNgoL4Gvk+\ntlaEycvYqqThwejZ7YwXe1NT9iB22sn+XW+vbZDShhCLqTJZGB//ntvjY9406urCCWkxdy09C1nY\nXEuLXwjyHOR3MSiBJ22pydDX56Ud7ov2KLK8LaR9GVspqIRJtKrRo0PNQY+H2+b2LEk7ZvuwNATu\nE4+Tr2HmHjNOWr9j/J+lNPkfKJaiefPQTJcNk5pZaobNYwJCOwtvBuIZBYT4PmthloGa1wbPK57X\nkybZmhj31XqGXV2+3zHHChag9EbDfbckXH4mvLEzc2WmL+PZf3/fRswbRjbWqVPj8By/cxaWWFBk\nnmHxOWbwlpZTIQ0PRr/99uHL1IY1hl4Aj/VqD5wYLhaDdISsxaPbsh4sS8ZiPRdiTFCIcWVWo9no\nywuCGRZvAMy8GAKwJMlyMA+Pmc91dvrNoLu7WGXdaafSWG3s3nw/IR6n3IefC78L3lwsgyHfUzMX\n3qz5nGXPkP9LtS/EwglLqWzQ5XFwGyw5Wsxfu9zyRsQCUew9C7W1+WsYJmBc3trkSr1jCxZi5sXM\nm7U99tJhWOaJJ7LjmTNDDYmfC3trMdSiBT7G4rXhmsfJgh3j8gwFyYbBz0HeK2Pr7AnEmyxvfswj\npB9jxqCINA7f1+e1Fm1Lq4CGB6N/4w3bTbGcZMoTyZL6ZJJqiV42ithE1cSbDy8qXkgMOQFxn2mN\nJWqfXfYasIyo2sOE+8Xj1v3nT90mS0a8AbF0oqW0deuK72ltbkLagM4qtgWhcV+5L5rx6HO8wDTj\ntpi4xtQtjy/uq76vfFrSFsNpfI2GSbSrJW/EbDdgaZSZF2PKLNFz37XmpOcwP/tYDIk8K4EXLGjG\nsgnx2PiYvZg2bPCChYYEeVOS8bAWwS66lqspa3AsbPF9GCLS2o0IHwwj87pjn3/uK28i/E742VpM\nnteWZawF3qIS/bZtIS7PuyUA7LZb3NLMzNBidhbj3rgxZKo6wAgoljp58TLxIuAJbmkavPBj0mI5\n9Yw3N8v/XXtg8L0sbUUzBmb68jt2A2N1u709ZBilvC2s/sgxazTW89F9FGZjGdk1Y+dNjlVsfj8s\ngcbcCkePzhagZQeJbVaaEbIxWNrR81af4/fANhltz4jFlrBEbG34lUiG+tmuWxe+N/3M5H9Ly+Z1\nx/3kecXrh8esN1GGYCzhS/iHboPtH8w/eJ1YWr4WKGSsAuOI95fuHxtshU9YMM3GjXbfpY1yUGYJ\nGh6MPknCXbFS7w2mSrxe2FjCxEY4Ib1YWNK0GJmGUVhS4oWq22dNpqPDNgZ2d4cYnywkzdR5oVjS\nG4/RklzlvvI76xrG9jVz50VYThuT38i9dL9iuLuc7+0tD1Fp4gVrzQOWeqsxeMW0OQ2vMGTAG4MQ\nbwQsXQuNGxfaAkQg0lgv98sKCmQjLfdDGBYLPoyL67gJjtaOjV8bL7kNXhtsn9JeTEJ9ff6ekyaF\nYxZYQ54JewixlscC2bhxtqt0Z6eH1HSEr6wx9qdnSZ/nNPeFx1GOycszkN9Ke+ycUSUND0a//fYh\n02IJD/B+2EAxc7XUQ8ZxecKW8jfWPqxa+mbpwbqGGRtLYdpLRve1pSVkBjwedtWSa7TUwEY7vaHo\nBWjBXDF4g6VrLZnyouHfWhivJjHGsgbHz0dDNtJHy8WQxxPbuBgmaGjIAnEmT7afc8xFFcgWIuPL\nuq+WayJj7ZphM1yjoQ7eNHmz0IZBa95o6ToGRemNoanJ3hSkvzJGngt8T8tlkPvI5ywNpaHBM+uZ\nM/09+PkAoQ3EinXgZyUMmGFQ3uT4mpimzl5CLS2hp48mrSlrjdxymVy3LvtkqIfHY/WPtYUKaXgw\n+jQNIQuhUgxDruUB8+K0VFJtIGEDkcb2NAPjF89tsAsX94uZPvdRuyBqZhmTCESSZm1BP59Skrsm\n6S/3T4/Zkq5jUJQFaWhskoltFJb3ht7ALQbDUAx7l2hBAfCRlnJvC0dn1ztuMwZBxWwyjKMzXGa5\nZmroSs6xpG0JHIzd832YuG1tu9D9ZklXj9HCvfW7tbQYhtxY27Q07KYmL8RoP3ae79L2mjX+ei2s\nSHvsu295P/EzZHhl+vTQo4tTfrAnj4xB+sRu0EC47ksxebnWsrNYkdXVuJ07SlIr++MQ08wpU9LV\nd9+d/aONMtaA2LCnPXKs6/gaPmep/pZBMTapmfTitZi7JdEzaSmKPQ8sn1xWzTUz1JLd6NH+OWhf\naEva0p4KjKuy9sOLUGsu0pb2DdbvzFL1eUPlPkrbO+xgJ9Di9vh6PeaYpw1rCzH4SF/LpDcFZtiW\nlsmYPvuf80JnrFf6wAZIDUfEIC09Hk5Cxt/HoBj9TGIbOsMhel3xdew7LnYzoHjDZeFImDcLPMwj\n5HuNs3Mb7MEmWgS3o6E4Xh/a710/60piSMRlkrVC7itvQPp+0g9Hydixj6ZpSiqQTcNDoueUn+wG\nZhkWAc8orJ08dh2QXdvbm01wgRAA2yLOC4nbYGLmWmpBxcYhxNF8Qg0NtsTKMBOr1DqKmDfDzZuL\ntQw9DjnPnh+ME3KSKX4WlqRtQVWxDVkzXWaMmiHq38XevXV/7ZJmeUXpzdfS0iqxO1hGT8B+zzxm\nyy2RYRHG4rVBLqZ9xKAoIL7hWs8GKDZ+amGmlFFZiJmY9HnjxhC6aW7216xdGwoTPOd5E5fr+Vp2\nCbYk8I6OUJiR9dbWZrtdWnAm29hYIALK+8XrduSY7ZSWA0U5vmdQ2auTJHk3gB8BaAGwDcD30zRd\nkiTJOwEsB9AGoAPAsWmavpokSQJgCYCPA9gMYG6apo+VvMmoUaE6x9hjueRK1RrkhPQk1wuCcXG2\nyPNi18zIMoDqDYAlVsCWOoRisIcVpauJjTtawtaRsXoSWf2xJDJO3KQlLybtWqkXhP5OiLUIKwye\nv7eYFFAsKcn1VjIpXtSWJ1apvloUY/qdnSHD0IuZmabGuS14UsNpWvgQbc5aKxZExAyN79PXZ28o\nmpnHtAH5zsLL29vDtgVqa2nx1zzxhD+eNCncGLQtoLs7TPPN42atXe7Z0REKHMzorTXKzF9L95X4\nxctvxbis4yW4v3oM5XiiQZVwxj4AX0vT9LEkSf4BwKNJktwNYC6AlWmaXpgkyTkAzgFwNoDDAOzh\n/vYDcKX7jBMXFNCTvKg3arJboef8Wy2VAcV+9HxsSTN1dbZLGEMNPIH1BsCk/egtiU7aiNkcrEnG\nz02rnjqFATP6UgtW7tPWFnowaI1CfmtpN0Ka2VsMm8esNRAZP99fiJ+39qSwYBlm4lbshaaYAGEl\nywPC98P2D55PvNFY74IZlqU1aWGC72nNZbmOIbyY/UaPtxQMaP3G8i7ijdoyVjOz5vfLMRSTJ3vm\nzlI85+ZnW4DMK54zzc0e2+/sDCVnfoZsbLVcq9mZgp+BBdWwXzzPZYZepZ/SR+11I/2S+1RJZX+R\npulLAF5yx68nSfI0gAkAjgRwkLvsOgC/RcbojwTwozQD/x9MkqQ5SZKdXTs2jRplexmU2uHk2JIw\nyklaMkl5k9C/5Z2fr415TMh3QCgdac8CLclq/JsZEPeFNQDexPhZ8aLh35Yy3Og2rA2S+2UZveS8\nZYsodV8hy6Cr4Q1tyNxhh1D65mutbIJA+VQGlUjw3CYzeH4/bOewvJ6YAfJcseY9z49YUJy2Z1iY\nOmvMzFR5I9LajDBIvRGJbYYhL63pSX/1ZqKdJ3i+WcZllvo5U2RXV5iBVUfT6zXDz8HSPBkqZeMt\nr1m99vmZWFJ8Ka1a7s/vhe0Z2m7Dbs06S2sFVNXWkCRJG4C9ATwEYLww7zRNX0qSRACpCQD+Qj/r\ndOcCRp8kyYkATgSAiRMm2Amq9ATSxBJgDCPXD5i/s1wM+QXyvZlZWl4qvCBYSuN7W54Xzc3hBsEq\nuCW5c79ZirfwZLlGKAZvxOASS0PRrnksSUt/taSiSd9P/mcGJH2I/ZaZrHb7s8YA2AFT7FaoNzRr\ncZbbDLRwEGM8QjHDPvvLW9Kd1nxjycl4E2FtkoOa5JwFE/CcjMULWIZmOdYMmKVrZvQcvDR5cgjd\n8JgsX3JmwKwVsCTOv7O0WI5L4PnOkA5rIPz9Bz6AIuL5yfe3YCZ5FsLUuY9WzEHME6oEVczokyRp\nArACwFfSNN2YxOpnAtYXRa49aZp+H8D3AWDmXnulZmGPcu6V+ntepJVIZ5aKrdsCinPU8OKxDELM\naDXGyhMeKMa5hTTuzO6IHCgjxCoxj5+lR1YfrXHyouvpCSOUrY2OtQiWyPR70V5Put8W6Y3G0lyE\ndISwZXTm6F79Dnnuafc5fSz3iBmluX/aA4Y3AWYe1sYbS+NgLXxmnmxQZ0lWu1datiKGEy1XUHYK\n0IKItKerQcnYOFbBEhRaWvwYVq+2E/qxtrR2rV2VTog9wngjkv+BcF1r12v2dGKJXjD1urqisn4A\nvBSvhQzpH2slGzaEzJ0rVemkc9Km9FvDsWWoIkafJMn2yJj8T9I0/YU7/bJAMkmS7AxAnEI7Abyb\nft4KQJmaFdXXh1nsLEgFCF+eZj762lLwgWTyY9iB1SZpj7/nY95QLFyacUWmmIHPci/k47q6UNpg\ndVdH4HIyMiHu24MPZgEp3A+WxC3G1NcXGr5YlZbjGMPWTP/558P3pnPAs2ZlYZIWFqy9nyzIK+ZB\npSGymG1Ft6fJ8ssvVUCDj7U0znYGHSRlBWbpOBBL+NDPkwURIS19C8mGoe0C2r4BZPOUy06yn7qM\nkd+JpXFxPIW0w32Ra4RY4LLes4aVeLO0oDXt6cTzrLk5XhDkqafCtVfOhbquLkxqxwGSa9Zkx2xP\nkLG1t1cdHVvWj9550VwH4JU0Tb9C5y8G8Dcyxr4zTdOvJ0nyvwHMR+Z1sx+A76Zpum+pe8zce+90\n9b33Zv/EPEpYumMpkic+X8sLjNvkSlGM8ckLEpcslmo4+REzAz6vr2f1VM7zBsBRexZDY7Wf8cNJ\nk0IoiBcyR+zyYrLsAvwMuU+slUh7HI2rc5Kw9MyJoKQfjL9z/g5haq2tYTATRwJKv9vaQu1GB9f1\n9IT52GMRk9zXajx22EPGEiDa2/3YZ87042FGx33idiymzOd5nHrMvClZdg7rf/ktV3MCQoO7hifK\n2W30mmXp3RKgWBORtqdPD9+J9E9L7VYWSMbdGQ3gdcr5mTgrK2/ybMS38kgBwMSJKCIp66c1edag\ny9lwmDdYAlRDg8/u2dxcGEOlfvSVMPpZAO4H8F/I3CsB4BvIcPqfAZgI4HkAx6Rp+orbGK4AcCgy\n98p5aZquLnWPmVOmpKuvvz77R0tverHpSc8Tn9VXnkwWNqrdOLV0Ykm83C+5ZyygwZKMLWOgTv3A\nKhtvACxR8xhY9WViLUHnbefnplVMa4Jr6dGSNnnRcISjSF4sufJ9eLOOEUvSrIbzuCyPCMZuOdqS\nA2+kD3wvIMTumdFLu2wA5ffA7elna2G9DO3x7625ws+boYauLltKtjw6pD1tk+JnzMIHPxMmrf1Z\ntgZLaOP12NZma/J8T2aS3A6/W34WvFmwcTWWpZNtFLyGtAAZk+JffNE2lmtIlHkNb64M5/Hmr5Oa\nsc2B6lAnu+5am4CpNE1XwcbdAWC2cX0K4NRy7Ya9qLPzOAP+gd18c/a5dm18gbHBg8uSycucOjW0\npstDPPzwYomIJxerzGvWhIUJhAGzVMcGHB4b4Pt11FH+e2YMvCB50sqYGffVG8pqt5/edJO9OC3m\n0tUVSh48fml77lzPvK+6ytfLPPzweLAXkPX5wQez47Y24LbbsuOWFv98P/UpL7098QTwmc9kxzff\n7K/56Ed9H2+6KeuPtAlkz/7GG7PjM88MGaA8b9ZKgLDEn5CWyLTUHbP73Hijfw5nnumP+f4sfPA7\n5Occ84tnmMfy+dceVyyIMLG2JtKh3JshBD1mnpMMe1i2A74v+8Azzi2/mz/f3/ecc8K25Jr29lBw\n0CkMZPzsXtnVVWz05YhaTp0gc4+fhRY8LCb//PO+bS7oEoOF2IuG4WdLgOXrhXd0dPj5zoJahTQ8\nUiDsvnu6+uKLs3/YJYvVcIsZsfrKk1r7ocbc9koZn1jy4POlDL1s9LTwUDa+WIu3ocFOL9DT4zE7\nntR6InEfeVLoiauNggxhMTOwvB10xR9+zjI2WUjMCNrabMmMYQfedNjWwBI7e0fwpsSMxILteBNt\nagqzHUq/J00KJSmtrU2eXLyBik+5tNfWZhfc5jFoaMmyL8WgG30dEGp/TNpDht+btguwRqwN3nrM\nAs/w+9Qag/xOS8Y8lsmTwxxOsfgQS+Ni7aapqVgCZtI2MwvOa24OPX2A0nVbeTzsbMHt8bNlGxJD\nW/werGfBOZyMbJiVSvTDg9G///3p6v/7f7N/YhMs5jdqGTKZLMMSUMzIhFgCYebPL4fvHVNZLbyV\nNzGr3zwhNbzC+TmE9ALge1rSnrWJ8WTThkGGXXghMbxkaVfl3pvGoy0plTdf+Y1uzzK08qKSduS8\nENsLePyatKGdGXAs5QCTxfw08UbHEZs8b7nvVgoA/ayEWCjgcXB/rPkbC5zTGwAnDWMs3tI4LWhL\nl7NkpqaNrfJpudFq4VCPKxaTUorKpS+wNiIWThoa7GppvK65X4C9xnkcnFzN/a5m0M2Q0HbbFTMj\noFgK0d/LNUCIe/LE451VbyKWUZPdGK3FpqVE9lSwvBA0tKSlRF4Y3EeLqUh7FgbMi0pLEHox87Wa\nYbBNJKbRcGFka5z8HvgcT3ArFoEZE/eluzuUdizjtbaRCDE2ypIX3yf2DrXmpGEeJqt+rY7i5XfF\n12hi4yELE7wB8DtmhqHdeVkCtjRhnatF7sMCUUw7tjytJk2yx8T9YLuJSKnskcZQqbZhMFxjCS7s\nIsmMkdcQJ4/TZQKtwKdShbn7+kIbnOUGrPkOC5C8lhi9sOyCpeZfGRoejD5Nw92ZdzY9IbXboSWR\n6DSnQhr/t3x7Gd+1MDtdwo1zVbDKzmkC+KXp++iC3CzRWkEwDO/weR6v3jyE5HrODqilIe2Kxn2W\nc7xZWVgyP0ORzLS0zkyfx8nSLS8gOe7s9DYCIYbE2HDNPtD83siYVVSGjkPltScHPwt+3u3tNv7O\nDJiZtN7cdHwDb+BsmGXGwO8qplnqjdCaW9bmU1cXtm0JUNoQa9mWmLh/cjxpUuhpIqQ1tBgkyutK\nuxRrjxqZEy0tob2LxxxLX8DEc1v+Z2GC4USOd2F/ebGPyP/SF57vAtWyhsD3sfhbCRoejJ6ZQE+P\nHVgScx/TKrRObcyTWksgLGVoAxYbVliqYVW/qSnEwoUsTUSfFzxQu1fy97wImUlYeKSWtiwNyPJK\nkrEKMRNnLSem/VjMm7UiuX9rq2dObIjkqlrTp9uLmt/F9OkhXi/PR8bGrmnMJDRebG1iDOfxM2GG\nb+HinMtc7qWPtbYgaj1LwBrCEbJ85Hlec791WL8V1CRjkd/q9vg823C0EBB7tpbrKhO3raFQ+d4S\n5lgIZKiHtUVedyyEWVWgpJ8WFm+V9WODPo+R34msa21Qt2xv8r/0kXmYGKl5LluaSIU0PBi9Nh7y\nJLT8gmPuijFMNBZlaPmD8+KNGcR4U+AXzpKZpbYx82KXPcY3WSvgQCb2xbekMH0vq998b2a2LDHy\nhsJ9tGwKrI3wfWIYOUvOVl/b20ONhxe7ZdTk/vFCZ/iJITIepwVRsRtezFYUw7aZqfBGZMFY/N6e\neMLfkzHvWLANP2+eB9bC5w1SG/P4GmnPMuhq+EeoudlLydoVlaVn/VtmgOzSyO9Yw2m8PngOW/2y\nYmaYtHHXYvI6SZ2OI5Gx8f9A6O3HWhZr+xwTwpsEz0lehzKveK1pQa0CGh7G2L32Cr1uWA2z1FrA\nq5Qx5hZj0kL6ewv7Z/y/EgMfb1C6PV3FXV48T3ytPrPfLBdUYMmHc5boZxR7Dvp5WMydNxe2V/Az\n7+y0n0tM2mDM3fJl1mq6kPa/Zy0CCCVt9gZhzJQLmbe2emakPbKsTZQ3H0sT0O9Qzws9Nm234U1X\n7mNh6yy5WoKHkJU3Sm+W5YyxMWmdNy5L0+D2LBsOj4e9s7SgFttoLcM0t2/lM2ptLX5vpbB4bfBn\nTVUYuTU2bURnwcZKkc35fVjAbWgIGbz8zoBqkwkT3kLG2IYGj+Uypq2LRQjFjBIxBsfEEzimvgOh\nJKENibwjs2uiFZnKOzUboixo4qL2AAAgAElEQVSJXhvpeDw6slLOc9tW8BaPiRe3pRrz4uAFHpO2\nYh4uzNys/unnY20immFY0a6WRAfYHijsxVFXF0YmS7/Zrxnwi1oWnd7wrbnJxSxYWCilHTKj0Ncw\nY9DwkOX5wYGAPDbt460hT/6dFhr4vVkYuXZ1ZOiJ54q0LcQwa11d6fwucr28xzVrQkZqacqWNgcU\np8wGiguCMEzC70e/T964eNyauXO/5Xq2FXE0roalgGKko1yQoaLhIdG///3p6jvvzP7hQfDLYrrq\nquyTgyxiWHxfn10uDAhxcj0h2TebiV+2XAfENwPNdEph55yugO0WTE1Ntkujdge1JFJm9NYYeFJ3\nd9t1PnlzYYbFmyuPTY//qquAk0/2/3NfuG2e7PK/tF0KomLXTX4n8p3uNzM1fp7WBqafKx+zBMbq\nvNZIgbiHVuw9WJuFjmdgYYGZnWW34XnNkBOn2WCmYs1ZboefS09PCEEJxdJfWFI5Ry5rAzDfx4Ka\nhBhCEiZbKpWwltBlbMwvWOMTYucErRFadji+hsfARm8+5nfMa9Y922T8+LeQHz3nugHCCS+TTx78\njTfajCam9uv2rPOzZgGHHlr8HUsvEtXZ1+cNJRs2ANdeWzwgPQnlpTHjOu88f8wLidX3WEUka4Kv\nXw+sWpUdr1oVV331PTWOPNPNme5uP1HnzvXP7re/9QuHk09ZEFRPj2ckkyb5ZzV5sh/b4Yf7+6xe\n7aNeu7p8VO1RR/n+dnSE0rn09YorsuMvftGOPOTnoGEHC/dmidmK/gX8O7nwQn/NOeeEHj0ci2AJ\nAnoB6/uwJM5txDYl/p89P3j8QDifgew9WN5h2qhoSdE6MR1rypYAJf047zz/O45o5ijQmBah7TLa\nQUG7tlp+8b294dgsu560BYR+8iy98324r1ZAprZP8ebG84zTJMh13FdHb62AqWnT0tUPPJD9oxOI\nMYwj31u1IHkX1BIGT1rLD1dXbxeKeTswLq6xQfkdt8fXa+lMp7IV4rYtpiOkNzsgTPugpVogXGz8\nO1afWaPglA8swbAthav1sApuSa48jqlT/SLt6vK4bXu7v8/06f6Yo2eF6up8+ofJk/14tHQtNGmS\nd3HTUIzlPsnEarccP/GEv37qVH++vT2EJmK4upaYee5YGL70wwou026MIpRobUTbObRRmoUpK56E\nhTDGmjWMUsrtk7VGbdexDP4asrVsPnp8pTxqmB+wAZzdgrmt9etDd0cZL0N/srFqTYg3aGmb1xJv\nLLFEhNpTCm+14uBAuLOx6inEk81yyWJGr1VZnij8sNiVThtZSqUNYLKMpKw+84bCNgeGRRj+iUEU\n1oTQjEn6OHWqDSlZ0gMbkNh7QmtI/FvtswxkDFYzLMvALedZ3bVwWk28wLT3iMY0uQ1ZVJoZiAbH\nEhYzLMtzKua/zC6SfX12sjXLWC7XCzG2LqQlS57jLGSw0KLhImG+PE6WsKV/PE5eM9xfyzjIm5v0\nR7ep7wdkwoF8rwtiy7GW7vWa0BApr3sLi1+3LtRErPnOfeEYG15jFn/hzVLbleSe7E3G762uzoa3\nuH8s4FqwbgkaHow+Tb2Kry3LLI0DxRZ0K8eJlp6YkfFCYUbBu7Zcy99z8AO/bJmEWjK0cE2eqFZK\nAe4z+ymz9KTVRO4LT0jeLDU2zeqwdinU2KD8jjc6gVq475JIip9FT08oGbEEZpGG6viZcvpoTmss\n52LMmnMLSV/b2sJsoJw/nRethgg52IbhOGaummFaMCMTb9YM51hwEjMmNm5rLyb21oppi7pfzIB4\nbWip3ApM4+fBc0Xne5Hr5PtDDw0hDekTB6CxwdLSSIDiDbiUsZX7PWmS5zvMPNm1WttI5BouEsKe\narzxMBQlGyS7M7PApQ3kOqCNIUutkVdAwwO62Xtvn+sGsCfFHXdkn9o7wJrIzOg6OkKowYImvvKV\nYibEjB7wqn5HR4jny/mbbgq9E6Rf48aFHh5yf8leySooM1refGLwh1yn+3LPPXFDMlC8eBl3lOfG\nbooHHZTZMQDgmmt822eeGW4eLB0C2XWCs0+a5KP9eLP6zGf8YrvnniybJZBhyNL2UUf5tm+7zT9P\nzl4pmPPRR/txrl0bZioUam0NIzGFtF1DM0OWdNva/PXf+Y5/JuedZxvIgbgbq160LBmysZqxcP1+\neYPm+cIue2zYk3ch7ey/fyg0xbQO7peMbf36ENJh5qU3MZ5jN93k+zd3rm1ziLmu8nOVd7nbbjCp\ntzcUIKzC30zaFiD9ZymdoWR+bpbhnAUYhogsg7/81hIUDaGhZvnoh4ICrxseWAzj40Vi5eqoqwt3\nUN2mfFoukIyHWru69uJgKYiDKFgl4x08JtnJ9xb8JH0AitVXIVb3eJw9PWEaAGnb8o1m7yO+no2u\nOvK41CbE/WAplcfDk5pjDTg1gWY6PDb5tOA+xq77+rxWwEErLIFrxixkPW+NwXIgTczQa/VRSGuB\n1jX8PfdJ53KJ9VeIHQ0YDtAM1mrDgo64P9p4rBkpM7q1a8N0FuwBxJqLtblxwBZg123lEpaWMVhr\nLpb7ojbc8/2lPf6e3zE/n5hGzhugEKdDYE3RKIxSM4w+SZIfAjgcwLo0Tae6c8sB7OUuaQawIU3T\n6a54+NMA/ui+ezBN05PL3QPbtoXqMw9Iv2Rmokx6R5RJYKWM1b8RaZXPsZrc0OAlICDM3S0LpbMz\nnHi8obDrnVx/0EG+r9rIBhT78XOAlcbc9dja28ONiSEtadvya+bgEPmffyfE6VytVAF8P3l/48Zl\nErscy+/2398/H47eBMI0AdLm2rWhJ4uQtD1rli0I8Gawfn0I3VjCBG8SQq2t9kZw881+fh59dMhU\nuLCGxWwsLypmolpQsYykLFHzNfp6Ju0CqWFN3R/55E2RtQiuqsWkjeExW0FLS7ycKDNMZozNzXbF\nJwB49tnQMMpjsYQwDdEwdCK/Z6cNhkx5vvPYeDyifWrXVq6Ny9+xC6r0zxJ8KqRKKkwdAKAbwI+E\n0avvLwXwWpqm5ztGf5t1XSmaOWNGuvr++7N/NKOJDW706CxUmdUgNjAK8YJgv2LGlBnLZLWTMTH2\niRVitZonME8Uy/WKSS9K62VrjcRycdN+wELs1cMLmZ+JBVexlMgGW4ZntIaiDXIxw6pOOse4b0yq\ntAzdFnNjCZClTB4D91sHvPDmHrOzyPcWxKi1UH5elicWY9PcJyvEnpkKb4oacrK0Qu2gIH3hxH6W\nRqjJgqL4nciYAHvz0PYUK7hs3LhQ+xLiYDTAdpl86il/b54T0j+dA75cERDWslmD53FZhmh+h3V1\ndjQs98tybQXsZG+0TmpZYeo+x8CLyJUNPBbAR8q1U5Jee827x/Gk4R2cHxrg1TLDtzSYTCwR8Qtp\nbrZTyPL/3DZ7fVgSNbfP8IpeBHpD0bAE35OZCtdE5YnAC48XjTVpLTwyFpDDC5/tIsxI1q61XekY\nu7U2ag2V8RisSmMaUmFjp25bbw4sGTJDZw2Jf6u9KvT9rA2ciTFobSBnAy6TZh787C3PDcAniZPf\naalVEzM1NgjyxhETRKx5w3NVu1/yeNheI/ezIEEWYNhNsaPDH8unFfgkFZ+EtB1G2wqA4mhzNsQL\nae3LyhzLnno8NhY8eb5Z3oR8fXu77xtrxJZmVyFVrwOE9CEAL6dp+mc6954kSR4HsBHAN9M0vb9s\nK01NHquLSVIWxazPWqrjycbnrYRk1s7LfeFFpaNRrYnCC5wnk1Wfkr8HQqYjvuyxZ6L7GosBkE+W\nbrm/2ntIfm8F0DCz4ftYhjzefJlh6gnLRjM2zsn12m1NfsMueMwkWarnvnKucm7Hcm3k52BpaKxZ\nMSyl22DDNZPelC0jpvTPgo40zBezSfFGwxClPqc31ZgmaDHpnh4PizHub20ivBHrjYg3PSaLyXMq\nYR1MJ/fm+S7PtLMz9DiTOcbV0JhJM6zI70U2FE5+1tAQlgFkjZhz/LDAw4nP5HmKAMz31oVZKqCK\njLExSCZJkisBtKdpeqn7vx5AU5qmf0uSZAaAmwFMSdN0o2oSSZKcCOBEAJi4yy4znpOAKSCUjK1s\ngoCHbnhTsIxDLF3ra4S0imuR9eL1eUsl06quvFhm4jEjGxMzmxhcwpPGGg+rzPx7ljYsuAQIDVUy\npvb2ULXWBidmWHJvKb0npCMsmXlabqd9faHBlseh2+CNk6E6lp64j9qQyMU/5B6WpwQzCWaGGq6x\noASGE61rWXJm4mcSM9Bb6QXken1P7d0ipOebZcjk9tnmFBPCGKKJJfrT67RU4BNv7jFhw+oLr2XW\n4BneYbdLCx7Wbq6szfJmJXOVYeL29rCmsKVtWBsKwbHJ7rsPbsBUkiR1AD4JYIacS9N0C4At7vjR\nJEmeAbAngNX692mafh/A9wFg5nvfm5qeClpd6ezMdjhhLtOnhww9Jm3ww7KkTQvXZW8V/o3ObWEZ\nu/R5XkDaBZFVWcCeeEA48aycNjHfdEuSYulAS9r8TNiYZWkdnKYh5usvBl4594tfhO6p/H4YsmCJ\nRS8arTmxNKqZFNthGP6zND6OxeBxWjBNbENmyZmvY4apsWuGl+STGbGlWelNuNy8ZibEfYzBeXrO\nS79Z8Iq9b2mT36fl8RTbRJjRAjYWz/niWRPjecAOCTzHpd/t7TacBXjJnx0U2ADNa5bfMUMxbNez\ncHcWkngDZLiM71dOGC1BA4FuPgpgbZqmBSAsSZIdAbySpunWJEl2A7AHgGfL94ImML8IdlWzJuRN\nN1UmrcegIDnPWCFfw3i5ZbxjA5+GesoFMjGzYwnYiphtaipOriSffCybhPiu8xh5bJMm2dIw9wUI\nPVPk/BNP+OsZumloCBeN3I8XieTiWbPG9/XQQ8PcMJwxkqUn7SIqzwXIFhQvEh6X9Gn1an/MUhoL\nCB0d/hlZajpLXQxX3HabP//Rj4Yak+UhpDdxLY1q5s9Mn/FgDb/I2KxNsa7Ov0/tsSPj5U1W7mnl\nFgKyMVpSJ/+vDclA9u55DPK+dO745ubSgU/8ntvaite41hwsCFHb6KyIXhbOeAPid8WbCAtewsg5\nAljbhLhflgDHLqfcdq0LjyRJcgOAgwCMS5KkE0AuTdMfAPgUgBvU5QcAOD9Jkj4AWwGcnKbpK2V7\nsXWrP+ZJyJZw+Zw1yz/sWbNChmphk0Dc35qlBj2Z2bCipTFL+9DRkcxgLdybjVNsaLWMVrxZsXSs\noS0Z2/7725AWY5M8qSzplBceLxSWQjTDsjZjfn9sh2FtgeEaGb/OmcJwjTYkNjXZVbfYIFcJLMbM\nm7Uyiynz/GJfcL358iZhxS6wIBDznOLoXmv+1tXZRlvWJtlVmaVDNuhahUm0LYl/ZzklMIO1NC0W\nWnT0M0uvFlTDWHxPT5j4S0vA3D9Oo8ASumbW/E6sd8iuvZaHnx47Cyd8f0vL1gKmthlyn2K+/SVo\neARMzZjhk5oxoweKAwdYGtMh1npTkPMsHVkBQWxksx6gPscL01KjmLnyomYcn9vic9qDQcZjGcr0\n9UIxTJKJ1VruNz8rS8vSgSBCnLKBFxAvZF4kjJ3HmJS1IOQ3+v68qDl6kaVH1kQESmDSDFgTM666\nutA32grTB+znpuElDuqST5aK9fdACMUww9TSNW+Klg3Jwtn5d1pQ4LnMEAgzJK4wpSVT7WElm4u0\nZUW3ik1He3/JmNmoymvTwLQxbpzdF2ae/H6Yx/D6YCiK5zJr5FyC0OIrDHOx8VZ7Lsm17IHo2k5m\nzHgLJTXr7Q2LO7Bniiwmxs4toyPvvDHsjyVQjaVqhq0NgEKMn/GL0n67QiwZ8v35BfLY+HesGst3\nGqvja3jhl6IYQ9PPg1VbS6JmTYMzRcrilQUzZkz2jq3NT2cOtQyP2v6iGR9DKpMmha5prHbzWHij\n0wyU+86/jcVEsBSvYSHWjOQa9h+3JHp+rzFhRttK+DxrltYmwQxOGJYWQixDrsaI5T6s0cSCxPi3\nFsw2bly86hNHllteWcxsLfiFpWuGorgNraXzeuP5xBq8XCsb28yZYVwCPxOeV5ZnFwtF/K44sE28\ndWLeVyVoeDD6JPHHLOHqBQ4Uq+DWDm9JzUI84Swjm+UDDoS7vYW3cX1M7hcbMvkanoT63vI767z2\na7ak/pjUzZIZMyOWBuW4oyNU6/n+Qux1w8yb7RkA8mPHIrdli40d6wluMTXdB21I1PAP358jri3N\nieEyvUFrn2ndJ34mLCFbzJjfG8N8lkbInhkMs/HYuT0tIPB75r5bUr9VXIY1F362uq/8zHlNcDSn\nxuA5ilckZA3TbNwYMmzG+pm5yz0Z4uU5wQGPQm1tIexiZRplfL2vz85cy89CajisXRuOk58Pa3/i\nMtnSEgpNnGpbSMbQ1WUni6uQhgd0M3NmuloGqWiJ2wSkXC855mEUHTcAkEe/DYCwo43uOyDL1SCv\nfHsAje54B/cnv5VrhQ48/njcfUNmjugBIHLHgR/8IJaSWyj3Ufo2ivoymtqfx4VWDjgAA6annsKy\nadMAAK8gfE5CwuZGI3xW4tPwOoD5hx0GAPjr7bfjGvrtue95D/Dss7giSfAuOn+8NX8ES21uRr6+\nvnBankkD9eWMJ5/E7a7fspx7AJxy55247JBDCr+V5zYfQP0RR/h7XXEFfrPrrlhFt1/4ve8BX/pS\nIUryGdf+7v2d666dy6ZNgyyvBgBnuLm5RLV7uju/wp3vRfa85bej4d/PCcuXY/lxxxV+e5y0te++\nvsGHH+5Xt5cmSeE597n7air0Y/FiAMDPFyzAKPj3I3O6yV07Z8uW7Dr3Xo+R/kpEKmDnnamELENr\nZ6dn1JMnh5s8b5bigCDxJt/5TpasEAizYf74x8A3vxneR2P07GbLG/cllwDz52fH4lGj7WHlUAW9\ncbLwEYstYVdj6ZP7XdLY+BaCbjo6kHeLYycAYnLZE54BC/XBL3p9nif1dvSdMJg6Ot6erh8FQHQK\nud9GeIZ+yw03FBbJBvjN4roHHggWDzPP7el8A30WXn0s4MHhkcwgcy+8gAsmTAAAnPvlL2PJ5ZcD\nAE5/73ux4umnAQBznnmmcJ8dYD8joW3qezneHsDtt98OIHs28nzOes97soMXX0Q9gL/Rb29w760H\ngMQm5l5+GQBwJY1Bk7yHK6dNK/SbZRRm8qOoj98FsPnWW7P7PPdcUbsLv/c9AMBtSYIZ8IwKAG51\nfa0D8Cd3bgf499kDe4PMPfmk2f8rHZPjuVYP4Dp3fhv8ux8QbXajOPlk3H399QCAyQBEzrwP2byU\nfsmz0uZMOc+LXo6XOwavaRTCNbjMvVMZl6xbfkZ51tCJcqU22l//2kuyGzZ45s4eKwzrsgbChlnJ\n4MpZJVmL6O4O0xQIA127NoRB2Z1Z4BP2FrM0dg0NC7GGxGkcNNNnTZQN1kBx+u2YO3WEhgejL0Ey\nHDbRfJSOG4eBRlIreihJsJ+TmKqmhgYc/8ILtrdCP+lg/sdJWyfsuCNW/PWvADLGYQAPyI8fDyDT\nigS9FRlldi3e189+ln26RfLhTZuwqTHTz5aeeip2dpc9Ac8AN6KY8VVKeacRjIIfzxG//3128L73\n9bNVT8cde2zxSXFFtaCdCmkmgL1/8hN/Yv/946l8Nf3hD9nnpEleAm5owC2LFgHINkreROUZDYgE\n62bjMmep1EZ7sevNnOkZo2wWRx/tU5vPmuUZ9HnneWm8tTWsbSBaQVOTF8Q6Ojyjv+KKEHbRfeWN\niI27DC0xnMcGW3YI6e72Y9a+9kBoj6uQhgejf/31wiE5UBWkLgA4kifs0UfbPrYDIJZCSkoeNaKr\n3f0IfcShAK4wpOC8k+YBYPHllxeY66VPP13YCNdMmBBIZAtrPQbZQNatwxwJViEPi8XGQt+AjNkC\nQG7nnYu+7zcZjPHwTZsAAE82NmKaOwaA690GcBCAvWgT7XXP+cgXXsBS93yLwrcVbQMgAMURkvH0\nlfLew/2ib30LALBy0SLMXrIEAPCX66+HY0X4I4D3umM2vbOm9ksA/+/TnwYAzH/mmQF3Ke+YfLVU\n0XqKBb0xRMPYtLZnaQMxux7LNfJpuV6zMZqN69orSdsBWaLXCeos2w5DRH19oaeNFSRn1Qhgr5wK\naVgw+hd7LYU5pLybsDm3WPNJUjguyfRFMnGSl1YrzUn48Y9nn7/6Vdl+VUUvvlhg2la4wx0VNMGv\nt5TyttiNU9DSI/rD+Dd7mW2lY5ir4N8BNmzApY7Bl51255wDALjC9Wt+jTei213/Dvv2tzPJ6+tf\nB7761YKtZS+eK3vuCWHPyyZMwFHueMcVK5CfM6fkfYSRLnr1VWwDkKvhGAI6/3wAwGz3CQDvPu00\nfMA9vyNpPLMvugj5s88uamIqvK1p5e67V6dNuY0GLS1YfNll1fa+QNb6MoUqdjPt6gq9W4TB6eAt\nxsMZmgHC4CbGvHU+qZhbqpxnQzNQnKSPNQtd35aZO/eVpfhYZLt2OOCobd5cKqRhweiroXwJ3LcW\nlHPGyMGmrvKXVE0szVl4a62oP+8gf/rpgREX//7vwDe+0a/7X0CM4lzFSBY7hnfg2Wdj1hln4DF3\n/jHXZ9mkCvaEhx5Cfr/9sn/KMHmg2PYhmtlJNd64ZIy98JDTi/DQkTCUfH199F2vUf9vpudW6cbf\nXyYfk+Jj+H3ADNldlL3ptPdZqfzsOnCNz7P7p6VF8HmWwNlNk+MT2J2YNxcrJUtfX+iayZsQ58+x\nXHp57LrPZWhYMPpd3vc+L3lXQfn6+vJqYQkMNffaa9nBV7/q27z9duQEf6017bKL769oMddem933\npJMG3Lws+IXOGGrmCKmGdvBmOJEGZ2/ciGfGjgUA7L5kCS49/XQApbULITHi5pyHRy1JIKI+ALPl\n5HnnAcSoCprImjXYSTYrLiJTJVlaWb+INdoykKSM84nGxsK5UoZ3oSZ9Yt264vkhmuwddyA/gI2r\nnBQfJWa6sehaNliyQVSYt+UerN1vhVhajwXosaZhBZdxHAwHomlXXisNCkv9OvhSS/icDkZHQldA\nw4LRd1XB5NmzpiKSyexc/uT3CxyTfyBJ8MEzzihcHjB5azEMhO66C3nnTVKAoGrA4IUKC95Nqkfd\n4ppRS2nzvPOw+8qV2fGsWfja0UcDCO0IMcqxoXkANhYtxQfnPvGJ7POXvwQABNs83fOUz342Ozj5\n5IAxVcSQHJ20fHnF11ZLMp4trj/17v+CBiH3PvZYXJYkZe0LE5FpBABwkggCNaZ+M3gglG43bLAr\nw7HbIwcOWqkjWLpmzJuDl1hbYBdMJsbDORaBE7pZPu28aWioxXLHZExfB2LK99oVU7thlqBhwegr\nkUiEil4Fe5k4z5ALkqTgJpfbcUcAxRMuP3YsPibHJPXlp0zJflfDxfAbd+8PS11cDC4ElW9sxOF8\ngrWaKjbV5+iZiavpO2hTBCpj8IVr1Zj7ZfTu7S20wxJ6fkaWRDV31lkAgEVJUjyv7ror+zz0UDxD\n977RuSxW7QpJpSPzSdJ/I7616Tnpup42x+eSBCedcEL2jxSX37wZZ7z2GvJOy4rRJwBcKH0dPx5f\noO9apd9cZ5k0hkqo30z+qacyv3sOOuOAMmbGQJgKxUplwOlRGP7gwvQcCCdMd9KkMErYSjfMCc7k\nWXE/GKPnwEodBKoD3KQdPsdeOkCocehcWhXQsGD01Skh1VHeuQJa5JZ94Hss8Mei8eOxcMsWr1bX\nwMtnOfmGV0Pcv0rpNjqeEb2qespfdlkAhwwJiVF4Bx1VUUz5iy+uyD7xs4H1KLvXggXFJyXQqYog\np4sdQzzLcq11eO5v/vpX7AYgv3QpAGDu0qXY1XkXlWPygGfyAJBbsgSdDnJj2rRsGQDgEvdZCQ1E\nig/iE1gC5txK7A3DQUjMDOU7wDPM9nbbiMr34uh3bXS1jLpMlueMDpKKkZWqhBm5lSpFrgHiEdol\naFgw+m70A5IRkmg6onPTtADV/NX5dP8RwKx8Hvmc95PIHZx5iufvvrtwLgrUSOSfqJQf+1jsyiL6\nsNgC7rjDh0u7F5Unt8gYM6+Wye/pPsWbpD/2DwDY1VjEMS+TxUlS/bvrD40eXdDEHqivxwfTFNhn\nnwLD+ZtjMu9y/wdMR97Ztm0491nKnk2+5dVAN4NJeRe4BmQpYQHgWvr+WgD7VCl1F9o+/fRg828F\ngKeewiVVtjMgqAaZ733QBkMaVslGK4oUyBifeONYeL5OMy7E2Dm7Y7IGwXmHLBxfB3HFMHrLpTOW\n3pk9c3j8VUA1moZFCoSJSZJ+ofxlBRodOT7ZfV6C0FNBjHMrq7hHE1BgKO+fN8+HU8sLuOKK7JPO\nL3UuoCds2oTr3CLsABl977gDiyjcHaieiVdCowCcSf//h/tcwEZQ8XiJaSwbNwbQhCyk/Nix3s7x\n6KNY5CCThUlSsQFPIJd7HQRzYJVz8EpiJqe43/7ZndtDu9zGDJ2//rU//giVPHbaQ74KJirLrxvA\nLACzb7nFfyk2g1Jk9VHOObdU/Ef2FguYvRrnIne+v/Mp9+STFQc9DZTBMwmoeMzLL4dGSsbRhWnq\nqmMxjxkhCW6aNCnMM2Tlw+esp5yambOyWsnINJ5u+d/Ld3I9J0xjjx3O06NzVWnvG6fx1Kw4+FBQ\ntVOEve5jgArL+dUweKFuAL9wx7ctW4ZxTp2tAzCPc61UQJWo1rWkbQAuov+H4iVX46WRr6/HQfx/\nDN+WCFjnmdSfuIYglUQlfSyX3tmgioPRmek7YzHKxZBwgquHH4b7FY6hS/4rSeAysOC7lfZF0VAy\neQHgWuncz8ePxzES6KaLbAhj1AVGLA2A89WIlM8eKxxVyh4wXF6Sfe3b2sLEeFpiZ1fQUi6afJ7t\nD3193s7Iv7diAGJQVAU0LBj9jjNmIPdP/wQAuOHyy4OI2HL0NWd8AwBc5NhbjdTvQ93nvgAS542z\nfMoULL/1VhxnBGud4CJxmJEAACAASURBVDxQAOBzvCAIJli0++4APKzyC4QSoUW5vffGpY8/DgD4\n2g9+gPwXKtd/BMYxk48BcdvDmDHAPvsU9yVNg0AqicCtFrr5bRXXalpnnNvDRY/ioy5Bxn33lW6E\npXgmrs7VD1oFYNWRRxb+r2RzWUyb0QJnsBfvLIEST3EVyQog3CUOaHGaWX8ZfKVUSyle5uQrAOax\nXYLxbc4WyxK2ldQMKJZ4tYTMEj2nNGbXSSsHP+CzznI+fsvPnmsPaK+bUmnBJYW3bltfz+erxOjL\nQjdJkvwQwOEA1klx8CRJzgNwAgCxdH4jTdNfue/OBfAFZBWmTkvT9M6iRhXN3GefdDUtMJHC2pBB\nH5oYqfqa1f/77kP+wAML/worKx9/G5JIHnUAznCBVLfdfjsO58nJblbMJDgjJRcxls3A5Q/JH3JI\nWftEkNrghBMKBrkZAB515ycDkKwdnwfwbg55rzS/yQBplVv45TSogr//pk3Apz6V/SMS7nCh888P\n7DnVUI41Ph7X//k//vhLX8o+e3txtZvvJ5FX1pOO0f8KwLmUvG3RrrsCABY6+5J4EknCtsdQe6ol\nkweA3MKFAIAVLqXCHCU8oK4urLpmpQ7XfuZWinLL7ZK9eNauDaEgLrTDaawt4y0TawscSGWVE9W2\nBQ6eim10PD41tmT8+Iqgm0oY/QHIhM0fKUbfnabpJera9yErL7gvMpj8HgB7pmm6FSVo5j77pKtF\nQpk5E4sd1HEaPL480X0+DyBHk+xx6v9gsgqZPg0AJAj7yBde8BdoRi8ToqMDOOig7LinB5c647Aw\nu3L+z0C24QjiNx1+MdfBbw47wCeZ+gQAlm/e7VIMDzq5xfqQw7fvQXzzyomaft55AIBlF18MAJhH\n7/MZes+cYngrnd9uEG1Mm9x9bnL/d/SznaIgOSBc1JJ8CwA++UkAwOPu3nvr5Gnlgqv+6Z+Qp9TZ\nA6FaMHgNGSwQDfyiiwqbUzeA4197zQ7x10VSuNyhVbOBpWKL0esUyFYNCK6XwFAPM/qYYZg3HKti\nFfvit7cXG5GlPXbNlDb4mlpj9Gma3pckSVu56xwdCeDGNE23APjvJEnakTH90jNv1KhAlRZ1lXH2\n5+lY8OBdkGXoGwoSI1c3fHTiixMmQHr9C3imtvC114JSdYVI0ny+AM+IMqoZPXvgtLnjz23ZEhQ/\nWON81/cFCnnYOZMgb3g5STE8FOTcH8VttZRhkI2dE0tc92ZSo0vE1vHSSzVpL7AXUOI1zq+Tu1Mp\nwFK9qYJ8UACyHDWzZ5e/rgzVWopfIPEXkkMH2ZwtzBGd4pchGsHIuXAP4+gcncrtsWHUYpicRkEH\nYFlFWHTmyTFjMuEmFtQkBc753emoX8t11IJ39PEQulfOT5LkXwGsBvC1NE1fBTABAIOcne5cVXQC\nTzI3uQTX+xN88M4Jslgcg2lw19bCRxrwkE8fvHfAKwDeSdfs5ZjBR156CfuJdw3giy984AOBNJpz\nWKss4Cvq6zHfjePSxsZCLpNVAHaX4/p6zKI2ziUmscoxzNyWLVjkGMnCn/wEuOce35cf/rCyAdeI\nFn7oQwCA/P33V3T9PBoPHn644Iu+u0AWHR0Z5u7gsO1+8IOa9bUkiaQ9wBS8+STBAfqktC350xEy\nedmsf/XGGwCABU5bWkQbpJWhND9AJl9zBn/88dlBVxfw058GSQaFVR0p0E0Mj5ZUvVqKL5eT3do4\n2Aed4RI+jkW7aux+8+bi/kgtX11tzvLG0ZtTzNBcA6rIvdJJ9LcRdDMeWd2DFMAiADunafr5JEm+\nB+CBNE1/7K77AYBfpWm6wmjzRAAnAsDEiRNnPGcUkQDg8W0AGDMm89D4x3/05ygw5ekaM3qWrkfT\nsbzanQCc4hj9Qy+9hP3e+17/45ucwt/WllW1ATJDIdUQ3VRfj0Y3licfeQTTHBT0xwkTsJcroIGD\nDgpzUgNheDhPdoYATj7ZH1u1OIeCNm6syuMo99BD2YEEHT3v9DjRjmpRiWsANBCGdwCyAiFAljhv\nkfOTb4HXXJ21AnstX468c8PdBSTQAD5PPRCN5ehvP2vB5HObNoXwyLa4XrfCtT0nTcN1zsVBtGGT\n2+YSf9oYa3niAMXwB+edt6R4nZFS94O9gqwcNJLawGL02qBslWZkqMgogZhMmFAbjB4oZvSx75wh\nFmmaXuC+uxPAeWmaloRuSpUShPPGAQD87ne41E0Oywj7d/fdRUXfDA0FRkauEk+M/gLndXOau/YS\neA+c++GLffwJVNyiBKP/jWvvw6+9hmWOqc7btAm4jWJjrcIWQ0RcgYhd+HgTzW1P9bgqhSjeBHop\nSQpBS5X2klF0/k3uHe8oHP/91VcLx/+rhjYHMw2EQbVg8BK30ThvXiiIlHCJ/bm7xzGLFwOf+Yz/\noq4uZPRimGVXUy3dc+1bIKwdzIy2ocHHhzQ0+LXF/vJcNISLu7N/v5zXG4plC5B7Sb/kuL09HBNX\n1eKC5EKcZ0eMsVOmDB6jT5Jk5zRNX3LHZwDYL03TTyVJMgXAT+GNsSsB7FHWGFuK0Wt6zJkib7wR\n+Na3CqXNRsHj+LUKQmJmxJ4vOl2Cvmbh974HfPGL/kuWPHhyTpzo3QBrIa1KLhcAF1C6BSsJ2FAR\nG06/VeI6oalwEh6AJ+m304ZBYB+AwvyT3DqVkk5jwYw+T4y+lkVvliVJYNvSVHUqYf17TmHQjzqx\ny5MEx0kQ3/z5tjskM/S2ttC/niVclrCBkFlv2BCmJpaNg9MXdHaGHjic06ZUAjPWJGJQEjNrltZL\nSfScjx/INk/WFtzYamaMTZLkBmQFesYlSdKJLAr+oCRJpiODbjoAnAQAaZr+PkmSnyFz9+0DcGo5\nJl+WnBp/3SOPAMhA/wXsO080GFGmpe6h7yf/X3DqqRh96qkAMi+Z2eSdc7VzjwNcDvOZZd9RaeKi\nzDEStZhV4BpX6DLpYx8rMPdKEkaUTBi8ebPPdcN9H0INIJ8kAYOuhsYgrAR1tWPuJ23ZAlgJ7mpQ\nHHzeYYcFqRSYaiHFi4Y2A5QnH5QkrQxtBrDU5Qs6Ye7c0B+dvWeEMesC2cIEOzqKC4+sWRNWb5Lv\n77knDKQSYn94zbBl3axZ4zUATqjGxlXWRCxig60OsJLfsqeP5TvPG0GFVInXzfHG6ag1LE3TxQBq\nn3DcUR+ARc4Vb9TFFw9qfpX+bhzb4NX0JwA8LIW9f//7ooIjtzjj2pE1kOQkyOZddP8aJlkeEN1V\n/pJCoYw5jrHd7P5nD5U3m1j6roZOX7myYCjNbdlS8J3XVEhDTHaoy5IEZ1QTeVyCYQ9Uiq+I1lFI\nW4k033WIFMhpa/NMr6/PM3jGyzkjZEuLh4vYcCuMnDeOuroQjuHskYzlsz+85YPP3/PvLAmdSWsA\n7I7J8JMOsGKXT47GrZCGRa6bktANSWw6ze1pAK5xx8ciTPpUC2Lopo6OGbqRx83ujbmHHgqxNzaG\ncrTpY4/5IJovfSnMOyNQTpkIzy20QOv/+Z8Lxxf8538Wjs+9+mrgxBNLtlNTchBSvh/ZOgsGWaBQ\n+akAid15J3DQQbid5sFhbv7+nZ5DzXDufuS9GQhxIRMRCGTmaDfcHOWjL0j8++5bNZOvFYPPSWQy\n4IPgANw6fny0mtX1ZEP43KZNYZCSSMycyXLSJC89MzTT1GTnlrECmRhT37AhxOgtV0ad4EznidcB\nWpZfPl/D99HpGOQ8w0gsxRs++pUGTA2LFAil6GK3qDcb33HY97U1up88kFEAJKHBrwD8izu+DV5a\nPunRRwsPfPns2ThOPGVWrw5VbyY2kgLA4Yfb1/WDFjvm/hnqY+7qq2vW/lCQMHdm+NsQuh4ykHFY\nPzNzDkfS2h5QPqDuhiTB8e5ZxZj2YDL4QnuU9rjFHe9iXSiBe7vthj6QRF8q7zwbOy0PHF2fVT4t\npguEaQ+sbJf6PtYGYFWJAjxDjrlFaonfSo3AtoBYZGyVuW6Gp0QvqYd1rUUAi8aOLUgBewI4ngxC\nixxmqCEXYaWKxRaqSeWnTAm8I8797GeBq67yxQokQ+XvfoeVboFUVWi5FJFfcZokSL785axPl19e\nCJgCVO4cChfPkx+9GKbn5fPArFn++lhel1rTT3+a9cll8RwIxXLw5557Dnln5wiqgdHEXzRhQsHH\n/BZiaBXBY+7ZXtHYWCh9OFxJYku6EN8QhoLJM50DHwMghmDJ6gkAsyU1x4MP+myv4kfP0rJAMa2t\nntHrGqsi6etEYXItEzNOYZ5r14bGWMHu6+pC7UK3Afj51tkZGoI5N72QdunkjcbaUDo64imT5Z7u\n+7eNRF9Kbf4Twqx7EtSkZbyYg9dLrpoUQBKwlJgD/Eug4KPZjz6KERo8kvxCZy1ZEkiJQreRMfvP\n9P4kTUFhST1v+Jts3PimxBTkrr4amDu35lXFSiX/G2oGL3Rhme+v2H13zP/JTwAYzMcqvMHuiJp5\nWpkdrejWGLG/PBtVm5rsyk7cRyCDWMeNCwOwLEleG2C1tC6wDXvacOEV3QZ7GVVIw5LRX+mMl6cc\ndhgE0a4kWdMxzrtFl7fbBjfxuQydRLGOGYNcb2+2uwtRVGsRGRkdB0RU5i/hCNr9989cSC2iySTI\n+0v19UGemCGn55/3CdsGINGLrmIxecAncQMyP14AyH372+g9++zC+RwF30ncaY6jloEwiZaT3q4Y\nPx6Srq7i1MNlSKCzFYNYOrLonlUw+ZxL1rfs9tvhUPFB8V4Tj6O/AXjczY+ADXPgEXugMAMGQrgm\nFiUr3i8sFUugWWurnUiMi4PwJqFhHKaNG8P0C9wnvUHwefYuYs8gzrvPtWQ16Rq0FdCwZPRM5Rh8\n4JHh3O92AnCKnGcLO7nl5ceO9Qti9OjioKQ3mfKf/nQIJ/W3IZFsJ04sfa4KWkpMg9NVDERizaVp\nBtm5BHB/+fOfwYkbJGzuYRiJ0r7zneDfC0jqF5JEeU0ATn/55ahE1F8GL9u/wISJYrZzTjwRawZZ\noq5Wiufr51X4m/7SGjoOcjFJH3QRbiF2jWRJN4ahM3bNOXIY65ZNgRltzDVSl/XT1wjMs9NOoVQe\nq+uqI32ZWGJngzEQ2ip0GcUKaFgyeqkahH//dyDiByx0MUE7Z7nfjQJwdWNj5qdeqdHizUoTEKFc\nmsY9bmjD2nkY2FgAYJXBXCuhPctfAgD4XYnv8irpmOVZ34ewNvFLbt7svGkT8i6j6EDoMZQPduLv\na81MB8Lkre8KEc0rV/qU2jXKimm6VMakcz6O4d6SZkCub2kpltC5PTakWlkygRCO4fto5i3/i4bI\n0j1DQVa/+X+dJkFDUbE0ChXSsGT0BfrGN5DTJe+AII/Lla7y0ymbNhWCaoIS0kraY2+OYU/77z/w\nNiZOzPya160rqK9XzJmD+eyNE3O9ZHiDCnO3GJfOSlP8pkw5O/GoFi/rZgDvBjDLFWFfMmECYgpp\nTlxHm5qQv/764LsW2B4ruTPOyIqZOzqdtL+dBcrp6yvkmIkAZRVRRbqR+JdTgZrcwQcHNYurpaoZ\nfIXzP2j3d9k2u0+SFDTs0wBc4Y6rhXrM69kACoQSK7tXCsUKdTAUwtdaRlXN3K3cODodsZV6WNrR\nWTcZgxftQnsNcTQw99eCbri8YpU0vBk90c8dLNAKH3zTBIRM/e1GQxG9WkMS07/4T+kFzZWhqnMO\nA/IUF6DJYvIAAiYPkIfS8uU+zqGlZUAMHhhYmuWhYvJjAJwxQCHniDRFm2u/Ez57Jt8z99pruMzB\nZBtBMRDf/nZ27dln2++eGT0fa4ZtRYqyfzt76FjpEDjVMEMtzJi1uyQzbLYRACHkI/YESYsck9bL\npT3goC4NY8n3VdLwdK8cobcF3ZokOMJJ0fnGxoI0WfCVT9NCcY9GmYdf/Wrh9686Rs3xElxgRcjK\nQwQAuX/8R+Rd6gwAyDlvDwDAv/yLP3ZZIAfEdO+9t2y+orvdWA/esmXg9gxF5aCgQklJDrSqlj72\nMV9E58wzC6dvra8vvGcAhVgRycCZ27SpwJxW1tcHab73lrE89VQooVvl9DgylomZp0jXq1aFvviS\nZJA9ahoa7IRkXGMW8JoEBy1ZxtAYA9ZlDa3zrA2wRG/loKffVZq98i0j0XMaU0l9W3CF/NGPwmsl\nuZeRxvU3tCA+PAw2ubcluef+GIBOsqEscgxeKJ8kOJP+X5okhZS9UwHMkayWb7xRmKhnbb898i5H\nu9DCL38ZnZdfDiDLzSEluB9/5BG8yx2/BmDxpz+NBdY7vzlLtjCjsRH9cZ7N3Xuv/+fXv84+S8Uu\ncJK7au/VT7fJP4GiacvRXXdhkYtqXmjURtb0GIAPuPe8K5fZRHH6iqeRVScqor6+sEygPKO2NhuT\n5nOdnXbOKDaY8rEFizAUxFkq2ajKBmOGaGK57vka2RjYG4h96tevD6N05XqBorq6wnQNVeL0bx1G\nX4LySYLcyy9n/+jcGpLtstZukW9FcpvlX8eOxY4DyTxYrpwdEcM1FjZ7iRwkSVEkJTP0PuNc4TrH\n5IXEqyP32mv4pc6H//nPZ59GMZYni85URlKfOHfWWYAUljFIDMoPT6i6Fk9tkpA5CRsAcv2Q6Bfd\nfTe2Oa3nfQsWFDZUwEem5+bPx9WupjHgczkBWcDaq/C1jYHMRgOg2Fedg5A4HYBVTIQ960QbYF9z\nZu6traEbo4XH88agYRb2r5dP3qDKRdTqTJvsX29FwcoxjxEIE7JVQG8dRi9eMVRsWRvlCuedNGIt\njg/rUm0jVHsSjapKRsSlI9dEr6qcFikmn5s3z77QGZonAuhvZd2cZFStIBtptYn4hjz4adasrKbC\nDqEFbOFzz4W55iXNR5Jgrjv13NKlmbeb6+MTCPs/F8C7OShRiP3lNS5tlQzcsMFvAFoCl2uFOJFY\nzNCqK0zJMUvgVq4bfS8myxd/w4awDf4tj1vuaXkd6Xq4FdDbE6MXyOauSnImjtBg0XNJUlDl8/X1\nkKXRDV+QoxdZ+gYAwNSpWPTnPwMAFqpCJUIWRn8ogP3cBp4/5JCwAtlvf5t9ilrMmRUNkiRx9ZJe\n4ZxzkL/11pK/YSp4tQgjoIC4qqs1DSKDHwPEM2I6b6vFjY1YsP32vtyhG9OVu+6KU66+uhBk+Btn\nS/nwjjsCnZ3Y4uwPAqgGpUG/+92wVoNsJs8+a7s9clbHmIsh55uX597REeL2UmyEPW04wRm33dbm\nrwe84Z6ZvhBDKjp6lZkx+/9z39nQK31j/J/98rnfro2a5aMfdrR5c8F7YhRCr5uiqlN33eVzvrgJ\ntYgWilVzc4RqS4vJ6MgyCPu6W4bJTZE6rZaP/B0A9iNX1PwjjyB3cFara6WbK7MVdhyjenE7XbPG\nVwargvL77Rfm4PnkJ7PzJbyGLBpsJg/AS+Qq3/3SxkZY2+EFu+5qeszcByC3445F518svhQrTz8d\ns5nR77tvdn9dKk+OOWMlwxsao+bKUpLG1zLoMhTU1WUnO2Omyz7tYgTlzYK1DP6Oj9lYrP34LXdM\nltgZz+exvB0CpgZK+bvvDrIdjtCbQ9cO4LeXRM5bsMcohDCNMPl+0Uc/mn1+5Sv4YxWSPFPe5eAZ\nBWAhpY6uhIYCptkIhFqPImbQj7/xBjBlCvZOU3wcvkYA5s7NPkePBi67zENWRx2FejeG0Ua/Zy9c\n6JkbJ95jl0JODibfASEuz5IxR77y9wydMBNn7N6Cevi8lr41g21qClMgW8FRfH/26WftgAuKW7YA\njtzXtoUKqCx0kyTJD5FFdq+jUoIXAzgCmYD1DIB5aZpucCUHnwbwR/fzB9M0PbmoUUUDgm4eoyQJ\nzuD6uJtge49I7G8+OcNtrRN6Me0G4LMO9xW7TS1L8lXCaHdzn8/CZ9X885QpBQN0OV/9ISkIQtQC\nFLD0IvrZz7JPYU4aCtXebFxHob/04ov+fmwH0IFOlmTMkIqWvmUcIhEz02V4RhcVkdxX48b5thlS\n4b7yJmNpEbwpsQbATJ/xet5c+FoDo0+mTasZdHMtsiA49mG8G8C5aZr2JUnybWSpWCSr1DNpmk7H\nUJHhTXOH+9zbuv7f/s0fn3/+YPRohJgcvvkuALPdqZ9V8LPcvfdisfNmYSk+t2lTAboL2I1zsc2x\nlFgjyu28MwDgspdeiqYDZiPulU6ifwXAAnFpJI+XovaH2NgqsnIhzYFLefB1d/55AHuxRvyLX2Sf\njhEuThIsKOV2WaFX1nJ3/+PSNMTltTQupH3KrULcfX3ALrtktphYwjKW3vmenOyMjb4WBCNk4fbS\nnhAbizk1Am8u3A7Xh2XXTgvDr5DKMvo0Te9zkjqfYyvng/A1OoaeyL++WtxqhIaO/obKGLyQuCwW\nkdQIANBkfX/UUVXcpTJa5nLplCsCIsT4dr5KBg8MfjrhWCSx0I0AQNXBcitWAACuPuQQWBEAUhzo\nrIFoUQxXALZnioZUeDPgTUB4guUtI23KeTbYcm6acsxbMHgNJ+nUw9JXNhLLNbokoK5WBYT57WNF\nVSqgWmD0nwfAkRjvSZLkcWTr4ptpmt5fg3sEpEOuNfXSdSKlFMrLSYmy/8n01a/iOUoPsOtgQlyi\nAtcIuslT0NU9dP4XIp1SiuJa0bwPfhAAcMEDD5jG4P5QraV4sUtUGt2b04FNUvT8lVewS5LghIUL\n/ZeHHgrssENWyJzJSetFDL5CCOc4DuDSTM6qKsWpjLXULcSSsBV1qv312Y1SJHpOR8B+8twXZtZW\n1k0dDctMn4+FtFZiCa06wKsKGhCjT5JkATLNWmLLXwIwMU3TvyVJMgPAzUmSTEnTtEgYSpLkRLh0\n6hP7mS4X8FGyIzRMaerUQWvakrDvdlk0D67h5vVzl7WxFkx+sGCa/N13Z21X2BYXJ9dYfRcATHfo\nKweA1Tj30lKn7Zxw7LHFKQCY0TKxpB+ThuV7y2Cp4R/2emlvz9xhuW1m+lq7EGJ/fjb0il2A7Qdc\nqETnw+HCI6UgolKpjiPUb0afJMnnkBlpZ6fOopum6RYgq92QpumjSZI8gyzNRpGlNU3T7wP4PpAZ\nY6u5tyyWNElQDmX/X1oKEZ/g/8l03nnoUwm/Bo3+lNVBOidJylYfqpZYPJj3nvf4f57tb9iTTccI\nI3z44UIah/4U56gFk5cFu+CFF/zCF08hhCmGSxFL58H1SZIVI7nmGuRdivCcyy6Ka64B7rjDX/tL\nzixfPRVtG5wn3jJYckEOZoSMowtpPN1i1hZttqpTO2JjK29AOvGajMUyqgIhvMN9sYqT8LnYPSug\nfjH6JEkORWZ8PTBN0810fkcAr6RpujVJkt0A7IH+BxuW70eaIidFNNauxQUOV+yFLwRxa319tAr9\n/1gaMwa7D/EzqRWTz1GJwXlG0ZnBpjeLwQvJUr/bpVE4OE2Bm26K/yBCpbyg8mVqQNSKAg1JJxUT\niFV7snD2SIuRWoyTif3bNeOUwCi9EbB/P3v9AGG+Gu5fQ0NoxGVDKkfgsr+8tdFZbp7d3VWXEqzE\nvfIGAAcBGAfgZQA5ZF429UChfvKDaZqenCTJHADnI5uPWwHk0jQt64w8IPfK004DAKy4/PIgbP5T\ndLyXjLEGbmB/T5ICNnyEK12IXXbB627h/sPIphKn3TInxPx//3fVP+UMlcMh0G1VkmBlBdfVgsn3\n11V0RZJgDkUmB22uzHq/ZHbmCyUwWB0ACT0b7KR/17vn8Nk0zbxk2F1SmKswXyDMB89pCnp6igOL\n2JjKLo1AmIFSzsvGIrAJpzu2XCA5QEuwfSraHVzD91671l8vBVL09Z2d3gjLz4Q3EUc1Kw6epunx\nxukfRK5dAWBFuTZrRgccUCjcPVUxepZx+sRQJ5M+SQJj1CK3CIoYiNsYnqyvx7Qjjoj3g1w8/5wk\n2OOWW7J/PvGJyA+GAYnL3OGu+N1g577v7fUFNy6+uOqfbwMZWqtIqjZYNGvePKx0RW8s6g+Dl+yS\nfzzuOOxVZaCVRXOuvhq49lrkTzqpuC+zZxedkycpdc3uY6eHQWD6wnxWJAnmvPCCXVlKR4wKcYph\n7bJYuIGRVZLbZq+b7m6/qeiAJIZjhKwCJBpesaTuWHES3TZvcDIGZvRv++yVwqAktDyiglo26bJB\nOxwSvu++vqAw0Y/h3ee2TZiAI/fOvPW/g1CLGCFHTz2VfU6ejHw/GLzQYHjT9IduccyvlKWnv1L8\nYmecPBbAIkqZsPAPfwhy5lRKFoMvRaWMzfkkQe6IIwp5f3I1EGZ6QOkYmprCpGac1EukbY6AZU+b\npiYfZMXBTcxE5fru7jATJHvxMB7OcI1cwzl1YiUO5dpx4+xgJza6al979uTRRl9u721XSrAE3ZIk\nOPId7ygE4dyL6rICLqqvL8AB22CHhD/jNoa7ADzoJvhGeJx2DYC/PP54oQ2XiRx76JSiw5HcRjlU\n9PcK3SutIiIfA/DArrvigy4V9cXU1oB8t6ukleUk8gHCNFKQY4/f/x7bXNBVIW/Oww9nUh5DnJGc\n9+kg++EXUSRnTjkaBWAO95UZoJXJkv/XlaK09Bzzi2f3aqscoP6/uTksMq7hmFgaA+2BI6QZNrtr\nWumJLbdMdumskN5yjH75nDlgx6JKcFKLtgFY6KSS/JFHAtdeG16wahV2v+YaAMDhp56K9zpMc9ns\n2YUN5YQnnyzs/FcfeCBOkgIU3d1Y7gJ+/uqunS9MgD1CdtsNg0K9vYH2whsaAEyGt5CLul6UEK5G\ntNglJ6t0WkofOUvlXYCvNxCh/CDDDEIxSb4WWLxoipIrR46HS51jzuK58sisfMjsATzrXgBL0xSb\nAZzOAUEs3be22v7mXDWKma1Vpo8rNo0b569pb/c5ZEq5anLeHW07WL++9IYh7fEmZnnPcL/ZG4dd\nM9kmUetcN0NBJY2xLr9GniL1BoM4jf86AAtfeKFg2PnNtGmFiMD1QKGA9bEA/uCOKeMORsPnPikw\n+j32yA7YPa3GTS1SvwAAIABJREFUjF4ycy5UpepqzujLYeRDkN9GSKZ7kCbhoYe8lFkDKllsexD8\n4neD7aomOe/zF1/sq1odcACWufvNc66VYjF6zGij1tSEMCspUPlGe0WSYKs7Pv255zyT7OwMa7I+\n+GB2LGUMgbCYCFAoX1jw+7/qKl/usLPTM+jbbgPmz3edJ+ba0eEhHfak4Q3lppt8imXJkzN5crEn\njm6bmTLn8dEpk8WQzLYDTpFg1LRNxo59m6YpHiSSxy9McfGECZBEuc8gTIcsD+1pZEwTCBdVMzz2\n2AXgdGHyAG7bfffC8eGDtMmWY7DHrViBTXPmADACHN5CZE1eLf0uJqZrlhEsQYsGGaqJUcwf2bJx\n5JOkEE8g9x4KBg9EUlAAhaRoVzubQzR5GhPDHlwqj71edHpgDZsAXvpubrZLEzY3hxGwnIOe8X9u\nW2rG6j4CnhFX4t47enRxgRWGaNguwRvFDjuU1jgqoOEp0TsD3tJp03CCg0wsL4GBkhQdXAfPsIGM\nqR9x551eghBcb7fd8PMkwTGW/3Zvb5gzepdd/HnAS746qZoEaOywAyAxARMn4na3aA8r835kcR8L\n4L1isOzowAUOOjoUwN7iYSR5YqZODaGqE0+0G49I7lcQM2NI6jq3iQnjuQ9DQ/ORZd3TlEsSLKbn\nt+DOO806wgE5TSD/yCNFmlCh3aGu+PQWotzixQXGKIxehKhcmgLvfGfByeHKKVNwijy3GBYf82op\n5XkyZoxfV8K02bgKZPP5+eeLUyLIp85COXp0uB6kDV6/fAz4/4UxSxu632PGFLet7xP5Pqmvf3tI\n9IPB4IU4+ZTUsQxyYXJIMtHPGxt9tKRQT0+olgmjH0LKu/B/pl8CuM1J+MKwWgB8ka7ZLsbo+0lD\nxeCFLCYvJMu1UJ/gPtc7zu8tKTgOOCD4rRUcVS2Tl/KFq5Yt67c96a1E+QULot8tShIslJw6yDD6\ny9zzPENfLHAJ4+Ms0bMniw6qku85AEm+l8yQ2uXSqvokbQMZo5XNYqedsv97e23pWpiy9sYRbL2u\nLtsMOCGjjobl3+oNox80fCT637nSyRQskKfCwoNFuTPOwN8vuwy/onNz3qRncn2S4LOCvTrV7YIZ\nMwAA51KfLnCM5dyDD/b4JYAlr78OILMhcNm+f3HHElvQAOAMrggUK6/H4eBOSrkgSQI3PNGK/glU\nlGKYUgHXBgJGv8htkAs/9CHk77dz8FXD4DlH95H0O7l+FPoXYTsYVEhmds89hblWq8RtTKPoU0rR\nS9zLuWmazTVm1oKBszeKzijJcIzO/bJ2bQjnSOoTDdFYQU26LR1Ju36934BYU9AMmsmS4oXRiwai\n0x5oMlInv6Ul+v4w+NzBBxcMMpUaAXNnZHLEwwiLUc+p+u61p/yMGcW5QKzrHHPXxAYy2QokvdgR\nS5ZkB9OZJRnEhRkMyu28M650KXwHyuRzaYpHkwQznOR93SGHoGOAbWpa6uCsEw4+GLcbWR4tJl9t\nKmHJhm95o7D9QLJwjoZnrGLXqTQdci0o/+qrhTHOdee+Pwj32Uaf4rkUYPxsyIyl/uXrmpo8A+bg\nKc40yVG0uuC4tMVVrTgallMZM+Nlg6n0wwqusrQM6avux5gx4TVsmI0FXVVJw0eid4FQ1+26a78W\neO54F8D7059mwR1OZc4vW4YcYeqyiYjpRPyw2fc4ebOeieD355+PC5IE59BXyWGHZQc335x5FADA\nUUcFcA1jylx8ezKdB4B2AAtZulWQhVChMMQ//zNw3nkAYBbs7g+JEn66JCN79ln8JUkKhsR2FHtz\nDDVVDdNUMW9+7to55oMfxDKXHXOeK3CSd5vnYFK5vvI429xnR6378OST2cEHPpBVmOJoU7GLcbbH\nlpawyDbnjGH7E5BJ8NLe9Ok+XXZbWygZszFUBJvW1jDwSu45daq/Rr7njUhL9BYcZNke5Dyf44pY\nQsbmkjQ2vrUkegtfroSCvNrOYMiTuGXZMlzd2Fhk+dd7LXs67I43n3qRReEKfZaOJakX5NMRwwGs\nfh/HOft5MpVKH/Dd70Lk+aX/+Z/oqrK4dTnagGJm8+40xbuti0mt//nYsQWXVsu1shZUqRQ/kPw7\nbOOZp+8P4I/uXntJ6o0LLwz86/tDLPCUvVaY8KGHYpPbeGJ1fPtL+WnT/LPmzJRaumfmzgZTlsCF\nrGIkugA4++jLhsIBWJxXhrF+9se3GHZMitdpGSx4h33jWaOwqB8S/bBh9LnvfQ8AcOmpp1YnyfGD\nNRjXSc88E94nkvFwqLM5mkSlDUtJXIXvenuxxcFU/wHgXPJQkojK/JQpXgoRaec738k+vy5lWWyS\nJ/tiyauqp5wkg+sH/YGOa83ggeqk+G2R62tBBQb/mc8MKKf/u/ifajJ8fsAh6S++CAFSc+efj3wu\n1+++lKS+vhBzF9KpBsThQfug6/J6XDKQeQQnOIsVIdI1Xpnp86aj+2HVi9XfaddNJmb01kbCideq\nNMwOG0aPL30JAPC1urqSOTpyzz0XSv/lJq8OShqidLZDQqNHo94xmnPpNDMfkxGVYfAAgNNOQ84l\nIfuvCRMK+P6F6L+xriAlrl/vGUklRO8st2IF8i4GIOb+2K++VQvTGCkzakqyGd9zD7b0U5JvAjC/\nCim+LP3bvyEnLsf7719gXjVxmuDEZJwPhqETzlipo0stxsrMmn9n4fUMBen89hyRauWyt/LISztA\nKJ3rBGxW/hrOZc+MnpOaveVTIEyfDhe3hnc5ye/eCRNwoEjmfX0FL5IRihBb8//gZGBOiiVeNjvt\nhCg9/DAWO4PhNADvd5j+yQceiO+6S0bBM9vYtMv9wz8AABa9/joWTZs28BTDtGhq5blSDZPPfehD\n/p/7BtGRVASUE09EvXN/3S1J4CItMA3Ao5Gf9luKr4TYnkNQ6aX0vCTKOkhL4erO5ufMsZ0MdFSp\nMHdm0sxo+/qKUxMDoWTPErJV1o/vyamROXgJ8B422jArbQhT5lw4cr1cw/fkwCjLd5/HKd/rtMxV\n0vBj9ET5CRNwkDte5IJxFm7aFHh4nDXUnXqrUqlc/ML4m5uBHzvLAMEFjwJ43HmsMHPdhvLMVlw+\nS2wp1ZFO3zoAqlaKHwVg0f33v2n58D8rboiODneF0PN3313InHojgPll8gINBpVjPX91WtguiBjZ\nNSbNCbyYGXLBbwtrZ1dIaaOlxUM+urC2+Os3N9s5czZsKIY+pS+6r7Fjzt0jm5hGGth7h72OYoVW\nqqThwejTFLca4dtfANDqVM8nnHq4pLExyEuDz38e+OEPh6SbNaWLLvLHlUApBj2XJJBQrgsBfM4d\ntwoGPndulvtj7lz/o40bs5JwAPCNb0Tbvm6//QIpvb/S8+kCHTimNODiLw0NBYz/eldlqT8lzPoT\n3VrIiU8RzENOLKG7PFA52agbGpAbQFBNVfRrl6v1Ix8Bnn22oNkdCwD/+q9ZvzZt8t4wAJbttx9O\neOEFLHXvLSAtRQtpd0Qt6cp5K2c9S+J8H6vuK6c6Zi2C0x7wb7gcoDBgzpHDsAxrDnLt5s0hRMVG\n4ljSM/bcqbLCVEWzIkmSHyKrD7suTdOp7tw7ASxH5n3VAeDYNE1fTZIkAbAEwMeRJSCcm6Zpv9Jv\n/AAAFP7XBL+wxYWysDtatUL33DP7dLVLh5yYsdWgwlUldPGECTjLFa7In3QScpc4fwmXZuJ1F724\nesECrAKw8NEMBLht/Hg87dooUTmzKlrs3t9YAPN1/d5qiCTZ/3KM4vnYtSVoIOkLapcmrcbU1VUI\nAHupsRE71xKXHwBd2dhYiD6XLfGWCRPic8vK5KhTFLBLpTBmrgjFUq+cmzrVZrYMu/Amwn73PT0e\nGuIIeV0ERe7HGoVVBrChIYz21eUQ5U9L77qvVpbMElSRH32SJAcg07h+RIz+ImT1YS9MkuQcAO9I\n0/TsJEk+DuDLyBj9fgCWpGm6X6n2g1w3vb3At74FAMgvWlS2bzkuCn3VVcW5TP6nMPp99in41+f3\n268QJxBbVIK0rkJ5nL1WJDgtgPL58N/5TmCWCz9au7YQ2TgQw99Ac9TkDj44O/jmN7PP/9/e14dZ\nVZXt34vGGWRGwEK+i1FQUfm9oJBYL69o+JFdIBopWpqp4ccrvWhIStN4Oo4TGilhlBl+kFpKlopy\n5VcUFFdG+QGGgIKKvQMOMiXgMDHT5P79sdez973WWfucfT7nwDv3dc119uyzz9777LP3s571PPdz\nPxH1B0XDZZf5rzKD/fnP/VfxHCdPDo1VuvxLMdCDyKYf6vlfR4cZ7njjDaCjA09TQWOg5cROWr9+\nqewWwDSAtsY78+4B/3/m37OmvCwzu4a5+0OHmjRNjsELH1+Ezuz4uwwGNouIawSi+scKdu0Kz5Gl\nOjgXoQfDgrUSBADP836vlKq1Vk8FghD6TwGshN8wfCr8AcED8CelVF+l1CDP8+JVgVRWBjTDUQ0N\nmKbbqyW1QNJRAMRk9wXCH1NYCjYcXaK6DMX05F8OJ02JdeuCWHayqiqoQJQ62NUIvdNTACg9WC58\n++2gkGlrgU7LYMbkEVZY1IUGXrD4+ecxgwvNnnsus0harmARKzEeuu1jUilUAKj72c/8/6dPD2jD\nCwcMAOB7ZXVSP2FXXhYDLL/NWL8eyaoqv95FfyenQ8HVoIBpuNkYuuSBd+0yWw8CvqHkGL18jmPh\nnZ3hcWprzc+K4bWZNtypSuBKkrIRl+8n+25u9s+f8wyc6GWP3dU83E76xkA+Ab0BYrw9z3tXKSUu\nxBAA/0vbNel18Qz99u1o1FPzTgDrtYEXsF++C8DfN+pgw5lnYgn8jH+DUqi/+25/vVxIPUto3Okr\nxPfR+5hZqsRasfqcOrTfawDMpp6jcksy01iKXyoBzNWD4axbbw08lcZZswri4XNsv0E3qwCAei7i\nchii199/H0frGUrTkCHYnbJFPBRSaXI7gKROSotImsggZyuBnAuSVo/a5Je+FC7TQGg/1NL+cGoB\nztFg0kQ0Hhd+1wak4vWqKqMu402l/BoWjosDZtybDb0YQI5Tc7JTkvXNzSZzR9DZ6faoeZBpaTGl\nEVxUS/b4WWpBwAMU5wX4HGtqonXrWbBNztXRHDwuipG5cT1FKXeYUuoKAFcAwCfySGqJcmFwuT79\naeP95KxZSLCA1/8BtAJIOipZ16du6uMCn7OR/MMfgoe0GGGcjAndJ580buKkK2kXE8WWEk6eeWZR\nmQwryHhOkpg7GfM+AP4e8Vn57ZJ9+hgCa12Jp/T32YVQ0yfIebz6qpmM5PBGTY1pdCW+bRtPTo7K\nq6xLl7iUEAwQLXDGXjdLHwjk/NKxYmwNnv79owusWMgtqtK2hB79DgnJKKUGIVT9bQKMSvahcBRX\nep73E2j9pHHjxoVP5eDBgXeUzYPZCiDxqU8B0EafaXgrVwaLdfLDZnmhcoZMac8+O73mdK5g2Ycc\nOjt1wBTzcnlhhUYlYFYlOhpfP5LH/kuhF5+Q/X1YKDa/iUmSDwCCvgg9YM2ETjsNgK+dLwJ9yQUL\nAOiZmvQnKCA7yHVtE7qzlSCQd9izJ9BIAgDccQfQ1oanSW9qkBTRVVSERpw93aFDQ2974EA364Zl\nEsS73rQJGEeha9k3h0Vsz5g9ZhfDhRuVMFsmqoiLu2TZ9saWOLZlirl4CzBDNz17ugu30iAfQ/8k\nfEafMPuW0fqZSqlH4Cdjd8eOz1tIHH98oLBoT1tTtpVE3+TJuO773/fle2fOxCQAq487DhP0zbeO\nbsjRpQjbnH12uFxktk1g9DWP+v4BAyKZKfLD1x1zDPCINqtf+AJw660AgLumTUOEeLGBXKpTO2D2\nRRXjMW/qVMxtbMxiTyZK2RAkKcdSKlSlzKJ94fP6vE5/553QeDzhV4gkr7wyTPwSPoTvpQPA2fAf\ntOB8tIEHkFKQFLSYLMT9Lgno3/xGH6wSf1fK0P2Re3617jG7CkDdbbf5lOKZM4P2gS8BmLx6tV8V\nv2ePGf8Ww21TJ8XA7dtncurtZtojR5rGUJKbEyaYhpmrV1m/nsMwLHcgsuAc/hHYBtpF+dy3z037\n5H2lC+HIcjEkEJRSD8PP2/VTSjXB1126FcAvlFKXw2e6nac3/zV8xs0W+KQPW7MpNn71yivY9Mor\nsbZNTpsWxgxvuCFITkmzhxVK4dMwC3calSpsbNXhsc+vqsIcm1ZYLIOvH8K7/vAHZIriyS3WvnEj\nqmSWox/ehmHDUL9tWxA66YGQpbPS2k8hZAjEEFUgfeOKdCiHrk9yvIz6NzF6BScdMsqMJ9O8J3dh\nctgwwwD/k67HwQV2cuT3T8yZEzBTViDVwKyrrg6SdTO0vlWDUqh/5x3T0LnkAwCzyTcnL21qJse0\nud9qS4tbPIzZM337mgMKH5v3b58Hx/IHDjQHLlvTntGrl6/e6drGZdCZuhkT5SNT7GgOXugH9dMA\ndHuT0KM9AA19VPOMOCikfkwpjlkOBt5GHEOffPvt6O2//GU0PPggAB2q0V5k8swzg00uByBz3HTX\nTe60udu24Z+U88jZ0N/pC2Bs1sqpR7rkDmSGppSRIzhLV/Yu16EbduHqt20zdV/ESEpHKMDkw9vy\nwFLRrcNZ+Na3gBu10HdNTTgDaWoK17MB5gGgqcmkT8q5LFkS5LMCcIiYwy/pkqcuHRs7vs/c/DSf\ni0uvLGtDDyAolInDn+Zsf+K22/zP3XADgOKpDGZEiYqkGB8oFcS44yhPstd3FH2OG2BE8fKlpvcR\nAJcK3Y/YIHGQSCb9z2WhjJhtQ5BiYCYt/xgxnAZ9L99fXW2E1KSiQAINW2DSW4XAyQTGxNe+hoYf\n/ACAb+ilBKcZfkMYAMC11wIANt9wA47UaqaufEhBQPRenHBC9HZAcB1+p5/pUz3Pl+HgZCjz6MW4\njxwZhmB27QqNLAufCdauDd9niYShQ82wC3v07MW7CpKam03tGQF7+TxwRHndLqYNh31YMZPj/MLh\nJ3qlGjJk/9Kjj8I/9c0Qx+s7TyefksOGBTc5tKGfpxTmfu1rSOqHQ8o4it42sIQGXrAI8b3jxHXX\nBdRTo4kxKLYrrKX33gP27AnixEFrvpNPxqUyoDU1+Q2ikXsYJuM5F8CLlxv/EzAlFPg+k22i0vbC\n+JLtkkqZDW1iDPIuhrtd3+1iqMt9LGjm96RxyQ03pAgAJpXCiQDOOuigcKWLJKCLsv59+eUAgI9Y\nnruEQK/2PLygFD7lqHoOWl7av5c2qKdKsvjss4FFi9xhDea9s3fLIRPZDgjXjRhhyhVw0w4Gd4xi\noyrYtStk1YwYEWrjuLpe2fIKdkinVy9fPsMVorGXbS19HkRcap0ZUPaGXhDHcLF8MTNPSm9qCXGU\nIrsQDQsWoF4MvfWgBdectXK4MI2bobe0BA9KtgY+ridfSC9eUuT/j3IRgHmfxeVlxd3ONSvdA+Cx\nmJ/PBT+XhTyblmQCP28ZZ8+aBZecPh0J0d3nmDZrwNjSBHaMHDANuRjArVtDjz5dPNuusLW3t2WN\nZRtbJ8cFW764rc2cCchg0KuXabxZIoG3d2nxx0T5h2408pmSJ2bMCJZXL14cLE8oxXfvCkO/YQOe\n1g/2n7P42KcBnE6emTy8uuDf9+o2bAgYM0F3L9tj/frX/c8TEyRfFDoWn2CFR3mQN20KjEpy2rS0\nhT8Z992/vyF+1qAU6nWv3qTVGSxg7Wi5ALv4Sa4uh80SBx2E+f/6V7A+cbHfgyz54IPGTGSsXp78\nzjumASn0TDOHgsD5SuF/9HLV3r1mxygxtixlMGKEKTzG/HUJa8i65csDWipqakJPvF+/MP5uJz3l\nfw77sNbNb34TVCcbDctdyVMWOLNFyOxBSZLPLsqmwFav1NfkwInRC7TG+vI+fSJ1uNNBjH0DGfqu\nkpstCXQc9NHq6rSGaiSA6Y52jACwhgzpeLpWC2n9rHTXsH9/JHUlcq4olIGvAFVDSwFSOq120vTP\nSg9HDyAvDBiAT1EosQcKm+CugDmTSIiI3eOPQ0oG/2h9Rqp5AYQ6QkDqdRCdfZeWz+c+Fy7/+tf+\nqwjOZal9Lxr2s+0YPXdhskXF2EvmWLstIMaeeG1taOhZmMxWqWSxMzn+1q1mBS43J7fBMwE23Kw8\nyeEdTijbFcB2dyz+jnSsAyZGbyMfI5+CPXsKqwPi8mq4CUipQEqPmbzRDgAPVlXhYmnsQtS/8TpJ\nauOzMU+jXIw84Bd6DD3ySP+fMWMyi9zlqMuTHDAgSJ5yKLHQLCY7XMSV0LaBD7bRrJ0e8Ps6CKS2\nxFVX8qZ+rxitNuUKL1AK13E9gZ2sdMW07Upam7XC+2huNnn2zK7hpKfsnxPALFPMSVI23K6KWrvA\nybUPO/zDMxqeDdhwqVtmwH5j6CUBmNNnyYsXJHbnqp6yf6AhpgjYWwAS3Ff3858HHvOjxo0UO6+7\n8cZg8OKq1WJ0EC0GZXLotm3AVVfF/0AenZmey/FzmZK/jMRBB+F9HbqRjl92hWoUPkQYHjrHtQEr\nJtrgfI0gx2tlDH52CETATcNHjTK56eJ1c3MQOfcnngiplhUVgfopWlv9wkA5JhtsMbybNoX7Yc+c\nQzcyQ6itNWmenDjmAcBuJCLbC7gwzJZDkPPOUoOesd8Yenn45yuVtVa60RCcKVSFjpu7YpM5CBDl\njV69glL5OAPkXbp719UkhAaEBidhMSpOiXkacQ2P/Rkb+Rh5YT2/PmQIjj700Jz2IY9XP2RW9RST\ntw/Ze/F1msUkwmkAcD2Aai0TkBw9OmCL/epf/8I0LXsAyoVoIWN8XF/7hM4LNMyahXrJBQiiKnlJ\nMiHFkz///NjfJw6uk3ASV6mywbSpjkyjdG3DRVfslYuR5MGCYbcJlM/u2uUu3nIxYOzz5nPmLll8\nXnx8/l622Jq97wOpYMqFdUoZrQTjQvposgrMjEJ+d+640wXNRlKgpZ5x/fVBoio5dmzKZokVunZY\ndEE4xPTRj4bL//hHbueh471svFwopIEXemfwnfKUEg7UH5991ihaikKhi86i9mfr2yQ8z+i/wHRP\nI5GrDX5y/Phg4ACIavxnncLPQtIhF9ylr2tPAJe2t5veOnvJbFTZIIpHz/x2VziH9e155mCrWvIM\ngZOqrGtvyxTU1JgMIfbAo7pU8cDBhVFyjiyZLGDpZBoIDtgYfS74WOZNYmONUhivNfJxzjmp080/\n/znQ5ykHNFRXpzU4DZMmmUJZBcbtGQw8UFgjXwlgXl2dz91+Mp1QQHxI+c9LMYw8UPh4fL3OLSQ3\nb8ZgfuOOOwAAfZndRAJ+gLvxTHJ8RB8gcUakh0NbG+7XIZ5Li+QQBn6p3ZFJjDRrzbPAWUWFycAR\nR1FCLqtXh+0rt24NC6a2bAnX8zF37TKFzzgBK4b5oYfC0I3dGMT2sNkD59CNzYF3MGlSCrlcOFB5\n9ILRzz6LJ2I+cIIoOVe0tfnxReluE0ODJAp3TZqEq2VqLDdG//5dUjAFALjpJgBAvZR7V1YGvTxx\n0UVYoK/hdUuX+gqbril5rl48IZ3GXt4dnyhZ3KDzCZ0gNhULyuWBj+vGLPeRbEFJIX1XScv9egB7\nlUK152EWhdYeHjIEGdLM5q5peZp+TY4fb4Y7Ab+v8aZNSGqhMiD/avOeCCt6I2PQAweaLfTY6xZ0\ndoZsGjHWp51mhktc3rXtga9d689i7ASr7DPKgXO1ErS5/fIdtmwxaa5c1MVMG7uTlt26sITqlSWF\nVNkVSlw4uJH37Em/oYXxhx0GnHSS/w/pcFwtD9sttwAzqTg+R+pZvggEtkToTalQ4XPMGAhJ7vXp\n0/EGgCkuQx/Fjd5AXJ40JfXpjHYhvPioQqukUv7+N2ww6XSlZD4VEJlkp1fr9/OtC0nq5C5gcvkT\nc+Y4t1+lFCbmccx9AM4SmWKbRSMe+MiRpmF2Va+6Cqb4dwdC42rry7h0Z+xz4d6zAhlwOLRjJ11d\ndQH2ufIyz2jsGQLvmweUmCh7Q7/ZevgLNS1OVlcHzJtf6WTktKgCIMKjO3fiPEdz30VVVZhZX5/5\nwMXqNAWgXV+rW2kdG4nktGnBssR9ixFkKraBj3sOCdF3yQXbtwcVs9nXIRYWcpewUIF0CINSwfmt\nyPM6RuYWvv3tcFkPAKfI/x0dKQNR8Bt/5zv+6ze/6TxeB4AFo0cDAK7bvdsMR8gztmtXGJY57TRT\nS4aNncgHixP20EMhuwYIZ0XNzeF6Vq+U47W1mTF6IFx+5BHgoov8ZdbOAfxnmc/H9fnKSrNLFqOi\nIrrbFGAyhJjPHxPlaei1l53s0yfQ6ihCyw78VDNStsJklizVD8z0CG/l0aoqnCdxbX3xZ/7wh2Hy\nb+tW4J57/GUdOkkOH44rAAxyaILkg1/pc10P4MYcPh/cLm1tIWXs2GOBtjasIq9u4t69QK9emKeU\nMauq199nsdUizoVSK03OO+44475JLNMtEzo7w1grYA64r77qv1LpuYOjUVJkuvcLdX5RTlTS0psC\nfLlqm40VwNLOWaR/Y7ttZ8r3Es/X1nphx0rAUsKcSHWFf2pqoiWAeR/cBcolX1xT49M2TzklmvXC\nBtpl0CVJ3Lu3Odvv6EhthG5/Xy4Wy5JqWZ6GnvDzzJvkjK20LF7JSOeWIToBXMjJSz2yL73mGohZ\nnCy0NwDzhg83bugG8n7SVubmEPK5NfMmAeShfgNIjcdq6PrIoLhmr35gs51VdZWUMF/3HpFbAXfr\nc3kPQL1QGfNoY8gIwh6//KUhTeyCBM9+Ya2XR5p9uB5AQJdMjh8fiIzFaRaTK+zfPVNIKVlXZxIh\n7rwTuPVWrNCia0bJjx064aIm8Z6bmsIBmgupgNCjF3BIhY37pk3+31VXmS377GSpS5u+uTmUKZZ9\nNjeHA1G6Z1WciShjzgy9nj1TZ/v8fg4oH3qlpifmUxiVK8YAWGutqwBQJ8lVSsI8qm/u81zXTUrH\ngdC7X7/1mE4SAAAgAElEQVTe1OogUbCGujp8CCBx4YUAgOTDD4eGQabLEhd8K9Q0lHxFPrMcucWE\nZz7c8/zmBwAweDBw331IauXCWgAyCf4eskM56sUDIRNr5umn427d5OM9FCY0KNLNB1uhQPneN8I9\nKMs5RZIHigAmnn6K+PqFhvD52dCvtrfhGYIUQA0d6o7Ls9cv/zOeeSYM4wAhS2bECLfWO+COtfN+\nm5tTY/8CVxjWFaZNR71Ot719Lvr8VFVVcemVSqmjASylVUcAuAl+SHMGAKl//6bneb/O9TilgG3k\nC4l548c7DXI6DxPQOQTN9igGhF+0Ub8O/9vf8I4u2X8OpuLnVhTfwCc8D7crhdmOoqFCgWPQwZzs\niSewT4cm6g85BMkPPsjrGBUADpYE46ZNwH/8R/AeX5OE8N3XrzebV7z1lhH3rgBQJwl18qD7A7ha\nz7Ti9GqIglTxfgvFMfACFnKLzAsJdZLDEhyLtuPyLv168a63bAkNfb9+oaHfsiV0njjW3dkZzhxq\na02jKiFN9t5ZLgFwe9uc0JUZuosW2dZmxvHb2tyyCvb3zgIF8eiVUh8BsA1+j9hLAbR6nhfbNpyg\nlHexXs6OAxMikDt98slIg2ILSwXdd1asQHLSJH8/8pACxkOaM159FRv1A7QaYSMQaWQe3IArV2KN\nNrTjpaqRPRzhR69dGzRTyQdBonLlymA6nBw2LOBpx2lY4txvDlLCcT6T0Jr4+ernFBOFbG4j3/0r\n+v9hjipj4fe/jOxh9KR9zhJtoJ4DQHbSDHEgproSxFbbsiU04jU1oRolSxMbO+lrFkHxDAAIJQ8A\n3+BLaGdkmuCsbFNbGypccmVsbW14HGbxRMXr2dDbDcTtsJJt6AWuWQvNZlR1dUkLpiYBeNPzvHdU\njtPyXA28eKYPPvUULtYP2skI45n8ENSvWWMUiwSsefrx15BXM74QD+7AgYHeOD8oyRdeCJYTWuVQ\nHrfxEqaRm71ASIgEgDwEn/iEQY8MYvWtrWgYMKDosfhMhtH1fuLrXw8rQYvc4CQTRNvx1AIn2IGI\n7+55ZpWvNtBrlYr1WxnqlemqhXv3RuK//gsA0PCHP0ArxjgboOQCCZgkduzwjWj//qm0R5eBi0pA\nsvKjgCmSnGjlillbDM2lUsnHr6hwa9bHgYuFw8v2QOAKHTGy7BtbKEN/AYCH6f+ZSqkvA3gRwGzP\n8963P6CUugLAFUAoH5sL3kLqQ3Eq/T/lu9/1F77hR041OQoPAdjk+Oz4Qj+0ffui7iVfc7Nx7Fin\nV/Sg9uR7AKhjgTH6kefrAqdsdX6A0BsG4McuZQARTRM97UxWVwcyu9kY+UJ68Rlxxx1IcJ3C0KFI\n1NZm3b4wX9QC+BuAS0qd47K9bwDj4D9ogPm7JdrbgV/+MlyRjRSEzjfVA4GH+a/qaqzI5lwzIDlg\nQHgfMKXRbqsnaGoKDS3LEYwYEYZdBNywpLPTDO3wvjlcxJLAbIzleamtNZeB1E5TnNyV8+PkMn83\nu2CLmUEy05f9MeuGBd1iIu/QjVKqEv5M/zjP83YopQYAaAHgAWgAMMjzvMvS7WPc4MHeFGl/lgPS\nGQ1D8xoIPNjkxo3GZ6O01/PG9u1YqhkcLv9ciGNX2q3nODFqoSFX9osecIKb+4wzjNhiJhaFc59Z\nePH8TfLSGZJro2/2+6uqjB6sxYSoPY52yDqXA1YrhQnSog8wBMoKgUYqXEzo5UbPix3WqYB5HwTS\nCm+9ZUoGiKEbOjS6kIgFzsSoiwFuagq99ZEjQwM9YkRogHv2NHvTSix+4EDTYEu4ZsyYcDYsBA02\n0PYshLXr7ZCNvY0tkibnyAbdlibu3RtKqZKFbs4C8LLneTsAQF4BQCm1GMDyTDv4IEcjH0dHb/a9\n95ordFXnyZYxGr+ikL4K4Ze/TGuQj+J/OHPvMPACGRyyjqPLzSYFKOLh5RAiyoVNM6MQs6WOjlCL\nRcdJLwCg522oQDgAZjsQViB9HLo/fK33q8uAqRaFYndNkwboDUqhwfNQ73mog5VP2bYNAHD7kCFB\nCFWCLrPXrcPDrqQvNxthXjwbNxY74/eGDk0tIOrZ00zccjcqV4KTmTasH9+3rznQ2Bo0LS2mty7H\nbG0Nz6+mxq1pwzMNHgzkesjx5fxkH9yIJSYK4dE/AuBZz/Pu1/8P8jzvXb18HYDxnuddkG4f48aN\n817UnWuSDQ05n4v4VlsR8uElnfokgDl792KRZijMlFZyxWrxJ54yCRT9qroa0/TAs1xTFwFgcq6/\nQWUl/leXrd8XY3NhnYiPtxV+sk9423HDQvlSJnsAqOeqVYeMwiqlsFIvX4AwPjyrvd0vWgECQ18o\nhk6mLlCJQYP84737bkjPjNkEvCCIOM5T+tpP8Tws1ssFVWZlSKJQnIMT/JSwLbmBykrgzjsDtk3Q\nurGmBo8SS0hM24Xr1pmhGPaAOX4t2wwcaMokiDfO4Q+mT9psGSC1e5V8JzbuffuG6ydMMBO2gEm5\ntFsGcrKYl7nvrawfMcIMNcmMRs67pibctrU1OL7q06f4Hr1SqheA0wFcSau/q5QaAz90s9V6Lxq6\ngrSmoSGtEFa2eAShRjijYcAAAKEyIG7VzGb2biNKt53o6DC5uvpHWzBgQGBgWwEs1Ab+c/zZM85w\nxl4z4sc/xhYaMDJBjNhWWrcki8OVAyc+l/BSXGSaASTzCC8eaGjUktd19j0hs63PfAZvcm9cCk3I\n8/AuLGVZZsSwkJk8VyNHhp5+a6spk2A3zv7e98ImKSNHhhII+/aFxxk4MLVQS/Ytx+H4+vLloYGX\nddykhWUKOFlqNxLhSlvuPMX7YRE22Qd3tyqleqXneW2wfivPC5iSOSFbIy9hjK8AqBJWwUMPhd7e\n/Pmhp3rRRZipuenJt99GQox8EbBQGySbTSQ+hlT8GjS3LDHv8stzLpqStFzc4aUQRt7wQ9OIoQHA\nRM8D++lHy8KGDWGC8dpr/fMoUJHd/wD4sV52XdeAjmtfi1IplEYcZwqdT9E8eYGu/owMcS3XkdrP\nfAbDd+8G9G+TrKry76HKSkzT5IDFO3eGxWGs2GgrWXLYg7XcXa332OBzMxLZ3/r1pgcuYEVINsAt\nLeF2a9eagoaAb5RZUZN7wLKR5pkD5wgczqExSHA7QgGJKcZF+VTG6rhxo6WlEgcfAzBTjLbVCzSY\nytqCZekaIBcCepq9s6oqKMj6I0IOMRuSObn+BlTktCSLj/UAUH/bbQCQkZNfKC/+ev1aHacxNxAZ\npvi3UviIVA8vWQIAmL9zZzCYnwIEIZ+4EA+zftUqeDoMdDOvL3RtxYEAqxfy+3RPHEr3DAutTZL1\n2ym7NGGCn4j9/e9Nj14Mo23Q2JNlw+zqocrNtnkQ4aQvywGz8ea4O4eL7Nh5S0vIueeCKubfc8EW\nh6U4mcyhGebrC2zWjT6OGjBg/2w8UrdtWzDiJmMYQLupSKPmFIs/sAdWabXcoFweXSjwvnV2/tcA\nLtF87y2a7/0FAIflo6wo+MQnMEyuURbG90NkNvBAYUM1vwRwCWvquMq9paMV6eA3KoW6ZBJrtCSx\n647m3MLvHe9ngoRslk+ciGG0PpDSYvXGhx7yX7nApavRFVLYYoh0jJ5nrtywcZJLR0mIBpqxNE8p\nzOXBtGdPk23CRlJi8baaI3PmAT+Wzro4Ag7LpFOMlGU+j02bUmmNbKA5ocuce8DtgbNMsj0zEHBu\ngQeZ/b45eE0N1mXh4crUL7l5c+SXESGxejL4C/S660SgTLTKuSotnwfnet+H3QqgURv4DwFc5dq2\noyM3g9HRkfUPHgfFiMVvRdiw/GQAEzMwcJJVVc7f8xYAmD8fgFtGIhetGjnOOgCTNWPksSFDAoGw\npY8/DgCYzsaoG3lj/ttvh7N3Zt0AZm9nu32frOfPCpNMDPfKlb7KJOAbYhkgVq4M8oEpLBledgmi\nLVkSflZyeZw34IbgW7eaXHv2xl3tEG1Gj83u4bg8n2tMlJ+hv/ZajL70UgDAE/ffn3FzkeatOvfc\nYCrPFy1ZXR1UMHLc7CoABxerhd5FF2EzVWtyKEpi81887jgAwGFFqKrMB4Uw8qwpU6uXL7n33lD5\nD3APbOTJpxSy6Y5Z4x0hnQVKBR5lYts23KXrFljJMYo6WQvgEm6arb3NQITrf/7H8akyQ4mb2gAI\nwxUaw6KcszTnNgake8PNRvr1S+XFA6YiJW/T0hIaRpdcMXvuI0eajBaO8wt4hsDhGFbM5KKnpiZ/\ndmLvw1WYVVvrbnbS2RkORi66KEsTu5qbZ0D5Gfr7QqLgN+6/HwfPmAEASC5enLJpLwBVOrm68/HH\ncdgjj/hv9OwZ0KAqAUyUlnP33OPLk/bv7/eqdGWu83lo5IebPBlH6h+l16xZEFPxgH6dcemlwKJF\n/j+dnbkfs7IyMHiJl14KGA8sIBUXhTDwAYUOAGpqsLi6Gh3Qid/Pfja8kYGMyVh8/vP+62OPud8n\nIajBCJP4DUOGoF530kpOmwY5ynkLF+Kn+rpsRcjEuuTee/0E3WVWTd/+YOC7EgXo1tUJ4LCzzvL/\nqahwc9254jUqFt+vX2plLGvY20wXHgRkuaXFnYy1PyvgEA3gz65tRU3elj13ljngginmxduhqHRN\nSWKg/Aw94eBDD8VCh4EXtAGGxneNDseMBzBBqyB2IOwnWs+GqNCgkM8Lo0cHVbBtCIt5AKBez1YK\njosuwu0bN2bezoFChWqCknZ9LbYjFOWKBSvBByCUZ9YPwfNVVTjdivu+gTBkk3jnHb8TkUbQ9HDL\nFqNBxzGyIB2DulFy/A3AoqefBgDMvOUW09AKbFExTqoKWLNGtmWD2tISetQvvugngAGT6cODCIdR\nWI+ew0hsoFn/hgciHiBc2jn8XR0SxMb73NLQPk4MlLWhR3MzxDeVOHu6GKxcypcATKCbRZYWDBiA\nT+rlHQCmXUUR8wceQE54TwcIiO61CYBEG/8GQNK+pwHAj38cfraQibwNGzD7ZV/CLak5zpmQr4Hv\nBWCOxK2ZMaFnKCLWtnzYMHQOGYLhZKCfouNMWarVrj/7Wf/1t7/FXY8/jqtZ90fjj/ALNwC4BZ/6\n9Qvpl6NHB+JcuPFGzNLUv8a338ZkkYPgRu45YpVSgdYMQHIbpSqk6goU4LtVwm8QDsBMkrIeDIOr\nTdlI8zInN11x8dZWM+5th0/klUM0MltgY80SDa7BJ4oiGqWhv2+fO0cg+7T1d7IM35S3oSdx/myS\nbLsANJCxk8s/0Ll1YfBOdTV0vSb2wJQnECPwCQBHC88YCMMTXYBCePHnA6aBtx/65cux/Jprwv3r\nZOxRCAdfRkOfPqjXUhTvwW+/CPgVz7xnSerW605efG+0V1ej6pjAX8e8P/zBXxgyJMjnfAj//kjb\n4YvBDWV0v9F/79yJj9x9d7zPW3hTKePBi4xv25A2hzbF8yc/8V+vuCKn8+kqtNgrbN0XINXrtkMy\nst4eGDhMaOvOs5fM8gaupCp77DxgsNKlgBt88/fgJuB8LrbsAn8v3gYwB66KCnd7xTQob0NPFDz5\nWs0xP8oPvyQHZ1x4YUir/OpX/dd8E1naExzW3o5ZzLfV9LPk8OGYaydci+Xhaapb4uKLkXzwQecm\nuRr4hObdv3DDDUGR1RIAie/ptgPSUeuMM4C/aYmxU06BtPF4hPbFDOHzASyYPh2Apn3qvgCMt6z/\n5bcVuWLGrQAqKITF9QoSXNMTd3ygFA5pbAzvBSD07L/73aAgKxPGwZ9ppEAG9VIO6HLtCyxmloIC\n3cMBc6qmxt1mzw5psOcepSsjYG9Y4GpcIp/jsAzz5GXfrHyZSXbYjr8zY4aXo6SGbUPPyp05NB4p\nb0NPiGvgXQguy623hiO9XCxJ9uX7MHK12jPPpB9xf6HVZc6PI8sWH/k290iHBs275wG0NtP5aGaR\nDd7H0Tt24Ghdc5DUUsz5Iuox4E44X89ifw26iKp+4UIs0I1PegG4UpfYV/frhyOmTUv9YMQ9NXz3\nbpObHxM7tRjYYdZvuehKX2VkZjYevauOIRt85zv+azYyIRYqQIa+b18zXs3t/sTArV9vNidhb5i1\naWQdC5NJ+MX2uoOTqTANsEtumPeZrgOUvT+Gfd72ZwB/cHEZdR7MSimBUAoUUtskOWyY8X9CszPy\nAj0wO3W590MwGx/LdxgDYOpS6r5YQO8rWyOfbZjGFTr7GxAmPuXG698/O49j9epQpKyIGIWwKnk1\ngEOYWutqxize/L59ECLhU7NmBb/rHiDQT0m6jHw69O4N3HFHdp8BcFgEHXgm38fF9uSjwCyqDRui\ntyMYdwkbYE40Dh0a6tScc46pGc+fdTX5dqlOAtENumV9ba05SPAswmbbvPhiOJvl/TK7R2iZlZU+\n4YAHC9d3tvMLsi7bZieE8jP0v/2tc/peDDTSAyqXkKssjRguSRoAqV4VOjshLR5a4TaMawGs1WGK\nBGuGt7XlHEIqphefCR8CRseuoN3f+yl9ZiKRnDbNr1yurAQefDDQzI+bUI6L9bDyAty8HQiNkxis\n9esDrrh4nbsQNkl/BAh6j2bq/1swRFEahUUCpHceJJYPZK5pEIjevmY/PazvHQmn1WXw6I2ku+N+\nDIx9VDMNLjYCTE+ai5pY7gAwk5e29+sKtXCjEvuYfGx7/UknubXm7c9VVKT2lbUlGKJmAPK+q2FJ\nTJSfoS8hMvqdP/qR/3rKKSkFIp5SUO3tYSl4U1NqcikNZHYRtO9rawspYDG9smJ78dkil36uLE/R\nA4js6Sn+Yjxf0Q0uQUlu3uwff8kS01DK+xEDDecLXonBBCsJ0jGGfvtb5+q7SAhOfOO5zH6y8hP/\nqxQ+TiwoeXb+qe8pphBPVgpjs9VvijJcUSGKqNg9x+A5hs9etJ30raxMpSuyp837dA1GvG87eSqD\ns6t5OB8nCjyY8aAU1VYxAuVh6D0v6JoUX0q/sMikmnk3PdQsY7BUx6Gzb93hI1ldHRp7htwge1K7\n6Zabgc8HgaohgPpk0peXvekmJHbvRoM2RvUkhPa0UkYf4DqtwS4sJxkiL92xA0ktRQ0AiXPPBXRB\n3fyqKsw591z/jWeeMb1b2f6114Icg/i7HQhnBa0oXA/VgiKNk5DUsfxKhEnqTNH55Ntvg0vJWDLw\nG47tJ8tCWxvQ2opX6b0pGY4V6UW7DCmDm3/Yrf3kc1H7FrDHbHvPLpqkq6I2aiZgQzxy+7uki/vb\n55clysPQE0rVEi4WiI1xpabsLdu4EU8CmKqNU6B/MnBgYFgyNbCwkaRGDILEIYf4C7pis0HLQaRt\njJGFkU9c7KtJR7FzSoGU89UyBwCA3r1DAw8Eoa2zXnsNa60k7wUAJOK9D8DVjsK42x9/HLO1Pkkb\ngPlav2aO1raxwYlk9sXYIZiri/KSEyeawnnlBNGHh1m89hQtzxR5b57ZSO7l/vvDmaqmuwokuc1z\n3eWA4biw2RNnTkKiNaBQKevLA26jxkaUC5mA1Fg3M11s0bOopCbvjz/LBA6mdNrbuipebb15Thzb\nA5fLmDO3P9OAlwZ5G3ql1FYAHwD4N4BOz/PGKaU+CmApfGLGVgDnuxqEC959+eWcp78sMnyqftgK\nlcCV/SSOPx5LNWUvZQLGVXt0TivzPfYHHyARs4o2Jy9eF4glZIp+wgm4XSnM1hovucgoxMWNmTfx\n4cpbHHtsih78IZ6HBMtN61BGor09+A1bgYB/nlizBk06t9A0ZAiGOq5fYsWKIFfE2j0yid8FBL95\nD/gFfbF5+SXE/boqHAhrO+rOPRd/1wNdQow8gPu1w3HpbbcFLCvA787mgjyzb1jrxXHh3IWRx9Ay\nxX1BBVNsOPv2NYXMhBJtG0U2mFZoFaed5n6fK2btoiZBba07L/CFL4TrZN8sXuaqaLXBXj+zbDg8\ntGtXqmgZz1T69cu6YKoQrQS3AhjneV4LrfsugH94nnerUupGAId6nhepiztYKS9eGyoTkY0gAKCH\nf2vFkTqOQqSXFpW84jicng3k4zEnli0LlpNTp7q3ydLIp2ukjmOPDWR4C50Mzeo8Cgijl6kc84QT\n0PjKK8H6lC5J8KVzo5q6JA45BBs/8CsEjilD4/4ufedBdA+3kwNU5dLY5zChNizJqqpAF+gTyD1E\nyZCeskYClBuFcLycDR6HaJgyyfIAHEPnBC1vy6JmHPKRfNvIkamiZbK9gD/nkm6IamTO+7C/j6vJ\niMv7Jx17NWRILD36Yhn61wGc4nneu0qpQQBWep53dNQ+cjX0QBqDobnqSc1yyQWf1q+n795tXvw4\nhl7fKA9XV6d4PIVAQQ28C5buzDt630sQzqJGIF6vWsEoWp5WKgMZwRf/N12rjzjOpV0p3OrYnYTU\nktrQl2rAygZs6IlnY8ykXIb+d/pzp65bh6SrgXeB4LwP9uwxVR1d4RXWb6+pMRuFiJFmpUmWQ2DJ\nAlbJZI13Wc+yBp2d4b5HjDDbGspxRLKYu0TxACDb2d/NTvQK7OSxnJ+AlC7V6NElazziAXhOKeUB\nuNvzvJ8AGCANwrWxL3gH7owPmC5GSlhFSXfpm/k9ACfoda1InX6OBFLEszKCBwC9fKHnYb4+Ztzm\n25lQdCMPpLABhmk6aOWwYThVNzjHVVcBujl5HJTMuDMiBuUmWh7meL+qvR2Q0J1QYSVn89xzSDg+\nUy5gLz7BIYgMFN5TiVUjcfYV1dX4k143Gr6OVD6oATCNJCoCsAQxF0lxWIPDFVzJ6gqT2BrwYjib\nm824ud0xSuBKqtpFVfZ2thaPK84fpY3jCtfIej6+7DvL6thCGPr/9DxvuzbmzyulYs3ulFJXALgC\nALLp+Bm/FbYbV2u2RePjj2OKLjRZNW1aiqGfrjnhAfIo+ZZWgXcpZWikZ4uSGHiB/X01m8MIk112\nGQbr4zfDnSguVzmvjPoy/P11Qde8558HAMwt1kmVIf6MMKGar5EHfKdqIUlUBJkgbvfHsMXLXEnI\nvn1DT5vBHj3LGLgKoDh2H6UU2bOnWXnr+lwUW4f58BzfZ80cV12AwI7/lzoZ63nedv36nlLqcQAn\nAtihlBpEoZsU+6Y9/58AfugmzrEKMk3Wkgd1tGqi52GlNlgypi7cuROzCtzQ4WrPwzx9nGybepfU\nyGcBbkYt5yO6OACAb7hIePsHjBxNZSXm7i8a9Y6ZZSxw/Fjf+3O3bcNTupHLlBkzgsRo8vLcXK4K\nALO+9jX3m6wNL+A49q5d5jm6lB0zebp2xypXDNxWinQpT/IAwaEgfp8HFBdDaNcuUwLZVSXLrBv+\n3qVUr1RKVQPo4XneB3r5DPh9lZ8EcAl8jalLACyL3kt5YZZDGreQEI84Lrc9GwNfsgrNCATD4pgx\n6Tbbf3DOOeHyr3/ddefRxZDm9msXL0avNP0h4qATwLwf/CD4f+6dd/oL3CWK+6OycbU1YNiQsvfO\n2wOpnjgngF1hFPb0m5vDbVpawvNiAUOXkFo6r3sTBT3YqLs6XzFc2j4xka9HPwDA48o3PBUAfu55\n3jNKqb8A+IVS6nL41Pjzcj1Aor4+z1OMgbY2fFEvbh4+HEeWgBOdiGHws/Xii9bUJCbmiMa73JAj\nR4Yl9EDYRGQ/wYO6KcZFAEDJWSfLq6shSec//QnztAjb3ClT8NOnQsb8JVmc92p9n01obw8okPsA\nzD7+eABAklhLgElBzYS5rtqFmhp3jJqNZd++pjfMHZnE0+fBgpuAs+fsOuaLL5r74wFDS12goiKk\naboUMfmY8j8fSyB0zObmVH0ceXUNQAw+1xjIy9B7nvcW/ByNvf7vAPIWrEns3WsUE/VqaICYjZwS\ne21tgZY5AHxZvw7buzfo5WpM12WqLlK8BZBmjSUJnAMvPrFsmSkO1ru3s6q2aNi+PfM2eWj6lBVe\nfhlPa/rpWeVo9KPAtQassS9gDXeNn1ZVGSQC28ALsioQ1KEggO515rRzjNwOowjYo3d5t9xgxKVX\nL/vm9RyX58pXV+zcdWwOv9ihH14voR47hs/JY9mGBz9Xsjomyq4ylmEY+RIdRwpszgdwTFQssYjI\nVcKAefZBVW2JkY5775R5KHPI/EM8+Q4gEF0rO4gTcvLJYf7ngguw9amnoj6Rgqd0NfCUH/4QKwp7\ndpnBhosNY79+7nZ7nGDlhCk3+HAxVlgZUraTfbiojBUVYUiFWxm61DDtcA03LGcPXWYfduNxhnj9\nrp6xPXs6B+V0yJtHXwjkwqOPnWzcsAFYuRIA8OY112B4YyMAYGNdHY7RNMF5l1+ekhw9H8AxHAq5\nlVjV2bade9KvLYwqegIKr1FjqGOWQrq2o8No0NwwfDjOADB+zpxwm+9+N/Vz5QyWZLj55tALPvnk\n0jX4yBecQJaZKeCcnb5O95v8kn9EYUXbPgZgppXkBmDWO3BIo6nJNIwSsujZ04zBM5URMHXkmRnD\nnjN3e2ppCY2rzf7hmQGHaeRzTNGMMsxyrnz8LVtCPj7TSDkXIftmWqZsA0Add1zJePT7FZJ1xLdJ\nwxz4BYAeWl+m/tBDTUNfYOxvQmRRaNRaKGwYkvPnB8uJ/c3QW3hQx74vLgPnKC48SnwqNvQOPK9f\nZ27bhuU6vFJoZc5PAlhTVYXx9jW0K0m5OXdUOz1uNsJGX+ASOGMDbGvnsLfOxlu855qa8DjcJpCP\nF6dpt0uAjb8nn4vAZuUcUM3BCRK6+e+4H9Dx6cbjjkOdTv4M/8pXAIeAWBSCW8JujCGx761bwxvi\npJN8JUSB9g4Wjh4dqYxZVAPPU+FcYuNRzZ/POMN/fc5vKCjVlG8gVI68mGYT42+MrWxTfrj5ZuNf\nw8BnGSPtKqjXXgv/kRDE8uVYpnv5TpWQ2osvQrdRx7ohQzBbr+ewZgVCbRq+p7MR8XsGEbPxpqbQ\no7bj3tyzVRDV8FvAhtPWrWHBMebXc6iHKZ5243HeJxvdnj3N2LoMKryNLVzGx5HtXcVTNhMpKkkb\ngS9M77MAACAASURBVP3G0EtCSHySBE+jM4CTP9lAUpkNEycGrIJ+AK6M6PQTBTsNVOyGIED4gAax\n8TihhjZ9lXlQ0A055uv47ZzTTwcAbFYKrwPgYVNi2oHW/uGHI/n228H7iZ//HGUDnl3sx1z/QkLc\nmcQnP4lFDoeoE2457ygjn7j77kAa2Ynt20N5ARIFNJKeQ4ea8XqmRnKRlF0dywMBh1TYuLJ4GSd3\nuQLW7l7lSsZyopU9fVlvh5lcOQI+DieABXxOB3LPWEZCy8MCAISHe8opwC/9Hk+rGxowQXsy2V+S\nVNQ3NmKpDvlM/+EPgYceQuM116AngNmk/gfxXleuNLTQjXPPsfAp10EgWV1txuvtfrWPPQZMnpzy\nuZ1VVTiMvUHZ3/PPB1RUAHBwN0IMHIgeZOgDmVqJ0RarSXopIKG8m2/GcqUwmesvmFLa1eAWf8KM\nuueegBvfrA36le+8g+v1ur1/+UsQR7+bWDfXPfss/qr7+j6GkFJZv22byaThGLw29FTm5IZd9MRe\nt6sKVT4DuCWD7e5NYmh5JsaSBYC5DXvjPBjYISKeOezaZe7PFaJhz9xODPOMwjbm9v/7Y+ORbE1Y\nUsdKE8cfD+gGzSnbRDSmzgXJurogdNSop7zBe66G1g4jn68XL59Pp6oYhcDD5n61HR2phnbmTADA\n4vvvRxuAL9I1lC3bAEjp0Kx778VLafIcyRdeCM+/sRENnB8pNFziZXZXH15/7bX790BTBGiXCXPb\n2wHdsL0ZFMK85RY84ficHS/mZjKCZqQ+Aw8PGRL04L10zRq39npLC/AnrbZz0kmhoWZBsM7OgHAR\n6Og/8YTfKQvwPX/Z97e/HTaa6ewME73cypArVrlX6xNP+A6l7BMw+eycaLVDL+yts2Qyw6VZH6WX\nn2XosCxYN+NGj/Ze1HK+2ajmXQbg43aTZwDYtw+NujtRPh69+GUX792Lu7TnI2PzpcccA9xyC5br\nvrMfga8L4kKh5QtYmC0bSL3qVPK4Xq+qwlF6+RaEntd2wAhX8bHk1hsJvxervV6u+WCEGuiJvXvx\nLoUDBhX6vsvW0PP/+eIofQXfKIZOaZHADbxd8sAyK7n5Zl+8TqCNTXL4cMNxWKpVYqfLDFdyOVxf\nMXiwcQqPKhXMFi556SV345HOTr+YCfANtythum9fmDAVFsuSJaFB59DJQw8BF13kL3NVa0uL6a1z\nMliO+b3vhZ+VdaNGuSUVWlvNMI4MDFylyx48M4eYJ+/SzqdZgRo2bD9i3Rx0UCCVOhl+l5o4uA9A\nD23QxyE0tNl2eIpCYNxqawPPowPALFLfS8eqjmvg5UeoWxZPKeJqvd/59KDEgUzXmeT5GPxrJ5Ai\nslsRGvqrGxvxvPbG/4jQw5u2dy86qMnEdM0xb9R8+gnw2UsAgC1bDMncRBudueQE2AB3dJiGR1or\nvqd/Faa4RvXjfOaZ0KtLt10ucAwWi/RvO7MMnKdMmKdna0aV6m9+Ey5fcQUA4M1EAsO5fyx7lXRt\n5df43Zln4lT+/pZxZ+yDpfkkxpC12dlLZqEwW7KA5QMA32hz2z/ZBxtXSZIOHOiOi8txXLIKLmVM\njvPzNhzb5/WdnSaPnwcx+3yZLir/Z4HyMPSEse3tGAv4D9BRRwVNnKMgBv3PjnVxwRehk9bNPuss\n/59Nm9CTGl8/pdX3xmlv3oW4Rl4meLNyMA5zPA8PE+slLuwOXH+k5TtpWa7FT+vq8DnaNri+ra24\nUHekwhe+EDwQddLKr7kZlTJD27cvbBRTBD2h+fSd5pTY0C7cvBkfKekR88SePcFvsYJi65McRW3D\nly3zwyJnn+2vkAEXQLJPn+A+PzWHa74bQCByzcYwilFjs3FcSUkxxJyo5bi4LQ4mYRQ7zu8yzM3N\nodEXvRqbwmkXbsl6Tsy62iTyAMGVua7CrOZmt1xEGpSdoTem0+vXIyEa4HqkTs6fHySNtsD0/uXS\nZuvRdyJVEOxDAA9rrZO/w++TKNuKJNHLSEW2YZpZ3AAiB1woD+dVV2XsZhUY2r17gwehcfhw6P5C\naAFwqTbcm2fNwpFSGUz8675VVZjlkolgiLfdv79/LDnujBn+wq23ArfcEm7PTIrgZCvdoRVXsVpl\nJea49InEOBUDdG5HIWRoAQBe1neGUO2KeR45QjxpmeXNbm8PGTBAmMRlNgzBvTZ7OJ9Tm1PvSliy\n98zeOxcy2QwZex92Mw8BFyzxey7jb+/btQ3PUGypBy6kYmG2dIMYJ5pjovwMPaOyEvjxj/1lPfqN\nnD8f1dddBwDYtGCBIbgkxjqX0M1X9KtMXpsQcvdZ6TodezWr5tzcwPpPfwrbuWUL8QruuQenaEP/\ne4Tfnwew4NFZvTqYdn8IBM2fRwJBsunIxsagrSDGjAliurMOOsi/KeOGQSS+CmTNFIjqDlUWePnl\nwPnYCt1Dttzxox/5r+PGBfdHcIXvucckNkitiBh6oTNrmeJLCiBp8S/Qc8qhEw6HACaP3qUxw3F0\n9pZZSpiZOyxZ4KJXchMUPharWrKB5vCKK/zC+2J2UZSnz9u4DDpTMWOivA09Q1/YLUDQrf6MBQug\nhwEj6ZpLfN7VEm+tY50LORU+Sfa+gBW3KyPWi28StDY+6aTAo+89YAAulTgtU8VqawMWjgH2+rLE\n8gULAACT16wBFi0K32B6Z2sr8JnP5HyMrgAnqhOrVuFunaOQbyEpxkPKJHaf1I3RGQ3XXANoRln9\nMccETJeGPn1Qz3RmjcU6NzMjj+/UEzTQdHa6PewoWiEbbI5dS4yemSsSh5f14l0PHZpa2Wovc3ES\na92wx+8Kr9hVskz75G1dhpylGXjfPLhkifI39JKo0691hx0WGIZDX3sN/XRSqQXZN/NwIRu5VSA7\nI38iKJewNu4wkgHk6SaEgbRvX8Djr3/22TAO6WjgcA6QGjKx9muAmRFxQAVtgQ/44otY1NAAwNc9\nuUvH169eYUlpZePFl9rjHzHCmby7e+LEYAb4CIBrU7boOiy1qMEMvt/XbNwI9OmD8Z7nGwjtxQMI\nrvOMn/0s7/PpBTJAdus/9u6jjL4rHi6xeZfxFbDRFePJx2TjbkswCHhw4W2jCqMEXAnL58I5B565\ncPI5ywSscZicP9lV+M1v/ETIf/wHcOyxmCFTyF27sFknlo6cMgUNWrWvJ+L1arWpgZmQixf/b/5H\neL9yc8Wo8M0IGTz69sVIWTd0qMn1tQzisB07/JsorlBbHgZ1uiRhhw7FTKKpXc1hgP1FxpiSkl9E\nmLeZsmoVFuk6j5laux3L4/LIiovpeiCdP2lSyjPB4c7xgwYF6z8PmMZJWDTZDviZwMVGbHTZG5ft\ngNTErNzjYgy/8AVTg94Vc29qMrn4HFJx5Sa4+berSpWvE++PvXbucMUVu1zp269fam/affsOcI/e\nhh3LJo//SKnk7NkT/bShv3rhQjTM8jtTfogwIXkI/CRrsBv9Kj9busEhGyN/BYBBujctALyumTq3\nn3kmZnse8OqraY6UJWiwmO5SCHQhWyXOfMDFLswgKLTRKBU0RfR1AEH9ad++kMqOZa+8gqmuJhtd\nBW3UMqXx7nr3XQBAf93j+Gh+Uwrtvv99//88w2wzPvWp8NxcFa52OId579w1SgyzGNExY8Ll2tpw\nf1/5iimpwElVFixzqUaOGhUuy7F5xiHnIufPAxdLFkfRJHnwsL8/5w04cRsTORt6pdTHATwAPwT5\nIYCfeJ63UCn1bQAzAAgf8Zue5+Xeh83iWz+sFC4UTfBRo/CCnvb/G6HuyqsIk2OLZ80ypqUS3mEj\nD1isiQhkY+Bl4HgRwJRvfStYb/w8P/pRWIBRADyoz6U3AOZ5tAA4rIviw4/S9TkvSiOIReNEmqHM\n8ahSOE/PRDYC+Kte32/06OB+Ww+gB9EXp3TFb6AZQCvGjoVkV1xhSV73HoBRtLxMfwcptFuqFKZP\nmeJvoMXtggKpLFAJYJWunp7IRremJjSMJH1trGcPnQucGJyYZQPNCV2XfDFr6tj8doEcn9cxz58T\npnbs31X1au/LpmByRa0t3RADOVfG6qbfgzzPe1kpdQj82qFz4Eu5t3qel14TlTBu3DjvRWZnpIPQ\n+e68M/U9TQlbtnGjwZT5h37tQHFj8ILedJxKhMa9J0LWjkiLbQHxzgX9+8er3rSYL0v1oDf9mGNw\nt+b6X9nVujLlzJzJB6S/v3j48KAe4rwVK3D3JL+52pViDHU/gi6BOEqnnYad2qj+BOmNfSUQVEtv\nQHgv1511VkC1XXzccZjB1OAcWGNPKxV4mqe/9prpGXPoQozuyJHumPbWreE2YgybmsxlMczr14cz\nyBEjzN6wrlALx+jZexfvf9w4M0YvZAUeuDgUw3IMducr5s7beQFuQk5hHjV2bHErYz3PexfAu3r5\nA6XURgC5yURmg3QsFU0BnLp9O27XXkgNzCRtNoycfGSEpYDm6sMPD2+ErVsDVcnpugFKQ11dWHwh\nzajPOSeklbrAsxy6UaZLTBjAlRLG2rLFFLbqRsHRBkCbFGycNCmYHa7T4cP4oh7FhWiHZspDdcA3\n8ID/vMgzs+Dpp3Gtri1pAcLwDeDfr1kO5B0AzrrwQv8f9mbt0IaraxNXxo4cGS6LkR4zxjSM8pxM\nnhxSfm3FSpeQ2sCBZsWuS4+e5YVZOoE5/64qWa66ZckEhpwfD1Y5JGYLEqNXStUCOB7AGgD/CWCm\nUurL8CMXsz3Pez/XfS8mw5qRyiXeY79+wRfLhWqZr078EaAY/8iRuF0/HP25ZSEJfC3QybtWUIPv\n63VZmGvmQnheS0Cc3t4e9PNMtLf7vGhBVxp6ZhedeGLXnUeh0dkZJACHAzhVvNvVq1Gp2S3DS9Bk\nPiPEw/z+9/E5Tat8BO46C14nzw87SZ0IWWMdAP6qG/P8P/6eLomKCPQFsOrhhwEAE7/3PXeMnmPT\ntsfPVEYXHdH1OVc83fU5F6OHt2MvnwcLPj/X94k6Lw4vueQYuB1hDshb1EwpVQNgFYBGz/MeU0oN\ngD/gewAa4Id3LnN87gr4uUr0A8aKOvjfrO1YKYPbTycOOshf4NCALHd2Gg0T4qJQOvE9rOVshNXs\nCPUx8hBp72Th8OGYddhhAIClO3cGbI9M51Of7e/s0qYHgO98x3/95jdTP6Ov/xodQhq/bh0aSaRu\nBG06vUw45TmDYtONSgXNbdCvX1DnAQD4c5TUXYlAs795+pkolOIPR8XlKPUShhTPVxwWAPi1map7\nSikId2kiS2kDpmFk/XgOgXAc3w51cDcojp337GmyW3iGIDOAgQPNgYMNMydY5X0XR54/x9IJXLHL\n+vXcnIQNPQ8WPIvRA7iaOLH4omZKqYMA/ArAzzzPewwAPM/bQe8vRoRGmed5P4EfLsRwpSKf+u2O\ndYGRB/wKPqG66anj7ZaWSxzk4sX3QniDMz1tKMIBK9sZxS9oORHhESZJdycTbGmHguO3vwUArJk0\nCeMd5xs5yLlkkssMb+rfX1RMb0aYpGTZ5g8BNAwZgv6gkFlXgjugkXxFodsCitkZiPA5SA4YgETE\nNZDnSZ61nqCKYjZ6HLqJ4qZzRyhWhGTDzVLDrkQvG2MOo9jhGpcePht3m+ppg5k2dsWu3etW1tu9\naW2UqjJWKaUA3Atgo+d5d9D6QTp+DwDnwlSydeJfSPXk0yH5L18KKSgQ0l6LePHZXIJ8vPgKuPn3\npwFYopez9eiNc9AD1hcRxlezRc6s9Cg+O8dDLdhiac9YktMy+5AB7FdKYZpw68upWUcMvAwEtQof\nIrqxRoNS2c+mCgjRP6pEYZrwuNBs/R+3F0Q7yBHh+DR7yYBbp76z02Te2F41G0KWKQDcrBc22OxR\nszFmI848e5fSpi1exlr38l2ZUWSHouzvZX+nLGP0+bBuJgD4A3xmmTgL3wRwIXzpcw++DMiVZPid\nSGHdCFXrnnuCphkuJHbvNr5wtuGaUjTlrkB2D5h4ih2gNoCAYXhX6XPcjviqlRUA6ojPj89/3n/9\nshYmfuABM1wjXiEVBgGIp70uGuSbNiGpGShjYEpKiGe8Pxn6VUpBsgxx2pwHHZi6ytB3dKQMvsUC\ns9kSWosKAHDHHa7NAfgUVTEc07dtMznjAi6kqq01PXZetjtIcQKUvfXVq0NnhSUQdu0yWS8uZgx3\nvhKMGGEOADyLsCEDFYd/XLIPnGxlDXpHNyx13HFFZ92shrs5VG6ceR3ffbqqKpgC9Ehj5AFfJlUQ\nu2k4SmPgBdl6UXPvvRcA8M7ll+Od6moMc5zrRG2wn0ojk8xw/sht6UrCQixQCte1t4ddfjQalEL9\njh34nZZa4JaC4um+RevYyNcCmMac+ijvZA9VN9CA8yv6rabp69NI6+rkmrW1Gb1Ps9WJn6f3KWc3\nRxuwpNbskXSjoXWzbBkap/qK/3VdnYzdt89PggEY9NprBe26xkicfjqSzz8PADgDwAsLFuBT+vfl\n58p+7vaBno90KpCSUB41yl2R2twc3p+im/T974f5gebmcP+rV4dGuG/fcJnZMC0tZhGfHPOJJ3w6\nJWAWYzHPns/PRRdlZo78P3iwb/94cLHBCWLm4sdEWVbGZtNMQ/CjmNsV0sh/DKmFV/lio27N90v9\nf71jm0Zt4OMOIrJdUn8uQUb2V3pqP+2BB+Bpo6g8D//s0ycQjGMkN2/OGPfPlCDeinCQlllLUqkg\n8T7D83z2Bt3MEgJZHeO3WqcURufrRTsGQjHwAleHr+TUqdHX54QTwuUxY8Jllqi4+WYAYX9dgGYE\nzz2H31HrykADXhK+J55oGtbdu8NmL0Uy8gACIw8Az8G8v9KhDZYevYC9XLtRt4BZKMx1d8Xf7aIn\n8ejtcJEYd5YlsEMxXFUr58RMHPvc7a5m3EnKplPaDk+vXuZ9yN59lq0Ey8fQ6wtylufhz0XwrvM1\n8K5Cqw/yOyUnjtH8eqTpr1p37rkAgLsefzzrdoIAfMqjpj1yd1tFhVsH792L67g8XMsrJA4/HIt0\nw+9FAwYEXvKpxx6LN3WR1kNZnEq6cJsMBrbh5KSPzGlkMDuHN6yoQDyT40aH9RoXco9I2CQqqV5s\n8Iy3lIjbxnMf6Hmy9V04Scpw0SPZ+2aqo6tRuHEC+6Jnk8yT5xi9nSRtajIHan6voiJ94aNsJ9vY\n59LW5pZIOFD06EWrffOAATknIY39FcCLdzEWCkVTE6/2zepqvFlXh+Geh3pu32bjsccAAFcjx9lI\nbW1QkLVRr/qLUrhODP3NNwNf/arpNQhLZswYzFzvyK9v2IDh8n20h9kwfnxWTA/DHNL09UMACd20\nZMKMGZjgmLZ+Wr++B+B0+b23bPHVTnNBr17hfWMl+7OBYeRfdrWqccMZ1z/jDHcnJ6pPMO71EsXo\nE8kkkolE8H9dzNlUb9BgwDF3wOwHK+BkLCc1bdEwILXxCN/L3H1KqmftClXWspH7jT1wSaSedFI0\nM4YhxtzeN5+XS5qhszP07P9PqVdmgUKGaThJKihUb1q5qYf/8IfhuiKqOCaHDTMKyuTxahgwAPXJ\nJABg1ZAhQdy9XhurxUphO4BeZPDm6JzC7Zdfjtm33ebv/4Yb8js/pYxEtBj5pFJIzJiBeT/4QfBe\nBy0LDta/8QSb5ifFPMJzT5dQfust3D3cH7quzKPJRrKqKvU+7OjAP8kAH+wyjK6eujJQcAgICCUW\nzj7bT2rr+yn5/vvBbOhziN+LOQqVMO//Sfp1NRl5AH6xlFxrbkJuFe79A/T8MNcdCI2abfQE3G7P\nTlQCpiyC7B8w14mRF0PqCtkw1q83ayQywRWjlzCSHebhbexlPseo9zOgLA39PJ3gy8djLoSRl2Sb\nXT0oF23GwoWYr5Uxc8krQO+rccgQ3wuSZiQlAN/GLOg2Tz+0fO2TVVVG4Zp81wsKfE6c72DvObl4\nsXM5Ezj5mJDetjkgF0+e0agUvoCQITWlhKEcMaSFEEq2n0fpHvDftJzIYgZlPDNRFascXuFYO3Pa\nXWJgzJevqDAZNXZ/BvG2mcfP9Eo+Jjc+sWH3mmVjLKEb/j4uCqksu8I46d7PgLI09HPJSGdrnAvp\nxcuN3YnQ6/03wiKPu2bNyij5ymCqZVBUwvG9HKQKEkuX+gsXXIBkDgnIHgDqRQ1UvJ2TTwba2rCA\nDFwgP/GNb+DR+fMB+CqhR1/mFz3Pviwsfj5Be/TxAxW5IQiLfP/7wSwimAksWoQJJ50U6ggBYVl+\nOk9ecMQRuFK+s/5uSV3ynw1cD5gdTqmk+3Ou5+EVpXD8s8+GG3zve8BzzyE5diwSzz6bohj5oGb5\nXOx5uPvtt8MZSJ4DVCbI4H/Yjh2Ads6SO3eaz2Cae/pQUI8G23BFccmj1kucXgyxrScf9TmGaz3T\nK0eMMMMucfcBmAWCrm3sQSIdcgjhlKWhZ7gobFHIx8gzoWm255kxsZaWQKr1Pfha9gBwyZtvAjqW\nntQCVoB/UcWT+hCk/rd7N1brRNXq447DhELwq0XW9/zzgRwGtA8BLNSt78bqdRPa24HWVnd/3Obm\njKya7Nsi5AZX/DlZXY2EDiEtmDjR+A71V1yRsn2s4+Rg4AXy6D6S7TE1uyZx+ulZH/OuIhn4xKpV\nSGpdJsCv45BnLpca5w9AoRtbvExgx985YcseuxhJib/ztq7Qjr2NvFZWplIjxaiz1IKrTaC93s4l\ndXSYMwSbRhmlyZMuaRwTZW/or9Y30t3aiNlVeEBhvPhWez/8ww8ejKnHHAMA+OnGjQgEWfftw2Yy\n8AJW/AMv9+yJCfUuwmRhIB5utgk4maGsATBbvOSePU22y1FH+Z7wRRehVlMyoyAJw1PPPtsYAAuN\nhNZHeXTYsEBtMfDyly/Hdbqpxe1anjfwhIGs9NMTorC4ZEleyU1XnifhkJE+3vNwPFIRNJS3BMMu\nphzClXwPb9+OR7WDsgnp80k9AIgqzVb9eoznpcgWyOte6/mam4PTYhQT2gVObCR5vSthy4aeX6MU\nI+3iKiC1uxNXu8pxdu0K17vyBjxYpfPOo95LN0jY4Zq43r+cWlZbdwGkECbqa+Vj5LnI6jA74WbT\noXRSabhS2AsE3viRWsyqcsiQ4AHugdCL7wSCasqnq6pwFmt4Fxi/y5Nh0Qpgp97HYeeeG4aZjjwy\n2Kb9zDONQigXpAHKxaLHXiS4qqaTVVVI6IKy5AsvRM8ujjgCeCvNN3GxHLiJeRqwLIbkMdYDmKbD\nMUniwierqnzeOd9vL7+M28eODf6dnYURna8U5khtAjU9Saxbh6SWpPgKQomOWvqsJIWPoXXcwAYA\n8I1vAEBQYzFb1g+mLI5URmdAJyIMkK0eyRx5l2drc9cFvA+XkJjdycllpG1+v93z1d5GYEsJC6ee\nu2TJdvKdOS9g75urcg+0VoJJakxgoxBevBRZBXHdqLJ/wkfsFfqm6Qet0Q2z2QjgazUDQP3u3cCS\nJeEbOTRriMI8pXBSAfZz2OGHAwDaH388WLdo82YAwN+VStF02aivOYuxiZhBMb35dEhSxbCEbmYC\nQZgteJAkr3Dffen3p6V040KCGysAHK099qOvv96pExS3uAhA0PA9cfHF/ooHHgAQhmqujjkg8G8V\n6eXHrJzOiDSNZzphOXBsjFl3houWXCGYKH12VyUpFyxFJYDlHGQfdoco3rftZbsSrelyAn37+tel\nrc1sYMKDVO/eef8eZWno2WC7PPmCSxjY0yC7mo3wKZsxoalvM157De9rlsdzCGUAnkD4MP1vnz74\nODUHCaoj82gMLt+7EqYMQa6Yr4uh+LZiNowrdGYjk8ffFVgEoK8u6NoFICG6//C9YMAvtsq3biNx\n6KH+wj/+gQknnwycdhrw+98bfQVugq+ECfhFTSn38wknRLK4AiNPCLa97DK0wc0SepgE5r6K0Mm5\n1MUAOvHEoHm9OCnH9+iB2z0vJW8zT6lUdpxSSOiwj6tYzA77AAjDJaI0yRWonFBnQ+pq1MEVq+y5\nR4U6hKcuz7oYdtcsgUMzrmPbsw/7GLI+KhnrGlAETLc+EFg36Qx2sTRquILQkEDmUfTGG/3Xr3zF\nfxUuszT3HjkSh+qQwfTVq7HXKpcHgPsAQJqDrFoVrJcbXwRlE54X6LlMc3znJv3evbSuUMVb2foN\nv8i8SdmA9AuDBGuhpdSWve/32Jn62GP+DELE4wjK8zImzqM87STlRxLao2+FOXC5wDyjO0GUYepn\nfLtmU83+5CcDxtUeAImIc02XgJWQK+c0bKNvfEfbcEtcvLU1pEOuXRs6Ry5DC5j0R2bGSMilosLv\nUnfTTaHX3NHhv88SAwwumLINLDe3l+3SyW/zNvZshz/ncDIDcIVuTJSNoc/WwGf6TM7n8a9AfQMJ\nx/sP69jphfY5DR2KRq0TPwKZ9V6YvXB9mu0OdPQAUK9j1+t07Hq052G+UsagIxHrl/I4lvRBfQMh\nM+g9IIhpA0BCG4R0qqnpsA/AdFYJjUDUPR287yjSSixb5qy1OAPAC/ff7882IxhCdnGfLDdq4173\n0kuAXk7+5S/GZ6Nou1GmyGVU2Mj/xnVO7HVzHLuz0y9UErBGEIOrYAHfoIp339QU0i1FJfe990xj\nydo5tjGX9Sx1LMez5Q/s922uvqyXeL2sY/KHDdvoZyloBhSgw1QhMFgp78qI97Lx4iV+HCe8EAeD\n4WhfGNV5CQiTUP36BZ5SUj886SB7aotYl6ivR7KhIeZZxwNfq2wbphcCfDtHMTYCxofEsXv3Nn77\nQpx3X4QFY/Vvvonk8OHpNk+LTMa7IHAoej6qFM7LwLhK7N5tzFxr6b1L5Lw/rYUknnkGD+tt30DY\nyD6bnhFRSPzsZ1j2pS8B8Nk9cs/PZZniioqQBWPrurBhZWO6erW/PEoLYN9zTzj7ZhbNrl3hPmwG\nDxt6DgGJeubq1WFfZ/b6sxQYAxDG5QW2oXd59DbTp2dPqKqq4neYKibievH8BYRadpdSuYl9MMV8\nMAAACixJREFUEQZn3iQVHBNsjj/cuMIlBUqFOWFQ+uiGWlhVhVkiN5BFBWq2+KJ+PTKTV+t4P+F5\n+CfdAwfrmgeJS1cAqNNhDJv/LsVlyenTg3Wz9u7FKv3ZVVka+cQKXQ+aJdUtLziIAudFXMcTQEVr\nFRWB8zCnvT1jKT+Hegph4AXJL30paB9ocEdsSiPrunPDbTbu8owNHJgayvjsZ0PDPXCgL4kg+xPY\nRU+shsnvyTLvUzDQpifExJ49ZnhJBp/t22EoYroQVXOQBmXp0Wcbi0/nSSWVCgwLYCbb5FLOfucd\n51Q9Lw9NDOioUUhq1kq24Ol7vmX4gENF0fYeBg7EP3WMOU5jjbzOpcD3ndwfowBM0wlvaZYukGYn\nLMl2OcJcR2LbNoOSmA6GpHI54TvfCb1bAHiESrXSsMmi8DrJRz+GkGOfD46i5SAEumGDmxmzb19o\nTNl5Gjgw9LT79g2XJbTDjURGjAgN/dChJo/ebnIi+2amjzS4HzXKlFIAUrnzdktA2VaOM3CgKakg\nhp5bI/KgJwMTM46IZaQGDOhaj14p9VkAC+EzEu/xPO/WTJ/JJdmayWBUAjiS5HelVBugKf9Xv5rp\n1LKHGNH164Ec+e2FMO6CtNdJzvUf/8DBsv1ll2Gd9ohHK5WTvELKOWRBJcx63y7vH2ZDEklsT7vp\npiAUdi809RLA32MY+WDwFcNSbvjmN3EXfeer2TPNwdD/HmFVeqHmLZECFGIwm5tDD7e5OTR6+/aF\n6zmmz0VNLu58a6u57JIvqKgwjT4fx1bQ5HPlY7LQWs+eJl1SDDYbd9aV54YkLS3hoOcaIDo7zXxB\nDBTF0CulPgLghwBOB9AE4C9KqSc9z9vg2n7w2LFIcCtBjVy9eIYd/5XPPa33fZa8X6QOUwAgZTaF\nEJaKC4mrXirhhRwwWgxzaysqtBFk3Z8ItY9o5GBo8kWdLmgz8K1vAZTz+NiaNcFyQntvt195ZfD9\navXrJW++6RueI44oaA1EoRGXTx8HMzzPyAtw7D5X9HetZOPGoQtu98edophrDqSGUGyqIjcPZ29d\nEr0jR4ZG1465y75cxrWmJhz0uQk5V/d2dpozCg71CXXUVu5kZU45Nieoy6Qy9kQAWzzPewsAlFKP\nAJgKwGnobeTrxcfBWREKgp9wrs0DlZUYq8937KuvBtWJxUQP+KNrXr1KuYiod2+jPR8APxlNnrEL\nvQFcV0QvPhYGO7ItlZUwhH5Jz12WZ3d2InnNNQCAS7TUQs7x2P0d4oRNmIALv/Y1AECS5KENKYMY\ncObPOMnKXPOoBhusGRMlPcDGnnvJkoZV4F3bMgmuitS+fcPwEdM4mWfvahTOGvQ8E2hpMT19Vwgo\nSjytTBqPDAHwv/R/E4Dx+e60oHFdi8YkqZyi+pz9+hnl8YVG0Iy6mDK4zDa6+WacrA39qcQM+gZv\n3wVefBxklAr+7/9G4r+z6UR8AOMkXXPd2RkUfvX/wQ9C5UkAn9KvyxEyxuaQ7IIgcfjhbjlulgCO\nagLC0sT79pkxbXtgsL1rQU2NOSvgY7r48nxMOZZ93hzzZ+9fHAM+V9ugSwMTHhh4dsNw6e/ERFGS\nsUqp8wCc6XneV/X/FwM40fO8r9E2VwBB7+JRMHNk5QRWNygndJ9Xdug+r+xRrufWfV4hhnmel7EJ\nQLE8+iYAH6f/h8JXNQ3ged5PAL93sVLqxTiZ465AuZ5b93llh+7zyh7lem7d55U9IhvW54m/ADhS\nKXW4UqoSvojfk0U6Vje60Y1udCMNiuLRe57XqZSaCeBZ+PTK+zzPey3Dx7rRjW50oxtFQNF49J7n\n/RrAr2Nu/pNinUcBUK7n1n1e2aH7vLJHuZ5b93llibKojO1GN7rRjW4UD8WK0XejG93oRjfKBF1u\n6JVSn1VKva6U2qKUurELz+PjSqnfKaU2KqVeU0rN0uu/rZTappRaq/8+1wXntlUp9Vd9/Bf1uo8q\npZ5XSm3Wr4eW+JyOpmuyVim1Ryl1bVddL6XUfUqp95RS62md8xopH3fqe+5VpdQJ0XsuynnNV0pt\n0sd+XCnVV6+vVUr9k67dj6P3XJTzivztlFJz9fV6XSl1pnuvRTuvpXROW5VSa/X6Ul6vKPvQ5fdY\nLHie12V/8BO1b8Lv/1AJYB2AY7voXAYBOEEvHwK/yvtYAN8GcH0XX6etAPpZ674L4Ea9fCOA27r4\nd2wGMKyrrheAk+ELNq7PdI0AfA7A0wAUgJMArCnxeZ0BoEIv30bnVcvbdcH1cv52+jlYB6AKwOH6\nmf1Iqc7Lev92ADd1wfWKsg9dfo/F+etqjz6QSvA8rwOASCWUHJ7nvet53st6+QMAG+FX+JYrpgL4\nqV7+KfxOeF2FSQDe9Dzvna46Ac/zfg/gH9bqqGs0FcADno8/AeirlBpUqvPyPO85z/Ok3PJP8OtM\nSoqI6xWFqQAe8Tyv3fO8twFsQdjzvmTnpZRSAM4HkF0T3wIgjX3o8nssDrra0LukErrcuCqlagEc\nD0DUrmbq6dd9pQ6RaHgAnlNKvaT8imIAGOB53ruAfxMiQiuqRLgA5sPX1ddLEHWNyum+uwy+5yc4\nXCn1ilJqlVLqv7rgfFy/Xblcr/8CsMPzPNb9Lvn1suzD/nCPdbmhd6mXdSkNSClVA+BXAK71PG8P\ngLsADAcwBsC78KeOpcZ/ep53AoCzAFyjlMq9m3iBofyCuLMBPKpXlcP1yoSyuO+UUnXwZY9+ple9\nC+ATnucdD+DrAH6ulCqlWFDUb1cW1wvAhTAdipJfL4d9iNzUsa7LbFtXG/qMUgmlhFLqIPg/4s88\nz3sMADzP2+F53r89z/sQwGIUacqaDp7nbdev7wF4XJ/DDpkK6td8m2rlirMAvOx53g59jl1+vQhR\n16jL7zul1CXwFay/5Omgrg6N/F0vvwQ/Fn5U9F4KizS/XTlcrwoAnwewVNaV+nq57APK+B5jdLWh\nLxupBB3/uxfARs/z7qD1HFc7FyUWX1NKVSulDpFl+Im89fCv0yV6s0sALCvleREML6urr5eFqGv0\nJIAva2bESQB2y/S7FFB+U54bAJzteV4brT9M+b0coJQ6AsCRAN4q4XlF/XZPArhAKVWllDpcn9ef\nS3VeGqcB2OR5XpOsKOX1irIPKNN7LAVdmQn2wuz0G/BH47ouPI8J8KdWrwJYq/8+B+BBAH/V658E\nMKjE53UEfMbDOgCvyTUC8DEAKwBs1q8f7YJr1gvA3wH0oXVdcr3gDzbvAvgXfG/q8qhrBH9a/UN9\nz/0VwLgSn9cW+PFbuc9+rLedpn/jdfDbvU4p8XlF/nYA6vT1eh3AWaU8L71+CYCrrG1Leb2i7EOX\n32Nx/rorY7vRjW504wBHV4duutGNbnSjG0VGt6HvRje60Y0DHN2Gvhvd6EY3DnB0G/pudKMb3TjA\n0W3ou9GNbnTjAEe3oe9GN7rRjQMc3Ya+G93oRjcOcHQb+m50oxvdOMDx/wEuaTs8h8feewAAAABJ\nRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1003,7 +996,7 @@ "source": [ "In this case, using the `pandas.DataFrame` representation (obtained using `.df`) is faster. On the other hand, try using this approach on the atom-atom picture at the top! That will take a while.\n", "\n", - "You'll notice that these may not be pixel-perfect copies. This is because the number of pixels doesn't evenly divide into the number of residues. You can improve this by increasing the resolution (`dpi` in matplotlib) or the figure size. However, in both versions you can see the overall structure quite clearly." + "You'll notice that these may not be pixel-perfect copies. This is because the number of pixels doesn't evenly divide into the number of residues. You can improve this by increasing the resolution (`dpi` in matplotlib) or the figure size. However, in both versions you can see the overall structure quite clearly. In addition, the color bar is only shown in the built-in version." ] }, { From 4aefa698c60ffe194cc31ff9e16e28aaa1f0897b Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Mon, 22 Jan 2018 18:07:35 +0100 Subject: [PATCH 28/32] Add test coverage; refactor for codeclimate --- .gitignore | 1 + contact_map/__init__.py | 2 ++ contact_map/contact_map.py | 31 ++++++++--------- contact_map/plot_utils.py | 48 +++++++++++++++++++++++++++ contact_map/tests/test_contact_map.py | 3 +- contact_map/tests/test_dask_runner.py | 6 +++- contact_map/tests/test_plot_utils.py | 34 +++++++++++++++++++ contact_map/tests/utils.py | 2 +- 8 files changed, 106 insertions(+), 21 deletions(-) create mode 100644 contact_map/plot_utils.py create mode 100644 contact_map/tests/test_plot_utils.py diff --git a/.gitignore b/.gitignore index cdd33ac..b527366 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +dask-worker-space # netcdf outputs *nc diff --git a/contact_map/__init__.py b/contact_map/__init__.py index 0d73c2e..76c6042 100644 --- a/contact_map/__init__.py +++ b/contact_map/__init__.py @@ -13,4 +13,6 @@ from .dask_runner import DaskContactFrequency +from . import plot_utils + # import concurrence diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 3ad0521..1dad07b 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -12,13 +12,13 @@ import pandas as pd import mdtraj as md +from .plot_utils import ranged_colorbar from .py_2_3 import inspect_method_arguments # matplotlib is technically optional, but required for plotting try: import matplotlib import matplotlib.pyplot as plt - from matplotlib.colors import LinearSegmentedColormap except ImportError: HAS_MATPLOTLIB = False else: @@ -63,6 +63,17 @@ def _residue_and_index(residue, topology): res = topology.residue(res_idx) return (res, res_idx) +def _colorbar(with_colorbar, cmap_f, norm, min_val): + if with_colorbar is False: + return None + elif with_colorbar is True: + cbmin = np.floor(min_val) # [-1.0..0.0] => -1; [0.0..1.0] => 0 + cbmax = 1.0 + cb = ranged_colorbar(cmap_f, norm, cbmin, cbmax) + # leave open other inputs to be parsed later (like tuples) + return cb + + class ContactCount(object): @@ -188,23 +199,7 @@ def plot(self, cmap='seismic', vmin=-1.0, vmax=1.0, with_colorbar=True): ax.add_patch(patch_0) ax.add_patch(patch_1) - if with_colorbar: - # identify minimum color - cmin = 0.0 if min_val == 0.0 else -1.0 - cmax = 1.0 # may change this later (allow arbitrary) - # all of this is to set up a custom color bar - # see https://stackoverflow.com/questions/24746231 - cmin_normed = float(cmin - norm.vmin) / (norm.vmax - norm.vmin) - cmax_normed = float(cmax - norm.vmin) / (norm.vmax - norm.vmin) - n_colors = int(round((cmax_normed - cmin_normed) * cmap_f.N)) - colors = cmap_f(np.linspace(cmin_normed, cmax_normed, n_colors)) - new_cmap = LinearSegmentedColormap.from_list(name="Partial Map", - colors=colors) - new_norm = matplotlib.colors.Normalize(vmin=cmin, vmax=cmax) - sm = plt.cm.ScalarMappable(cmap=new_cmap, norm=new_norm) - sm._A = [] - cb = plt.colorbar(sm) - + _colorbar(with_colorbar, cmap_f, norm, min_val) return (fig, ax) diff --git a/contact_map/plot_utils.py b/contact_map/plot_utils.py new file mode 100644 index 0000000..ba2ff56 --- /dev/null +++ b/contact_map/plot_utils.py @@ -0,0 +1,48 @@ +import numpy as np + +try: # try loop for testing + import matplotlib + import matplotlib.pyplot as plt + from matplotlib.colors import LinearSegmentedColormap +except ImportError: # pragma: no cover + pass + +def ranged_colorbar(cmap, norm, cbmin, cbmax, name="Partial Map"): + """Create a colorbar with given endpoints. + + Parameters + ---------- + cmap : str or matplotlib.colors.Colormap + the base colormap to use + norm : matplotlib.colors.Normalize + the normalization (range of values) used in the image + cbmin : float + minimum value for the colorbar + cbmax : float + maximum value for the colorbar + name : str + name for the submap to be created + + Returns + ------- + matplotlib.colorbar.Colorbar + a colorbar restricted to the range given by cbmin, cbmax + """ + # see https://stackoverflow.com/questions/24746231 + if isinstance(cmap, str): + cmap_f = plt.get_cmap(cmap) + else: + cmap_f = cmap + cbmin_normed = float(cbmin - norm.vmin) / (norm.vmax - norm.vmin) + cbmax_normed = float(cbmax - norm.vmin) / (norm.vmax - norm.vmin) + n_colors = int(round((cbmax_normed - cbmin_normed) * cmap_f.N)) + colors = cmap_f(np.linspace(cbmin_normed, cbmax_normed, n_colors)) + new_cmap = LinearSegmentedColormap.from_list(name="Partial Map", + colors=colors) + new_norm = matplotlib.colors.Normalize(vmin=cbmin, vmax=cbmax) + sm = plt.cm.ScalarMappable(cmap=new_cmap, norm=new_norm) + sm._A = [] + cb = plt.colorbar(sm) + return cb + + diff --git a/contact_map/tests/test_contact_map.py b/contact_map/tests/test_contact_map.py index 6bd1f0e..b48f1c3 100644 --- a/contact_map/tests/test_contact_map.py +++ b/contact_map/tests/test_contact_map.py @@ -469,9 +469,10 @@ def setup(self): # HAS_MATPLOTLIB imported by contact_map wildcard @pytest.mark.skipif(not HAS_MATPLOTLIB, reason="Missing matplotlib") def test_plot(self): - # purely smoke test + # purely smoke tests self.residue_contacts.plot() self.atom_contacts.plot() + self.residue_contacts.plot(with_colorbar=False) def test_initialization(self): assert self.atom_contacts._object_f == self.topology.atom diff --git a/contact_map/tests/test_dask_runner.py b/contact_map/tests/test_dask_runner.py index 0566dcc..7f804be 100644 --- a/contact_map/tests/test_dask_runner.py +++ b/contact_map/tests/test_dask_runner.py @@ -1,5 +1,9 @@ -from .utils import * +# pylint: disable=wildcard-import, missing-docstring, protected-access +# pylint: disable=attribute-defined-outside-init, invalid-name, no-self-use +# pylint: disable=wrong-import-order, unused-wildcard-import + +from .utils import * from contact_map.dask_runner import * class TestDaskContactFrequency(object): diff --git a/contact_map/tests/test_plot_utils.py b/contact_map/tests/test_plot_utils.py new file mode 100644 index 0000000..622ad49 --- /dev/null +++ b/contact_map/tests/test_plot_utils.py @@ -0,0 +1,34 @@ + +# pylint: disable=wildcard-import, missing-docstring, protected-access +# pylint: disable=attribute-defined-outside-init, invalid-name, no-self-use +# pylint: disable=wrong-import-order, unused-wildcard-import + +from .utils import * + +from contact_map.plot_utils import * + + +@pytest.mark.parametrize("val", [0.5, 0.55, 0.6, 0.65, 0.7]) +@pytest.mark.parametrize("map_type", ["name", "cmap"]) +def test_ranged_colorbar_cmap(map_type, val): + matplotlib = pytest.importorskip("matplotlib") + norm = matplotlib.colors.Normalize(vmin=-1, vmax=1) + default_cmap = matplotlib.pyplot.get_cmap('seismic') + cmap = { + 'name': 'seismic', + 'cmap': default_cmap + }[map_type] + cbmin = 0.5 + cbmax = 0.7 + cb = ranged_colorbar(cmap, norm, cbmin, cbmax) + # slight error from different discretizations + atol = (norm.vmax - norm.vmin) / (cbmax - cbmin) / default_cmap.N + assert np.allclose([atol], [0.0390625]) # to remind that this is small + assert_allclose(cb.cmap(cb.norm(val)), default_cmap(norm(val)), + atol=atol) + + + + + + diff --git a/contact_map/tests/utils.py b/contact_map/tests/utils.py index b0dc8ea..b600d4e 100644 --- a/contact_map/tests/utils.py +++ b/contact_map/tests/utils.py @@ -2,7 +2,7 @@ import numpy as np from pkg_resources import resource_filename -from numpy.testing import assert_array_equal +from numpy.testing import assert_array_equal, assert_allclose import pytest def find_testfile(fname): From 13e49c254b71e0edd62e9142e4c33f9159dae8eb Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Mon, 22 Jan 2018 18:34:29 +0100 Subject: [PATCH 29/32] [codeclim] remove extra text; [cov] diff plotting --- contact_map/contact_map.py | 14 -------------- contact_map/tests/test_contact_map.py | 8 ++++++++ 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 1dad07b..247fcfc 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -30,8 +30,6 @@ # build a voxel list for the haystack, and then checks the voxel for each # query atom. Doesn't look like anything is doing that now: neighbors # doesn't use voxels, neighborlist doesn't limit the haystack -# * (dream) parallelization: map-reduce like himach should work great for -# this def residue_neighborhood(residue, n=1): """Find n nearest neighbor residues @@ -74,8 +72,6 @@ def _colorbar(with_colorbar, cmap_f, norm, min_val): return cb - - class ContactCount(object): """Return object when dealing with contacts (residue or atom). @@ -694,16 +690,6 @@ def __eq__(self, other): and self._residue_contacts == other._residue_contacts) return is_equal - #def to_dict(self): - #dct = super(ContactMap, self).to_dict() - #atom_cntcts = self._serialize_contact_counter(self._atom_contacts) - #res_cntcts = self._serialize_contact_counter(self._residue_contacts) - #dct.update({ - #'atom_contacts': atom_cntcts, - #'residue_contacts': res_cntcts - #}) - #return dct - class ContactFrequency(ContactObject): """ diff --git a/contact_map/tests/test_contact_map.py b/contact_map/tests/test_contact_map.py index b48f1c3..9a82a62 100644 --- a/contact_map/tests/test_contact_map.py +++ b/contact_map/tests/test_contact_map.py @@ -698,3 +698,11 @@ def test_saving(self): assert diff.atom_contacts.counter == reloaded.atom_contacts.counter os.remove(test_file) + def test_plot(self): + # smoke test; checks that we cover negative counts in plotting + ttraj = ContactFrequency(traj[0:4], cutoff=0.075, + n_neighbors_ignored=0) + frame = ContactMap(traj[4], cutoff=0.075, n_neighbors_ignored=0) + diff = ttraj - frame + diff.residue_contacts.plot() + From 55ba6967710e2cfca14e1dc4c65920b5b4971430 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Mon, 22 Jan 2018 18:42:22 +0100 Subject: [PATCH 30/32] Skip matplotlib-based test when no matplotlib! --- contact_map/tests/test_contact_map.py | 1 + 1 file changed, 1 insertion(+) diff --git a/contact_map/tests/test_contact_map.py b/contact_map/tests/test_contact_map.py index 9a82a62..013f010 100644 --- a/contact_map/tests/test_contact_map.py +++ b/contact_map/tests/test_contact_map.py @@ -698,6 +698,7 @@ def test_saving(self): assert diff.atom_contacts.counter == reloaded.atom_contacts.counter os.remove(test_file) + @pytest.mark.skipif(not HAS_MATPLOTLIB, reason="Missing matplotlib") def test_plot(self): # smoke test; checks that we cover negative counts in plotting ttraj = ContactFrequency(traj[0:4], cutoff=0.075, From 4ceef5926632acd7d96ea25a28d8d2b789491902 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Mon, 22 Jan 2018 19:17:10 +0100 Subject: [PATCH 31/32] [codeclim] Refactor to separate ContactCount --- contact_map/__init__.py | 4 +- contact_map/contact_count.py | 211 ++++++++++++++++++++++++ contact_map/contact_map.py | 209 +---------------------- contact_map/tests/test_contact_count.py | 141 ++++++++++++++++ contact_map/tests/test_contact_map.py | 137 +-------------- docs/api.rst | 4 +- 6 files changed, 362 insertions(+), 344 deletions(-) create mode 100644 contact_map/contact_count.py create mode 100644 contact_map/tests/test_contact_count.py diff --git a/contact_map/__init__.py b/contact_map/__init__.py index 76c6042..96a24f9 100644 --- a/contact_map/__init__.py +++ b/contact_map/__init__.py @@ -6,9 +6,11 @@ __version__ = version.version from .contact_map import ( - ContactMap, ContactFrequency, ContactDifference, ContactCount + ContactMap, ContactFrequency, ContactDifference ) +from .contact_count import ContactCount + from .min_dist import NearestAtoms, MinimumDistanceCounter from .dask_runner import DaskContactFrequency diff --git a/contact_map/contact_count.py b/contact_map/contact_count.py new file mode 100644 index 0000000..d0876cf --- /dev/null +++ b/contact_map/contact_count.py @@ -0,0 +1,211 @@ +import scipy +import numpy as np +import pandas as pd + +from .plot_utils import ranged_colorbar + +# matplotlib is technically optional, but required for plotting +try: + import matplotlib + import matplotlib.pyplot as plt +except ImportError: + HAS_MATPLOTLIB = False +else: + HAS_MATPLOTLIB = True + +def _colorbar(with_colorbar, cmap_f, norm, min_val): + if with_colorbar is False: + return None + elif with_colorbar is True: + cbmin = np.floor(min_val) # [-1.0..0.0] => -1; [0.0..1.0] => 0 + cbmax = 1.0 + cb = ranged_colorbar(cmap_f, norm, cbmin, cbmax) + # leave open other inputs to be parsed later (like tuples) + return cb + +class ContactCount(object): + """Return object when dealing with contacts (residue or atom). + + This contains all the information about the contacts of a given type. + This information can be represented several ways. One is as a list of + contact pairs, each associated with the fraction of time the contact + occurs. Another is as a matrix, where the rows and columns label the + pair number, and the value is the fraction of time. This class provides + several methods to get different representations of this data for + further analysis. + + In general, instances of this class shouldn't be created by a user using + ``__init__``; instead, they will be returned by other methods. So users + will often need to use this object for analysis. + + Parameters + ---------- + counter : :class:`collections.Counter` + the counter describing the count of how often the contact occurred; + key is a frozenset of a pair of numbers (identifying the + atoms/residues); value is the raw count of the number of times it + occurred + object_f : callable + method to obtain the object associated with the number used in + ``counter``; typically :meth:`mdtraj.Topology.residue` or + :meth:`mdtraj.Topology.atom`. + n_x : int + number of objects in the x direction (used in plotting) + n_y : int + number of objects in the y direction (used in plotting) + """ + def __init__(self, counter, object_f, n_x, n_y): + self._counter = counter + self._object_f = object_f + self.n_x = n_x + self.n_y = n_y + + @property + def counter(self): + """ + :class:`collections.Counter` : + keys use index number; count is contact occurrences + """ + return self._counter + + @property + def sparse_matrix(self): + """ + :class:`scipy.sparse.dok.dok_matrix` : + sparse matrix representation of contacts + + Rows/columns correspond to indices and the values correspond to + the count + """ + mtx = scipy.sparse.dok_matrix((self.n_x, self.n_y)) + for (k, v) in self._counter.items(): + key = list(k) + mtx[key[0], key[1]] = v + mtx[key[1], key[0]] = v + return mtx + + @property + def df(self): + """ + :class:`pandas.SparseDataFrame` : + DataFrame representation of the contact matrix + + Rows/columns correspond to indices and the values correspond to + the count + """ + mtx = self.sparse_matrix.tocoo() + index = list(range(self.n_x)) + columns = list(range(self.n_y)) + return pd.SparseDataFrame(mtx, index=index, columns=columns) + + def plot(self, cmap='seismic', vmin=-1.0, vmax=1.0, with_colorbar=True): + """ + Plot contact matrix (requires matplotlib) + + Parameters + ---------- + cmap : str + color map name, default 'seismic' + vmin : float + minimum value for color map interpolation; default -1.0 + vmax : float + maximum value for color map interpolation; default 1.0 + + Returns + ------- + fig : :class:`matplotlib.Figure` + matplotlib figure object for this plot + ax : :class:`matplotlib.Axes` + matplotlib axes object for this plot + """ + if not HAS_MATPLOTLIB: # pragma: no cover + raise RuntimeError("Error importing matplotlib") + norm = matplotlib.colors.Normalize(vmin=vmin, vmax=vmax) + cmap_f = plt.get_cmap(cmap) + + fig, ax = plt.subplots() + ax.axis([0, self.n_x, 0, self.n_y]) + ax.set_facecolor(cmap_f(norm(0.0))) + + min_val = 0.0 + + for (pair, value) in self.counter.items(): + if value < min_val: + min_val = value + pair_list = list(pair) + patch_0 = matplotlib.patches.Rectangle( + pair_list, 1, 1, + facecolor=cmap_f(norm(value)), + linewidth=0 + ) + patch_1 = matplotlib.patches.Rectangle( + (pair_list[1], pair_list[0]), 1, 1, + facecolor=cmap_f(norm(value)), + linewidth=0 + ) + ax.add_patch(patch_0) + ax.add_patch(patch_1) + + _colorbar(with_colorbar, cmap_f, norm, min_val) + + return (fig, ax) + + def most_common(self, obj=None): + """ + Most common values (ordered) with object as keys. + + This uses the objects for the contact pair (typically MDTraj + ``Atom`` or ``Residue`` objects), instead of numeric indices. This + is more readable and can be easily used for further manipulation. + + Parameters + ---------- + obj : MDTraj Atom or Residue + if given, the return value only has entries including this + object (allowing one to, for example, get the most common + contacts with a specific residue) + + Returns + ------- + list : + the most common contacts in order. If the list is ``l``, then + each element ``l[e]`` is a tuple with two parts: ``l[e][0]`` is + the key, which is a pair of Atom or Residue objects, and + ``l[e][1]`` is the count of how often that contact occurred. + + See also + -------- + most_common_idx : same thing, using index numbers as key + """ + if obj is None: + result = [ + ([self._object_f(idx) for idx in common[0]], common[1]) + for common in self.most_common_idx() + ] + else: + obj_idx = obj.index + result = [ + ([self._object_f(idx) for idx in common[0]], common[1]) + for common in self.most_common_idx() + if obj_idx in common[0] + ] + return result + + def most_common_idx(self): + """ + Most common values (ordered) with indices as keys. + + Returns + ------- + list : + the most common contacts in order. The if the list is ``l``, + then each element ``l[e]`` consists of two parts: ``l[e][0]`` is + a pair of integers, representing the indices of the objects + associated with the contact, and ``l[e][1]`` is the count of how + often that contact occurred + + See also + -------- + most_common : same thing, using objects as key + """ + return self._counter.most_common() diff --git a/contact_map/contact_map.py b/contact_map/contact_map.py index 247fcfc..005d938 100644 --- a/contact_map/contact_map.py +++ b/contact_map/contact_map.py @@ -7,23 +7,14 @@ import itertools import pickle import json -import scipy import numpy as np import pandas as pd import mdtraj as md +from .contact_count import ContactCount from .plot_utils import ranged_colorbar from .py_2_3 import inspect_method_arguments -# matplotlib is technically optional, but required for plotting -try: - import matplotlib - import matplotlib.pyplot as plt -except ImportError: - HAS_MATPLOTLIB = False -else: - HAS_MATPLOTLIB = True - # TODO: # * switch to something where you can define the haystack -- the trick is to # replace the current mdtraj._compute_neighbors with something that @@ -61,204 +52,6 @@ def _residue_and_index(residue, topology): res = topology.residue(res_idx) return (res, res_idx) -def _colorbar(with_colorbar, cmap_f, norm, min_val): - if with_colorbar is False: - return None - elif with_colorbar is True: - cbmin = np.floor(min_val) # [-1.0..0.0] => -1; [0.0..1.0] => 0 - cbmax = 1.0 - cb = ranged_colorbar(cmap_f, norm, cbmin, cbmax) - # leave open other inputs to be parsed later (like tuples) - return cb - - -class ContactCount(object): - """Return object when dealing with contacts (residue or atom). - - This contains all the information about the contacts of a given type. - This information can be represented several ways. One is as a list of - contact pairs, each associated with the fraction of time the contact - occurs. Another is as a matrix, where the rows and columns label the - pair number, and the value is the fraction of time. This class provides - several methods to get different representations of this data for - further analysis. - - In general, instances of this class shouldn't be created by a user using - ``__init__``; instead, they will be returned by other methods. So users - will often need to use this object for analysis. - - Parameters - ---------- - counter : :class:`collections.Counter` - the counter describing the count of how often the contact occurred; - key is a frozenset of a pair of numbers (identifying the - atoms/residues); value is the raw count of the number of times it - occurred - object_f : callable - method to obtain the object associated with the number used in - ``counter``; typically :meth:`mdtraj.Topology.residue` or - :meth:`mdtraj.Topology.atom`. - n_x : int - number of objects in the x direction (used in plotting) - n_y : int - number of objects in the y direction (used in plotting) - """ - def __init__(self, counter, object_f, n_x, n_y): - self._counter = counter - self._object_f = object_f - self.n_x = n_x - self.n_y = n_y - - @property - def counter(self): - """ - :class:`collections.Counter` : - keys use index number; count is contact occurrences - """ - return self._counter - - @property - def sparse_matrix(self): - """ - :class:`scipy.sparse.dok.dok_matrix` : - sparse matrix representation of contacts - - Rows/columns correspond to indices and the values correspond to - the count - """ - mtx = scipy.sparse.dok_matrix((self.n_x, self.n_y)) - for (k, v) in self._counter.items(): - key = list(k) - mtx[key[0], key[1]] = v - mtx[key[1], key[0]] = v - return mtx - - @property - def df(self): - """ - :class:`pandas.SparseDataFrame` : - DataFrame representation of the contact matrix - - Rows/columns correspond to indices and the values correspond to - the count - """ - mtx = self.sparse_matrix.tocoo() - index = list(range(self.n_x)) - columns = list(range(self.n_y)) - return pd.SparseDataFrame(mtx, index=index, columns=columns) - - def plot(self, cmap='seismic', vmin=-1.0, vmax=1.0, with_colorbar=True): - """ - Plot contact matrix (requires matplotlib) - - Parameters - ---------- - cmap : str - color map name, default 'seismic' - vmin : float - minimum value for color map interpolation; default -1.0 - vmax : float - maximum value for color map interpolation; default 1.0 - - Returns - ------- - fig : :class:`matplotlib.Figure` - matplotlib figure object for this plot - ax : :class:`matplotlib.Axes` - matplotlib axes object for this plot - """ - if not HAS_MATPLOTLIB: # pragma: no cover - raise RuntimeError("Error importing matplotlib") - norm = matplotlib.colors.Normalize(vmin=vmin, vmax=vmax) - cmap_f = plt.get_cmap(cmap) - - fig, ax = plt.subplots() - ax.axis([0, self.n_x, 0, self.n_y]) - ax.set_facecolor(cmap_f(norm(0.0))) - - min_val = 0.0 - - for (pair, value) in self.counter.items(): - if value < min_val: - min_val = value - pair_list = list(pair) - patch_0 = matplotlib.patches.Rectangle( - pair_list, 1, 1, - facecolor=cmap_f(norm(value)), - linewidth=0 - ) - patch_1 = matplotlib.patches.Rectangle( - (pair_list[1], pair_list[0]), 1, 1, - facecolor=cmap_f(norm(value)), - linewidth=0 - ) - ax.add_patch(patch_0) - ax.add_patch(patch_1) - - _colorbar(with_colorbar, cmap_f, norm, min_val) - - return (fig, ax) - - def most_common(self, obj=None): - """ - Most common values (ordered) with object as keys. - - This uses the objects for the contact pair (typically MDTraj - ``Atom`` or ``Residue`` objects), instead of numeric indices. This - is more readable and can be easily used for further manipulation. - - Parameters - ---------- - obj : MDTraj Atom or Residue - if given, the return value only has entries including this - object (allowing one to, for example, get the most common - contacts with a specific residue) - - Returns - ------- - list : - the most common contacts in order. If the list is ``l``, then - each element ``l[e]`` is a tuple with two parts: ``l[e][0]`` is - the key, which is a pair of Atom or Residue objects, and - ``l[e][1]`` is the count of how often that contact occurred. - - See also - -------- - most_common_idx : same thing, using index numbers as key - """ - if obj is None: - result = [ - ([self._object_f(idx) for idx in common[0]], common[1]) - for common in self.most_common_idx() - ] - else: - obj_idx = obj.index - result = [ - ([self._object_f(idx) for idx in common[0]], common[1]) - for common in self.most_common_idx() - if obj_idx in common[0] - ] - return result - - def most_common_idx(self): - """ - Most common values (ordered) with indices as keys. - - Returns - ------- - list : - the most common contacts in order. The if the list is ``l``, - then each element ``l[e]`` consists of two parts: ``l[e][0]`` is - a pair of integers, representing the indices of the objects - associated with the contact, and ``l[e][1]`` is the count of how - often that contact occurred - - See also - -------- - most_common : same thing, using objects as key - """ - return self._counter.most_common() - class ContactObject(object): """ diff --git a/contact_map/tests/test_contact_count.py b/contact_map/tests/test_contact_count.py new file mode 100644 index 0000000..12d75cb --- /dev/null +++ b/contact_map/tests/test_contact_count.py @@ -0,0 +1,141 @@ +import numpy as np + +# pylint: disable=wildcard-import, missing-docstring, protected-access +# pylint: disable=attribute-defined-outside-init, invalid-name, no-self-use +# pylint: disable=wrong-import-order, unused-wildcard-import + +# includes pytest +from .utils import * +from contact_map.contact_map import ContactFrequency +from .test_contact_map import (traj, traj_atom_contact_count, + traj_residue_contact_count, + check_most_common_order) + +from contact_map.contact_count import * + +class TestContactCount(object): + def setup(self): + self.map = ContactFrequency(traj, cutoff=0.075, + n_neighbors_ignored=0) + self.topology = self.map.topology + self.atom_contacts = self.map.atom_contacts + self.residue_contacts = self.map.residue_contacts + + self.atom_matrix = np.array([ + # 0 1 2 3 4 5 6 7 8 9 + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2], # 0 + [0.0, 0.0, 0.0, 0.0, 0.8, 0.2, 0.0, 0.0, 0.2, 0.2], # 1 + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], # 2 + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], # 3 + [0.0, 0.8, 0.0, 0.0, 0.0, 0.0, 1.0, 0.4, 0.2, 0.0], # 4 + [0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 1.0, 0.4, 0.2, 0.0], # 5 + [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0], # 6 + [0.0, 0.0, 0.0, 0.0, 0.4, 0.4, 0.0, 0.0, 0.0, 0.0], # 7 + [0.2, 0.2, 0.0, 0.0, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0], # 8 + [0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] # 9 + ]) + self.residue_matrix = np.array([ + # 0 1 2 3 4 + [0.0, 0.0, 1.0, 0.0, 0.2], # 0 + [0.0, 0.0, 0.0, 0.0, 0.0], # 1 + [1.0, 0.0, 0.0, 1.0, 0.2], # 2 + [0.0, 0.0, 1.0, 0.0, 0.0], # 3 + [0.2, 0.0, 0.2, 0.0, 0.0] # 4 + ]) + + # HAS_MATPLOTLIB imported by contact_map wildcard + @pytest.mark.skipif(not HAS_MATPLOTLIB, reason="Missing matplotlib") + def test_plot(self): + # purely smoke tests + self.residue_contacts.plot() + self.atom_contacts.plot() + self.residue_contacts.plot(with_colorbar=False) + + def test_initialization(self): + assert self.atom_contacts._object_f == self.topology.atom + assert self.atom_contacts.n_x == self.topology.n_atoms + assert self.atom_contacts.n_y == self.topology.n_atoms + assert self.residue_contacts._object_f == self.topology.residue + assert self.residue_contacts.n_x == self.topology.n_residues + assert self.residue_contacts.n_y == self.topology.n_residues + + def test_sparse_matrix(self): + assert_array_equal(self.map.atom_contacts.sparse_matrix.todense(), + self.atom_matrix) + assert_array_equal(self.map.residue_contacts.sparse_matrix.todense(), + self.residue_matrix) + + def test_df(self): + atom_df = self.map.atom_contacts.df + residue_df = self.map.residue_contacts.df + assert isinstance(atom_df, pd.SparseDataFrame) + assert isinstance(residue_df, pd.SparseDataFrame) + + assert_array_equal(atom_df.to_dense().as_matrix(), + zero_to_nan(self.atom_matrix)) + assert_array_equal(residue_df.to_dense().as_matrix(), + zero_to_nan(self.residue_matrix)) + + @pytest.mark.parametrize("obj_type", ['atom', 'res']) + def test_most_common(self, obj_type): + if obj_type == 'atom': + source_expected = traj_atom_contact_count + contacts = self.map.atom_contacts + obj_func = self.topology.atom + elif obj_type == 'res': + source_expected = traj_residue_contact_count + contacts = self.map.residue_contacts + obj_func = self.topology.residue + else: + raise RuntimeError("This shouldn't happen") + + expected = [ + (frozenset([obj_func(idx) for idx in ll[0]]), float(ll[1]) / 5.0) + for ll in source_expected.items() + ] + + most_common = contacts.most_common() + cleaned = [(frozenset(ll[0]), ll[1]) for ll in most_common] + + check_most_common_order(most_common) + assert set(cleaned) == set(expected) + + @pytest.mark.parametrize("obj_type", ['atom', 'res']) + def test_most_common_with_object(self, obj_type): + top = self.topology + if obj_type == 'atom': + contacts = self.map.atom_contacts + obj = top.atom(4) + expected = [(frozenset([obj, top.atom(6)]), 1.0), + (frozenset([obj, top.atom(1)]), 0.8), + (frozenset([obj, top.atom(7)]), 0.4), + (frozenset([obj, top.atom(8)]), 0.2)] + elif obj_type == 'res': + contacts = self.map.residue_contacts + obj = self.topology.residue(2) + expected = [(frozenset([obj, top.residue(0)]), 1.0), + (frozenset([obj, top.residue(3)]), 1.0), + (frozenset([obj, top.residue(4)]), 0.2)] + else: + raise RuntimeError("This shouldn't happen") + + most_common = contacts.most_common(obj) + cleaned = [(frozenset(ll[0]), ll[1]) for ll in most_common] + + check_most_common_order(most_common) + assert set(cleaned) == set(expected) + + @pytest.mark.parametrize("obj_type", ['atom', 'res']) + def test_most_common_idx(self, obj_type): + if obj_type == 'atom': + source_expected = traj_atom_contact_count + contacts = self.map.atom_contacts + elif obj_type == 'res': + source_expected = traj_residue_contact_count + contacts = self.map.residue_contacts + else: + raise RuntimeError("This shouldn't happen") + + expected_count = [(ll[0], float(ll[1]) / 5.0) + for ll in source_expected.items()] + assert set(contacts.most_common_idx()) == set(expected_count) diff --git a/contact_map/tests/test_contact_map.py b/contact_map/tests/test_contact_map.py index 013f010..99af6cd 100644 --- a/contact_map/tests/test_contact_map.py +++ b/contact_map/tests/test_contact_map.py @@ -1,8 +1,7 @@ import os import collections -import numpy as np -import mdtraj as md import json +import mdtraj as md # pylint: disable=wildcard-import, missing-docstring, protected-access # pylint: disable=attribute-defined-outside-init, invalid-name, no-self-use @@ -13,6 +12,7 @@ # stuff to be testing in this file from contact_map.contact_map import * +from contact_map.contact_count import ContactCount, HAS_MATPLOTLIB traj = md.load(find_testfile("trajectory.pdb")) @@ -169,8 +169,8 @@ def test_dict_serialization_cycle(self, idx): def test_json_serialization_cycle(self, idx): m = self.maps[idx] - json = m.to_json() - m2 = ContactMap.from_json(json) + json_str = m.to_json() + m2 = ContactMap.from_json(json_str) _contact_object_compare(m, m2) assert m == m2 @@ -436,134 +436,6 @@ def test_subtract_contact_frequency(self): last_frame.residue_contacts.counter -class TestContactCount(object): - def setup(self): - self.map = ContactFrequency(traj, cutoff=0.075, - n_neighbors_ignored=0) - self.topology = self.map.topology - self.atom_contacts = self.map.atom_contacts - self.residue_contacts = self.map.residue_contacts - - self.atom_matrix = np.array([ - # 0 1 2 3 4 5 6 7 8 9 - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2], # 0 - [0.0, 0.0, 0.0, 0.0, 0.8, 0.2, 0.0, 0.0, 0.2, 0.2], # 1 - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], # 2 - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], # 3 - [0.0, 0.8, 0.0, 0.0, 0.0, 0.0, 1.0, 0.4, 0.2, 0.0], # 4 - [0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 1.0, 0.4, 0.2, 0.0], # 5 - [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0], # 6 - [0.0, 0.0, 0.0, 0.0, 0.4, 0.4, 0.0, 0.0, 0.0, 0.0], # 7 - [0.2, 0.2, 0.0, 0.0, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0], # 8 - [0.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] # 9 - ]) - self.residue_matrix = np.array([ - # 0 1 2 3 4 - [0.0, 0.0, 1.0, 0.0, 0.2], # 0 - [0.0, 0.0, 0.0, 0.0, 0.0], # 1 - [1.0, 0.0, 0.0, 1.0, 0.2], # 2 - [0.0, 0.0, 1.0, 0.0, 0.0], # 3 - [0.2, 0.0, 0.2, 0.0, 0.0] # 4 - ]) - - # HAS_MATPLOTLIB imported by contact_map wildcard - @pytest.mark.skipif(not HAS_MATPLOTLIB, reason="Missing matplotlib") - def test_plot(self): - # purely smoke tests - self.residue_contacts.plot() - self.atom_contacts.plot() - self.residue_contacts.plot(with_colorbar=False) - - def test_initialization(self): - assert self.atom_contacts._object_f == self.topology.atom - assert self.atom_contacts.n_x == self.topology.n_atoms - assert self.atom_contacts.n_y == self.topology.n_atoms - assert self.residue_contacts._object_f == self.topology.residue - assert self.residue_contacts.n_x == self.topology.n_residues - assert self.residue_contacts.n_y == self.topology.n_residues - - def test_sparse_matrix(self): - assert_array_equal(self.map.atom_contacts.sparse_matrix.todense(), - self.atom_matrix) - assert_array_equal(self.map.residue_contacts.sparse_matrix.todense(), - self.residue_matrix) - - def test_df(self): - atom_df = self.map.atom_contacts.df - residue_df = self.map.residue_contacts.df - assert isinstance(atom_df, pd.SparseDataFrame) - assert isinstance(residue_df, pd.SparseDataFrame) - - assert_array_equal(atom_df.to_dense().as_matrix(), - zero_to_nan(self.atom_matrix)) - assert_array_equal(residue_df.to_dense().as_matrix(), - zero_to_nan(self.residue_matrix)) - - @pytest.mark.parametrize("obj_type", ['atom', 'res']) - def test_most_common(self, obj_type): - if obj_type == 'atom': - source_expected = traj_atom_contact_count - contacts = self.map.atom_contacts - obj_func = self.topology.atom - elif obj_type == 'res': - source_expected = traj_residue_contact_count - contacts = self.map.residue_contacts - obj_func = self.topology.residue - else: - raise RuntimeError("This shouldn't happen") - - expected = [ - (frozenset([obj_func(idx) for idx in ll[0]]), float(ll[1]) / 5.0) - for ll in source_expected.items() - ] - - most_common = contacts.most_common() - cleaned = [(frozenset(ll[0]), ll[1]) for ll in most_common] - - check_most_common_order(most_common) - assert set(cleaned) == set(expected) - - @pytest.mark.parametrize("obj_type", ['atom', 'res']) - def test_most_common_with_object(self, obj_type): - top = self.topology - if obj_type == 'atom': - contacts = self.map.atom_contacts - obj = top.atom(4) - expected = [(frozenset([obj, top.atom(6)]), 1.0), - (frozenset([obj, top.atom(1)]), 0.8), - (frozenset([obj, top.atom(7)]), 0.4), - (frozenset([obj, top.atom(8)]), 0.2)] - elif obj_type == 'res': - contacts = self.map.residue_contacts - obj = self.topology.residue(2) - expected = [(frozenset([obj, top.residue(0)]), 1.0), - (frozenset([obj, top.residue(3)]), 1.0), - (frozenset([obj, top.residue(4)]), 0.2)] - else: - raise RuntimeError("This shouldn't happen") - - most_common = contacts.most_common(obj) - cleaned = [(frozenset(ll[0]), ll[1]) for ll in most_common] - - check_most_common_order(most_common) - assert set(cleaned) == set(expected) - - @pytest.mark.parametrize("obj_type", ['atom', 'res']) - def test_most_common_idx(self, obj_type): - if obj_type == 'atom': - source_expected = traj_atom_contact_count - contacts = self.map.atom_contacts - elif obj_type == 'res': - source_expected = traj_residue_contact_count - contacts = self.map.residue_contacts - else: - raise RuntimeError("This shouldn't happen") - - expected_count = [(ll[0], float(ll[1]) / 5.0) - for ll in source_expected.items()] - assert set(contacts.most_common_idx()) == set(expected_count) - - class TestContactDifference(object): def test_diff_traj_frame(self): ttraj = ContactFrequency(traj[0:4], cutoff=0.075, @@ -706,4 +578,3 @@ def test_plot(self): frame = ContactMap(traj[4], cutoff=0.075, n_neighbors_ignored=0) diff = ttraj - frame diff.residue_contacts.plot() - diff --git a/docs/api.rst b/docs/api.rst index d0c5df2..61376fb 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -37,7 +37,7 @@ Parallelization of ``ContactFrequency`` :toctree: api/generated/ frequency_task - dask_runner + DaskContactFrequency ----- @@ -81,7 +81,7 @@ Most common ~~~~~~~~~~~ Several methods begin with ``most_common``. The behavior for this is -inspired by the behavior of :method:`collections.Counter.most_common`, which +inspired by the behavior of :meth:`collections.Counter.most_common`, which returns elements and there counts ordered from most to least. Note that, unlike the original, we usually do not implement a way to only return the first ``n`` results (although this may be added later). From e5581e42ba1f9f22d6372a91f378b9371bdbc319 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Mon, 22 Jan 2018 20:26:03 +0100 Subject: [PATCH 32/32] Bump version to 0.3.0 --- ci/conda-recipe/meta.yaml | 2 +- setup.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/conda-recipe/meta.yaml b/ci/conda-recipe/meta.yaml index c22c36c..d56c755 100644 --- a/ci/conda-recipe/meta.yaml +++ b/ci/conda-recipe/meta.yaml @@ -1,7 +1,7 @@ package: name: contact_map # add ".dev0" for unreleased versions - version: "0.2.1.dev0" + version: "0.3.0" source: path: ../../ diff --git a/setup.py b/setup.py index 3f5963c..a149a9e 100644 --- a/setup.py +++ b/setup.py @@ -9,8 +9,8 @@ ####################### USER SETUP AREA ################################# # * VERSION: base version (do not include .dev0, etc -- that's automatic) # * IS_RELEASE: whether this is a release -VERSION = "0.2.1" -IS_RELEASE = False +VERSION = "0.3.0" +IS_RELEASE = True DEV_NUM = 0 # always 0: we don't do public (pypi) .dev releases PRE_TYPE = "" # a, b, or rc (although we rarely release such versions)