barman-2.10/0000755000015500001620000000000013571162463011056 5ustar 00000000000000barman-2.10/MANIFEST.in0000644000015500001620000000030413571162460012606 0ustar 00000000000000recursive-include barman *.py recursive-include rpm * recursive-include doc * include scripts/barman.bash_completion include AUTHORS NEWS ChangeLog LICENSE MANIFEST.in setup.py INSTALL README.rst barman-2.10/INSTALL0000644000015500001620000000034113571162460012102 0ustar 00000000000000Barman INSTALL instructions Copyright (C) 2011-2018 2ndQuadrant Limited For further information, see the "Installation" section in the official manual of Barman or the Markdown source file: doc/manual/16-installation.en.md. barman-2.10/barman/0000755000015500001620000000000013571162463012316 5ustar 00000000000000barman-2.10/barman/hooks.py0000644000015500001620000002573213571162460014021 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module contains the logic to run hook scripts """ import json import logging import time from barman import version from barman.command_wrappers import Command from barman.exceptions import AbortedRetryHookScript, UnknownBackupIdException from barman.utils import force_str _logger = logging.getLogger(__name__) class HookScriptRunner(object): def __init__(self, backup_manager, name, phase=None, error=None, retry=False, **extra_env): """ Execute a hook script managing its environment """ self.backup_manager = backup_manager self.name = name self.extra_env = extra_env self.phase = phase self.error = error self.retry = retry self.environment = None self.exit_status = None self.exception = None self.script = None self.reset() def reset(self): """ Reset the status of the class. """ self.environment = dict(self.extra_env) config_file = self.backup_manager.config.config.config_file self.environment.update({ 'BARMAN_VERSION': version.__version__, 'BARMAN_SERVER': self.backup_manager.config.name, 'BARMAN_CONFIGURATION': config_file, 'BARMAN_HOOK': self.name, 'BARMAN_RETRY': str(1 if self.retry else 0), }) if self.error: self.environment['BARMAN_ERROR'] = force_str(self.error) if self.phase: self.environment['BARMAN_PHASE'] = self.phase script_config_name = "%s_%s" % (self.phase, self.name) else: script_config_name = self.name self.script = getattr(self.backup_manager.config, script_config_name, None) self.exit_status = None self.exception = None def env_from_backup_info(self, backup_info): """ Prepare the environment for executing a script :param BackupInfo backup_info: the backup metadata """ try: previous_backup = self.backup_manager.get_previous_backup( backup_info.backup_id) if previous_backup: previous_backup_id = previous_backup.backup_id else: previous_backup_id = '' except UnknownBackupIdException: previous_backup_id = '' try: next_backup = self.backup_manager.get_next_backup( backup_info.backup_id) if next_backup: next_backup_id = next_backup.backup_id else: next_backup_id = '' except UnknownBackupIdException: next_backup_id = '' self.environment.update({ 'BARMAN_BACKUP_DIR': backup_info.get_basebackup_directory(), 'BARMAN_BACKUP_ID': backup_info.backup_id, 'BARMAN_PREVIOUS_ID': previous_backup_id, 'BARMAN_NEXT_ID': next_backup_id, 'BARMAN_STATUS': backup_info.status, 'BARMAN_ERROR': backup_info.error or '', }) def env_from_wal_info(self, wal_info, full_path=None, error=None): """ Prepare the environment for executing a script :param WalFileInfo wal_info: the backup metadata :param str full_path: override wal_info.fullpath() result :param str|Exception error: An error message in case of failure """ self.environment.update({ 'BARMAN_SEGMENT': wal_info.name, 'BARMAN_FILE': str(full_path if full_path is not None else wal_info.fullpath(self.backup_manager.server)), 'BARMAN_SIZE': str(wal_info.size), 'BARMAN_TIMESTAMP': str(wal_info.time), 'BARMAN_COMPRESSION': wal_info.compression or '', 'BARMAN_ERROR': force_str(error or '') }) def env_from_recover(self, backup_info, dest, tablespaces, remote_command, error=None, **kwargs): """ Prepare the environment for executing a script :param BackupInfo backup_info: the backup metadata :param str dest: the destination directory :param dict[str,str]|None tablespaces: a tablespace name -> location map (for relocation) :param str|None remote_command: default None. The remote command to recover the base backup, in case of remote backup. :param str|Exception error: An error message in case of failure """ self.env_from_backup_info(backup_info) # Prepare a JSON representation of tablespace map tablespaces_map = '' if tablespaces: tablespaces_map = json.dumps(tablespaces, sort_keys=True) # Prepare a JSON representation of additional recovery options # Skip any empty argument kwargs_filtered = dict([(k, v) for k, v in kwargs.items() if v]) recover_options = '' if kwargs_filtered: recover_options = json.dumps(kwargs_filtered, sort_keys=True) self.environment.update({ 'BARMAN_DESTINATION_DIRECTORY': str(dest), 'BARMAN_TABLESPACES': tablespaces_map, 'BARMAN_REMOTE_COMMAND': str(remote_command or ''), 'BARMAN_RECOVER_OPTIONS': recover_options, 'BARMAN_ERROR': force_str(error or '') }) def run(self): """ Run a a hook script if configured. This method must never throw any exception """ # noinspection PyBroadException try: if self.script: _logger.debug("Attempt to run %s: %s", self.name, self.script) cmd = Command( self.script, env_append=self.environment, path=self.backup_manager.server.path, shell=True, check=False) self.exit_status = cmd() if self.exit_status != 0: details = "%s returned %d\n" \ "Output details:\n" \ % (self.script, self.exit_status) details += cmd.out details += cmd.err _logger.warning(details) else: _logger.debug("%s returned %d", self.script, self.exit_status) return self.exit_status except Exception as e: _logger.exception('Exception running %s', self.name) self.exception = e return None class RetryHookScriptRunner(HookScriptRunner): """ A 'retry' hook script is a special kind of hook script that Barman tries to run indefinitely until it either returns a SUCCESS or ABORT exit code. Retry hook scripts are executed immediately before (pre) and after (post) the command execution. Standard hook scripts are executed immediately before (pre) and after (post) the retry hook scripts. """ # Failed attempts before sleeping for NAP_TIME seconds ATTEMPTS_BEFORE_NAP = 5 # Short break after a failure (in seconds) BREAK_TIME = 3 # Long break (nap, in seconds) after ATTEMPTS_BEFORE_NAP failures NAP_TIME = 60 # ABORT (and STOP) exit code EXIT_ABORT_STOP = 63 # ABORT (and CONTINUE) exit code EXIT_ABORT_CONTINUE = 62 # SUCCESS exit code EXIT_SUCCESS = 0 def __init__(self, backup_manager, name, phase=None, error=None, **extra_env): super(RetryHookScriptRunner, self).__init__( backup_manager, name, phase, error, retry=True, **extra_env) def run(self): """ Run a a 'retry' hook script, if required by configuration. Barman will retry to run the script indefinitely until it returns a EXIT_SUCCESS, or an EXIT_ABORT_CONTINUE, or an EXIT_ABORT_STOP code. There are BREAK_TIME seconds of sleep between every try. Every ATTEMPTS_BEFORE_NAP failures, Barman will sleep for NAP_TIME seconds. """ # If there is no script, exit if self.script is not None: # Keep track of the number of attempts attempts = 1 while True: # Run the script using the standard hook method (inherited) super(RetryHookScriptRunner, self).run() # Run the script until it returns EXIT_ABORT_CONTINUE, # or an EXIT_ABORT_STOP, or EXIT_SUCCESS if self.exit_status in (self.EXIT_ABORT_CONTINUE, self.EXIT_ABORT_STOP, self.EXIT_SUCCESS): break # Check for the number of attempts if attempts <= self.ATTEMPTS_BEFORE_NAP: attempts += 1 # Take a short break _logger.debug("Retry again in %d seconds", self.BREAK_TIME) time.sleep(self.BREAK_TIME) else: # Reset the attempt number and take a longer nap _logger.debug("Reached %d failures. Take a nap " "then retry again in %d seconds", self.ATTEMPTS_BEFORE_NAP, self.NAP_TIME) attempts = 1 time.sleep(self.NAP_TIME) # Outside the loop check for the exit code. if self.exit_status == self.EXIT_ABORT_CONTINUE: # Warn the user if the script exited with EXIT_ABORT_CONTINUE # Notify EXIT_ABORT_CONTINUE exit status because success and # failures are already managed in the superclass run method _logger.warning("%s was aborted (got exit status %d, " "Barman resumes)", self.script, self.exit_status) elif self.exit_status == self.EXIT_ABORT_STOP: # Log the error and raise AbortedRetryHookScript exception _logger.error("%s was aborted (got exit status %d, " "Barman requested to stop)", self.script, self.exit_status) raise AbortedRetryHookScript(self) return self.exit_status barman-2.10/barman/postgres.py0000644000015500001620000015737213571162460014552 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module represents the interface towards a PostgreSQL server. """ import atexit import logging from abc import ABCMeta import psycopg2 from psycopg2.errorcodes import (DUPLICATE_OBJECT, OBJECT_IN_USE, UNDEFINED_OBJECT) from psycopg2.extensions import STATUS_IN_TRANSACTION, STATUS_READY from psycopg2.extras import DictCursor, NamedTupleCursor from barman.exceptions import (ConninfoException, PostgresAppNameError, PostgresConnectionError, PostgresDuplicateReplicationSlot, PostgresException, PostgresInvalidReplicationSlot, PostgresIsInRecovery, PostgresReplicationSlotInUse, PostgresReplicationSlotsFull, PostgresSuperuserRequired, PostgresUnsupportedFeature) from barman.infofile import Tablespace from barman.postgres_plumbing import function_name_map from barman.remote_status import RemoteStatusMixin from barman.utils import force_str, simplify_version, with_metaclass from barman.xlog import DEFAULT_XLOG_SEG_SIZE # This is necessary because the CONFIGURATION_LIMIT_EXCEEDED constant # has been added in psycopg2 2.5, but Barman supports version 2.4.2+ so # in case of import error we declare a constant providing the correct value. try: from psycopg2.errorcodes import CONFIGURATION_LIMIT_EXCEEDED except ImportError: CONFIGURATION_LIMIT_EXCEEDED = '53400' _logger = logging.getLogger(__name__) _live_connections = [] """ List of connections to be closed at the interpreter shutdown """ @atexit.register def _atexit(): """ Ensure that all the connections are correctly closed at interpreter shutdown """ # Take a copy of the list because the conn.close() method modify it for conn in list(_live_connections): _logger.warning( "Forcing %s cleanup during process shut down.", conn.__class__.__name__) conn.close() class PostgreSQL(with_metaclass(ABCMeta, RemoteStatusMixin)): """ This abstract class represents a generic interface to a PostgreSQL server. """ CHECK_QUERY = 'SELECT 1' def __init__(self, conninfo): """ Abstract base class constructor for PostgreSQL interface. :param str conninfo: Connection information (aka DSN) """ super(PostgreSQL, self).__init__() self.conninfo = conninfo self._conn = None self.allow_reconnect = True # Build a dictionary with connection info parameters # This is mainly used to speed up search in conninfo try: self.conn_parameters = self.parse_dsn(conninfo) except (ValueError, TypeError) as e: _logger.debug(e) raise ConninfoException('Cannot connect to postgres: "%s" ' 'is not a valid connection string' % conninfo) @staticmethod def parse_dsn(dsn): """ Parse connection parameters from 'conninfo' :param str dsn: Connection information (aka DSN) :rtype: dict[str,str] """ # TODO: this might be made more robust in the future return dict(x.split('=', 1) for x in dsn.split()) @staticmethod def encode_dsn(parameters): """ Build a connection string from a dictionary of connection parameters :param dict[str,str] parameters: Connection parameters :rtype: str """ # TODO: this might be made more robust in the future return ' '.join( ["%s=%s" % (k, v) for k, v in sorted(parameters.items())]) def get_connection_string(self, application_name=None): """ Return the connection string, adding the application_name parameter if requested, unless already defined by user in the connection string :param str application_name: the application_name to add :return str: the connection string """ conn_string = self.conninfo # check if the application name is already defined by user if application_name and 'application_name' not in self.conn_parameters: # Then add the it to the connection string conn_string += ' application_name=%s' % application_name return conn_string def connect(self): """ Generic function for Postgres connection (using psycopg2) """ if not self._check_connection(): try: self._conn = psycopg2.connect(self.conninfo) # If psycopg2 fails to connect to the host, # raise the appropriate exception except psycopg2.DatabaseError as e: raise PostgresConnectionError(force_str(e).strip()) # Register the connection to the list of live connections _live_connections.append(self) return self._conn def _check_connection(self): """ Return false if the connection is broken :rtype: bool """ # If the connection is not present return False if not self._conn: return False # Check if the connection works by running 'SELECT 1' cursor = None initial_status = None try: initial_status = self._conn.status cursor = self._conn.cursor() cursor.execute(self.CHECK_QUERY) # Rollback if initial status was IDLE because the CHECK QUERY # has started a new transaction. if initial_status == STATUS_READY: self._conn.rollback() except psycopg2.DatabaseError: # Connection is broken, so we need to reconnect self.close() # Raise an error if reconnect is not allowed if not self.allow_reconnect: raise PostgresConnectionError( "Connection lost, reconnection not allowed") return False finally: if cursor: cursor.close() return True def close(self): """ Close the connection to PostgreSQL """ if self._conn: # If the connection is still alive, rollback and close it if not self._conn.closed: if self._conn.status == STATUS_IN_TRANSACTION: self._conn.rollback() self._conn.close() # Remove the connection from the live connections list self._conn = None _live_connections.remove(self) def _cursor(self, *args, **kwargs): """ Return a cursor """ conn = self.connect() return conn.cursor(*args, **kwargs) @property def server_version(self): """ Version of PostgreSQL (returned by psycopg2) """ conn = self.connect() return conn.server_version @property def server_txt_version(self): """ Human readable version of PostgreSQL (calculated from server_version) :rtype: str|None """ try: conn = self.connect() major = int(conn.server_version / 10000) minor = int(conn.server_version / 100 % 100) patch = int(conn.server_version % 100) if major < 10: return "%d.%d.%d" % (major, minor, patch) if minor != 0: _logger.warning( "Unexpected non zero minor version %s in %s", minor, conn.server_version) return "%d.%d" % (major, patch) except PostgresConnectionError as e: _logger.debug("Error retrieving PostgreSQL version: %s", force_str(e).strip()) return None @property def server_major_version(self): """ PostgreSQL major version (calculated from server_txt_version) :rtype: str|None """ result = self.server_txt_version if result is not None: return simplify_version(result) return None class StreamingConnection(PostgreSQL): """ This class represents a streaming connection to a PostgreSQL server. """ CHECK_QUERY = 'IDENTIFY_SYSTEM' def __init__(self, conninfo): """ Streaming connection constructor :param str conninfo: Connection information (aka DSN) """ super(StreamingConnection, self).__init__(conninfo) # Make sure we connect using the 'replication' option which # triggers streaming replication protocol communication self.conn_parameters['replication'] = 'true' # ensure that the datestyle is set to iso, working around an # issue in some psycopg2 versions self.conn_parameters['options'] = '-cdatestyle=iso' # Override 'dbname' parameter. This operation is required to mimic # the behaviour of pg_receivexlog and pg_basebackup self.conn_parameters['dbname'] = 'replication' # Rebuild the conninfo string from the modified parameter lists self.conninfo = self.encode_dsn(self.conn_parameters) def connect(self): """ Connect to the PostgreSQL server. It reuses an existing connection. :returns: the connection to the server """ if self._check_connection(): return self._conn # Build a connection and set autocommit self._conn = super(StreamingConnection, self).connect() self._conn.autocommit = True return self._conn def fetch_remote_status(self): """ Returns the status of the connection to the PostgreSQL server. This method does not raise any exception in case of errors, but set the missing values to None in the resulting dictionary. :rtype: dict[str, None|str] """ result = dict.fromkeys( ('connection_error', 'streaming_supported', 'streaming', 'streaming_systemid', 'timeline', 'xlogpos'), None) try: # If the server is too old to support `pg_receivexlog`, # exit immediately. # This needs to be protected by the try/except because # `self.server_version` can raise a PostgresConnectionError if self.server_version < 90200: result["streaming_supported"] = False return result result["streaming_supported"] = True # Execute a IDENTIFY_SYSYEM to check the connection cursor = self._cursor() cursor.execute("IDENTIFY_SYSTEM") row = cursor.fetchone() # If something has been returned, barman is connected # to a replication backend if row: result['streaming'] = True # IDENTIFY_SYSTEM always return at least two values result['streaming_systemid'] = row[0] result['timeline'] = row[1] # PostgreSQL 9.1+ returns also the current xlog flush location if len(row) > 2: result['xlogpos'] = row[2] except psycopg2.ProgrammingError: # This is not a streaming connection result['streaming'] = False except PostgresConnectionError as e: result['connection_error'] = force_str(e).strip() _logger.warning("Error retrieving PostgreSQL status: %s", force_str(e).strip()) return result def create_physical_repslot(self, slot_name): """ Create a physical replication slot using the streaming connection :param str slot_name: Replication slot name """ cursor = self._cursor() try: # In the following query, the slot name is directly passed # to the CREATE_REPLICATION_SLOT command, without any # quoting. This is a characteristic of the streaming # connection, otherwise if will fail with a generic # "syntax error" cursor.execute('CREATE_REPLICATION_SLOT %s PHYSICAL' % slot_name) except psycopg2.DatabaseError as exc: if exc.pgcode == DUPLICATE_OBJECT: # A replication slot with the same name exists raise PostgresDuplicateReplicationSlot() elif exc.pgcode == CONFIGURATION_LIMIT_EXCEEDED: # Unable to create a new physical replication slot. # All slots are full. raise PostgresReplicationSlotsFull() else: raise PostgresException(force_str(exc).strip()) def drop_repslot(self, slot_name): """ Drop a physical replication slot using the streaming connection :param str slot_name: Replication slot name """ cursor = self._cursor() try: # In the following query, the slot name is directly passed # to the DROP_REPLICATION_SLOT command, without any # quoting. This is a characteristic of the streaming # connection, otherwise if will fail with a generic # "syntax error" cursor.execute('DROP_REPLICATION_SLOT %s' % slot_name) except psycopg2.DatabaseError as exc: if exc.pgcode == UNDEFINED_OBJECT: # A replication slot with the that name does not exist raise PostgresInvalidReplicationSlot() if exc.pgcode == OBJECT_IN_USE: # The replication slot is still in use raise PostgresReplicationSlotInUse() else: raise PostgresException(force_str(exc).strip()) class PostgreSQLConnection(PostgreSQL): """ This class represents a standard client connection to a PostgreSQL server. """ # Streaming replication client types STANDBY = 1 WALSTREAMER = 2 ANY_STREAMING_CLIENT = (STANDBY, WALSTREAMER) def __init__(self, conninfo, immediate_checkpoint=False, slot_name=None, application_name='barman'): """ PostgreSQL connection constructor. :param str conninfo: Connection information (aka DSN) :param bool immediate_checkpoint: Whether to do an immediate checkpoint when start a backup :param str|None slot_name: Replication slot name """ super(PostgreSQLConnection, self).__init__(conninfo) self.immediate_checkpoint = immediate_checkpoint self.slot_name = slot_name self.application_name = application_name self.configuration_files = None def connect(self): """ Connect to the PostgreSQL server. It reuses an existing connection. """ if self._check_connection(): return self._conn self._conn = super(PostgreSQLConnection, self).connect() server_version = self._conn.server_version use_app_name = 'application_name' in self.conn_parameters if server_version >= 90000 and not use_app_name: try: cur = self._conn.cursor() # Do not use parameter substitution with SET cur.execute('SET application_name TO %s' % self.application_name) cur.close() # If psycopg2 fails to set the application name, # raise the appropriate exception except psycopg2.ProgrammingError as e: raise PostgresAppNameError(force_str(e).strip()) return self._conn @property def server_txt_version(self): """ Human readable version of PostgreSQL (returned by the server) """ try: cur = self._cursor() cur.execute("SELECT version()") return cur.fetchone()[0].split()[1] except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error retrieving PostgreSQL version: %s", force_str(e).strip()) return None @property def has_pgespresso(self): """ Returns true if the `pgespresso` extension is available """ try: # pg_extension is only available from Postgres 9.1+ if self.server_version < 90100: return False cur = self._cursor() cur.execute("SELECT count(*) FROM pg_extension " "WHERE extname = 'pgespresso'") q_result = cur.fetchone()[0] return q_result > 0 except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error retrieving pgespresso information: %s", force_str(e).strip()) return None @property def is_in_recovery(self): """ Returns true if PostgreSQL server is in recovery mode (hot standby) """ try: # pg_is_in_recovery is only available from Postgres 9.0+ if self.server_version < 90000: return False cur = self._cursor() cur.execute("SELECT pg_is_in_recovery()") return cur.fetchone()[0] except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error calling pg_is_in_recovery() function: %s", force_str(e).strip()) return None @property def is_superuser(self): """ Returns true if current user has superuser privileges """ try: cur = self._cursor() cur.execute('SELECT usesuper FROM pg_user ' 'WHERE usename = CURRENT_USER') return cur.fetchone()[0] except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error calling is_superuser() function: %s", force_str(e).strip()) return None @property def current_xlog_info(self): """ Get detailed information about the current WAL position in PostgreSQL. This method returns a dictionary containing the following data: * location * file_name * file_offset * timestamp When executed on a standby server file_name and file_offset are always None :rtype: psycopg2.extras.DictRow """ try: cur = self._cursor(cursor_factory=DictCursor) if not self.is_in_recovery: cur.execute( "SELECT location, " "({pg_walfile_name_offset}(location)).*, " "CURRENT_TIMESTAMP AS timestamp " "FROM {pg_current_wal_lsn}() AS location" .format(**self.name_map)) return cur.fetchone() else: cur.execute( "SELECT location, " "NULL AS file_name, " "NULL AS file_offset, " "CURRENT_TIMESTAMP AS timestamp " "FROM {pg_last_wal_replay_lsn}() AS location" .format(**self.name_map)) return cur.fetchone() except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error retrieving current xlog " "detailed information: %s", force_str(e).strip()) return None @property def current_xlog_file_name(self): """ Get current WAL file from PostgreSQL :return str: current WAL file in PostgreSQL """ current_xlog_info = self.current_xlog_info if current_xlog_info is not None: return current_xlog_info['file_name'] return None @property def xlog_segment_size(self): """ Retrieve the size of one WAL file. In PostgreSQL 11, users will be able to change the WAL size at runtime. Up to PostgreSQL 10, included, the WAL size can be changed at compile time :return: The wal size (In bytes) """ # Prior to PostgreSQL 8.4, the wal segment size was not configurable, # even in compilation if self.server_version < 80400: return DEFAULT_XLOG_SEG_SIZE try: cur = self._cursor(cursor_factory=DictCursor) # We can't use the `get_setting` method here, because it # use `SHOW`, returning an human readable value such as "16MB", # while we prefer a raw value such as 16777216. cur.execute("SELECT setting " "FROM pg_settings " "WHERE name='wal_segment_size'") result = cur.fetchone() wal_segment_size = int(result[0]) # Prior to PostgreSQL 11, the wal segment size is returned in # blocks if self.server_version < 110000: cur.execute("SELECT setting " "FROM pg_settings " "WHERE name='wal_block_size'") result = cur.fetchone() wal_block_size = int(result[0]) wal_segment_size *= wal_block_size return wal_segment_size except ValueError as e: _logger.error("Error retrieving current xlog " "segment size: %s", force_str(e).strip()) return None @property def current_xlog_location(self): """ Get current WAL location from PostgreSQL :return str: current WAL location in PostgreSQL """ current_xlog_info = self.current_xlog_info if current_xlog_info is not None: return current_xlog_info['location'] return None @property def current_size(self): """ Returns the total size of the PostgreSQL server (requires superuser) """ if not self.is_superuser: return None try: cur = self._cursor() cur.execute( "SELECT sum(pg_tablespace_size(oid)) " "FROM pg_tablespace") return cur.fetchone()[0] except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error retrieving PostgreSQL total size: %s", force_str(e).strip()) return None @property def archive_timeout(self): """ Retrieve the archive_timeout setting in PostgreSQL :return: The archive timeout (in seconds) """ try: cur = self._cursor(cursor_factory=DictCursor) # We can't use the `get_setting` method here, because it # uses `SHOW`, returning an human readable value such as "5min", # while we prefer a raw value such as 300. cur.execute("SELECT setting " "FROM pg_settings " "WHERE name='archive_timeout'") result = cur.fetchone() archive_timeout = int(result[0]) return archive_timeout except ValueError as e: _logger.error("Error retrieving archive_timeout: %s", force_str(e).strip()) return None @property def checkpoint_timeout(self): """ Retrieve the checkpoint_timeout setting in PostgreSQL :return: The checkpoint timeout (in seconds) """ try: cur = self._cursor(cursor_factory=DictCursor) # We can't use the `get_setting` method here, because it # uses `SHOW`, returning an human readable value such as "5min", # while we prefer a raw value such as 300. cur.execute("SELECT setting " "FROM pg_settings " "WHERE name='checkpoint_timeout'") result = cur.fetchone() checkpoint_timeout = int(result[0]) return checkpoint_timeout except ValueError as e: _logger.error("Error retrieving checkpoint_timeout: %s", force_str(e).strip()) return None def get_archiver_stats(self): """ This method gathers statistics from pg_stat_archiver. Only for Postgres 9.4+ or greater. If not available, returns None. :return dict|None: a dictionary containing Postgres statistics from pg_stat_archiver or None """ try: # pg_stat_archiver is only available from Postgres 9.4+ if self.server_version < 90400: return None cur = self._cursor(cursor_factory=DictCursor) # Select from pg_stat_archiver statistics view, # retrieving statistics about WAL archiver process activity, # also evaluating if the server is archiving without issues # and the archived WALs per second rate. # # We are using current_settings to check for archive_mode=always. # current_setting does normalise its output so we can just # check for 'always' settings using a direct string # comparison cur.execute( "SELECT *, " "current_setting('archive_mode') IN ('on', 'always') " "AND (last_failed_wal IS NULL " "OR last_failed_wal LIKE '%.history' " "AND substring(last_failed_wal from 1 for 8) " "<= substring(last_archived_wal from 1 for 8) " "OR last_failed_time <= last_archived_time) " "AS is_archiving, " "CAST (archived_count AS NUMERIC) " "/ EXTRACT (EPOCH FROM age(now(), stats_reset)) " "AS current_archived_wals_per_second " "FROM pg_stat_archiver") return cur.fetchone() except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error retrieving pg_stat_archive data: %s", force_str(e).strip()) return None def fetch_remote_status(self): """ Get the status of the PostgreSQL server This method does not raise any exception in case of errors, but set the missing values to None in the resulting dictionary. :rtype: dict[str, None|str] """ # PostgreSQL settings to get from the server (requiring superuser) pg_superuser_settings = [ 'data_directory'] # PostgreSQL settings to get from the server pg_settings = [] pg_query_keys = [ 'server_txt_version', 'is_superuser', 'is_in_recovery', 'current_xlog', 'pgespresso_installed', 'replication_slot_support', 'replication_slot', 'synchronous_standby_names', 'postgres_systemid' ] # Initialise the result dictionary setting all the values to None result = dict.fromkeys( pg_superuser_settings + pg_settings + pg_query_keys, None) try: # Retrieve wal_level, hot_standby and max_wal_senders # only if version is >= 9.0 if self.server_version >= 90000: pg_settings.append('wal_level') pg_settings.append('hot_standby') pg_settings.append('max_wal_senders') if self.server_version >= 90300: pg_settings.append('data_checksums') if self.server_version >= 90400: pg_settings.append('max_replication_slots') if self.server_version >= 90500: pg_settings.append('wal_compression') # retrieves superuser settings if self.is_superuser: for name in pg_superuser_settings: result[name] = self.get_setting(name) # retrieves standard settings for name in pg_settings: result[name] = self.get_setting(name) result['is_superuser'] = self.is_superuser result['is_in_recovery'] = self.is_in_recovery result['server_txt_version'] = self.server_txt_version result['pgespresso_installed'] = self.has_pgespresso current_xlog_info = self.current_xlog_info if current_xlog_info: result['current_lsn'] = current_xlog_info['location'] result['current_xlog'] = current_xlog_info['file_name'] else: result['current_lsn'] = None result['current_xlog'] = None result['current_size'] = self.current_size result['archive_timeout'] = self.archive_timeout result['checkpoint_timeout'] = self.checkpoint_timeout result['xlog_segment_size'] = self.xlog_segment_size result.update(self.get_configuration_files()) # Retrieve the replication_slot status result["replication_slot_support"] = False if self.server_version >= 90400: result["replication_slot_support"] = True if self.slot_name is not None: result["replication_slot"] = ( self.get_replication_slot(self.slot_name)) # Retrieve the list of synchronous standby names result["synchronous_standby_names"] = [] if self.server_version >= 90100: result["synchronous_standby_names"] = ( self.get_synchronous_standby_names()) if self.server_version >= 90600: result["postgres_systemid"] = self.get_systemid() except (PostgresConnectionError, psycopg2.Error) as e: _logger.warning("Error retrieving PostgreSQL status: %s", force_str(e).strip()) return result def get_systemid(self): """ Get a Postgres instance systemid """ if self.server_version < 90600: return try: cur = self._cursor() cur.execute( 'SELECT system_identifier::text FROM pg_control_system()') return cur.fetchone()[0] except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error retrieving PostgreSQL system Id: %s", force_str(e).strip()) return None def get_setting(self, name): """ Get a Postgres setting with a given name :param name: a parameter name """ try: cur = self._cursor() cur.execute('SHOW "%s"' % name.replace('"', '""')) return cur.fetchone()[0] except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error retrieving PostgreSQL setting '%s': %s", name.replace('"', '""'), force_str(e).strip()) return None def get_tablespaces(self): """ Returns a list of tablespaces or None if not present """ try: cur = self._cursor() if self.server_version >= 90200: cur.execute( "SELECT spcname, oid, " "pg_tablespace_location(oid) AS spclocation " "FROM pg_tablespace " "WHERE pg_tablespace_location(oid) != ''") else: cur.execute( "SELECT spcname, oid, spclocation " "FROM pg_tablespace WHERE spclocation != ''") # Generate a list of tablespace objects return [Tablespace._make(item) for item in cur.fetchall()] except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error retrieving PostgreSQL tablespaces: %s", force_str(e).strip()) return None def get_configuration_files(self): """ Get postgres configuration files or an empty dictionary in case of error :rtype: dict """ if self.configuration_files: return self.configuration_files try: self.configuration_files = {} cur = self._cursor() cur.execute( "SELECT name, setting FROM pg_settings " "WHERE name IN ('config_file', 'hba_file', 'ident_file')") for cname, cpath in cur.fetchall(): self.configuration_files[cname] = cpath # Retrieve additional configuration files # If PostgresSQL is older than 8.4 disable this check if self.server_version >= 80400: cur.execute( "SELECT DISTINCT sourcefile AS included_file " "FROM pg_settings " "WHERE sourcefile IS NOT NULL " "AND sourcefile NOT IN " "(SELECT setting FROM pg_settings " "WHERE name = 'config_file') " "ORDER BY 1") # Extract the values from the containing single element tuples included_files = [included_file for included_file, in cur.fetchall()] if len(included_files) > 0: self.configuration_files['included_files'] = included_files except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error retrieving PostgreSQL configuration files " "location: %s", force_str(e).strip()) self.configuration_files = {} return self.configuration_files def create_restore_point(self, target_name): """ Create a restore point with the given target name The method executes the pg_create_restore_point() function through a PostgreSQL connection. Only for Postgres versions >= 9.1 when not in replication. If requirements are not met, the operation is skipped. :param str target_name: name of the restore point :returns: the restore point LSN :rtype: str|None """ if self.server_version < 90100: return None # Not possible if on a standby # Called inside the pg_connect context to reuse the connection if self.is_in_recovery: return None try: cur = self._cursor() cur.execute( "SELECT pg_create_restore_point(%s)", [target_name]) return cur.fetchone()[0] except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug('Error issuing pg_create_restore_point()' 'command: %s', force_str(e).strip()) return None def start_exclusive_backup(self, label): """ Calls pg_start_backup() on the PostgreSQL server This method returns a dictionary containing the following data: * location * file_name * file_offset * timestamp :param str label: descriptive string to identify the backup :rtype: psycopg2.extras.DictRow """ try: conn = self.connect() # Rollback to release the transaction, as the pg_start_backup # invocation can last up to PostgreSQL's checkpoint_timeout conn.rollback() # Start an exclusive backup cur = conn.cursor(cursor_factory=DictCursor) if self.server_version < 80400: cur.execute( "SELECT location, " "({pg_walfile_name_offset}(location)).*, " "now() AS timestamp " "FROM pg_start_backup(%s) AS location" .format(**self.name_map), (label,)) else: cur.execute( "SELECT location, " "({pg_walfile_name_offset}(location)).*, " "now() AS timestamp " "FROM pg_start_backup(%s,%s) AS location" .format(**self.name_map), (label, self.immediate_checkpoint)) start_row = cur.fetchone() # Rollback to release the transaction, as the connection # is to be retained until the end of backup conn.rollback() return start_row except (PostgresConnectionError, psycopg2.Error) as e: msg = "pg_start_backup(): %s" % force_str(e).strip() _logger.debug(msg) raise PostgresException(msg) def start_concurrent_backup(self, label): """ Calls pg_start_backup on the PostgreSQL server using the API introduced with version 9.6 This method returns a dictionary containing the following data: * location * timeline * timestamp :param str label: descriptive string to identify the backup :rtype: psycopg2.extras.DictRow """ try: conn = self.connect() # Rollback to release the transaction, as the pg_start_backup # invocation can last up to PostgreSQL's checkpoint_timeout conn.rollback() # Start the backup using the api introduced in postgres 9.6 cur = conn.cursor(cursor_factory=DictCursor) cur.execute( "SELECT location, " "(SELECT timeline_id " "FROM pg_control_checkpoint()) AS timeline, " "now() AS timestamp " "FROM pg_start_backup(%s, %s, FALSE) AS location", (label, self.immediate_checkpoint)) start_row = cur.fetchone() # Rollback to release the transaction, as the connection # is to be retained until the end of backup conn.rollback() return start_row except (PostgresConnectionError, psycopg2.Error) as e: msg = "pg_start_backup command: %s" % (force_str(e).strip(),) _logger.debug(msg) raise PostgresException(msg) def stop_exclusive_backup(self): """ Calls pg_stop_backup() on the PostgreSQL server This method returns a dictionary containing the following data: * location * file_name * file_offset * timestamp :rtype: psycopg2.extras.DictRow """ try: conn = self.connect() # Rollback to release the transaction, as the pg_stop_backup # invocation could will wait until the current WAL file is shipped conn.rollback() # Stop the backup cur = conn.cursor(cursor_factory=DictCursor) cur.execute( "SELECT location, " "({pg_walfile_name_offset}(location)).*, " "now() AS timestamp " "FROM pg_stop_backup() AS location" .format(**self.name_map) ) return cur.fetchone() except (PostgresConnectionError, psycopg2.Error) as e: msg = ("Error issuing pg_stop_backup command: %s" % force_str(e).strip()) _logger.debug(msg) raise PostgresException( 'Cannot terminate exclusive backup. ' 'You might have to manually execute pg_stop_backup ' 'on your PostgreSQL server') def stop_concurrent_backup(self): """ Calls pg_stop_backup on the PostgreSQL server using the API introduced with version 9.6 This method returns a dictionary containing the following data: * location * timeline * backup_label * timestamp :rtype: psycopg2.extras.DictRow """ try: conn = self.connect() # Rollback to release the transaction, as the pg_stop_backup # invocation could will wait until the current WAL file is shipped conn.rollback() # Stop the backup using the api introduced with version 9.6 cur = conn.cursor(cursor_factory=DictCursor) cur.execute( 'SELECT end_row.lsn AS location, ' '(SELECT CASE WHEN pg_is_in_recovery() ' 'THEN min_recovery_end_timeline ELSE timeline_id END ' 'FROM pg_control_checkpoint(), pg_control_recovery()' ') AS timeline, ' 'end_row.labelfile AS backup_label, ' 'now() AS timestamp FROM pg_stop_backup(FALSE) AS end_row') return cur.fetchone() except (PostgresConnectionError, psycopg2.Error) as e: msg = ("Error issuing pg_stop_backup command: %s" % force_str(e).strip()) _logger.debug(msg) raise PostgresException(msg) def pgespresso_start_backup(self, label): """ Execute a pgespresso_start_backup This method returns a dictionary containing the following data: * backup_label * timestamp :param str label: descriptive string to identify the backup :rtype: psycopg2.extras.DictRow """ try: conn = self.connect() # Rollback to release the transaction, # as the pgespresso_start_backup invocation can last # up to PostgreSQL's checkpoint_timeout conn.rollback() # Start the concurrent backup using pgespresso cur = conn.cursor(cursor_factory=DictCursor) cur.execute( 'SELECT pgespresso_start_backup(%s,%s) AS backup_label, ' 'now() AS timestamp', (label, self.immediate_checkpoint)) start_row = cur.fetchone() # Rollback to release the transaction, as the connection # is to be retained until the end of backup conn.rollback() return start_row except (PostgresConnectionError, psycopg2.Error) as e: msg = "pgespresso_start_backup(): %s" % force_str(e).strip() _logger.debug(msg) raise PostgresException(msg) def pgespresso_stop_backup(self, backup_label): """ Execute a pgespresso_stop_backup This method returns a dictionary containing the following data: * end_wal * timestamp :param str backup_label: backup label as returned by pgespress_start_backup :rtype: psycopg2.extras.DictRow """ try: conn = self.connect() # Issue a rollback to release any unneeded lock conn.rollback() cur = conn.cursor(cursor_factory=DictCursor) cur.execute("SELECT pgespresso_stop_backup(%s) AS end_wal, " "now() AS timestamp", (backup_label,)) return cur.fetchone() except (PostgresConnectionError, psycopg2.Error) as e: msg = "Error issuing pgespresso_stop_backup() command: %s" % ( force_str(e).strip()) _logger.debug(msg) raise PostgresException( '%s\n' 'HINT: You might have to manually execute ' 'pgespresso_abort_backup() on your PostgreSQL ' 'server' % msg) def switch_wal(self): """ Execute a pg_switch_wal() To be SURE of the switch of a xlog, we collect the xlogfile name before and after the switch. The method returns the just closed xlog file name if the current xlog file has changed, it returns an empty string otherwise. The method returns None if something went wrong during the execution of the pg_switch_wal command. :rtype: str|None """ try: conn = self.connect() # Requires superuser privilege if not self.is_superuser: raise PostgresSuperuserRequired() # If this server is in recovery there is nothing to do if self.is_in_recovery: raise PostgresIsInRecovery() cur = conn.cursor() # Collect the xlog file name before the switch cur.execute('SELECT {pg_walfile_name}(' '{pg_current_wal_insert_lsn}())' .format(**self.name_map)) pre_switch = cur.fetchone()[0] # Switch cur.execute('SELECT {pg_walfile_name}({pg_switch_wal}())' .format(**self.name_map)) # Collect the xlog file name after the switch cur.execute('SELECT {pg_walfile_name}(' '{pg_current_wal_insert_lsn}())' .format(**self.name_map)) post_switch = cur.fetchone()[0] if pre_switch < post_switch: return pre_switch else: return '' except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug( "Error issuing {pg_switch_wal}() command: %s" .format(**self.name_map), force_str(e).strip()) return None def checkpoint(self): """ Execute a checkpoint """ try: conn = self.connect() # Requires superuser privilege if not self.is_superuser: raise PostgresSuperuserRequired() cur = conn.cursor() cur.execute("CHECKPOINT") except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug( "Error issuing CHECKPOINT: %s", force_str(e).strip()) def get_replication_stats(self, client_type=STANDBY): """ Returns streaming replication information """ try: cur = self._cursor(cursor_factory=NamedTupleCursor) # Without superuser rights, this function is useless # TODO: provide a simplified version for non-superusers if not self.is_superuser: raise PostgresSuperuserRequired() # pg_stat_replication is a system view that contains one # row per WAL sender process with information about the # replication status of a standby server. It has been # introduced in PostgreSQL 9.1. Current fields are: # # - pid (procpid in 9.1) # - usesysid # - usename # - application_name # - client_addr # - client_hostname # - client_port # - backend_start # - backend_xmin (9.4+) # - state # - sent_lsn (sent_location before 10) # - write_lsn (write_location before 10) # - flush_lsn (flush_location before 10) # - replay_lsn (replay_location before 10) # - sync_priority # - sync_state # if self.server_version < 90100: raise PostgresUnsupportedFeature('9.1') from_repslot = "" where_clauses = [] if self.server_version >= 100000: # Current implementation (10+) what = "r.*, rs.slot_name" # Look for replication slot name from_repslot = "LEFT JOIN pg_replication_slots rs " \ "ON (r.pid = rs.active_pid) " where_clauses += ["(rs.slot_type IS NULL OR " "rs.slot_type = 'physical')"] elif self.server_version >= 90500: # PostgreSQL 9.5/9.6 what = "pid, " \ "usesysid, " \ "usename, " \ "application_name, " \ "client_addr, " \ "client_hostname, " \ "client_port, " \ "backend_start, " \ "backend_xmin, " \ "state, " \ "sent_location AS sent_lsn, " \ "write_location AS write_lsn, " \ "flush_location AS flush_lsn, " \ "replay_location AS replay_lsn, " \ "sync_priority, " \ "sync_state, " \ "rs.slot_name" # Look for replication slot name from_repslot = "LEFT JOIN pg_replication_slots rs " \ "ON (r.pid = rs.active_pid) " where_clauses += ["(rs.slot_type IS NULL OR " "rs.slot_type = 'physical')"] elif self.server_version >= 90400: # PostgreSQL 9.4 what = "pid, " \ "usesysid, " \ "usename, " \ "application_name, " \ "client_addr, " \ "client_hostname, " \ "client_port, " \ "backend_start, " \ "backend_xmin, " \ "state, " \ "sent_location AS sent_lsn, " \ "write_location AS write_lsn, " \ "flush_location AS flush_lsn, " \ "replay_location AS replay_lsn, " \ "sync_priority, " \ "sync_state" elif self.server_version >= 90200: # PostgreSQL 9.2/9.3 what = "pid, " \ "usesysid, " \ "usename, " \ "application_name, " \ "client_addr, " \ "client_hostname, " \ "client_port, " \ "backend_start, " \ "CAST (NULL AS xid) AS backend_xmin, " \ "state, " \ "sent_location AS sent_lsn, " \ "write_location AS write_lsn, " \ "flush_location AS flush_lsn, " \ "replay_location AS replay_lsn, " \ "sync_priority, " \ "sync_state" else: # PostgreSQL 9.1 what = "procpid AS pid, " \ "usesysid, " \ "usename, " \ "application_name, " \ "client_addr, " \ "client_hostname, " \ "client_port, " \ "backend_start, " \ "CAST (NULL AS xid) AS backend_xmin, " \ "state, " \ "sent_location AS sent_lsn, " \ "write_location AS write_lsn, " \ "flush_location AS flush_lsn, " \ "replay_location AS replay_lsn, " \ "sync_priority, " \ "sync_state" # Streaming client if client_type == self.STANDBY: # Standby server where_clauses += ['{replay_lsn} IS NOT NULL'.format( **self.name_map)] elif client_type == self.WALSTREAMER: # WAL streamer where_clauses += ['{replay_lsn} IS NULL'.format( **self.name_map)] if where_clauses: where = 'WHERE %s ' % ' AND '.join(where_clauses) else: where = '' # Execute the query cur.execute( "SELECT %s, " "pg_is_in_recovery() AS is_in_recovery, " "CASE WHEN pg_is_in_recovery() " " THEN {pg_last_wal_receive_lsn}() " " ELSE {pg_current_wal_lsn}() " "END AS current_lsn " "FROM pg_stat_replication r " "%s" "%s" "ORDER BY sync_state DESC, sync_priority" .format(**self.name_map) % (what, from_repslot, where)) # Generate a list of standby objects return cur.fetchall() except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error retrieving status of standby servers: %s", force_str(e).strip()) return None def get_replication_slot(self, slot_name): """ Retrieve from the PostgreSQL server a physical replication slot with a specific slot_name. This method returns a dictionary containing the following data: * slot_name * active * restart_lsn :param str slot_name: the replication slot name :rtype: psycopg2.extras.DictRow """ if self.server_version < 90400: # Raise exception if replication slot are not supported # by PostgreSQL version raise PostgresUnsupportedFeature('9.4') else: cur = self._cursor(cursor_factory=NamedTupleCursor) try: cur.execute("SELECT slot_name, " "active, " "restart_lsn " "FROM pg_replication_slots " "WHERE slot_type = 'physical' " "AND slot_name = '%s'" % slot_name) # Retrieve the replication slot information return cur.fetchone() except (PostgresConnectionError, psycopg2.Error) as e: _logger.debug("Error retrieving replication_slots: %s", force_str(e).strip()) raise def get_synchronous_standby_names(self): """ Retrieve the list of named synchronous standby servers from PostgreSQL This method returns a list of names :return list: synchronous standby names """ if self.server_version < 90100: # Raise exception if synchronous replication is not supported raise PostgresUnsupportedFeature('9.1') else: synchronous_standby_names = ( self.get_setting('synchronous_standby_names')) # Return empty list if not defined if synchronous_standby_names is None: return [] # Normalise the list of sync standby names # On PostgreSQL 9.6 it is possible to specify the number of # required synchronous standby using this format: # n (name1, name2, ... nameN). # We only need the name list, so we discard everything else. # The name list starts after the first parenthesis or at pos 0 names_start = synchronous_standby_names.find('(') + 1 names_end = synchronous_standby_names.rfind(')') if names_end < 0: names_end = len(synchronous_standby_names) names_list = synchronous_standby_names[names_start:names_end] # We can blindly strip double quotes because PostgreSQL enforces # the format of the synchronous_standby_names content return [x.strip().strip('"') for x in names_list.split(',')] @property def name_map(self): """ Return a map with function and directory names according to the current PostgreSQL version. Each entry has the `current` name as key and the name for the specific version as value. :rtype: dict[str] """ # Avoid raising an error if the connection is not available try: server_version = self.server_version except PostgresConnectionError: _logger.debug('Impossible to detect the PostgreSQL version, ' 'name_map will return names from latest version') server_version = None return function_name_map(server_version) barman-2.10/barman/config.py0000644000015500001620000010027113571162460014133 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module is responsible for all the things related to Barman configuration, such as parsing configuration file. """ import collections import datetime import inspect import logging.handlers import os import re import sys from glob import iglob from barman import output try: from ConfigParser import ConfigParser, NoOptionError except ImportError: from configparser import ConfigParser, NoOptionError # create a namedtuple object called PathConflict with 'label' and 'server' PathConflict = collections.namedtuple('PathConflict', 'label server') _logger = logging.getLogger(__name__) FORBIDDEN_SERVER_NAMES = ['all'] DEFAULT_USER = 'barman' DEFAULT_LOG_LEVEL = logging.INFO DEFAULT_LOG_FORMAT = "%(asctime)s [%(process)s] %(name)s " \ "%(levelname)s: %(message)s" _TRUE_RE = re.compile(r"""^(true|t|yes|1|on)$""", re.IGNORECASE) _FALSE_RE = re.compile(r"""^(false|f|no|0|off)$""", re.IGNORECASE) _TIME_INTERVAL_RE = re.compile(r""" ^\s* (\d+)\s+(day|month|week)s? # N (day|month|week) with optional 's' \s*$ """, re.IGNORECASE | re.VERBOSE) _SLOT_NAME_RE = re.compile("^[0-9a-z_]+$") REUSE_BACKUP_VALUES = ('copy', 'link', 'off') # Possible copy methods for backups (must be all lowercase) BACKUP_METHOD_VALUES = ['rsync', 'postgres'] CREATE_SLOT_VALUES = ['manual', 'auto'] class CsvOption(set): """ Base class for CSV options. Given a comma delimited string, this class is a list containing the submitted options. Internally, it uses a set in order to avoid option replication. Allowed values for the CSV option are contained in the 'value_list' attribute. The 'conflicts' attribute specifies for any value, the list of values that are prohibited (and thus generate a conflict). If a conflict is found, raises a ValueError exception. """ value_list = [] conflicts = {} def __init__(self, value, key, source): # Invoke parent class init and initialize an empty set super(CsvOption, self).__init__() # Parse not None values if value is not None: self.parse(value, key, source) # Validates the object structure before returning the new instance self.validate(key, source) def parse(self, value, key, source): """ Parses a list of values and correctly assign the set of values (removing duplication) and checking for conflicts. """ if not value: return values_list = value.split(',') for val in sorted(values_list): val = val.strip().lower() if val in self.value_list: # check for conflicting values. if a conflict is # found the option is not valid then, raise exception. if val in self.conflicts and self.conflicts[val] in self: raise ValueError("Invalid configuration value '%s' for " "key %s in %s: cannot contain both " "'%s' and '%s'." "Configuration directive ignored." % (val, key, source, val, self.conflicts[val])) else: # otherwise use parsed value self.add(val) else: # not allowed value, reject the configuration raise ValueError("Invalid configuration value '%s' for " "key %s in %s: Unknown option" % (val, key, source)) def validate(self, key, source): """ Override this method for special validation needs """ def to_json(self): """ Output representation of the obj for JSON serialization The result is a string which can be parsed by the same class """ return ",".join(self) class BackupOptions(CsvOption): """ Extends CsvOption class providing all the details for the backup_options field """ # constants containing labels for allowed values EXCLUSIVE_BACKUP = 'exclusive_backup' CONCURRENT_BACKUP = 'concurrent_backup' EXTERNAL_CONFIGURATION = 'external_configuration' # list holding all the allowed values for the BackupOption class value_list = [EXCLUSIVE_BACKUP, CONCURRENT_BACKUP, EXTERNAL_CONFIGURATION] # map holding all the possible conflicts between the allowed values conflicts = { EXCLUSIVE_BACKUP: CONCURRENT_BACKUP, CONCURRENT_BACKUP: EXCLUSIVE_BACKUP, } class RecoveryOptions(CsvOption): """ Extends CsvOption class providing all the details for the recovery_options field """ # constants containing labels for allowed values GET_WAL = 'get-wal' # list holding all the allowed values for the RecoveryOptions class value_list = [GET_WAL] def parse_boolean(value): """ Parse a string to a boolean value :param str value: string representing a boolean :raises ValueError: if the string is an invalid boolean representation """ if _TRUE_RE.match(value): return True if _FALSE_RE.match(value): return False raise ValueError("Invalid boolean representation (use 'true' or 'false')") def parse_time_interval(value): """ Parse a string, transforming it in a time interval. Accepted format: N (day|month|week)s :param str value: the string to evaluate """ # if empty string or none return none if value is None or value == '': return None result = _TIME_INTERVAL_RE.match(value) # if the string doesn't match, the option is invalid if not result: raise ValueError("Invalid value for a time interval %s" % value) # if the int conversion value = int(result.groups()[0]) unit = result.groups()[1][0].lower() # Calculates the time delta if unit == 'd': time_delta = datetime.timedelta(days=value) elif unit == 'w': time_delta = datetime.timedelta(weeks=value) elif unit == 'm': time_delta = datetime.timedelta(days=(31 * value)) else: # This should never happen raise ValueError("Invalid unit time %s" % unit) return time_delta def parse_reuse_backup(value): """ Parse a string to a valid reuse_backup value. Valid values are "copy", "link" and "off" :param str value: reuse_backup value :raises ValueError: if the value is invalid """ if value is None: return None if value.lower() in REUSE_BACKUP_VALUES: return value.lower() raise ValueError( "Invalid value (use '%s' or '%s')" % ( "', '".join(REUSE_BACKUP_VALUES[:-1]), REUSE_BACKUP_VALUES[-1])) def parse_backup_method(value): """ Parse a string to a valid backup_method value. Valid values are contained in BACKUP_METHOD_VALUES list :param str value: backup_method value :raises ValueError: if the value is invalid """ if value is None: return None if value.lower() in BACKUP_METHOD_VALUES: return value.lower() raise ValueError( "Invalid value (must be one in: '%s')" % ( "', '".join(BACKUP_METHOD_VALUES))) def parse_slot_name(value): """ Replication slot names may only contain lower case letters, numbers, and the underscore character. This function parse a replication slot name :param str value: slot_name value :return: """ if value is None: return None value = value.lower() if not _SLOT_NAME_RE.match(value): raise ValueError( "Replication slot names may only contain lower case letters, " "numbers, and the underscore character.") return value def parse_create_slot(value): """ Parse a string to a valid create_slot value. Valid values are "manual" and "auto" :param str value: create_slot value :raises ValueError: if the value is invalid """ if value is None: return None value = value.lower() if value in CREATE_SLOT_VALUES: return value raise ValueError( "Invalid value (use '%s' or '%s')" % ( "', '".join(CREATE_SLOT_VALUES[:-1]), CREATE_SLOT_VALUES[-1])) class ServerConfig(object): """ This class represents the configuration for a specific Server instance. """ KEYS = [ 'active', 'archiver', 'archiver_batch_size', 'backup_directory', 'backup_method', 'backup_options', 'bandwidth_limit', 'basebackup_retry_sleep', 'basebackup_retry_times', 'basebackups_directory', 'check_timeout', 'compression', 'conninfo', 'custom_compression_filter', 'custom_decompression_filter', 'description', 'disabled', 'errors_directory', 'immediate_checkpoint', 'incoming_wals_directory', 'last_backup_maximum_age', 'max_incoming_wals_queue', 'minimum_redundancy', 'network_compression', 'parallel_jobs', 'path_prefix', 'post_archive_retry_script', 'post_archive_script', 'post_backup_retry_script', 'post_backup_script', 'post_delete_script', 'post_delete_retry_script', 'post_recovery_retry_script', 'post_recovery_script', 'post_wal_delete_script', 'post_wal_delete_retry_script', 'pre_archive_retry_script', 'pre_archive_script', 'pre_backup_retry_script', 'pre_backup_script', 'pre_delete_script', 'pre_delete_retry_script', 'pre_recovery_retry_script', 'pre_recovery_script', 'pre_wal_delete_script', 'pre_wal_delete_retry_script', 'primary_ssh_command', 'recovery_options', 'create_slot', 'retention_policy', 'retention_policy_mode', 'reuse_backup', 'slot_name', 'ssh_command', 'streaming_archiver', 'streaming_archiver_batch_size', 'streaming_archiver_name', 'streaming_backup_name', 'streaming_conninfo', 'streaming_wals_directory', 'tablespace_bandwidth_limit', 'wal_retention_policy', 'wals_directory' ] BARMAN_KEYS = [ 'archiver', 'archiver_batch_size', 'backup_method', 'backup_options', 'bandwidth_limit', 'basebackup_retry_sleep', 'basebackup_retry_times', 'check_timeout', 'compression', 'configuration_files_directory', 'custom_compression_filter', 'custom_decompression_filter', 'immediate_checkpoint', 'last_backup_maximum_age', 'max_incoming_wals_queue', 'minimum_redundancy', 'network_compression', 'parallel_jobs', 'path_prefix', 'post_archive_retry_script', 'post_archive_script', 'post_backup_retry_script', 'post_backup_script', 'post_delete_script', 'post_delete_retry_script', 'post_recovery_retry_script', 'post_recovery_script', 'post_wal_delete_script', 'post_wal_delete_retry_script', 'pre_archive_retry_script', 'pre_archive_script', 'pre_backup_retry_script', 'pre_backup_script', 'pre_delete_script', 'pre_delete_retry_script', 'pre_recovery_retry_script', 'pre_recovery_script', 'pre_wal_delete_script', 'pre_wal_delete_retry_script', 'primary_ssh_command', 'recovery_options', 'create_slot', 'retention_policy', 'retention_policy_mode', 'reuse_backup', 'slot_name', 'streaming_archiver', 'streaming_archiver_batch_size', 'streaming_archiver_name', 'streaming_backup_name', 'tablespace_bandwidth_limit', 'wal_retention_policy' ] DEFAULTS = { 'active': 'true', 'archiver': 'off', 'archiver_batch_size': '0', 'backup_directory': '%(barman_home)s/%(name)s', 'backup_method': 'rsync', 'backup_options': '', 'basebackup_retry_sleep': '30', 'basebackup_retry_times': '0', 'basebackups_directory': '%(backup_directory)s/base', 'check_timeout': '30', 'disabled': 'false', 'errors_directory': '%(backup_directory)s/errors', 'immediate_checkpoint': 'false', 'incoming_wals_directory': '%(backup_directory)s/incoming', 'minimum_redundancy': '0', 'network_compression': 'false', 'parallel_jobs': '1', 'recovery_options': '', 'create_slot': 'manual', 'retention_policy_mode': 'auto', 'streaming_archiver': 'off', 'streaming_archiver_batch_size': '0', 'streaming_archiver_name': 'barman_receive_wal', 'streaming_backup_name': 'barman_streaming_backup', 'streaming_conninfo': '%(conninfo)s', 'streaming_wals_directory': '%(backup_directory)s/streaming', 'wal_retention_policy': 'main', 'wals_directory': '%(backup_directory)s/wals' } FIXED = [ 'disabled', ] PARSERS = { 'active': parse_boolean, 'archiver': parse_boolean, 'archiver_batch_size': int, 'backup_method': parse_backup_method, 'backup_options': BackupOptions, 'basebackup_retry_sleep': int, 'basebackup_retry_times': int, 'check_timeout': int, 'disabled': parse_boolean, 'immediate_checkpoint': parse_boolean, 'last_backup_maximum_age': parse_time_interval, 'max_incoming_wals_queue': int, 'network_compression': parse_boolean, 'parallel_jobs': int, 'recovery_options': RecoveryOptions, 'create_slot': parse_create_slot, 'reuse_backup': parse_reuse_backup, 'streaming_archiver': parse_boolean, 'streaming_archiver_batch_size': int, 'slot_name': parse_slot_name, } def invoke_parser(self, key, source, value, new_value): """ Function used for parsing configuration values. If needed, it uses special parsers from the PARSERS map, and handles parsing exceptions. Uses two values (value and new_value) to manage configuration hierarchy (server config overwrites global config). :param str key: the name of the configuration option :param str source: the section that contains the configuration option :param value: the old value of the option if present. :param str new_value: the new value that needs to be parsed :return: the parsed value of a configuration option """ # If the new value is None, returns the old value if new_value is None: return value # If we have a parser for the current key, use it to obtain the # actual value. If an exception is thrown, print a warning and # ignore the value. # noinspection PyBroadException if key in self.PARSERS: parser = self.PARSERS[key] try: # If the parser is a subclass of the CsvOption class # we need a different invocation, which passes not only # the value to the parser, but also the key name # and the section that contains the configuration if inspect.isclass(parser) \ and issubclass(parser, CsvOption): value = parser(new_value, key, source) else: value = parser(new_value) except Exception as e: output.warning("Ignoring invalid configuration value '%s' " "for key %s in %s: %s", new_value, key, source, e) else: value = new_value return value def __init__(self, config, name): self.msg_list = [] self.config = config self.name = name self.barman_home = config.barman_home self.barman_lock_directory = config.barman_lock_directory config.validate_server_config(self.name) for key in ServerConfig.KEYS: value = None # Skip parameters that cannot be configured by users if key not in ServerConfig.FIXED: # Get the setting from the [name] section of config file # A literal None value is converted to an empty string new_value = config.get(name, key, self.__dict__, none_value='') source = '[%s] section' % name value = self.invoke_parser(key, source, value, new_value) # If the setting isn't present in [name] section of config file # check if it has to be inherited from the [barman] section if value is None and key in ServerConfig.BARMAN_KEYS: new_value = config.get('barman', key, self.__dict__, none_value='') source = '[barman] section' value = self.invoke_parser(key, source, value, new_value) # If the setting isn't present in [name] section of config file # and is not inherited from global section use its default # (if present) if value is None and key in ServerConfig.DEFAULTS: new_value = ServerConfig.DEFAULTS[key] % self.__dict__ source = 'DEFAULTS' value = self.invoke_parser(key, source, value, new_value) # An empty string is a None value (bypassing inheritance # from global configuration) if value is not None and value == '' or value == 'None': value = None setattr(self, key, value) def to_json(self): """ Return an equivalent dictionary that can be encoded in json """ json_dict = dict(vars(self)) # remove the reference to main Config object del json_dict['config'] return json_dict def get_bwlimit(self, tablespace=None): """ Return the configured bandwidth limit for the provided tablespace If tablespace is None, it returns the global bandwidth limit :param barman.infofile.Tablespace tablespace: the tablespace to copy :rtype: str """ # Default to global bandwidth limit bwlimit = self.bandwidth_limit if tablespace: # A tablespace can be copied using a per-tablespace bwlimit tbl_bw_limit = self.tablespace_bandwidth_limit if (tbl_bw_limit and tablespace.name in tbl_bw_limit): bwlimit = tbl_bw_limit[tablespace.name] return bwlimit class Config(object): """This class represents the barman configuration. Default configuration files are /etc/barman.conf, /etc/barman/barman.conf and ~/.barman.conf for a per-user configuration """ CONFIG_FILES = [ '~/.barman.conf', '/etc/barman.conf', '/etc/barman/barman.conf', ] _QUOTE_RE = re.compile(r"""^(["'])(.*)\1$""") def __init__(self, filename=None): # In Python 3 ConfigParser has changed to be strict by default. # Barman wants to preserve the Python 2 behavior, so we are # explicitly building it passing strict=False. try: # Python 3.x self._config = ConfigParser(strict=False) except TypeError: # Python 2.x self._config = ConfigParser() if filename: if hasattr(filename, 'read'): try: # Python 3.x self._config.read_file(filename) except AttributeError: # Python 2.x self._config.readfp(filename) else: # check for the existence of the user defined file if not os.path.exists(filename): sys.exit("Configuration file '%s' does not exist" % filename) self._config.read(os.path.expanduser(filename)) else: # Check for the presence of configuration files # inside default directories for path in self.CONFIG_FILES: full_path = os.path.expanduser(path) if os.path.exists(full_path) \ and full_path in self._config.read(full_path): filename = full_path break else: sys.exit("Could not find any configuration file at " "default locations.\n" "Check Barman's documentation for more help.") self.config_file = filename self._servers = None self.servers_msg_list = [] self._parse_global_config() def get(self, section, option, defaults=None, none_value=None): """Method to get the value from a given section from Barman configuration """ if not self._config.has_section(section): return None try: value = self._config.get(section, option, raw=False, vars=defaults) if value.lower() == 'none': value = none_value if value is not None: value = self._QUOTE_RE.sub(lambda m: m.group(2), value) return value except NoOptionError: return None def _parse_global_config(self): """ This method parses the global [barman] section """ self.barman_home = self.get('barman', 'barman_home') self.barman_lock_directory = self.get( 'barman', 'barman_lock_directory') or self.barman_home self.user = self.get('barman', 'barman_user') or DEFAULT_USER self.log_file = self.get('barman', 'log_file') self.log_format = self.get( 'barman', 'log_format') or DEFAULT_LOG_FORMAT self.log_level = self.get('barman', 'log_level') or DEFAULT_LOG_LEVEL # save the raw barman section to be compared later in # _is_global_config_changed() method self._global_config = set(self._config.items('barman')) def _is_global_config_changed(self): """Return true if something has changed in global configuration""" return self._global_config != set(self._config.items('barman')) def load_configuration_files_directory(self): """ Read the "configuration_files_directory" option and load all the configuration files with the .conf suffix that lie in that folder """ config_files_directory = self.get('barman', 'configuration_files_directory') if not config_files_directory: return if not os.path.isdir(os.path.expanduser(config_files_directory)): _logger.warn( 'Ignoring the "configuration_files_directory" option as "%s" ' 'is not a directory', config_files_directory) return for cfile in sorted(iglob( os.path.join(os.path.expanduser(config_files_directory), '*.conf'))): filename = os.path.basename(cfile) if os.path.isfile(cfile): # Load a file _logger.debug('Including configuration file: %s', filename) self._config.read(cfile) if self._is_global_config_changed(): msg = "the configuration file %s contains a not empty [" \ "barman] section" % filename _logger.fatal(msg) raise SystemExit("FATAL: %s" % msg) else: # Add an info that a file has been discarded _logger.warn('Discarding configuration file: %s (not a file)', filename) def _populate_servers(self): """ Populate server list from configuration file Also check for paths errors in configuration. If two or more paths overlap in a single server, that server is disabled. If two or more directory paths overlap between different servers an error is raised. """ # Populate servers if self._servers is not None: return self._servers = {} # Cycle all the available configurations sections for section in self._config.sections(): if section == 'barman': # skip global settings continue # Exit if the section has a reserved name if section in FORBIDDEN_SERVER_NAMES: msg = "the reserved word '%s' is not allowed as server name." \ "Please rename it." % section _logger.fatal(msg) raise SystemExit("FATAL: %s" % msg) # Create a ServerConfig object self._servers[section] = ServerConfig(self, section) # Check for conflicting paths in Barman configuration self._check_conflicting_paths() def _check_conflicting_paths(self): """ Look for conflicting paths intra-server and inter-server """ # All paths in configuration servers_paths = {} # Global errors list self.servers_msg_list = [] # Cycle all the available configurations sections for section in sorted(self._config.sections()): if section == 'barman': # skip global settings continue # Paths map section_conf = self._servers[section] config_paths = { 'backup_directory': section_conf.backup_directory, 'basebackups_directory': section_conf.basebackups_directory, 'errors_directory': section_conf.errors_directory, 'incoming_wals_directory': section_conf.incoming_wals_directory, 'streaming_wals_directory': section_conf.streaming_wals_directory, 'wals_directory': section_conf.wals_directory, } # Check for path errors for label, path in sorted(config_paths.items()): # If the path does not conflict with the others, add it to the # paths map real_path = os.path.realpath(path) if real_path not in servers_paths: servers_paths[real_path] = PathConflict(label, section) else: if section == servers_paths[real_path].server: # Internal path error. # Insert the error message into the server.msg_list if real_path == path: self._servers[section].msg_list.append( "Conflicting path: %s=%s conflicts with " "'%s' for server '%s'" % ( label, path, servers_paths[real_path].label, servers_paths[real_path].server)) else: # Symbolic link self._servers[section].msg_list.append( "Conflicting path: %s=%s (symlink to: %s) " "conflicts with '%s' for server '%s'" % ( label, path, real_path, servers_paths[real_path].label, servers_paths[real_path].server)) # Disable the server self._servers[section].disabled = True else: # Global path error. # Insert the error message into the global msg_list if real_path == path: self.servers_msg_list.append( "Conflicting path: " "%s=%s for server '%s' conflicts with " "'%s' for server '%s'" % ( label, path, section, servers_paths[real_path].label, servers_paths[real_path].server)) else: # Symbolic link self.servers_msg_list.append( "Conflicting path: " "%s=%s (symlink to: %s) for server '%s' " "conflicts with '%s' for server '%s'" % ( label, path, real_path, section, servers_paths[real_path].label, servers_paths[real_path].server)) def server_names(self): """This method returns a list of server names""" self._populate_servers() return self._servers.keys() def servers(self): """This method returns a list of server parameters""" self._populate_servers() return self._servers.values() def get_server(self, name): """ Get the configuration of the specified server :param str name: the server name """ self._populate_servers() return self._servers.get(name, None) def validate_global_config(self): """ Validate global configuration parameters """ # Check for the existence of unexpected parameters in the # global section of the configuration file keys = ['barman_home', 'barman_lock_directory', 'barman_user', 'log_file', 'log_level', 'configuration_files_directory'] keys.extend(ServerConfig.KEYS) self._validate_with_keys(self._global_config, keys, 'barman') def validate_server_config(self, server): """ Validate configuration parameters for a specified server :param str server: the server name """ # Check for the existence of unexpected parameters in the # server section of the configuration file self._validate_with_keys(self._config.items(server), ServerConfig.KEYS, server) @staticmethod def _validate_with_keys(config_items, allowed_keys, section): """ Check every config parameter against a list of allowed keys :param config_items: list of tuples containing provided parameters along with their values :param allowed_keys: list of allowed keys :param section: source section (for error reporting) """ for parameter in config_items: # if the parameter name is not in the list of allowed values, # then output a warning name = parameter[0] if name not in allowed_keys: output.warning('Invalid configuration option "%s" in [%s] ' 'section.', name, section) # easy raw config diagnostic with python -m # noinspection PyProtectedMember def _main(): print("Active configuration settings:") r = Config() r.load_configuration_files_directory() for section in r._config.sections(): print("Section: %s" % section) for option in r._config.options(section): print("\t%s = %s " % (option, r.get(section, option))) if __name__ == "__main__": _main() barman-2.10/barman/version.py0000644000015500001620000000141113571162463014352 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . ''' This module contains the current Barman version. ''' __version__ = '2.10' barman-2.10/barman/__init__.py0000644000015500001620000000153713571162460014432 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ The main Barman module """ from __future__ import absolute_import from .version import __version__ __config__ = None __all__ = ['__version__', '__config__'] barman-2.10/barman/backup.py0000644000015500001620000013510313571162460014135 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module represents a backup. """ import datetime import logging import os import shutil from contextlib import closing from glob import glob import dateutil.parser import dateutil.tz from barman import output, xlog from barman.backup_executor import (PassiveBackupExecutor, PostgresBackupExecutor, RsyncBackupExecutor) from barman.compression import CompressionManager from barman.config import BackupOptions from barman.exceptions import (AbortedRetryHookScript, CompressionIncompatibility, SshCommandException, UnknownBackupIdException) from barman.hooks import HookScriptRunner, RetryHookScriptRunner from barman.infofile import BackupInfo, LocalBackupInfo, WalFileInfo from barman.lockfile import ServerBackupSyncLock from barman.recovery_executor import RecoveryExecutor from barman.remote_status import RemoteStatusMixin from barman.utils import (force_str, fsync_dir, fsync_file, human_readable_timedelta, pretty_size) _logger = logging.getLogger(__name__) class BackupManager(RemoteStatusMixin): """Manager of the backup archive for a server""" DEFAULT_STATUS_FILTER = BackupInfo.STATUS_COPY_DONE def __init__(self, server): """ Constructor """ super(BackupManager, self).__init__() self.server = server self.config = server.config self._backup_cache = None self.compression_manager = CompressionManager(self.config, server.path) self.executor = None try: if server.passive_node: self.executor = PassiveBackupExecutor(self) elif self.config.backup_method == "postgres": self.executor = PostgresBackupExecutor(self) else: self.executor = RsyncBackupExecutor(self) except SshCommandException as e: self.config.disabled = True self.config.msg_list.append(force_str(e).strip()) @property def mode(self): """ Property defining the BackupInfo mode content """ if self.executor: return self.executor.mode return None def get_available_backups(self, status_filter=DEFAULT_STATUS_FILTER): """ Get a list of available backups :param status_filter: default DEFAULT_STATUS_FILTER. The status of the backup list returned """ # If the filter is not a tuple, create a tuple using the filter if not isinstance(status_filter, tuple): status_filter = tuple(status_filter,) # Load the cache if necessary if self._backup_cache is None: self._load_backup_cache() # Filter the cache using the status filter tuple backups = {} for key, value in self._backup_cache.items(): if value.status in status_filter: backups[key] = value return backups def _load_backup_cache(self): """ Populate the cache of the available backups, reading information from disk. """ self._backup_cache = {} # Load all the backups from disk reading the backup.info files for filename in glob("%s/*/backup.info" % self.config.basebackups_directory): backup = LocalBackupInfo(self.server, filename) self._backup_cache[backup.backup_id] = backup def backup_cache_add(self, backup_info): """ Register a BackupInfo object to the backup cache. NOTE: Initialise the cache - in case it has not been done yet :param barman.infofile.BackupInfo backup_info: the object we want to register in the cache """ # Load the cache if needed if self._backup_cache is None: self._load_backup_cache() # Insert the BackupInfo object into the cache self._backup_cache[backup_info.backup_id] = backup_info def backup_cache_remove(self, backup_info): """ Remove a BackupInfo object from the backup cache This method _must_ be called after removing the object from disk. :param barman.infofile.BackupInfo backup_info: the object we want to remove from the cache """ # Nothing to do if the cache is not loaded if self._backup_cache is None: return # Remove the BackupInfo object from the backups cache del self._backup_cache[backup_info.backup_id] def get_backup(self, backup_id): """ Return the backup information for the given backup id. If the backup_id is None or backup.info file doesn't exists, it returns None. :param str|None backup_id: the ID of the backup to return :rtype: BackupInfo|None """ if backup_id is not None: # Get all the available backups from the cache available_backups = self.get_available_backups( BackupInfo.STATUS_ALL) # Return the BackupInfo if present, or None return available_backups.get(backup_id) return None def get_previous_backup(self, backup_id, status_filter=DEFAULT_STATUS_FILTER): """ Get the previous backup (if any) in the catalog :param status_filter: default DEFAULT_STATUS_FILTER. The status of the backup returned """ if not isinstance(status_filter, tuple): status_filter = tuple(status_filter) backup = LocalBackupInfo(self.server, backup_id=backup_id) available_backups = self.get_available_backups( status_filter + (backup.status,)) ids = sorted(available_backups.keys()) try: current = ids.index(backup_id) while current > 0: res = available_backups[ids[current - 1]] if res.status in status_filter: return res current -= 1 return None except ValueError: raise UnknownBackupIdException('Could not find backup_id %s' % backup_id) def get_next_backup(self, backup_id, status_filter=DEFAULT_STATUS_FILTER): """ Get the next backup (if any) in the catalog :param status_filter: default DEFAULT_STATUS_FILTER. The status of the backup returned """ if not isinstance(status_filter, tuple): status_filter = tuple(status_filter) backup = LocalBackupInfo(self.server, backup_id=backup_id) available_backups = self.get_available_backups( status_filter + (backup.status,)) ids = sorted(available_backups.keys()) try: current = ids.index(backup_id) while current < (len(ids) - 1): res = available_backups[ids[current + 1]] if res.status in status_filter: return res current += 1 return None except ValueError: raise UnknownBackupIdException('Could not find backup_id %s' % backup_id) def get_last_backup_id(self, status_filter=DEFAULT_STATUS_FILTER): """ Get the id of the latest/last backup in the catalog (if exists) :param status_filter: The status of the backup to return, default to DEFAULT_STATUS_FILTER. :return string|None: ID of the backup """ available_backups = self.get_available_backups(status_filter) if len(available_backups) == 0: return None ids = sorted(available_backups.keys()) return ids[-1] def get_first_backup_id(self, status_filter=DEFAULT_STATUS_FILTER): """ Get the id of the oldest/first backup in the catalog (if exists) :param status_filter: The status of the backup to return, default to DEFAULT_STATUS_FILTER. :return string|None: ID of the backup """ available_backups = self.get_available_backups(status_filter) if len(available_backups) == 0: return None ids = sorted(available_backups.keys()) return ids[0] def delete_backup(self, backup): """ Delete a backup :param backup: the backup to delete :return bool: True if deleted, False if could not delete the backup """ available_backups = self.get_available_backups( status_filter=(BackupInfo.DONE,)) minimum_redundancy = self.server.config.minimum_redundancy # Honour minimum required redundancy if backup.status == BackupInfo.DONE and \ minimum_redundancy >= len(available_backups): output.warning("Skipping delete of backup %s for server %s " "due to minimum redundancy requirements " "(minimum redundancy = %s, " "current redundancy = %s)", backup.backup_id, self.config.name, minimum_redundancy, len(available_backups)) return False # Keep track of when the delete operation started. delete_start_time = datetime.datetime.now() # Run the pre_delete_script if present. script = HookScriptRunner(self, 'delete_script', 'pre') script.env_from_backup_info(backup) script.run() # Run the pre_delete_retry_script if present. retry_script = RetryHookScriptRunner( self, 'delete_retry_script', 'pre') retry_script.env_from_backup_info(backup) retry_script.run() output.info("Deleting backup %s for server %s", backup.backup_id, self.config.name) previous_backup = self.get_previous_backup(backup.backup_id) next_backup = self.get_next_backup(backup.backup_id) # Delete all the data contained in the backup try: self.delete_backup_data(backup) except OSError as e: output.error("Failure deleting backup %s for server %s.\n%s", backup.backup_id, self.config.name, e) return False # Check if we are deleting the first available backup if not previous_backup: # In the case of exclusive backup (default), removes any WAL # files associated to the backup being deleted. # In the case of concurrent backup, removes only WAL files # prior to the start of the backup being deleted, as they # might be useful to any concurrent backup started immediately # after. remove_until = None # means to remove all WAL files if next_backup: remove_until = next_backup elif BackupOptions.CONCURRENT_BACKUP in self.config.backup_options: remove_until = backup timelines_to_protect = set() # If remove_until is not set there are no backup left if remove_until: # Retrieve the list of extra timelines that contains at least # a backup. On such timelines we don't want to delete any WAL for value in self.get_available_backups( BackupInfo.STATUS_ARCHIVING).values(): # Ignore the backup that is being deleted if value == backup: continue timelines_to_protect.add(value.timeline) # Remove the timeline of `remove_until` from the list. # We have enough information to safely delete unused WAL files # on it. timelines_to_protect -= set([remove_until.timeline]) output.info("Delete associated WAL segments:") for name in self.remove_wal_before_backup(remove_until, timelines_to_protect): output.info("\t%s", name) # As last action, remove the backup directory, # ending the delete operation try: self.delete_basebackup(backup) except OSError as e: output.error("Failure deleting backup %s for server %s.\n%s\n" "Please manually remove the '%s' directory", backup.backup_id, self.config.name, e, backup.get_basebackup_directory()) return False self.backup_cache_remove(backup) # Save the time of the complete removal of the backup delete_end_time = datetime.datetime.now() output.info("Deleted backup %s (start time: %s, elapsed time: %s)", backup.backup_id, delete_start_time.ctime(), human_readable_timedelta( delete_end_time - delete_start_time)) # Remove the sync lockfile if exists sync_lock = ServerBackupSyncLock(self.config.barman_lock_directory, self.config.name, backup.backup_id) if os.path.exists(sync_lock.filename): _logger.debug("Deleting backup sync lockfile: %s" % sync_lock.filename) os.unlink(sync_lock.filename) # Run the post_delete_retry_script if present. try: retry_script = RetryHookScriptRunner( self, 'delete_retry_script', 'post') retry_script.env_from_backup_info(backup) retry_script.run() except AbortedRetryHookScript as e: # Ignore the ABORT_STOP as it is a post-hook operation _logger.warning("Ignoring stop request after receiving " "abort (exit code %d) from post-delete " "retry hook script: %s", e.hook.exit_status, e.hook.script) # Run the post_delete_script if present. script = HookScriptRunner(self, 'delete_script', 'post') script.env_from_backup_info(backup) script.run() return True def backup(self, wait=False, wait_timeout=None): """ Performs a backup for the server :param bool wait: wait for all the required WAL files to be archived :param int|None wait_timeout: :return BackupInfo: the generated BackupInfo """ _logger.debug("initialising backup information") self.executor.init() backup_info = None try: # Create the BackupInfo object representing the backup backup_info = LocalBackupInfo( self.server, backup_id=datetime.datetime.now().strftime('%Y%m%dT%H%M%S')) backup_info.save() self.backup_cache_add(backup_info) output.info( "Starting backup using %s method for server %s in %s", self.mode, self.config.name, backup_info.get_basebackup_directory()) # Run the pre-backup-script if present. script = HookScriptRunner(self, 'backup_script', 'pre') script.env_from_backup_info(backup_info) script.run() # Run the pre-backup-retry-script if present. retry_script = RetryHookScriptRunner( self, 'backup_retry_script', 'pre') retry_script.env_from_backup_info(backup_info) retry_script.run() # Do the backup using the BackupExecutor self.executor.backup(backup_info) # Compute backup size and fsync it on disk self.backup_fsync_and_set_sizes(backup_info) # Mark the backup as WAITING_FOR_WALS backup_info.set_attribute("status", BackupInfo.WAITING_FOR_WALS) # Use BaseException instead of Exception to catch events like # KeyboardInterrupt (e.g.: CTRL-C) except BaseException as e: msg_lines = force_str(e).strip().splitlines() # If the exception has no attached message use the raw # type name if len(msg_lines) == 0: msg_lines = [type(e).__name__] if backup_info: # Use only the first line of exception message # in backup_info error field backup_info.set_attribute("status", "FAILED") backup_info.set_attribute( "error", "failure %s (%s)" % ( self.executor.current_action, msg_lines[0])) output.error("Backup failed %s.\nDETAILS: %s", self.executor.current_action, '\n'.join(msg_lines)) else: output.info("Backup end at LSN: %s (%s, %08X)", backup_info.end_xlog, backup_info.end_wal, backup_info.end_offset) executor = self.executor output.info( "Backup completed (start time: %s, elapsed time: %s)", self.executor.copy_start_time, human_readable_timedelta( datetime.datetime.now() - executor.copy_start_time)) # Create a restore point after a backup target_name = 'barman_%s' % backup_info.backup_id self.server.postgres.create_restore_point(target_name) # If requested, wait for end_wal to be archived if wait: try: self.server.wait_for_wal(backup_info.end_wal, wait_timeout) self.check_backup(backup_info) except KeyboardInterrupt: # Ignore CTRL-C pressed while waiting for WAL files output.info( "Got CTRL-C. Continuing without waiting for '%s' " "to be archived", backup_info.end_wal) finally: if backup_info: backup_info.save() # Make sure we are not holding any PostgreSQL connection # during the post-backup scripts self.server.close() # Run the post-backup-retry-script if present. try: retry_script = RetryHookScriptRunner( self, 'backup_retry_script', 'post') retry_script.env_from_backup_info(backup_info) retry_script.run() except AbortedRetryHookScript as e: # Ignore the ABORT_STOP as it is a post-hook operation _logger.warning("Ignoring stop request after receiving " "abort (exit code %d) from post-backup " "retry hook script: %s", e.hook.exit_status, e.hook.script) # Run the post-backup-script if present. script = HookScriptRunner(self, 'backup_script', 'post') script.env_from_backup_info(backup_info) script.run() output.result('backup', backup_info) return backup_info def recover(self, backup_info, dest, tablespaces=None, remote_command=None, **kwargs): """ Performs a recovery of a backup :param barman.infofile.LocalBackupInfo backup_info: the backup to recover :param str dest: the destination directory :param dict[str,str]|None tablespaces: a tablespace name -> location map (for relocation) :param str|None remote_command: default None. The remote command to recover the base backup, in case of remote backup. :kwparam str|None target_tli: the target timeline :kwparam str|None target_time: the target time :kwparam str|None target_xid: the target xid :kwparam str|None target_lsn: the target LSN :kwparam str|None target_name: the target name created previously with pg_create_restore_point() function call :kwparam bool|None target_immediate: end recovery as soon as consistency is reached :kwparam bool exclusive: whether the recovery is exclusive or not :kwparam str|None target_action: default None. The recovery target action :kwparam bool|None standby_mode: the standby mode if needed """ # Archive every WAL files in the incoming directory of the server self.server.archive_wal(verbose=False) # Delegate the recovery operation to a RecoveryExecutor object executor = RecoveryExecutor(self) # Run the pre_recovery_script if present. script = HookScriptRunner(self, 'recovery_script', 'pre') script.env_from_recover( backup_info, dest, tablespaces, remote_command, **kwargs) script.run() # Run the pre_recovery_retry_script if present. retry_script = RetryHookScriptRunner( self, 'recovery_retry_script', 'pre') retry_script.env_from_recover( backup_info, dest, tablespaces, remote_command, **kwargs) retry_script.run() # Execute the recovery. # We use a closing context to automatically remove # any resource eventually allocated during recovery. with closing(executor): recovery_info = executor.recover( backup_info, dest, tablespaces=tablespaces, remote_command=remote_command, **kwargs) # Run the post_recovery_retry_script if present. try: retry_script = RetryHookScriptRunner( self, 'recovery_retry_script', 'post') retry_script.env_from_recover( backup_info, dest, tablespaces, remote_command, **kwargs) retry_script.run() except AbortedRetryHookScript as e: # Ignore the ABORT_STOP as it is a post-hook operation _logger.warning("Ignoring stop request after receiving " "abort (exit code %d) from post-recovery " "retry hook script: %s", e.hook.exit_status, e.hook.script) # Run the post-recovery-script if present. script = HookScriptRunner(self, 'recovery_script', 'post') script.env_from_recover(backup_info, dest, tablespaces, remote_command, **kwargs) script.run() # Output recovery results output.result('recovery', recovery_info['results']) def archive_wal(self, verbose=True): """ Executes WAL maintenance operations, such as archiving and compression If verbose is set to False, outputs something only if there is at least one file :param bool verbose: report even if no actions """ for archiver in self.server.archivers: archiver.archive(verbose) def cron_retention_policy(self): """ Retention policy management """ enforce_retention_policies = self.server.enforce_retention_policies retention_policy_mode = self.config.retention_policy_mode if (enforce_retention_policies and retention_policy_mode == 'auto'): available_backups = self.get_available_backups( BackupInfo.STATUS_ALL) retention_status = self.config.retention_policy.report() for bid in sorted(retention_status.keys()): if retention_status[bid] == BackupInfo.OBSOLETE: output.info( "Enforcing retention policy: removing backup %s for " "server %s" % (bid, self.config.name)) self.delete_backup(available_backups[bid]) def delete_basebackup(self, backup): """ Delete the basebackup dir of a given backup. :param barman.infofile.LocalBackupInfo backup: the backup to delete """ backup_dir = backup.get_basebackup_directory() _logger.debug("Deleting base backup directory: %s" % backup_dir) shutil.rmtree(backup_dir) def delete_backup_data(self, backup): """ Delete the data contained in a given backup. :param barman.infofile.LocalBackupInfo backup: the backup to delete """ if backup.tablespaces: if backup.backup_version == 2: tbs_dir = backup.get_basebackup_directory() else: tbs_dir = os.path.join(backup.get_data_directory(), 'pg_tblspc') for tablespace in backup.tablespaces: rm_dir = os.path.join(tbs_dir, str(tablespace.oid)) if os.path.exists(rm_dir): _logger.debug("Deleting tablespace %s directory: %s" % (tablespace.name, rm_dir)) shutil.rmtree(rm_dir) pg_data = backup.get_data_directory() if os.path.exists(pg_data): _logger.debug("Deleting PGDATA directory: %s" % pg_data) shutil.rmtree(pg_data) def delete_wal(self, wal_info): """ Delete a WAL segment, with the given WalFileInfo :param barman.infofile.WalFileInfo wal_info: the WAL to delete """ # Run the pre_wal_delete_script if present. script = HookScriptRunner(self, 'wal_delete_script', 'pre') script.env_from_wal_info(wal_info) script.run() # Run the pre_wal_delete_retry_script if present. retry_script = RetryHookScriptRunner( self, 'wal_delete_retry_script', 'pre') retry_script.env_from_wal_info(wal_info) retry_script.run() error = None try: os.unlink(wal_info.fullpath(self.server)) try: os.removedirs(os.path.dirname(wal_info.fullpath(self.server))) except OSError: # This is not an error condition # We always try to remove the the trailing directories, # this means that hashdir is not empty. pass except OSError as e: error = ('Ignoring deletion of WAL file %s for server %s: %s' % (wal_info.name, self.config.name, e)) output.warning(error) # Run the post_wal_delete_retry_script if present. try: retry_script = RetryHookScriptRunner( self, 'wal_delete_retry_script', 'post') retry_script.env_from_wal_info(wal_info, None, error) retry_script.run() except AbortedRetryHookScript as e: # Ignore the ABORT_STOP as it is a post-hook operation _logger.warning("Ignoring stop request after receiving " "abort (exit code %d) from post-wal-delete " "retry hook script: %s", e.hook.exit_status, e.hook.script) # Run the post_wal_delete_script if present. script = HookScriptRunner(self, 'wal_delete_script', 'post') script.env_from_wal_info(wal_info, None, error) script.run() def check(self, check_strategy): """ This function does some checks on the server. :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check('compression settings') # Check compression_setting parameter if self.config.compression and not self.compression_manager.check(): check_strategy.result(self.config.name, False) else: status = True try: self.compression_manager.get_default_compressor() except CompressionIncompatibility as field: check_strategy.result(self.config.name, '%s setting' % field, False) status = False check_strategy.result(self.config.name, status) # Failed backups check check_strategy.init_check('failed backups') failed_backups = self.get_available_backups((BackupInfo.FAILED,)) status = len(failed_backups) == 0 check_strategy.result( self.config.name, status, hint='there are %s failed backups' % (len(failed_backups,)) ) check_strategy.init_check('minimum redundancy requirements') # Minimum redundancy checks no_backups = len(self.get_available_backups( status_filter=(BackupInfo.DONE,))) # Check minimum_redundancy_requirements parameter if no_backups < int(self.config.minimum_redundancy): status = False else: status = True check_strategy.result( self.config.name, status, hint='have %s backups, expected at least %s' % ( no_backups, self.config.minimum_redundancy)) # TODO: Add a check for the existence of ssh and of rsync # Execute additional checks defined by the BackupExecutor if self.executor: self.executor.check(check_strategy) def status(self): """ This function show the server status """ # get number of backups no_backups = len(self.get_available_backups( status_filter=(BackupInfo.DONE,))) output.result('status', self.config.name, "backups_number", "No. of available backups", no_backups) output.result('status', self.config.name, "first_backup", "First available backup", self.get_first_backup_id()) output.result('status', self.config.name, "last_backup", "Last available backup", self.get_last_backup_id()) # Minimum redundancy check. if number of backups minor than minimum # redundancy, fail. if no_backups < self.config.minimum_redundancy: output.result('status', self.config.name, "minimum_redundancy", "Minimum redundancy requirements", "FAILED (%s/%s)" % ( no_backups, self.config.minimum_redundancy)) else: output.result('status', self.config.name, "minimum_redundancy", "Minimum redundancy requirements", "satisfied (%s/%s)" % ( no_backups, self.config.minimum_redundancy)) # Output additional status defined by the BackupExecutor if self.executor: self.executor.status() def fetch_remote_status(self): """ Build additional remote status lines defined by the BackupManager. This method does not raise any exception in case of errors, but set the missing values to None in the resulting dictionary. :rtype: dict[str, None|str] """ if self.executor: return self.executor.get_remote_status() else: return {} def rebuild_xlogdb(self): """ Rebuild the whole xlog database guessing it from the archive content. """ from os.path import isdir, join output.info("Rebuilding xlogdb for server %s", self.config.name) root = self.config.wals_directory comp_manager = self.compression_manager wal_count = label_count = history_count = 0 # lock the xlogdb as we are about replacing it completely with self.server.xlogdb('w') as fxlogdb: xlogdb_new = fxlogdb.name + ".new" with open(xlogdb_new, 'w') as fxlogdb_new: for name in sorted(os.listdir(root)): # ignore the xlogdb and its lockfile if name.startswith(self.server.XLOG_DB): continue fullname = join(root, name) if isdir(fullname): # all relevant files are in subdirectories hash_dir = fullname for wal_name in sorted(os.listdir(hash_dir)): fullname = join(hash_dir, wal_name) if isdir(fullname): _logger.warning( 'unexpected directory ' 'rebuilding the wal database: %s', fullname) else: if xlog.is_wal_file(fullname): wal_count += 1 elif xlog.is_backup_file(fullname): label_count += 1 elif fullname.endswith('.tmp'): _logger.warning( 'temporary file found ' 'rebuilding the wal database: %s', fullname) continue else: _logger.warning( 'unexpected file ' 'rebuilding the wal database: %s', fullname) continue wal_info = comp_manager.get_wal_file_info( fullname) fxlogdb_new.write(wal_info.to_xlogdb_line()) else: # only history files are here if xlog.is_history_file(fullname): history_count += 1 wal_info = comp_manager.get_wal_file_info( fullname) fxlogdb_new.write(wal_info.to_xlogdb_line()) else: _logger.warning( 'unexpected file ' 'rebuilding the wal database: %s', fullname) os.fsync(fxlogdb_new.fileno()) shutil.move(xlogdb_new, fxlogdb.name) fsync_dir(os.path.dirname(fxlogdb.name)) output.info('Done rebuilding xlogdb for server %s ' '(history: %s, backup_labels: %s, wal_file: %s)', self.config.name, history_count, label_count, wal_count) def get_latest_archived_wals_info(self): """ Return a dictionary of timelines associated with the WalFileInfo of the last WAL file in the archive, or None if the archive doesn't contain any WAL file. :rtype: dict[str, WalFileInfo]|None """ from os.path import isdir, join root = self.config.wals_directory comp_manager = self.compression_manager # If the WAL archive directory doesn't exists the archive is empty if not isdir(root): return dict() # Traverse all the directory in the archive in reverse order, # returning the first WAL file found timelines = {} for name in sorted(os.listdir(root), reverse=True): fullname = join(root, name) # All relevant files are in subdirectories, so # we skip any non-directory entry if isdir(fullname): # Extract the timeline. If it is not valid, skip this directory try: timeline = name[0:8] int(timeline, 16) except ValueError: continue # If this timeline already has a file, skip this directory if timeline in timelines: continue hash_dir = fullname # Inspect contained files in reverse order for wal_name in sorted(os.listdir(hash_dir), reverse=True): fullname = join(hash_dir, wal_name) # Return the first file that has the correct name if not isdir(fullname) and xlog.is_wal_file(fullname): timelines[timeline] = comp_manager.get_wal_file_info( fullname) break # Return the timeline map return timelines def remove_wal_before_backup(self, backup_info, timelines_to_protect=None): """ Remove WAL files which have been archived before the start of the provided backup. If no backup_info is provided delete all available WAL files If timelines_to_protect list is passed, never remove a wal in one of these timelines. :param BackupInfo|None backup_info: the backup information structure :param set timelines_to_protect: optional list of timelines to protect :return list: a list of removed WAL files """ removed = [] with self.server.xlogdb() as fxlogdb: xlogdb_new = fxlogdb.name + ".new" with open(xlogdb_new, 'w') as fxlogdb_new: for line in fxlogdb: wal_info = WalFileInfo.from_xlogdb_line(line) if not xlog.is_any_xlog_file(wal_info.name): output.error( "invalid WAL segment name %r\n" "HINT: Please run \"barman rebuild-xlogdb %s\" " "to solve this issue", wal_info.name, self.config.name) continue # Keeps the WAL segment if it is a history file keep = xlog.is_history_file(wal_info.name) # Keeps the WAL segment if its timeline is in # `timelines_to_protect` if timelines_to_protect: tli, _, _ = xlog.decode_segment_name(wal_info.name) keep |= tli in timelines_to_protect # Keeps the WAL segment if it is a newer # than the given backup (the first available) if backup_info: keep |= wal_info.name >= backup_info.begin_wal # If the file has to be kept write it in the new xlogdb # otherwise delete it and record it in the removed list if keep: fxlogdb_new.write(wal_info.to_xlogdb_line()) else: self.delete_wal(wal_info) removed.append(wal_info.name) fxlogdb_new.flush() os.fsync(fxlogdb_new.fileno()) shutil.move(xlogdb_new, fxlogdb.name) fsync_dir(os.path.dirname(fxlogdb.name)) return removed def validate_last_backup_maximum_age(self, last_backup_maximum_age): """ Evaluate the age of the last available backup in a catalogue. If the last backup is older than the specified time interval (age), the function returns False. If within the requested age interval, the function returns True. :param timedate.timedelta last_backup_maximum_age: time interval representing the maximum allowed age for the last backup in a server catalogue :return tuple: a tuple containing the boolean result of the check and auxiliary information about the last backup current age """ # Get the ID of the last available backup backup_id = self.get_last_backup_id() if backup_id: # Get the backup object backup = LocalBackupInfo(self.server, backup_id=backup_id) now = datetime.datetime.now(dateutil.tz.tzlocal()) # Evaluate the point of validity validity_time = now - last_backup_maximum_age # Pretty print of a time interval (age) msg = human_readable_timedelta(now - backup.end_time) # If the backup end time is older than the point of validity, # return False, otherwise return true if backup.end_time < validity_time: return False, msg else: return True, msg else: # If no backup is available return false return False, "No available backups" def backup_fsync_and_set_sizes(self, backup_info): """ Fsync all files in a backup and set the actual size on disk of a backup. Also evaluate the deduplication ratio and the deduplicated size if applicable. :param LocalBackupInfo backup_info: the backup to update """ # Calculate the base backup size self.executor.current_action = "calculating backup size" _logger.debug(self.executor.current_action) backup_size = 0 deduplicated_size = 0 backup_dest = backup_info.get_basebackup_directory() for dir_path, _, file_names in os.walk(backup_dest): # execute fsync() on the containing directory fsync_dir(dir_path) # execute fsync() on all the contained files for filename in file_names: file_path = os.path.join(dir_path, filename) file_stat = fsync_file(file_path) backup_size += file_stat.st_size # Excludes hard links from real backup size if file_stat.st_nlink == 1: deduplicated_size += file_stat.st_size # Save size into BackupInfo object backup_info.set_attribute('size', backup_size) backup_info.set_attribute('deduplicated_size', deduplicated_size) if backup_info.size > 0: deduplication_ratio = 1 - (float( backup_info.deduplicated_size) / backup_info.size) else: deduplication_ratio = 0 if self.config.reuse_backup == 'link': output.info( "Backup size: %s. Actual size on disk: %s" " (-%s deduplication ratio)." % ( pretty_size(backup_info.size), pretty_size(backup_info.deduplicated_size), '{percent:.2%}'.format(percent=deduplication_ratio) )) else: output.info("Backup size: %s" % pretty_size(backup_info.size)) def check_backup(self, backup_info): """ Make sure that all the required WAL files to check the consistency of a physical backup (that is, from the beginning to the end of the full backup) are correctly archived. This command is automatically invoked by the cron command and at the end of every backup operation. :param backup_info: the target backup """ # Gather the list of the latest archived wals timelines = self.get_latest_archived_wals_info() # Get the basic info for the backup begin_wal = backup_info.begin_wal end_wal = backup_info.end_wal timeline = begin_wal[:8] # Case 0: there is nothing to check for this backup, as it is # currently in progress if not end_wal: return # Case 1: Barman still doesn't know about the timeline the backup # started with. We still haven't archived any WAL corresponding # to the backup, so we can't proceed with checking the existence # of the required WAL files if not timelines or timeline not in timelines: backup_info.status = BackupInfo.WAITING_FOR_WALS backup_info.save() return # Find the most recent archived WAL for this server in the timeline # where the backup was taken last_archived_wal = timelines[timeline].name # Case 2: the most recent WAL file archived is older than the # start of the backup. We must wait for the archiver to receive # and/or process the WAL files. if last_archived_wal < begin_wal: backup_info.status = BackupInfo.WAITING_FOR_WALS backup_info.save() return # Check the intersection between the required WALs and the archived # ones. They should all exist segments = backup_info.get_required_wal_segments() missing_wal = None for wal in segments: # Stop checking if we reach the last archived wal if wal > last_archived_wal: break wal_full_path = self.server.get_wal_full_path(wal) if not os.path.exists(wal_full_path): missing_wal = wal break if missing_wal: # Case 3: the most recent WAL file archived is more recent than # the one corresponding to the start of a backup. If WAL # file is missing, then we can't recover from the backup so we # must mark the backup as FAILED. # TODO: Verify if the error field is the right place # to store the error message backup_info.error = ( "At least one WAL file is missing. " "The first missing WAL file is %s" % missing_wal) backup_info.status = BackupInfo.FAILED backup_info.save() return if end_wal <= last_archived_wal: # Case 4: if the most recent WAL file archived is more recent or # equal than the one corresponding to the end of the backup and # every WAL that will be required by the recovery is available, # we can mark the backup as DONE. backup_info.status = BackupInfo.DONE else: # Case 5: if the most recent WAL file archived is older than # the one corresponding to the end of the backup but # all the WAL files until that point are present. backup_info.status = BackupInfo.WAITING_FOR_WALS backup_info.save() barman-2.10/barman/postgres_plumbing.py0000644000015500001620000000662113571162460016435 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ PostgreSQL Plumbing module This module contain low-level PostgreSQL related information, such as the on-disk structure and the name of the core functions in different PostgreSQL versions. """ PGDATA_EXCLUDE_LIST = [ # Exclude this to avoid log files copy '/pg_log/*', # Exclude this for (PostgreSQL < 10) to avoid WAL files copy '/pg_xlog/*', # This have been renamed on PostgreSQL 10 '/pg_wal/*', # We handle this on a different step of the copy '/global/pg_control', ] EXCLUDE_LIST = [ # Files: see excludeFiles const in PostgreSQL source 'pgsql_tmp*', 'postgresql.auto.conf.tmp', 'current_logfiles.tmp', 'pg_internal.init', 'postmaster.pid', 'postmaster.opts', 'recovery.conf', 'standby.signal', # Directories: see excludeDirContents const in PostgreSQL source 'pg_dynshmem/*', 'pg_notify/*', 'pg_replslot/*', 'pg_serial/*', 'pg_stat_tmp/*', 'pg_snapshots/*', 'pg_subtrans/*', ] def function_name_map(server_version): """ Return a map with function and directory names according to the current PostgreSQL version. Each entry has the `current` name as key and the name for the specific version as value. :param number|None server_version: Version of PostgreSQL as returned by psycopg2 (i.e. 90301 represent PostgreSQL 9.3.1). If the version is None, default to the latest PostgreSQL version :rtype: dict[str] """ if server_version and server_version < 100000: return { 'pg_switch_wal': 'pg_switch_xlog', 'pg_walfile_name': 'pg_xlogfile_name', 'pg_wal': 'pg_xlog', 'pg_walfile_name_offset': 'pg_xlogfile_name_offset', 'pg_last_wal_replay_lsn': 'pg_last_xlog_replay_location', 'pg_current_wal_lsn': 'pg_current_xlog_location', 'pg_current_wal_insert_lsn': 'pg_current_xlog_insert_location', 'pg_last_wal_receive_lsn': 'pg_last_xlog_receive_location', 'sent_lsn': 'sent_location', 'write_lsn': 'write_location', 'flush_lsn': 'flush_location', 'replay_lsn': 'replay_location', } return { 'pg_switch_wal': 'pg_switch_wal', 'pg_walfile_name': 'pg_walfile_name', 'pg_wal': 'pg_wal', 'pg_walfile_name_offset': 'pg_walfile_name_offset', 'pg_last_wal_replay_lsn': 'pg_last_wal_replay_lsn', 'pg_current_wal_lsn': 'pg_current_wal_lsn', 'pg_current_wal_insert_lsn': 'pg_current_wal_insert_lsn', 'pg_last_wal_receive_lsn': 'pg_last_wal_receive_lsn', 'sent_lsn': 'sent_lsn', 'write_lsn': 'write_lsn', 'flush_lsn': 'flush_lsn', 'replay_lsn': 'replay_lsn', } barman-2.10/barman/remote_status.py0000644000015500001620000000436013571162460015566 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ Remote Status module A Remote Status class implements a standard interface for retrieving and caching the results of a remote component (such as Postgres server, WAL archiver, etc.). It follows the Mixin pattern. """ from abc import ABCMeta, abstractmethod from barman.utils import with_metaclass class RemoteStatusMixin(with_metaclass(ABCMeta, object)): """ Abstract base class that implements remote status capabilities following the Mixin pattern. """ def __init__(self, *args, **kwargs): """ Base constructor (Mixin pattern) """ self._remote_status = None super(RemoteStatusMixin, self).__init__(*args, **kwargs) @abstractmethod def fetch_remote_status(self): """ Retrieve status information from the remote component The implementation of this method must not raise any exception in case of errors, but should set the missing values to None in the resulting dictionary. :rtype: dict[str, None|str] """ def get_remote_status(self): """ Get the status of the remote component This method does not raise any exception in case of errors, but set the missing values to None in the resulting dictionary. :rtype: dict[str, None|str] """ if self._remote_status is None: self._remote_status = self.fetch_remote_status() return self._remote_status def reset_remote_status(self): """ Reset the cached result """ self._remote_status = None barman-2.10/barman/exceptions.py0000644000015500001620000001755513571162460015063 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . class BarmanException(Exception): """ The base class of all other barman exceptions """ class ConfigurationException(BarmanException): """ Base exception for all the Configuration errors """ class CommandException(BarmanException): """ Base exception for all the errors related to the execution of a Command. """ class CompressionException(BarmanException): """ Base exception for all the errors related to the execution of a compression action. """ class PostgresException(BarmanException): """ Base exception for all the errors related to PostgreSQL. """ class BackupException(BarmanException): """ Base exception for all the errors related to the execution of a backup. """ class WALFileException(BarmanException): """ Base exception for all the errors related to WAL files. """ def __str__(self): """ Human readable string representation """ return "%s:%s" % (self.__class__.__name__, self.args[0] if self.args else None) class HookScriptException(BarmanException): """ Base exception for all the errors related to Hook Script execution. """ class LockFileException(BarmanException): """ Base exception for lock related errors """ class SyncException(BarmanException): """ Base Exception for synchronisation functions """ class DuplicateWalFile(WALFileException): """ A duplicate WAL file has been found """ class MatchingDuplicateWalFile(DuplicateWalFile): """ A duplicate WAL file has been found, but it's identical to the one we already have. """ class SshCommandException(CommandException): """ Error parsing ssh_command parameter """ class UnknownBackupIdException(BackupException): """ The searched backup_id doesn't exists """ class BackupInfoBadInitialisation(BackupException): """ Exception for a bad initialization error """ class SyncError(SyncException): """ Synchronisation error """ class SyncNothingToDo(SyncException): """ Nothing to do during sync operations """ class SyncToBeDeleted(SyncException): """ An incomplete backup is to be deleted """ class CommandFailedException(CommandException): """ Exception representing a failed command """ class CommandMaxRetryExceeded(CommandFailedException): """ A command with retry_times > 0 has exceeded the number of available retry """ class RsyncListFilesFailure(CommandException): """ Failure parsing the output of a "rsync --list-only" command """ class DataTransferFailure(CommandException): """ Used to pass failure details from a data transfer Command """ @classmethod def from_command_error(cls, cmd, e, msg): """ This method build a DataTransferFailure exception and report the provided message to the user (both console and log file) along with the output of the failed command. :param str cmd: The command that failed the transfer :param CommandFailedException e: The exception we are handling :param str msg: a descriptive message on what we are trying to do :return DataTransferFailure: will contain the message provided in msg """ try: details = msg details += "\n%s error:\n" % cmd details += e.args[0]['out'] details += e.args[0]['err'] return cls(details) except (TypeError, NameError): # If it is not a dictionary just convert it to a string from barman.utils import force_str return cls(force_str(e.args)) class CompressionIncompatibility(CompressionException): """ Exception for compression incompatibility """ class FsOperationFailed(CommandException): """ Exception which represents a failed execution of a command on FS """ class LockFileBusy(LockFileException): """ Raised when a lock file is not free """ class LockFilePermissionDenied(LockFileException): """ Raised when a lock file is not accessible """ class LockFileParsingError(LockFileException): """ Raised when the content of the lockfile is unexpected """ class ConninfoException(ConfigurationException): """ Error for missing or failed parsing of the conninfo parameter (DSN) """ class PostgresConnectionError(PostgresException): """ Error connecting to the PostgreSQL server """ def __str__(self): # Returns the first line if self.args and self.args[0]: return str(self.args[0]).splitlines()[0].strip() else: return '' class PostgresAppNameError(PostgresConnectionError): """ Error setting application name with PostgreSQL server """ class PostgresSuperuserRequired(PostgresException): """ Superuser access is required """ class PostgresIsInRecovery(PostgresException): """ PostgreSQL is in recovery, so no write operations are allowed """ class PostgresUnsupportedFeature(PostgresException): """ Unsupported feature """ class PostgresDuplicateReplicationSlot(PostgresException): """ The creation of a physical replication slot failed because the slot already exists """ class PostgresReplicationSlotsFull(PostgresException): """ The creation of a physical replication slot failed because the all the replication slots have been taken """ class PostgresReplicationSlotInUse(PostgresException): """ The drop of a physical replication slot failed because the replication slots is in use """ class PostgresInvalidReplicationSlot(PostgresException): """ Exception representing a failure during the deletion of a non existent replication slot """ class TimeoutError(CommandException): """ A timeout occurred. """ class ArchiverFailure(WALFileException): """ Exception representing a failure during the execution of the archive process """ class BadXlogSegmentName(WALFileException): """ Exception for a bad xlog name """ class BadHistoryFileContents(WALFileException): """ Exception for a corrupted history file """ class AbortedRetryHookScript(HookScriptException): """ Exception for handling abort of retry hook scripts """ def __init__(self, hook): """ Initialise the exception with hook script info """ self.hook = hook def __str__(self): """ String representation """ return ("Abort '%s_%s' retry hook script (%s, exit code: %d)" % ( self.hook.phase, self.hook.name, self.hook.script, self.hook.exit_status)) class RecoveryException(BarmanException): """ Exception for a recovery error """ class RecoveryTargetActionException(RecoveryException): """ Exception for a wrong recovery target action """ class RecoveryStandbyModeException(RecoveryException): """ Exception for a wrong recovery standby mode """ class RecoveryInvalidTargetException(RecoveryException): """ Exception for a wrong recovery target """ barman-2.10/barman/wal_archiver.py0000644000015500001620000012267113571162460015344 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see import collections import datetime import errno import filecmp import logging import os import shutil from abc import ABCMeta, abstractmethod from glob import glob from distutils.version import LooseVersion as Version from barman import output, xlog from barman.command_wrappers import CommandFailedException, PgReceiveXlog from barman.exceptions import (AbortedRetryHookScript, ArchiverFailure, DuplicateWalFile, MatchingDuplicateWalFile) from barman.hooks import HookScriptRunner, RetryHookScriptRunner from barman.infofile import WalFileInfo from barman.remote_status import RemoteStatusMixin from barman.utils import fsync_dir, fsync_file, mkpath, with_metaclass from barman.xlog import is_partial_file _logger = logging.getLogger(__name__) class WalArchiverQueue(list): def __init__(self, items, errors=None, skip=None, batch_size=0): """ A WalArchiverQueue is a list of WalFileInfo which has two extra attribute list: * errors: containing a list of unrecognized files * skip: containing a list of skipped files. It also stores batch run size information in case it is requested by configuration, in order to limit the number of WAL files that are processed in a single run of the archive-wal command. :param items: iterable from which initialize the list :param batch_size: size of the current batch run (0=unlimited) :param errors: an optional list of unrecognized files :param skip: an optional list of skipped files """ super(WalArchiverQueue, self).__init__(items) self.skip = [] self.errors = [] if skip is not None: self.skip = skip if errors is not None: self.errors = errors # Normalises batch run size if batch_size > 0: self.batch_size = batch_size else: self.batch_size = 0 @property def size(self): """ Number of valid WAL segments waiting to be processed (in total) :return int: total number of valid WAL files """ return len(self) @property def run_size(self): """ Number of valid WAL files to be processed in this run - takes in consideration the batch size :return int: number of valid WAL files for this batch run """ # In case a batch size has been explicitly specified # (i.e. batch_size > 0), returns the minimum number between # batch size and the queue size. Otherwise, simply # returns the total queue size (unlimited batch size). if self.batch_size > 0: return min(self.size, self.batch_size) return self.size class WalArchiver(with_metaclass(ABCMeta, RemoteStatusMixin)): """ Base class for WAL archiver objects """ def __init__(self, backup_manager, name): """ Base class init method. :param backup_manager: The backup manager :param name: The name of this archiver :return: """ self.backup_manager = backup_manager self.server = backup_manager.server self.config = backup_manager.config self.name = name super(WalArchiver, self).__init__() def receive_wal(self, reset=False): """ Manage reception of WAL files. Does nothing by default. Some archiver classes, like the StreamingWalArchiver, have a full implementation. :param bool reset: When set, resets the status of receive-wal :raise ArchiverFailure: when something goes wrong """ def archive(self, verbose=True): """ Archive WAL files, discarding duplicates or those that are not valid. :param boolean verbose: Flag for verbose output """ compressor = self.backup_manager.compression_manager \ .get_default_compressor() stamp = datetime.datetime.utcnow().strftime('%Y%m%dT%H%M%SZ') processed = 0 header = "Processing xlog segments from %s for %s" % ( self.name, self.config.name) # Get the next batch of WAL files to be processed batch = self.get_next_batch() # Analyse the batch and properly log the information if batch.size: if batch.size > batch.run_size: # Batch mode enabled _logger.info("Found %s xlog segments from %s for %s." " Archive a batch of %s segments in this run.", batch.size, self.name, self.config.name, batch.run_size) header += " (batch size: %s)" % batch.run_size else: # Single run mode (traditional) _logger.info("Found %s xlog segments from %s for %s." " Archive all segments in one run.", batch.size, self.name, self.config.name) else: _logger.info("No xlog segments found from %s for %s.", self.name, self.config.name) # Print the header (verbose mode) if verbose: output.info(header, log=False) # Loop through all available WAL files for wal_info in batch: # Print the header (non verbose mode) if not processed and not verbose: output.info(header, log=False) # Exit when archive batch size is reached if processed >= batch.run_size: _logger.debug("Batch size reached (%s) - " "Exit %s process for %s", batch.batch_size, self.name, self.config.name) break processed += 1 # Report to the user the WAL file we are archiving output.info("\t%s", wal_info.name, log=False) _logger.info("Archiving segment %s of %s from %s: %s/%s", processed, batch.run_size, self.name, self.config.name, wal_info.name) # Archive the WAL file try: self.archive_wal(compressor, wal_info) except MatchingDuplicateWalFile: # We already have this file. Simply unlink the file. os.unlink(wal_info.orig_filename) continue except DuplicateWalFile: output.info("\tError: %s is already present in server %s. " "File moved to errors directory.", wal_info.name, self.config.name) error_dst = os.path.join( self.config.errors_directory, "%s.%s.duplicate" % (wal_info.name, stamp)) # TODO: cover corner case of duplication (unlikely, # but theoretically possible) shutil.move(wal_info.orig_filename, error_dst) continue except AbortedRetryHookScript as e: _logger.warning("Archiving of %s/%s aborted by " "pre_archive_retry_script." "Reason: %s" % (self.config.name, wal_info.name, e)) return if processed: _logger.debug("Archived %s out of %s xlog segments from %s for %s", processed, batch.size, self.name, self.config.name) elif verbose: output.info("\tno file found", log=False) if batch.errors: output.info("Some unknown objects have been found while " "processing xlog segments for %s. " "Objects moved to errors directory:", self.config.name, log=False) # Log unexpected files _logger.warning("Archiver is about to move %s unexpected file(s) " "to errors directory for %s from %s", len(batch.errors), self.config.name, self.name) for error in batch.errors: basename = os.path.basename(error) output.info("\t%s", basename, log=False) # Print informative log line. _logger.warning("Moving unexpected file for %s from %s: %s", self.config.name, self.name, basename) error_dst = os.path.join( self.config.errors_directory, "%s.%s.unknown" % (basename, stamp)) try: shutil.move(error, error_dst) except IOError as e: if e.errno == errno.ENOENT: _logger.warning('%s not found' % error) def archive_wal(self, compressor, wal_info): """ Archive a WAL segment and update the wal_info object :param compressor: the compressor for the file (if any) :param WalFileInfo wal_info: the WAL file is being processed """ src_file = wal_info.orig_filename src_dir = os.path.dirname(src_file) dst_file = wal_info.fullpath(self.server) tmp_file = dst_file + '.tmp' dst_dir = os.path.dirname(dst_file) comp_manager = self.backup_manager.compression_manager error = None try: # Run the pre_archive_script if present. script = HookScriptRunner(self.backup_manager, 'archive_script', 'pre') script.env_from_wal_info(wal_info, src_file) script.run() # Run the pre_archive_retry_script if present. retry_script = RetryHookScriptRunner(self.backup_manager, 'archive_retry_script', 'pre') retry_script.env_from_wal_info(wal_info, src_file) retry_script.run() # Check if destination already exists if os.path.exists(dst_file): src_uncompressed = src_file dst_uncompressed = dst_file dst_info = comp_manager.get_wal_file_info(dst_file) try: if dst_info.compression is not None: dst_uncompressed = dst_file + '.uncompressed' comp_manager \ .get_compressor(dst_info.compression) \ .decompress(dst_file, dst_uncompressed) if wal_info.compression: src_uncompressed = src_file + '.uncompressed' comp_manager \ .get_compressor(wal_info.compression) \ .decompress(src_file, src_uncompressed) # Directly compare files. # When the files are identical # raise a MatchingDuplicateWalFile exception, # otherwise raise a DuplicateWalFile exception. if filecmp.cmp(dst_uncompressed, src_uncompressed): raise MatchingDuplicateWalFile(wal_info) else: raise DuplicateWalFile(wal_info) finally: if src_uncompressed != src_file: os.unlink(src_uncompressed) if dst_uncompressed != dst_file: os.unlink(dst_uncompressed) mkpath(dst_dir) # Compress the file only if not already compressed if compressor and not wal_info.compression: compressor.compress(src_file, tmp_file) # Perform the real filesystem operation with the xlogdb lock taken. # This makes the operation atomic from the xlogdb file POV with self.server.xlogdb('a') as fxlogdb: if compressor and not wal_info.compression: shutil.copystat(src_file, tmp_file) os.rename(tmp_file, dst_file) os.unlink(src_file) # Update wal_info stat = os.stat(dst_file) wal_info.size = stat.st_size wal_info.compression = compressor.compression else: # Try to atomically rename the file. If successful, # the renaming will be an atomic operation # (this is a POSIX requirement). try: os.rename(src_file, dst_file) except OSError: # Source and destination are probably on different # filesystems shutil.copy2(src_file, tmp_file) os.rename(tmp_file, dst_file) os.unlink(src_file) # At this point the original file has been removed wal_info.orig_filename = None # Execute fsync() on the archived WAL file fsync_file(dst_file) # Execute fsync() on the archived WAL containing directory fsync_dir(dst_dir) # Execute fsync() also on the incoming directory fsync_dir(src_dir) # Updates the information of the WAL archive with # the latest segments fxlogdb.write(wal_info.to_xlogdb_line()) # flush and fsync for every line fxlogdb.flush() os.fsync(fxlogdb.fileno()) except Exception as e: # In case of failure save the exception for the post scripts error = e raise # Ensure the execution of the post_archive_retry_script and # the post_archive_script finally: # Run the post_archive_retry_script if present. try: retry_script = RetryHookScriptRunner(self, 'archive_retry_script', 'post') retry_script.env_from_wal_info(wal_info, dst_file, error) retry_script.run() except AbortedRetryHookScript as e: # Ignore the ABORT_STOP as it is a post-hook operation _logger.warning("Ignoring stop request after receiving " "abort (exit code %d) from post-archive " "retry hook script: %s", e.hook.exit_status, e.hook.script) # Run the post_archive_script if present. script = HookScriptRunner(self, 'archive_script', 'post', error) script.env_from_wal_info(wal_info, dst_file) script.run() @abstractmethod def get_next_batch(self): """ Return a WalArchiverQueue containing the WAL files to be archived. :rtype: WalArchiverQueue """ @abstractmethod def check(self, check_strategy): """ Perform specific checks for the archiver - invoked by server.check_postgres :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ @abstractmethod def status(self): """ Set additional status info - invoked by Server.status() """ @staticmethod def summarise_error_files(error_files): """ Summarise a error files list :param list[str] error_files: Error files list to summarise :return str: A summary, None if there are no error files """ if not error_files: return None # The default value for this dictionary will be 0 counters = collections.defaultdict(int) # Count the file types for name in error_files: if name.endswith(".error"): counters['not relevant'] += 1 elif name.endswith(".duplicate"): counters['duplicates'] += 1 elif name.endswith(".unknown"): counters['unknown'] += 1 else: counters['unknown failure'] += 1 # Return a summary list of the form: "item a: 2, item b: 5" return ', '.join("%s: %s" % entry for entry in counters.items()) class FileWalArchiver(WalArchiver): """ Manager of file-based WAL archiving operations (aka 'log shipping'). """ def __init__(self, backup_manager): super(FileWalArchiver, self).__init__(backup_manager, 'file archival') def fetch_remote_status(self): """ Returns the status of the FileWalArchiver. This method does not raise any exception in case of errors, but set the missing values to None in the resulting dictionary. :rtype: dict[str, None|str] """ result = dict.fromkeys( ['archive_mode', 'archive_command'], None) postgres = self.server.postgres # If Postgres is not available we cannot detect anything if not postgres: return result # Query the database for 'archive_mode' and 'archive_command' result['archive_mode'] = postgres.get_setting('archive_mode') result['archive_command'] = postgres.get_setting('archive_command') # Add pg_stat_archiver statistics if the view is supported pg_stat_archiver = postgres.get_archiver_stats() if pg_stat_archiver is not None: result.update(pg_stat_archiver) return result def get_next_batch(self): """ Returns the next batch of WAL files that have been archived through a PostgreSQL's 'archive_command' (in the 'incoming' directory) :return: WalArchiverQueue: list of WAL files """ # Get the batch size from configuration (0 = unlimited) batch_size = self.config.archiver_batch_size # List and sort all files in the incoming directory # IMPORTANT: the list is sorted, and this allows us to know that the # WAL stream we have is monotonically increasing. That allows us to # verify that a backup has all the WALs required for the restore. file_names = glob(os.path.join( self.config.incoming_wals_directory, '*')) file_names.sort() # Process anything that looks like a valid WAL file. Anything # else is treated like an error/anomaly files = [] errors = [] for file_name in file_names: # Ignore temporary files if file_name.endswith('.tmp'): continue if xlog.is_any_xlog_file(file_name) and os.path.isfile(file_name): files.append(file_name) else: errors.append(file_name) # Build the list of WalFileInfo wal_files = [WalFileInfo.from_file(f) for f in files] return WalArchiverQueue(wal_files, batch_size=batch_size, errors=errors) def check(self, check_strategy): """ Perform additional checks for FileWalArchiver - invoked by server.check_postgres :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check('archive_mode') remote_status = self.get_remote_status() # If archive_mode is None, there are issues connecting to PostgreSQL if remote_status['archive_mode'] is None: return # Check archive_mode parameter: must be on if remote_status['archive_mode'] in ('on', 'always'): check_strategy.result(self.config.name, True) else: msg = "please set it to 'on'" if self.server.postgres.server_version >= 90500: msg += " or 'always'" check_strategy.result(self.config.name, False, hint=msg) check_strategy.init_check('archive_command') if remote_status['archive_command'] and \ remote_status['archive_command'] != '(disabled)': check_strategy.result(self.config.name, True, check='archive_command') # Report if the archiving process works without issues. # Skip if the archive_command check fails # It can be None if PostgreSQL is older than 9.4 if remote_status.get('is_archiving') is not None: check_strategy.result( self.config.name, remote_status['is_archiving'], check='continuous archiving') else: check_strategy.result( self.config.name, False, hint='please set it accordingly to documentation') def status(self): """ Set additional status info - invoked by Server.status() """ # We need to get full info here from the server remote_status = self.server.get_remote_status() # If archive_mode is None, there are issues connecting to PostgreSQL if remote_status['archive_mode'] is None: return output.result( 'status', self.config.name, "archive_command", "PostgreSQL 'archive_command' setting", remote_status['archive_command'] or "FAILED " "(please set it accordingly to documentation)") last_wal = remote_status.get('last_archived_wal') # If PostgreSQL is >= 9.4 we have the last_archived_time if last_wal and remote_status.get('last_archived_time'): last_wal += ", at %s" % ( remote_status['last_archived_time'].ctime()) output.result('status', self.config.name, "last_archived_wal", "Last archived WAL", last_wal or "No WAL segment shipped yet") # Set output for WAL archive failures (PostgreSQL >= 9.4) if remote_status.get('failed_count') is not None: remote_fail = str(remote_status['failed_count']) if int(remote_status['failed_count']) > 0: remote_fail += " (%s at %s)" % ( remote_status['last_failed_wal'], remote_status['last_failed_time'].ctime()) output.result('status', self.config.name, 'failed_count', 'Failures of WAL archiver', remote_fail) # Add hourly archive rate if available (PostgreSQL >= 9.4) and > 0 if remote_status.get('current_archived_wals_per_second'): output.result( 'status', self.config.name, 'server_archived_wals_per_hour', 'Server WAL archiving rate', '%0.2f/hour' % ( 3600 * remote_status['current_archived_wals_per_second'])) class StreamingWalArchiver(WalArchiver): """ Object used for the management of streaming WAL archive operation. """ def __init__(self, backup_manager): super(StreamingWalArchiver, self).__init__(backup_manager, 'streaming') def fetch_remote_status(self): """ Execute checks for replication-based wal archiving This method does not raise any exception in case of errors, but set the missing values to None in the resulting dictionary. :rtype: dict[str, None|str] """ remote_status = dict.fromkeys( ('pg_receivexlog_compatible', 'pg_receivexlog_installed', 'pg_receivexlog_path', 'pg_receivexlog_supports_slots', 'pg_receivexlog_synchronous', 'pg_receivexlog_version'), None) # Test pg_receivexlog existence version_info = PgReceiveXlog.get_version_info( self.server.path) if version_info['full_path']: remote_status["pg_receivexlog_installed"] = True remote_status["pg_receivexlog_path"] = version_info['full_path'] remote_status["pg_receivexlog_version"] = ( version_info['full_version']) pgreceivexlog_version = version_info['major_version'] else: remote_status["pg_receivexlog_installed"] = False return remote_status # Retrieve the PostgreSQL version pg_version = None if self.server.streaming is not None: pg_version = self.server.streaming.server_major_version # If one of the version is unknown we cannot compare them if pgreceivexlog_version is None or pg_version is None: return remote_status # pg_version is not None so transform into a Version object # for easier comparison between versions pg_version = Version(pg_version) # Set conservative default values (False) for modern features remote_status["pg_receivexlog_compatible"] = False remote_status['pg_receivexlog_supports_slots'] = False remote_status["pg_receivexlog_synchronous"] = False # pg_receivexlog 9.2 is compatible only with PostgreSQL 9.2. if "9.2" == pg_version == pgreceivexlog_version: remote_status["pg_receivexlog_compatible"] = True # other versions are compatible with lesser versions of PostgreSQL # WARNING: The development versions of `pg_receivexlog` are considered # higher than the stable versions here, but this is not an issue # because it accepts everything that is less than # the `pg_receivexlog` version(e.g. '9.6' is less than '9.6devel') elif "9.2" < pg_version <= pgreceivexlog_version: # At least PostgreSQL 9.3 is required here remote_status["pg_receivexlog_compatible"] = True # replication slots are supported starting from version 9.4 if "9.4" <= pg_version <= pgreceivexlog_version: remote_status['pg_receivexlog_supports_slots'] = True # Synchronous WAL streaming requires replication slots # and pg_receivexlog >= 9.5 if "9.4" <= pg_version and "9.5" <= pgreceivexlog_version: remote_status["pg_receivexlog_synchronous"] = ( self._is_synchronous()) return remote_status def receive_wal(self, reset=False): """ Creates a PgReceiveXlog object and issues the pg_receivexlog command for a specific server :param bool reset: When set reset the status of receive-wal :raise ArchiverFailure: when something goes wrong """ # Ensure the presence of the destination directory mkpath(self.config.streaming_wals_directory) # Execute basic sanity checks on PostgreSQL connection streaming_status = self.server.streaming.get_remote_status() if streaming_status["streaming_supported"] is None: raise ArchiverFailure( 'failed opening the PostgreSQL streaming connection ' 'for server %s' % (self.config.name)) elif not streaming_status["streaming_supported"]: raise ArchiverFailure( 'PostgreSQL version too old (%s < 9.2)' % self.server.streaming.server_txt_version) # Execute basic sanity checks on pg_receivexlog remote_status = self.get_remote_status() if not remote_status["pg_receivexlog_installed"]: raise ArchiverFailure( 'pg_receivexlog not present in $PATH') if not remote_status['pg_receivexlog_compatible']: raise ArchiverFailure( 'pg_receivexlog version not compatible with ' 'PostgreSQL server version') # Execute sanity check on replication slot usage postgres_status = self.server.postgres.get_remote_status() if self.config.slot_name: # Check if slots are supported if not remote_status['pg_receivexlog_supports_slots']: raise ArchiverFailure( 'Physical replication slot not supported by %s ' '(9.4 or higher is required)' % self.server.streaming.server_txt_version) # Check if the required slot exists if postgres_status['replication_slot'] is None: if self.config.create_slot == 'auto': if not reset: output.info("Creating replication slot '%s'", self.config.slot_name) self.server.create_physical_repslot() else: raise ArchiverFailure( "replication slot '%s' doesn't exist. " "Please execute " "'barman receive-wal --create-slot %s'" % (self.config.slot_name, self.config.name)) # Check if the required slot is available elif postgres_status['replication_slot'].active: raise ArchiverFailure( "replication slot '%s' is already in use" % (self.config.slot_name,)) # Check if is a reset request if reset: self._reset_streaming_status(postgres_status, streaming_status) return # Check the size of the .partial WAL file and truncate it if needed self._truncate_partial_file_if_needed( postgres_status['xlog_segment_size']) # Make sure we are not wasting precious PostgreSQL resources self.server.close() _logger.info('Activating WAL archiving through streaming protocol') try: output_handler = PgReceiveXlog.make_output_handler( self.config.name + ': ') receive = PgReceiveXlog( connection=self.server.streaming, destination=self.config.streaming_wals_directory, command=remote_status['pg_receivexlog_path'], version=remote_status['pg_receivexlog_version'], app_name=self.config.streaming_archiver_name, path=self.server.path, slot_name=self.config.slot_name, synchronous=remote_status['pg_receivexlog_synchronous'], out_handler=output_handler, err_handler=output_handler ) # Finally execute the pg_receivexlog process receive.execute() except CommandFailedException as e: # Retrieve the return code from the exception ret_code = e.args[0]['ret'] if ret_code < 0: # If the return code is negative, then pg_receivexlog # was terminated by a signal msg = "pg_receivexlog terminated by signal: %s" \ % abs(ret_code) else: # Otherwise terminated with an error msg = "pg_receivexlog terminated with error code: %s"\ % ret_code raise ArchiverFailure(msg) except KeyboardInterrupt: # This is a normal termination, so there is nothing to do beside # informing the user. output.info('SIGINT received. Terminate gracefully.') def _reset_streaming_status(self, postgres_status, streaming_status): """ Reset the status of receive-wal by removing the .partial file that is marking the current position and creating one that is current with the PostgreSQL insert location """ current_wal = xlog.location_to_xlogfile_name_offset( postgres_status['current_lsn'], streaming_status['timeline'], postgres_status['xlog_segment_size'] )['file_name'] restart_wal = current_wal if postgres_status['replication_slot']: restart_wal = xlog.location_to_xlogfile_name_offset( postgres_status['replication_slot'].restart_lsn, streaming_status['timeline'], postgres_status['xlog_segment_size'] )['file_name'] restart_path = os.path.join(self.config.streaming_wals_directory, restart_wal) restart_partial_path = restart_path + '.partial' wal_files = sorted(glob(os.path.join( self.config.streaming_wals_directory, '*')), reverse=True) # Pick the newer file last = None for last in wal_files: if xlog.is_wal_file(last) or xlog.is_partial_file(last): break # Check if the status is already up-to-date if not last or last == restart_partial_path or last == restart_path: output.info("Nothing to do. Position of receive-wal is aligned.") return if os.path.basename(last) > current_wal: output.error( "The receive-wal position is ahead of PostgreSQL " "current WAL lsn (%s > %s)", os.path.basename(last), postgres_status['current_xlog']) return output.info("Resetting receive-wal directory status") if xlog.is_partial_file(last): output.info("Removing status file %s" % last) os.unlink(last) output.info("Creating status file %s" % restart_partial_path) open(restart_partial_path, 'w').close() def _truncate_partial_file_if_needed(self, xlog_segment_size): """ Truncate .partial WAL file if size is not 0 or xlog_segment_size :param int xlog_segment_size: """ # Retrieve the partial list (only one is expected) partial_files = glob(os.path.join( self.config.streaming_wals_directory, '*.partial')) # Take the last partial file, ignoring wrongly formatted file names last_partial = None for partial in partial_files: if not is_partial_file(partial): continue if not last_partial or partial > last_partial: last_partial = partial # Skip further work if there is no good partial file if not last_partial: return # If size is either 0 or wal_segment_size everything is fine... partial_size = os.path.getsize(last_partial) if partial_size == 0 or partial_size == xlog_segment_size: return # otherwise truncate the file to be empty. This is safe because # pg_receivewal pads the file to the full size before start writing. output.info("Truncating partial file %s that has wrong size %s " "while %s was expected." % (last_partial, partial_size, xlog_segment_size)) open(last_partial, 'wb').close() def get_next_batch(self): """ Returns the next batch of WAL files that have been archived via streaming replication (in the 'streaming' directory) This method always leaves one file in the "streaming" directory, because the 'pg_receivexlog' process needs at least one file to detect the current streaming position after a restart. :return: WalArchiverQueue: list of WAL files """ # Get the batch size from configuration (0 = unlimited) batch_size = self.config.streaming_archiver_batch_size # List and sort all files in the incoming directory. # IMPORTANT: the list is sorted, and this allows us to know that the # WAL stream we have is monotonically increasing. That allows us to # verify that a backup has all the WALs required for the restore. file_names = glob(os.path.join( self.config.streaming_wals_directory, '*')) file_names.sort() # Process anything that looks like a valid WAL file, # including partial ones and history files. # Anything else is treated like an error/anomaly files = [] skip = [] errors = [] for file_name in file_names: # Ignore temporary files if file_name.endswith('.tmp'): continue # If the file doesn't exist, it has been renamed/removed while # we were reading the directory. Ignore it. if not os.path.exists(file_name): continue if not os.path.isfile(file_name): errors.append(file_name) elif xlog.is_partial_file(file_name): skip.append(file_name) elif xlog.is_any_xlog_file(file_name): files.append(file_name) else: errors.append(file_name) # In case of more than a partial file, keep the last # and treat the rest as normal files if len(skip) > 1: partials = skip[:-1] _logger.info('Archiving partial files for server %s: %s' % (self.config.name, ", ".join([os.path.basename(f) for f in partials]))) files.extend(partials) skip = skip[-1:] # Keep the last full WAL file in case no partial file is present elif len(skip) == 0 and files: skip.append(files.pop()) # Build the list of WalFileInfo wal_files = [WalFileInfo.from_file(f, compression=None) for f in files] return WalArchiverQueue(wal_files, batch_size=batch_size, errors=errors, skip=skip) def check(self, check_strategy): """ Perform additional checks for StreamingWalArchiver - invoked by server.check_postgres :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check('pg_receivexlog') # Check the version of pg_receivexlog remote_status = self.get_remote_status() check_strategy.result( self.config.name, remote_status['pg_receivexlog_installed']) hint = None check_strategy.init_check('pg_receivexlog compatible') if not remote_status['pg_receivexlog_compatible']: pg_version = 'Unknown' if self.server.streaming is not None: pg_version = self.server.streaming.server_txt_version hint = "PostgreSQL version: %s, pg_receivexlog version: %s" % ( pg_version, remote_status['pg_receivexlog_version'] ) check_strategy.result(self.config.name, remote_status['pg_receivexlog_compatible'], hint=hint) # Check if pg_receivexlog is running, by retrieving a list # of running 'receive-wal' processes from the process manager. receiver_list = self.server.process_manager.list('receive-wal') # If there's at least one 'receive-wal' process running for this # server, the test is passed check_strategy.init_check('receive-wal running') if receiver_list: check_strategy.result( self.config.name, True) else: check_strategy.result( self.config.name, False, hint='See the Barman log file for more details') def _is_synchronous(self): """ Check if receive-wal process is eligible for synchronous replication The receive-wal process is eligible for synchronous replication if `synchronous_standby_names` is configured and contains the value of `streaming_archiver_name` :rtype: bool """ # Nothing to do if postgres connection is not working postgres = self.server.postgres if postgres is None or postgres.server_txt_version is None: return None # Check if synchronous WAL streaming can be enabled # by peeking 'synchronous_standby_names' postgres_status = postgres.get_remote_status() syncnames = postgres_status['synchronous_standby_names'] _logger.debug("Look for '%s' in " "'synchronous_standby_names': %s", self.config.streaming_archiver_name, syncnames) # The receive-wal process is eligible for synchronous replication # if `synchronous_standby_names` is configured and contains # the value of `streaming_archiver_name` streaming_archiver_name = self.config.streaming_archiver_name synchronous = (syncnames and ( '*' in syncnames or streaming_archiver_name in syncnames)) _logger.debug('Synchronous WAL streaming for %s: %s', streaming_archiver_name, synchronous) return synchronous def status(self): """ Set additional status info - invoked by Server.status() """ # TODO: Add status information for WAL streaming barman-2.10/barman/fs.py0000644000015500001620000003555113571162460013306 0ustar 00000000000000# Copyright (C) 2013-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . import logging import re from barman.command_wrappers import Command, full_command_quote from barman.exceptions import FsOperationFailed _logger = logging.getLogger(__name__) class UnixLocalCommand(object): """ This class is a wrapper for local calls for file system operations """ def __init__(self, path=None): # initialize a shell self.internal_cmd = Command(cmd='sh', args=['-c'], path=path) def cmd(self, cmd_name, args=[]): """ Execute a command string, escaping it, if necessary """ return self.internal_cmd(full_command_quote(cmd_name, args)) def get_last_output(self): """ Return the output and the error strings from the last executed command :rtype: tuple[str,str] """ return self.internal_cmd.out, self.internal_cmd.err def create_dir_if_not_exists(self, dir_path): """ This method recursively creates a directory if not exists If the path exists and is not a directory raise an exception. :param str dir_path: full path for the directory """ _logger.debug('Create directory %s if it does not exists' % dir_path) exists = self.exists(dir_path) if exists: is_dir = self.cmd('test', args=['-d', dir_path]) if is_dir != 0: raise FsOperationFailed( 'A file with the same name already exists') else: return False else: # Make parent directories if needed mkdir_ret = self.cmd('mkdir', args=['-p', dir_path]) if mkdir_ret == 0: return True else: raise FsOperationFailed('mkdir execution failed') def delete_if_exists(self, path): """ This method check for the existence of a path. If it exists, then is removed using a rm -fr command, and returns True. If the command fails an exception is raised. If the path does not exists returns False :param path the full path for the directory """ _logger.debug('Delete path %s if exists' % path) exists = self.exists(path, False) if exists: rm_ret = self.cmd('rm', args=['-fr', path]) if rm_ret == 0: return True else: raise FsOperationFailed('rm execution failed') else: return False def check_directory_exists(self, dir_path): """ Check for the existence of a directory in path. if the directory exists returns true. if the directory does not exists returns false. if exists a file and is not a directory raises an exception :param dir_path full path for the directory """ _logger.debug('Check if directory %s exists' % dir_path) exists = self.exists(dir_path) if exists: is_dir = self.cmd('test', args=['-d', dir_path]) if is_dir != 0: raise FsOperationFailed( 'A file with the same name exists, but is not a directory') else: return True else: return False def check_write_permission(self, dir_path): """ check write permission for barman on a given path. Creates a hidden file using touch, then remove the file. returns true if the file is written and removed without problems raise exception if the creation fails. raise exception if the removal fails. :param dir_path full dir_path for the directory to check """ _logger.debug('Check if directory %s is writable' % dir_path) exists = self.exists(dir_path) if exists: is_dir = self.cmd('test', args=['-d', dir_path]) if is_dir == 0: can_write = self.cmd( 'touch', args=["%s/.barman_write_check" % dir_path]) if can_write == 0: can_remove = self.cmd( 'rm', args=["%s/.barman_write_check" % dir_path]) if can_remove == 0: return True else: raise FsOperationFailed('Unable to remove file') else: raise FsOperationFailed( 'Unable to create write check file') else: raise FsOperationFailed('%s is not a directory' % dir_path) else: raise FsOperationFailed('%s does not exists' % dir_path) def create_symbolic_link(self, src, dst): """ Create a symlink pointing to src named dst. Check src exists, if so, checks that destination does not exists. if src is an invalid folder, raises an exception. if dst already exists, raises an exception. if ln -s command fails raises an exception :param src full path to the source of the symlink :param dst full path for the destination of the symlink """ _logger.debug('Create symbolic link %s -> %s' % (dst, src)) exists = self.exists(src) if exists: exists_dst = self.exists(dst) if not exists_dst: link = self.cmd('ln', args=['-s', src, dst]) if link == 0: return True else: raise FsOperationFailed('ln command failed') else: raise FsOperationFailed('ln destination already exists') else: raise FsOperationFailed('ln source does not exists') def get_system_info(self): """ Gather important system information for 'barman diagnose' command """ result = {} # self.internal_cmd.out can be None. The str() call will ensure it # will be translated to a literal 'None' release = '' if self.cmd("lsb_release", args=['-a']) == 0: release = self.internal_cmd.out.rstrip() elif self.exists('/etc/lsb-release'): self.cmd('cat', args=['/etc/lsb-release']) release = "Ubuntu Linux %s" % self.internal_cmd.out.rstrip() elif self.exists('/etc/debian_version'): self.cmd('cat', args=['/etc/debian_version']) release = "Debian GNU/Linux %s" % self.internal_cmd.out.rstrip() elif self.exists('/etc/redhat-release'): self.cmd('cat', args=['/etc/redhat-release']) release = "RedHat Linux %s" % self.internal_cmd.out.rstrip() elif self.cmd('sw_vers') == 0: release = self.internal_cmd.out.rstrip() result['release'] = release self.cmd('uname', args=['-a']) result['kernel_ver'] = self.internal_cmd.out.rstrip() self.cmd('python', args=['--version', '2>&1']) result['python_ver'] = self.internal_cmd.out.rstrip() self.cmd('rsync', args=['--version', '2>&1']) try: result['rsync_ver'] = self.internal_cmd.out.splitlines( True)[0].rstrip() except IndexError: result['rsync_ver'] = '' self.cmd('ssh', args=['-V', '2>&1']) result['ssh_ver'] = self.internal_cmd.out.rstrip() return result def get_file_content(self, path): """ Retrieve the content of a file If the file doesn't exist or isn't readable, it raises an exception. :param str path: full path to the file to read """ _logger.debug('Reading content of file %s' % path) result = self.exists(path) if not result: raise FsOperationFailed('The %s file does not exist' % path) result = self.cmd('test', args=['-r', path]) if result != 0: raise FsOperationFailed('The %s file is not readable' % path) result = self.cmd('cat', args=[path]) if result != 0: raise FsOperationFailed('Failed to execute "cat \'%s\'"' % path) return self.internal_cmd.out def exists(self, path, dereference=True): """ Check for the existence of a path. :param str path: full path to check :param bool dereference: whether dereference symlinks, defaults to True :return bool: if the file exists or not. """ _logger.debug('check for existence of: %s' % path) options = ['-e', path] if not dereference: options += ['-o', '-L', path] result = self.cmd('test', args=options) return result == 0 def ping(self): """ 'Ping' the server executing the `true` command. :return int: the true cmd result """ _logger.debug('execute the true command') result = self.cmd("true") return result def list_dir_content(self, dir_path, options=[]): """ List the contents of a given directory. :param str dir_path: the path where we want the ls to be executed :param list[str] options: a string containing the options for the ls command :return str: the ls cmd output """ _logger.debug('list the content of a directory') ls_options = [] if options: ls_options += options ls_options.append(dir_path) self.cmd('ls', args=ls_options) return self.internal_cmd.out class UnixRemoteCommand(UnixLocalCommand): """ This class is a wrapper for remote calls for file system operations """ # noinspection PyMissingConstructor def __init__(self, ssh_command, ssh_options=None, path=None): """ Uses the same commands as the UnixLocalCommand but the constructor is overridden and a remote shell is initialized using the ssh_command provided by the user :param str ssh_command: the ssh command provided by the user :param list[str] ssh_options: the options to be passed to SSH :param str path: the path to be used if provided, otherwise the PATH environment variable will be used """ # Ensure that ssh_option is iterable if ssh_options is None: ssh_options = [] if ssh_command is None: raise FsOperationFailed('No ssh command provided') self.internal_cmd = Command(ssh_command, args=ssh_options, path=path, shell=True) try: ret = self.cmd("true") except OSError: raise FsOperationFailed("Unable to execute %s" % ssh_command) if ret != 0: raise FsOperationFailed( "Connection failed using '%s %s' return code %s" % ( ssh_command, ' '.join(ssh_options), ret)) def path_allowed(exclude, include, path, is_dir): """ Filter files based on include/exclude lists. The rules are evaluated in steps: 1. if there are include rules and the proposed path match them, it is immediately accepted. 2. if there are exclude rules and the proposed path match them, it is immediately rejected. 3. the path is accepted. Look at the documentation for the "evaluate_path_matching_rules" function for more information about the syntax of the rules. :param list[str]|None exclude: The list of rules composing the exclude list :param list[str]|None include: The list of rules composing the include list :param str path: The patch to patch :param bool is_dir: True is the passed path is a directory :return bool: True is the patch is accepted, False otherwise """ if include and _match_path(include, path, is_dir): return True if exclude and _match_path(exclude, path, is_dir): return False return True def _match_path(rules, path, is_dir): """ Determine if a certain list of rules match a filesystem entry. The rule-checking algorithm also handles rsync-like anchoring of rules prefixed with '/'. If the rule is not anchored then it match every file whose suffix matches the rule. That means that a rule like 'a/b', will match 'a/b' and 'x/a/b' too. A rule like '/a/b' will match 'a/b' but not 'x/a/b'. If a rule ends with a slash (i.e. 'a/b/') if will be used only if the passed path is a directory. This function implements the basic wildcards. For more information about that, consult the documentation of the "translate_to_regexp" function. :param list[str] rules: match :param path: the path of the entity to match :param is_dir: True if the entity is a directory :return bool: """ for rule in rules: if rule[-1] == '/': if not is_dir: continue rule = rule[:-1] anchored = False if rule[0] == '/': rule = rule[1:] anchored = True if _wildcard_match_path(path, rule): return True if not anchored and _wildcard_match_path(path, '**/' + rule): return True return False def _wildcard_match_path(path, pattern): """ Check if the proposed shell pattern match the path passed. :param str path: :param str pattern: :rtype bool: True if it match, False otherwise """ regexp = re.compile(_translate_to_regexp(pattern)) return regexp.match(path) is not None def _translate_to_regexp(pattern): """ Translate a shell PATTERN to a regular expression. These wildcard characters you to use: - "?" to match every character - "*" to match zero or more characters, excluding "/" - "**" to match zero or more characters, including "/" There is no way to quote meta-characters. This implementation is based on the one in the Python fnmatch module :param str pattern: A string containing wildcards """ i, n = 0, len(pattern) res = '' while i < n: c = pattern[i] i = i + 1 if pattern[i - 1:].startswith("**"): res = res + '.*' i = i + 1 elif c == '*': res = res + '[^/]*' elif c == '?': res = res + '.' else: res = res + re.escape(c) return r'(?s)%s\Z' % res barman-2.10/barman/command_wrappers.py0000644000015500001620000011760713571162460016242 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module contains a wrapper for shell commands """ from __future__ import print_function import errno import inspect import logging import os import select import signal import subprocess import sys import time from distutils.version import LooseVersion as Version import barman.utils from barman.exceptions import CommandFailedException, CommandMaxRetryExceeded _logger = logging.getLogger(__name__) class StreamLineProcessor(object): """ Class deputed to reading lines from a file object, using a buffered read. NOTE: This class never call os.read() twice in a row. And is designed to work with the select.select() method. """ def __init__(self, fobject, handler): """ :param file fobject: The file that is being read :param callable handler: The function (taking only one unicode string argument) which will be called for every line """ self._file = fobject self._handler = handler self._buf = '' def fileno(self): """ Method used by select.select() to get the underlying file descriptor. :rtype: the underlying file descriptor """ return self._file.fileno() def process(self): """ Read the ready data from the stream and for each line found invoke the handler. :return bool: True when End Of File has been reached """ data = os.read(self._file.fileno(), 4096) # If nothing has been read, we reached the EOF if not data: self._file.close() # Handle the last line (always incomplete, maybe empty) self._handler(self._buf) return True self._buf += data.decode('utf-8', 'replace') # If no '\n' is present, we just read a part of a very long line. # Nothing to do at the moment. if '\n' not in self._buf: return False tmp = self._buf.split('\n') # Leave the remainder in self._buf self._buf = tmp[-1] # Call the handler for each complete line. lines = tmp[:-1] for line in lines: self._handler(line) return False class Command(object): """ Wrapper for a system command """ def __init__(self, cmd, args=None, env_append=None, path=None, shell=False, check=False, allowed_retval=(0,), close_fds=True, out_handler=None, err_handler=None, retry_times=0, retry_sleep=0, retry_handler=None): """ If the `args` argument is specified the arguments will be always added to the ones eventually passed with the actual invocation. If the `env_append` argument is present its content will be appended to the environment of every invocation. The subprocess output and error stream will be processed through the output and error handler, respectively defined through the `out_handler` and `err_handler` arguments. If not provided every line will be sent to the log respectively at INFO and WARNING level. The `out_handler` and the `err_handler` functions will be invoked with one single argument, which is a string containing the line that is being processed. If the `close_fds` argument is True, all file descriptors except 0, 1 and 2 will be closed before the child process is executed. If the `check` argument is True, the exit code will be checked against the `allowed_retval` list, raising a CommandFailedException if not in the list. If `retry_times` is greater than 0, when the execution of a command terminates with an error, it will be retried for a maximum of `retry_times` times, waiting for `retry_sleep` seconds between every attempt. Everytime a command is retried the `retry_handler` is executed before running the command again. The retry_handler must be a callable that accepts the following fields: * the Command object * the arguments list * the keyword arguments dictionary * the number of the failed attempt * the exception containing the error An example of such a function is: > def retry_handler(command, args, kwargs, attempt, exc): > print("Failed command!") Some of the keyword arguments can be specified both in the class constructor and during the method call. If specified in both places, the method arguments will take the precedence over the constructor arguments. :param str cmd: The command to exexute :param list[str]|None args: List of additional arguments to append :param dict[str.str]|None env_append: additional environment variables :param str path: PATH to be used while searching for `cmd` :param bool shell: If true, use the shell instead of an "execve" call :param bool check: Raise a CommandFailedException if the exit code is not present in `allowed_retval` :param list[int] allowed_retval: List of exit codes considered as a successful termination. :param bool close_fds: If set, close all the extra file descriptors :param callable out_handler: handler for lines sent on stdout :param callable err_handler: handler for lines sent on stderr :param int retry_times: number of allowed retry attempts :param int retry_sleep: wait seconds between every retry :param callable retry_handler: handler invoked during a command retry """ self.pipe = None self.cmd = cmd self.args = args if args is not None else [] self.shell = shell self.close_fds = close_fds self.check = check self.allowed_retval = allowed_retval self.retry_times = retry_times self.retry_sleep = retry_sleep self.retry_handler = retry_handler self.path = path self.ret = None self.out = None self.err = None # If env_append has been provided use it or replace with an empty dict env_append = env_append or {} # If path has been provided, replace it in the environment if path: env_append['PATH'] = path # Find the absolute path to the command to execute if not self.shell: full_path = barman.utils.which(self.cmd, self.path) if not full_path: raise CommandFailedException( '%s not in PATH' % self.cmd) self.cmd = full_path # If env_append contains anything, build an env dict to be used during # subprocess call, otherwise set it to None and let the subprocesses # inherit the parent environment if env_append: self.env = os.environ.copy() self.env.update(env_append) else: self.env = None # If an output handler has been provided use it, otherwise log the # stdout as INFO if out_handler: self.out_handler = out_handler else: self.out_handler = self.make_logging_handler(logging.INFO) # If an error handler has been provided use it, otherwise log the # stderr as WARNING if err_handler: self.err_handler = err_handler else: self.err_handler = self.make_logging_handler(logging.WARNING) @staticmethod def _restore_sigpipe(): """restore default signal handler (http://bugs.python.org/issue1652)""" signal.signal(signal.SIGPIPE, signal.SIG_DFL) # pragma: no cover def __call__(self, *args, **kwargs): """ Run the command and return the exit code. The output and error strings are not returned, but they can be accessed as attributes of the Command object, as well as the exit code. If `stdin` argument is specified, its content will be passed to the executed command through the standard input descriptor. If the `close_fds` argument is True, all file descriptors except 0, 1 and 2 will be closed before the child process is executed. If the `check` argument is True, the exit code will be checked against the `allowed_retval` list, raising a CommandFailedException if not in the list. Every keyword argument can be specified both in the class constructor and during the method call. If specified in both places, the method arguments will take the precedence over the constructor arguments. :rtype: int :raise: CommandFailedException :raise: CommandMaxRetryExceeded """ self.get_output(*args, **kwargs) return self.ret def get_output(self, *args, **kwargs): """ Run the command and return the output and the error as a tuple. The return code is not returned, but it can be accessed as an attribute of the Command object, as well as the output and the error strings. If `stdin` argument is specified, its content will be passed to the executed command through the standard input descriptor. If the `close_fds` argument is True, all file descriptors except 0, 1 and 2 will be closed before the child process is executed. If the `check` argument is True, the exit code will be checked against the `allowed_retval` list, raising a CommandFailedException if not in the list. Every keyword argument can be specified both in the class constructor and during the method call. If specified in both places, the method arguments will take the precedence over the constructor arguments. :rtype: tuple[str, str] :raise: CommandFailedException :raise: CommandMaxRetryExceeded """ attempt = 0 while True: try: return self._get_output_once(*args, **kwargs) except CommandFailedException as exc: # Try again if retry number is lower than the retry limit if attempt < self.retry_times: # If a retry_handler is defined, invoke it passing the # Command instance and the exception if self.retry_handler: self.retry_handler(self, args, kwargs, attempt, exc) # Sleep for configured time, then try again time.sleep(self.retry_sleep) attempt += 1 else: if attempt == 0: # No retry requested by the user # Raise the original exception raise else: # If the max number of attempts is reached and # there is still an error, exit raising # a CommandMaxRetryExceeded exception and wrap the # original one raise CommandMaxRetryExceeded(*exc.args) def _get_output_once(self, *args, **kwargs): """ Run the command and return the output and the error as a tuple. The return code is not returned, but it can be accessed as an attribute of the Command object, as well as the output and the error strings. If `stdin` argument is specified, its content will be passed to the executed command through the standard input descriptor. If the `close_fds` argument is True, all file descriptors except 0, 1 and 2 will be closed before the child process is executed. If the `check` argument is True, the exit code will be checked against the `allowed_retval` list, raising a CommandFailedException if not in the list. Every keyword argument can be specified both in the class constructor and during the method call. If specified in both places, the method arguments will take the precedence over the constructor arguments. :rtype: tuple[str, str] :raises: CommandFailedException """ out = [] err = [] # If check is true, it must be handled here check = kwargs.pop('check', self.check) allowed_retval = kwargs.pop('allowed_retval', self.allowed_retval) self.execute(out_handler=out.append, err_handler=err.append, check=False, *args, **kwargs) self.out = '\n'.join(out) self.err = '\n'.join(err) _logger.debug("Command stdout: %s", self.out) _logger.debug("Command stderr: %s", self.err) # Raise if check and the return code is not in the allowed list if check: self.check_return_value(allowed_retval) return self.out, self.err def check_return_value(self, allowed_retval): """ Check the current return code and raise CommandFailedException when it's not in the allowed_retval list :param list[int] allowed_retval: list of return values considered success :raises: CommandFailedException """ if self.ret not in allowed_retval: raise CommandFailedException(dict( ret=self.ret, out=self.out, err=self.err)) def execute(self, *args, **kwargs): """ Execute the command and pass the output to the configured handlers If `stdin` argument is specified, its content will be passed to the executed command through the standard input descriptor. The subprocess output and error stream will be processed through the output and error handler, respectively defined through the `out_handler` and `err_handler` arguments. If not provided every line will be sent to the log respectively at INFO and WARNING level. If the `close_fds` argument is True, all file descriptors except 0, 1 and 2 will be closed before the child process is executed. If the `check` argument is True, the exit code will be checked against the `allowed_retval` list, raising a CommandFailedException if not in the list. Every keyword argument can be specified both in the class constructor and during the method call. If specified in both places, the method arguments will take the precedence over the constructor arguments. :rtype: int :raise: CommandFailedException """ # Check keyword arguments stdin = kwargs.pop('stdin', None) check = kwargs.pop('check', self.check) allowed_retval = kwargs.pop('allowed_retval', self.allowed_retval) close_fds = kwargs.pop('close_fds', self.close_fds) out_handler = kwargs.pop('out_handler', self.out_handler) err_handler = kwargs.pop('err_handler', self.err_handler) if len(kwargs): raise TypeError('%s() got an unexpected keyword argument %r' % (inspect.stack()[1][3], kwargs.popitem()[0])) # Reset status self.ret = None self.out = None self.err = None # Create the subprocess and save it in the current object to be usable # by signal handlers pipe = self._build_pipe(args, close_fds) self.pipe = pipe # Send the provided input and close the stdin descriptor if stdin: pipe.stdin.write(stdin) pipe.stdin.close() # Prepare the list of processors processors = [ StreamLineProcessor( pipe.stdout, out_handler), StreamLineProcessor( pipe.stderr, err_handler)] # Read the streams until the subprocess exits self.pipe_processor_loop(processors) # Reap the zombie and read the exit code pipe.wait() self.ret = pipe.returncode # Remove the closed pipe from the object self.pipe = None _logger.debug("Command return code: %s", self.ret) # Raise if check and the return code is not in the allowed list if check: self.check_return_value(allowed_retval) return self.ret def _build_pipe(self, args, close_fds): """ Build the Pipe object used by the Command The resulting command will be composed by: self.cmd + self.args + args :param args: extra arguments for the subprocess :param close_fds: if True all file descriptors except 0, 1 and 2 will be closed before the child process is executed. :rtype: subprocess.Popen """ # Append the argument provided to this method ot the base argument list args = self.args + list(args) # If shell is True, properly quote the command if self.shell: cmd = full_command_quote(self.cmd, args) else: cmd = [self.cmd] + args # Log the command we are about to execute _logger.debug("Command: %r", cmd) return subprocess.Popen(cmd, shell=self.shell, env=self.env, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, preexec_fn=self._restore_sigpipe, close_fds=close_fds) @staticmethod def pipe_processor_loop(processors): """ Process the output received through the pipe until all the provided StreamLineProcessor reach the EOF. :param list[StreamLineProcessor] processors: a list of StreamLineProcessor """ # Loop until all the streams reaches the EOF while processors: try: ready = select.select(processors, [], [])[0] except select.error as e: # If the select call has been interrupted by a signal # just retry if e.args[0] == errno.EINTR: continue raise # For each ready StreamLineProcessor invoke the process() method for stream in ready: eof = stream.process() # Got EOF on this stream if eof: # Remove the stream from the list of valid processors processors.remove(stream) @classmethod def make_logging_handler(cls, level, prefix=None): """ Build a handler function that logs every line it receives. The resulting function logs its input at the specified level with an optional prefix. :param level: The log level to use :param prefix: An optional prefix to prepend to the line :return: handler function """ class_logger = logging.getLogger(cls.__name__) def handler(line): if line: if prefix: class_logger.log(level, "%s%s", prefix, line) else: class_logger.log(level, "%s", line) return handler @staticmethod def make_output_handler(prefix=None): """ Build a handler function which prints every line it receives. The resulting function prints (and log it at INFO level) its input with an optional prefix. :param prefix: An optional prefix to prepend to the line :return: handler function """ # Import the output module inside the function to avoid circular # dependency from barman import output def handler(line): if line: if prefix: output.info("%s%s", prefix, line) else: output.info("%s", line) return handler def enable_signal_forwarding(self, signal_id): """ Enable signal forwarding to the subprocess for a specified signal_id :param signal_id: The signal id to be forwarded """ # Get the current signal handler old_handler = signal.getsignal(signal_id) def _handler(sig, frame): """ This signal handler forward the signal to the subprocess then execute the original handler. """ # Forward the signal to the subprocess if self.pipe: self.pipe.send_signal(signal_id) # If the old handler is callable if callable(old_handler): old_handler(sig, frame) # If we have got a SIGTERM, we must exit elif old_handler == signal.SIG_DFL and signal_id == signal.SIGTERM: sys.exit(128 + signal_id) # Set the signal handler signal.signal(signal_id, _handler) class Rsync(Command): """ This class is a wrapper for the rsync system command, which is used vastly by barman """ def __init__(self, rsync='rsync', args=None, ssh=None, ssh_options=None, bwlimit=None, exclude=None, exclude_and_protect=None, include=None, network_compression=None, path=None, **kwargs): """ :param str rsync: rsync executable name :param list[str]|None args: List of additional argument to aways append :param str ssh: the ssh executable to be used when building the `-e` argument :param list[str] ssh_options: the ssh options to be used when building the `-e` argument :param str bwlimit: optional bandwidth limit :param list[str] exclude: list of file to be excluded from the copy :param list[str] exclude_and_protect: list of file to be excluded from the copy, preserving the destination if exists :param list[str] include: list of files to be included in the copy even if excluded. :param bool network_compression: enable the network compression :param str path: PATH to be used while searching for `cmd` :param bool check: Raise a CommandFailedException if the exit code is not present in `allowed_retval` :param list[int] allowed_retval: List of exit codes considered as a successful termination. """ options = [] if ssh: options += ['-e', full_command_quote(ssh, ssh_options)] if network_compression: options += ['-z'] # Include patterns must be before the exclude ones, because the exclude # patterns actually short-circuit the directory traversal stage # when rsync finds the files to send. if include: for pattern in include: options += ["--include=%s" % (pattern,)] if exclude: for pattern in exclude: options += ["--exclude=%s" % (pattern,)] if exclude_and_protect: for pattern in exclude_and_protect: options += ["--exclude=%s" % (pattern,), "--filter=P_%s" % (pattern,)] if args: options += self._args_for_suse(args) if bwlimit is not None and bwlimit > 0: options += ["--bwlimit=%s" % bwlimit] # By default check is on and the allowed exit code are 0 and 24 if 'check' not in kwargs: kwargs['check'] = True if 'allowed_retval' not in kwargs: kwargs['allowed_retval'] = (0, 24) Command.__init__(self, rsync, args=options, path=path, **kwargs) def _args_for_suse(self, args): """ Mangle args for SUSE compatibility See https://bugzilla.opensuse.org/show_bug.cgi?id=898513 """ # Prepend any argument starting with ':' with a space # Workaround for SUSE rsync issue return [' ' + a if a.startswith(':') else a for a in args] def get_output(self, *args, **kwargs): """ Run the command and return the output and the error (if present) """ # Prepares args for SUSE args = self._args_for_suse(args) # Invoke the base class method return super(Rsync, self).get_output(*args, **kwargs) def from_file_list(self, filelist, src, dst, *args, **kwargs): """ This method copies filelist from src to dst. Returns the return code of the rsync command """ if 'stdin' in kwargs: raise TypeError("from_file_list() doesn't support 'stdin' " "keyword argument") input_string = ('\n'.join(filelist)).encode('UTF-8') _logger.debug("from_file_list: %r", filelist) kwargs['stdin'] = input_string self.get_output('--files-from=-', src, dst, *args, **kwargs) return self.ret class RsyncPgData(Rsync): """ This class is a wrapper for rsync, specialised in sync-ing the Postgres data directory """ def __init__(self, rsync='rsync', args=None, **kwargs): """ Constructor :param str rsync: command to run """ options = ['-rLKpts', '--delete-excluded', '--inplace'] if args: options += args Rsync.__init__(self, rsync, args=options, **kwargs) class PostgreSQLClient(Command): """ Superclass of all the PostgreSQL client commands. """ COMMAND_ALTERNATIVES = None """ Sometimes the name of a command has been changed during the PostgreSQL evolution. I.e. that happened with pg_receivexlog, that has been renamed to pg_receivewal. In that case, we should try using pg_receivewal (the newer auternative) and, if that command doesn't exist, we should try using `pg_receivewal`. This is a list of command names to be used to find the installed command. """ def __init__(self, connection, command, version=None, app_name=None, path=None, **kwargs): """ Constructor :param PostgreSQL connection: an object representing a database connection :param str command: the command to use :param Version version: the command version :param str app_name: the application name to use for the connection :param str path: additional path for executable retrieval """ Command.__init__(self, command, path=path, **kwargs) if version and version >= Version("9.3"): # If version of the client is >= 9.3 we use the connection # string because allows the user to use all the parameters # supported by the libpq library to create a connection conn_string = connection.get_connection_string(app_name) self.args.append("--dbname=%s" % conn_string) else: # 9.2 version doesn't support # connection strings so the 'split' version of the conninfo # option is used instead. conn_params = connection.conn_parameters self.args.append("--host=%s" % conn_params.get('host', None)) self.args.append("--port=%s" % conn_params.get('port', None)) self.args.append("--username=%s" % conn_params.get('user', None)) self.enable_signal_forwarding(signal.SIGINT) self.enable_signal_forwarding(signal.SIGTERM) @classmethod def find_command(cls, path=None): """ Find the active command, given all the alternatives as set in the property named `COMMAND_ALTERNATIVES` in this class. :param str path: The path to use while searching for the command :rtype: Command """ # TODO: Unit tests of this one # To search for an available command, testing if the command # exists in PATH is not sufficient. Debian will install wrappers for # all commands, even if the real command doesn't work. # # I.e. we may have a wrapper for `pg_receivewal` even it PostgreSQL # 10 isn't installed. # # This is an example of what can happen in this case: # # ``` # $ pg_receivewal --version; echo $? # Error: pg_wrapper: pg_receivewal was not found in # /usr/lib/postgresql/9.6/bin # 1 # $ pg_receivexlog --version; echo $? # pg_receivexlog (PostgreSQL) 9.6.3 # 0 # ``` # # That means we should not only ensure the existence of the command, # but we also need to invoke the command to see if it is a shim # or not. # Get the system path if needed if path is None: path = os.getenv('PATH') # If the path is None at this point we have nothing to search if path is None: path = '' # Search the requested executable in every directory present # in path and return a Command object first occurrence that exists, # is executable and runs without errors. for path_entry in path.split(os.path.pathsep): for cmd in cls.COMMAND_ALTERNATIVES: full_path = barman.utils.which(cmd, path_entry) # It doesn't exist try another if not full_path: continue # It exists, let's try invoking it with `--version` to check if # it's real or not. try: command = Command(full_path, path=path, check=True) command("--version") return command except CommandFailedException: # It's only a inactive shim continue # We don't have such a command raise CommandFailedException( 'command not in PATH, tried: %s' % ' '.join(cls.COMMAND_ALTERNATIVES)) @classmethod def get_version_info(cls, path=None): """ Return a dictionary containing all the info about the version of the PostgreSQL client :param str path: the PATH env """ if cls.COMMAND_ALTERNATIVES is None: raise NotImplementedError( "get_version_info cannot be invoked on %s" % cls.__name__) version_info = dict.fromkeys(('full_path', 'full_version', 'major_version'), None) # Get the version string try: command = cls.find_command(path) except CommandFailedException as e: _logger.debug("Error invoking %s: %s", cls.__name__, e) return version_info version_info['full_path'] = command.cmd # Parse the full text version try: full_version = command.out.strip().split()[-1] version_info['full_version'] = Version(full_version) except IndexError: _logger.debug("Error parsing %s version output", version_info['full_path']) return version_info # Extract the major version version_info['major_version'] = Version(barman.utils.simplify_version( full_version)) return version_info class PgBaseBackup(PostgreSQLClient): """ Wrapper class for the pg_basebackup system command """ COMMAND_ALTERNATIVES = ['pg_basebackup'] def __init__(self, connection, destination, command, version=None, app_name=None, bwlimit=None, tbs_mapping=None, immediate=False, check=True, args=None, **kwargs): """ Constructor :param PostgreSQL connection: an object representing a database connection :param str destination: destination directory path :param str command: the command to use :param Version version: the command version :param str app_name: the application name to use for the connection :param str bwlimit: bandwidth limit for pg_basebackup :param Dict[str, str] tbs_mapping: used for tablespace :param bool immediate: fast checkpoint identifier for pg_basebackup :param bool check: check if the return value is in the list of allowed values of the Command obj :param List[str] args: additional arguments """ PostgreSQLClient.__init__( self, connection=connection, command=command, version=version, app_name=app_name, check=check, **kwargs) # Set the backup destination self.args += ['-v', '--no-password', '--pgdata=%s' % destination] if version and version >= Version("10"): # If version of the client is >= 10 it would use # a temporary replication slot by default to keep WALs. # We don't need it because Barman already stores the full # WAL stream, so we disable this feature to avoid wasting one slot. self.args += ['--no-slot'] # We also need to specify that we do not want to fetch any WAL file self.args += ['--wal-method=none'] # The tablespace mapping option is repeated once for each tablespace if tbs_mapping: for (tbs_source, tbs_destination) in tbs_mapping.items(): self.args.append('--tablespace-mapping=%s=%s' % (tbs_source, tbs_destination)) # Only global bandwidth limit is supported if bwlimit is not None and bwlimit > 0: self.args.append("--max-rate=%s" % bwlimit) # Immediate checkpoint if immediate: self.args.append("--checkpoint=fast") # Manage additional args if args: self.args += args class PgReceiveXlog(PostgreSQLClient): """ Wrapper class for pg_receivexlog """ COMMAND_ALTERNATIVES = ["pg_receivewal", "pg_receivexlog"] def __init__(self, connection, destination, command, version=None, app_name=None, synchronous=False, check=True, slot_name=None, args=None, **kwargs): """ Constructor :param PostgreSQL connection: an object representing a database connection :param str destination: destination directory path :param str command: the command to use :param Version version: the command version :param str app_name: the application name to use for the connection :param bool synchronous: request synchronous WAL streaming :param bool check: check if the return value is in the list of allowed values of the Command obj :param str slot_name: the replication slot name to use for the connection :param List[str] args: additional arguments """ PostgreSQLClient.__init__( self, connection=connection, command=command, version=version, app_name=app_name, check=check, **kwargs) self.args += [ "--verbose", "--no-loop", "--no-password", "--directory=%s" % destination] # Add the replication slot name if set in the configuration. if slot_name is not None: self.args.append('--slot=%s' % slot_name) # Request synchronous mode if synchronous: self.args.append('--synchronous') # Manage additional args if args: self.args += args class BarmanSubProcess(object): """ Wrapper class for barman sub instances """ def __init__(self, command=sys.argv[0], subcommand=None, config=None, args=None, keep_descriptors=False): """ Build a specific wrapper for all the barman sub-commands, providing an unified interface. :param str command: path to barman :param str subcommand: the barman sub-command :param str config: path to the barman configuration file. :param list[str] args: a list containing the sub-command args like the target server name :param bool keep_descriptors: whether to keep the subprocess stdin, stdout, stderr descriptors attached. Defaults to False """ # The config argument is needed when the user explicitly # passes a configuration file, as the child process # must know the configuration file to use. # # The configuration file must always be propagated, # even in case of the default one. if not config: raise CommandFailedException( "No configuration file passed to barman subprocess") # Build the sub-command: # * be sure to run it with the right python interpreter # * pass the current configuration file with -c # * set it quiet with -q self.command = [sys.executable, command, '-c', config, '-q', subcommand] self.keep_descriptors = keep_descriptors # Handle args for the sub-command (like the server name) if args: self.command += args def execute(self): """ Execute the command and pass the output to the configured handlers """ _logger.debug("BarmanSubProcess: %r", self.command) # Redirect all descriptors to /dev/null devnull = open(os.devnull, 'a+') additional_arguments = {} if not self.keep_descriptors: additional_arguments = { 'stdout': devnull, 'stderr': devnull } proc = subprocess.Popen( self.command, preexec_fn=os.setsid, close_fds=True, stdin=devnull, **additional_arguments) _logger.debug("BarmanSubProcess: subprocess started. pid: %s", proc.pid) def shell_quote(arg): """ Quote a string argument to be safely included in a shell command line. :param str arg: The script argument :return: The argument quoted """ # This is an excerpt of the Bash manual page, and the same applies for # every Posix compliant shell: # # A non-quoted backslash (\) is the escape character. It preserves # the literal value of the next character that follows, with the # exception of . If a \ pair appears, and the # backslash is not itself quoted, the \ is treated as a # line continuation (that is, it is removed from the input # stream and effectively ignored). # # Enclosing characters in single quotes preserves the literal value # of each character within the quotes. A single quote may not occur # between single quotes, even when pre-ceded by a backslash. # # This means that, as long as the original string doesn't contain any # apostrophe character, it can be safely included between single quotes. # # If a single quote is contained in the string, we must terminate the # string with a quote, insert an apostrophe character escaping it with # a backslash, and then start another string using a quote character. assert arg is not None return "'%s'" % arg.replace("'", "'\\''") def full_command_quote(command, args=None): """ Produce a command with quoted arguments :param str command: the command to be executed :param list[str] args: the command arguments :rtype: str """ if args is not None and len(args) > 0: return "%s %s" % ( command, ' '.join([shell_quote(arg) for arg in args])) else: return command barman-2.10/barman/output.py0000644000015500001620000017651613571162460014245 0ustar 00000000000000# Copyright (C) 2013-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module control how the output of Barman will be rendered """ from __future__ import print_function import datetime import inspect import json import logging import sys from barman.infofile import BackupInfo from barman.utils import (BarmanEncoder, force_str, human_readable_timedelta, pretty_size, redact_passwords) from barman.xlog import diff_lsn __all__ = [ 'error_occurred', 'debug', 'info', 'warning', 'error', 'exception', 'result', 'close_and_exit', 'close', 'set_output_writer', 'AVAILABLE_WRITERS', 'DEFAULT_WRITER', 'ConsoleOutputWriter', 'NagiosOutputWriter', 'JsonOutputWriter' ] #: True if error or exception methods have been called error_occurred = False #: Exit code if error occurred error_exit_code = 1 #: Enable colors in the output ansi_colors_enabled = False def _ansi_color(command): """ Return the ansi sequence for the provided color """ return '\033[%sm' % command def _colored(message, color): """ Return a string formatted with the provided color. """ if ansi_colors_enabled: return _ansi_color(color) + message + _ansi_color('0') else: return message def _red(message): """ Format a red string """ return _colored(message, '31') def _green(message): """ Format a green string """ return _colored(message, '32') def _yellow(message): """ Format a yellow string """ return _colored(message, '33') def _format_message(message, args): """ Format a message using the args list. The result will be equivalent to message % args If args list contains a dictionary as its only element the result will be message % args[0] :param str message: the template string to be formatted :param tuple args: a list of arguments :return: the formatted message :rtype: str """ if len(args) == 1 and isinstance(args[0], dict): return message % args[0] elif len(args) > 0: return message % args else: return message def _put(level, message, *args, **kwargs): """ Send the message with all the remaining positional arguments to the configured output manager with the right output level. The message will be sent also to the logger unless explicitly disabled with log=False No checks are performed on level parameter as this method is meant to be called only by this module. If level == 'exception' the stack trace will be also logged :param str level: :param str message: the template string to be formatted :param tuple args: all remaining arguments are passed to the log formatter :key bool log: whether to log the message :key bool is_error: treat this message as an error """ # handle keyword-only parameters log = kwargs.pop('log', True) is_error = kwargs.pop('is_error', False) if len(kwargs): raise TypeError('%s() got an unexpected keyword argument %r' % (inspect.stack()[1][3], kwargs.popitem()[0])) if is_error: global error_occurred error_occurred = True _writer.error_occurred() # Make sure the message is an unicode string if message: message = force_str(message) # dispatch the call to the output handler getattr(_writer, level)(message, *args) # log the message as originating from caller's caller module if log: exc_info = False if level == 'exception': level = 'error' exc_info = True frm = inspect.stack()[2] mod = inspect.getmodule(frm[0]) logger = logging.getLogger(mod.__name__) log_level = logging.getLevelName(level.upper()) logger.log(log_level, message, *args, **{'exc_info': exc_info}) def _dispatch(obj, prefix, name, *args, **kwargs): """ Dispatch the call to the %(prefix)s_%(name) method of the obj object :param obj: the target object :param str prefix: prefix of the method to be called :param str name: name of the method to be called :param tuple args: all remaining positional arguments will be sent to target :param dict kwargs: all remaining keyword arguments will be sent to target :return: the result of the invoked method :raise ValueError: if the target method is not present """ method_name = "%s_%s" % (prefix, name) handler = getattr(obj, method_name, None) if callable(handler): return handler(*args, **kwargs) else: raise ValueError("The object %r does not have the %r method" % ( obj, method_name)) def is_quiet(): """ Calls the "is_quiet" method, accessing the protected parameter _quiet of the instanced OutputWriter :return bool: the _quiet parameter value """ return _writer.is_quiet() def is_debug(): """ Calls the "is_debug" method, accessing the protected parameter _debug of the instanced OutputWriter :return bool: the _debug parameter value """ return _writer.is_debug() def debug(message, *args, **kwargs): """ Output a message with severity 'DEBUG' :key bool log: whether to log the message """ _put('debug', message, *args, **kwargs) def info(message, *args, **kwargs): """ Output a message with severity 'INFO' :key bool log: whether to log the message """ _put('info', message, *args, **kwargs) def warning(message, *args, **kwargs): """ Output a message with severity 'INFO' :key bool log: whether to log the message """ _put('warning', message, *args, **kwargs) def error(message, *args, **kwargs): """ Output a message with severity 'ERROR'. Also records that an error has occurred unless the ignore parameter is True. :key bool ignore: avoid setting an error exit status (default False) :key bool log: whether to log the message """ # ignore is a keyword-only parameter ignore = kwargs.pop('ignore', False) if not ignore: kwargs.setdefault('is_error', True) _put('error', message, *args, **kwargs) def exception(message, *args, **kwargs): """ Output a message with severity 'EXCEPTION' If raise_exception parameter doesn't evaluate to false raise and exception: - if raise_exception is callable raise the result of raise_exception() - if raise_exception is an exception raise it - else raise the last exception again :key bool ignore: avoid setting an error exit status :key raise_exception: raise an exception after the message has been processed :key bool log: whether to log the message """ # ignore and raise_exception are keyword-only parameters ignore = kwargs.pop('ignore', False) # noinspection PyNoneFunctionAssignment raise_exception = kwargs.pop('raise_exception', None) if not ignore: kwargs.setdefault('is_error', True) _put('exception', message, *args, **kwargs) if raise_exception: if callable(raise_exception): # noinspection PyCallingNonCallable raise raise_exception(message) elif isinstance(raise_exception, BaseException): raise raise_exception else: raise def init(command, *args, **kwargs): """ Initialize the output writer for a given command. :param str command: name of the command are being executed :param tuple args: all remaining positional arguments will be sent to the output processor :param dict kwargs: all keyword arguments will be sent to the output processor """ try: _dispatch(_writer, 'init', command, *args, **kwargs) except ValueError: exception('The %s writer does not support the "%s" command', _writer.__class__.__name__, command) close_and_exit() def result(command, *args, **kwargs): """ Output the result of an operation. :param str command: name of the command are being executed :param tuple args: all remaining positional arguments will be sent to the output processor :param dict kwargs: all keyword arguments will be sent to the output processor """ try: _dispatch(_writer, 'result', command, *args, **kwargs) except ValueError: exception('The %s writer does not support the "%s" command', _writer.__class__.__name__, command) close_and_exit() def close_and_exit(): """ Close the output writer and terminate the program. If an error has been emitted the program will report a non zero return value. """ close() if error_occurred: sys.exit(error_exit_code) else: sys.exit(0) def close(): """ Close the output writer. """ _writer.close() def set_output_writer(new_writer, *args, **kwargs): """ Replace the current output writer with a new one. The new_writer parameter can be a symbolic name or an OutputWriter object :param new_writer: the OutputWriter name or the actual OutputWriter :type: string or an OutputWriter :param tuple args: all remaining positional arguments will be passed to the OutputWriter constructor :param dict kwargs: all remaining keyword arguments will be passed to the OutputWriter constructor """ global _writer _writer.close() if new_writer in AVAILABLE_WRITERS: _writer = AVAILABLE_WRITERS[new_writer](*args, **kwargs) else: _writer = new_writer class ConsoleOutputWriter(object): def __init__(self, debug=False, quiet=False): """ Default output writer that output everything on console. :param bool debug: print debug messages on standard error :param bool quiet: don't print info messages """ self._debug = debug self._quiet = quiet #: Used in check command to hold the check results self.result_check_list = [] #: The minimal flag. If set the command must output a single list of #: values. self.minimal = False #: The server is active self.active = True def _print(self, message, args, stream): """ Print an encoded message on the given output stream """ # Make sure to add a newline at the end of the message if message is None: message = '\n' else: message += '\n' # Format and encode the message, redacting eventual passwords encoded_msg = redact_passwords( _format_message(message, args)).encode('utf-8') try: # Python 3.x stream.buffer.write(encoded_msg) except AttributeError: # Python 2.x stream.write(encoded_msg) stream.flush() def _out(self, message, args): """ Print a message on standard output """ self._print(message, args, sys.stdout) def _err(self, message, args): """ Print a message on standard error """ self._print(message, args, sys.stderr) def is_quiet(self): """ Access the quiet property of the OutputWriter instance :return bool: if the writer is quiet or not """ return self._quiet def is_debug(self): """ Access the debug property of the OutputWriter instance :return bool: if the writer is in debug mode or not """ return self._debug def debug(self, message, *args): """ Emit debug. """ if self._debug: self._err('DEBUG: %s' % message, args) def info(self, message, *args): """ Normal messages are sent to standard output """ if not self._quiet: self._out(message, args) def warning(self, message, *args): """ Warning messages are sent to standard error """ self._err(_yellow('WARNING: %s' % message), args) def error(self, message, *args): """ Error messages are sent to standard error """ self._err(_red('ERROR: %s' % message), args) def exception(self, message, *args): """ Warning messages are sent to standard error """ self._err(_red('EXCEPTION: %s' % message), args) def error_occurred(self): """ Called immediately before any message method when the originating call has is_error=True """ def close(self): """ Close the output channel. Nothing to do for console. """ def result_backup(self, backup_info): """ Render the result of a backup. Nothing to do for console. """ # TODO: evaluate to display something useful here def result_recovery(self, results): """ Render the result of a recovery. """ if len(results['changes']) > 0: self.info("") self.info("IMPORTANT") self.info("These settings have been modified to prevent " "data losses") self.info("") for assertion in results['changes']: self.info("%s line %s: %s = %s", assertion.filename, assertion.line, assertion.key, assertion.value) if len(results['warnings']) > 0: self.info("") self.info("WARNING") self.info("You are required to review the following options" " as potentially dangerous") self.info("") for assertion in results['warnings']: self.info("%s line %s: %s = %s", assertion.filename, assertion.line, assertion.key, assertion.value) if results['missing_files']: # At least one file is missing, warn the user self.info("") self.info("WARNING") self.info("The following configuration files have not been " "saved during backup, hence they have not been " "restored.") self.info("You need to manually restore them " "in order to start the recovered PostgreSQL instance:") self.info("") for file_name in results['missing_files']: self.info(" %s" % file_name) if results['delete_barman_wal']: self.info("") self.info("After the recovery, please remember to remove the " "\"barman_wal\" directory") self.info("inside the PostgreSQL data directory.") if results['get_wal']: self.info("") self.info("WARNING: 'get-wal' is in the specified " "'recovery_options'.") self.info("Before you start up the PostgreSQL server, please " "review the %s file", results['recovery_configuration_file']) self.info("inside the target directory. Make sure that " "'restore_command' can be executed by " "the PostgreSQL user.") self.info("") self.info( "Recovery completed (start time: %s, elapsed time: %s)", results['recovery_start_time'], human_readable_timedelta( datetime.datetime.now() - results['recovery_start_time'])) self.info("") self.info("Your PostgreSQL server has been successfully " "prepared for recovery!") def _record_check(self, server_name, check, status, hint): """ Record the check line in result_check_map attribute This method is for subclass use :param str server_name: the server is being checked :param str check: the check name :param bool status: True if succeeded :param str,None hint: hint to print if not None """ self.result_check_list.append(dict( server_name=server_name, check=check, status=status, hint=hint)) if not status and self.active: global error_occurred error_occurred = True def init_check(self, server_name, active): """ Init the check command :param str server_name: the server we are start listing :param boolean active: The server is active """ self.info("Server %s:" % server_name) self.active = active def result_check(self, server_name, check, status, hint=None): """ Record a server result of a server check and output it as INFO :param str server_name: the server is being checked :param str check: the check name :param bool status: True if succeeded :param str,None hint: hint to print if not None """ self._record_check(server_name, check, status, hint) if hint: self.info( "\t%s: %s (%s)" % (check, _green('OK') if status else _red('FAILED'), hint)) else: self.info( "\t%s: %s" % (check, _green('OK') if status else _red('FAILED'))) def init_list_backup(self, server_name, minimal=False): """ Init the list-backup command :param str server_name: the server we are start listing :param bool minimal: if true output only a list of backup id """ self.minimal = minimal def result_list_backup(self, backup_info, backup_size, wal_size, retention_status): """ Output a single backup in the list-backup command :param BackupInfo backup_info: backup we are displaying :param backup_size: size of base backup (with the required WAL files) :param wal_size: size of WAL files belonging to this backup (without the required WAL files) :param retention_status: retention policy status """ # If minimal is set only output the backup id if self.minimal: self.info(backup_info.backup_id) return out_list = [ "%s %s - " % (backup_info.server_name, backup_info.backup_id)] if backup_info.status in BackupInfo.STATUS_COPY_DONE: end_time = backup_info.end_time.ctime() out_list.append('%s - Size: %s - WAL Size: %s' % (end_time, pretty_size(backup_size), pretty_size(wal_size))) if backup_info.tablespaces: tablespaces = [("%s:%s" % (tablespace.name, tablespace.location)) for tablespace in backup_info.tablespaces] out_list.append(' (tablespaces: %s)' % ', '.join(tablespaces)) if backup_info.status == BackupInfo.WAITING_FOR_WALS: out_list.append(' - %s' % BackupInfo.WAITING_FOR_WALS) if retention_status and retention_status != BackupInfo.NONE: out_list.append(' - %s' % retention_status) else: out_list.append(backup_info.status) self.info(''.join(out_list)) def result_show_backup(self, backup_ext_info): """ Output all available information about a backup in show-backup command The argument has to be the result of a Server.get_backup_ext_info() call :param dict backup_ext_info: a dictionary containing the info to display """ data = dict(backup_ext_info) self.info("Backup %s:", data['backup_id']) self.info(" Server Name : %s", data['server_name']) if data['systemid']: self.info(" System Id : %s", data['systemid']) self.info(" Status : %s", data['status']) if data['status'] in BackupInfo.STATUS_COPY_DONE: self.info(" PostgreSQL Version : %s", data['version']) self.info(" PGDATA directory : %s", data['pgdata']) if data['tablespaces']: self.info(" Tablespaces:") for item in data['tablespaces']: self.info(" %s: %s (oid: %s)", item.name, item.location, item.oid) self.info("") self.info(" Base backup information:") self.info(" Disk usage : %s (%s with WALs)", pretty_size(data['size']), pretty_size(data['size'] + data[ 'wal_size'])) if data['deduplicated_size'] is not None and data['size'] > 0: deduplication_ratio = ( 1 - (float(data['deduplicated_size']) / data['size'])) self.info(" Incremental size : %s (-%s)", pretty_size(data['deduplicated_size']), '{percent:.2%}'.format(percent=deduplication_ratio) ) self.info(" Timeline : %s", data['timeline']) self.info(" Begin WAL : %s", data['begin_wal']) self.info(" End WAL : %s", data['end_wal']) self.info(" WAL number : %s", data['wal_num']) # Output WAL compression ratio for basebackup WAL files if data['wal_compression_ratio'] > 0: self.info(" WAL compression ratio: %s", '{percent:.2%}'.format( percent=data['wal_compression_ratio'])) self.info(" Begin time : %s", data['begin_time']) self.info(" End time : %s", data['end_time']) # If copy statistics are available print a summary copy_stats = data.get('copy_stats') if copy_stats: copy_time = copy_stats.get('copy_time') if copy_time: value = human_readable_timedelta( datetime.timedelta(seconds=copy_time)) # Show analysis time if it is more than a second analysis_time = copy_stats.get('analysis_time') if analysis_time is not None and analysis_time >= 1: value += " + %s startup" % (human_readable_timedelta( datetime.timedelta(seconds=analysis_time))) self.info(" Copy time : %s", value) size = data['deduplicated_size'] or data['size'] value = "%s/s" % pretty_size(size / copy_time) number_of_workers = copy_stats.get('number_of_workers', 1) if number_of_workers > 1: value += " (%s jobs)" % number_of_workers self.info(" Estimated throughput : %s", value) self.info(" Begin Offset : %s", data['begin_offset']) self.info(" End Offset : %s", data['end_offset']) self.info(" Begin LSN : %s", data['begin_xlog']) self.info(" End LSN : %s", data['end_xlog']) self.info("") self.info(" WAL information:") self.info(" No of files : %s", data['wal_until_next_num']) self.info(" Disk usage : %s", pretty_size(data['wal_until_next_size'])) # Output WAL rate if data['wals_per_second'] > 0: self.info(" WAL rate : %0.2f/hour", data['wals_per_second'] * 3600) # Output WAL compression ratio for archived WAL files if data['wal_until_next_compression_ratio'] > 0: self.info( " Compression ratio : %s", '{percent:.2%}'.format( percent=data['wal_until_next_compression_ratio'])) self.info(" Last available : %s", data['wal_last']) if data['children_timelines']: timelines = data['children_timelines'] self.info( " Reachable timelines : %s", ", ".join([str(history.tli) for history in timelines])) self.info("") self.info(" Catalog information:") self.info( " Retention Policy : %s", data['retention_policy_status'] or 'not enforced') previous_backup_id = data.setdefault( 'previous_backup_id', 'not available') self.info( " Previous Backup : %s", previous_backup_id or '- (this is the oldest base backup)') next_backup_id = data.setdefault( 'next_backup_id', 'not available') self.info( " Next Backup : %s", next_backup_id or '- (this is the latest base backup)') if data['children_timelines']: self.info("") self.info( "WARNING: WAL information is inaccurate due to " "multiple timelines interacting with this backup") else: if data['error']: self.info(" Error: : %s", data['error']) def init_status(self, server_name): """ Init the status command :param str server_name: the server we are start listing """ self.info("Server %s:", server_name) def result_status(self, server_name, status, description, message): """ Record a result line of a server status command and output it as INFO :param str server_name: the server is being checked :param str status: the returned status code :param str description: the returned status description :param str,object message: status message. It will be converted to str """ self.info("\t%s: %s", description, str(message)) def init_replication_status(self, server_name, minimal=False): """ Init the 'standby-status' command :param str server_name: the server we are start listing :param str minimal: minimal output """ self.minimal = minimal def result_replication_status(self, server_name, target, server_lsn, standby_info): """ Record a result line of a server status command and output it as INFO :param str server_name: the replication server :param str target: all|hot-standby|wal-streamer :param str server_lsn: server's current lsn :param StatReplication standby_info: status info of a standby """ if target == 'hot-standby': title = 'hot standby servers' elif target == 'wal-streamer': title = 'WAL streamers' else: title = 'streaming clients' if self.minimal: # Minimal output if server_lsn: # current lsn from the master self.info("%s for master '%s' (LSN @ %s):", title.capitalize(), server_name, server_lsn) else: # We are connected to a standby self.info("%s for slave '%s':", title.capitalize(), server_name) else: # Full output self.info("Status of %s for server '%s':", title, server_name) # current lsn from the master if server_lsn: self.info(" Current LSN on master: %s", server_lsn) if standby_info is not None and not len(standby_info): self.info(" No %s attached", title) return # Minimal output if self.minimal: n = 1 for standby in standby_info: if not standby.replay_lsn: # WAL streamer self.info(" %s. W) %s@%s S:%s W:%s P:%s AN:%s", n, standby.usename, standby.client_addr or 'socket', standby.sent_lsn, standby.write_lsn, standby.sync_priority, standby.application_name) else: # Standby self.info(" %s. %s) %s@%s S:%s F:%s R:%s P:%s AN:%s", n, standby.sync_state[0].upper(), standby.usename, standby.client_addr or 'socket', standby.sent_lsn, standby.flush_lsn, standby.replay_lsn, standby.sync_priority, standby.application_name) n += 1 else: n = 1 self.info(" Number of %s: %s", title, len(standby_info)) for standby in standby_info: self.info("") # Calculate differences in bytes sent_diff = diff_lsn(standby.sent_lsn, standby.current_lsn) write_diff = diff_lsn(standby.write_lsn, standby.current_lsn) flush_diff = diff_lsn(standby.flush_lsn, standby.current_lsn) replay_diff = diff_lsn(standby.replay_lsn, standby.current_lsn) # Determine the sync stage of the client sync_stage = None if not standby.replay_lsn: client_type = 'WAL streamer' max_level = 3 else: client_type = 'standby' max_level = 5 # Only standby can replay WAL info if replay_diff == 0: sync_stage = '5/5 Hot standby (max)' elif flush_diff == 0: sync_stage = '4/5 2-safe' # remote flush # If not yet done, set the sync stage if not sync_stage: if write_diff == 0: sync_stage = '3/%s Remote write' % max_level elif sent_diff == 0: sync_stage = '2/%s WAL Sent (min)' % max_level else: sync_stage = '1/%s 1-safe' % max_level # Synchronous standby if getattr(standby, 'sync_priority', None) > 0: self.info(" %s. #%s %s %s", n, standby.sync_priority, standby.sync_state.capitalize(), client_type) # Asynchronous standby else: self.info(" %s. %s %s", n, standby.sync_state.capitalize(), client_type) self.info(" Application name: %s", standby.application_name) self.info(" Sync stage : %s", sync_stage) if getattr(standby, 'client_addr', None): self.info(" Communication : TCP/IP") self.info(" IP Address : %s " "/ Port: %s / Host: %s", standby.client_addr, standby.client_port, standby.client_hostname or '-') else: self.info(" Communication : Unix domain socket") self.info(" User name : %s", standby.usename) self.info(" Current state : %s (%s)", standby.state, standby.sync_state) if getattr(standby, 'slot_name', None): self.info(" Replication slot: %s", standby.slot_name) self.info(" WAL sender PID : %s", standby.pid) self.info(" Started at : %s", standby.backend_start) if getattr(standby, 'backend_xmin', None): self.info(" Standby's xmin : %s", standby.backend_xmin or '-') if getattr(standby, 'sent_lsn', None): self.info(" Sent LSN : %s (diff: %s)", standby.sent_lsn, pretty_size(sent_diff)) if getattr(standby, 'write_lsn', None): self.info(" Write LSN : %s (diff: %s)", standby.write_lsn, pretty_size(write_diff)) if getattr(standby, 'flush_lsn', None): self.info(" Flush LSN : %s (diff: %s)", standby.flush_lsn, pretty_size(flush_diff)) if getattr(standby, 'replay_lsn', None): self.info(" Replay LSN : %s (diff: %s)", standby.replay_lsn, pretty_size(replay_diff)) n += 1 def init_list_server(self, server_name, minimal=False): """ Init the list-server command :param str server_name: the server we are start listing """ self.minimal = minimal def result_list_server(self, server_name, description=None): """ Output a result line of a list-server command :param str server_name: the server is being checked :param str,None description: server description if applicable """ if self.minimal or not description: self.info("%s", server_name) else: self.info("%s - %s", server_name, description) def init_show_server(self, server_name): """ Init the show-server command output method :param str server_name: the server we are displaying """ self.info("Server %s:" % server_name) def result_show_server(self, server_name, server_info): """ Output the results of the show-server command :param str server_name: the server we are displaying :param dict server_info: a dictionary containing the info to display """ for status, message in sorted(server_info.items()): self.info("\t%s: %s", status, message) class JsonOutputWriter(ConsoleOutputWriter): def __init__(self, *args, **kwargs): """ Output writer that writes on standard output using JSON. When closed, it dumps all the collected results as a JSON object. """ super(JsonOutputWriter, self).__init__(*args, **kwargs) #: Store JSON data self.json_output = {} def _mangle_key(self, value): """ Mangle a generic description to be used as dict key :type value: str :rtype: str """ return value.lower() \ .replace(' ', '_') \ .replace('-', '_') \ .replace('.', '') def _out_to_field(self, field, message, *args): """ Store a message in the required field """ if field not in self.json_output: self.json_output[field] = [] message = _format_message(message, args) self.json_output[field].append(message) def debug(self, message, *args): """ Add debug messages in _DEBUG list """ if not self._debug: return self._out_to_field('_DEBUG', message, *args) def info(self, message, *args): """ Add normal messages in _INFO list """ self._out_to_field('_INFO', message, *args) def warning(self, message, *args): """ Add warning messages in _WARNING list """ self._out_to_field('_WARNING', message, *args) def error(self, message, *args): """ Add error messages in _ERROR list """ self._out_to_field('_ERROR', message, *args) def exception(self, message, *args): """ Add exception messages in _EXCEPTION list """ self._out_to_field('_EXCEPTION', message, *args) def close(self): """ Close the output channel. Print JSON output """ if not self._quiet: json.dump(self.json_output, sys.stdout, sort_keys=True, cls=BarmanEncoder) self.json_output = {} def result_backup(self, backup_info): """ Save the result of a backup. """ self.json_output.update(backup_info.to_dict()) def result_recovery(self, results): """ Render the result of a recovery. """ changes_count = len(results['changes']) self.json_output['changes_count'] = changes_count self.json_output['changes'] = results['changes'] if changes_count > 0: self.warning("IMPORTANT! Some settings have been modified " "to prevent data losses. See 'changes' key.") warnings_count = len(results['warnings']) self.json_output['warnings_count'] = warnings_count self.json_output['warnings'] = results['warnings'] if warnings_count > 0: self.warning("WARNING! You are required to review the options " "as potentially dangerous. See 'warnings' key.") missing_files_count = len(results['missing_files']) self.json_output['missing_files'] = results['missing_files'] if missing_files_count > 0: # At least one file is missing, warn the user self.warning("WARNING! Some configuration files have not been " "saved during backup, hence they have not been " "restored. See 'missing_files' key.") if results['delete_barman_wal']: self.warning("After the recovery, please remember to remove the " "'barman_wal' directory inside the PostgreSQL " "data directory.") if results['get_wal']: self.warning("WARNING: 'get-wal' is in the specified " "'recovery_options'. Before you start up the " "PostgreSQL server, please review the recovery " "configuration inside the target directory. " "Make sure that 'restore_command' can be " "executed by the PostgreSQL user.") self.json_output.update({ 'recovery_start_time': results['recovery_start_time'].isoformat(' '), 'recovery_start_time_timestamp': results['recovery_start_time'].strftime('%s'), 'recovery_elapsed_time': human_readable_timedelta( datetime.datetime.now() - results['recovery_start_time']), 'recovery_elapsed_time_seconds': (datetime.datetime.now() - results['recovery_start_time']) .total_seconds()}) def init_check(self, server_name, active): """ Init the check command :param str server_name: the server we are start listing :param boolean active: The server is active """ self.json_output[server_name] = {} self.active = active def result_check(self, server_name, check, status, hint=None): """ Record a server result of a server check and output it as INFO :param str server_name: the server is being checked :param str check: the check name :param bool status: True if succeeded :param str,None hint: hint to print if not None """ self._record_check(server_name, check, status, hint) check_key = self._mangle_key(check) self.json_output[server_name][check_key] = dict( status="OK" if status else "FAILED", hint=hint or "" ) def init_list_backup(self, server_name, minimal=False): """ Init the list-backup command :param str server_name: the server we are listing :param bool minimal: if true output only a list of backup id """ self.minimal = minimal self.json_output[server_name] = [] def result_list_backup(self, backup_info, backup_size, wal_size, retention_status): """ Output a single backup in the list-backup command :param BackupInfo backup_info: backup we are displaying :param backup_size: size of base backup (with the required WAL files) :param wal_size: size of WAL files belonging to this backup (without the required WAL files) :param retention_status: retention policy status """ server_name = backup_info.server_name # If minimal is set only output the backup id if self.minimal: self.json_output[server_name].append(backup_info.backup_id) return output = dict( backup_id=backup_info.backup_id, ) if backup_info.status in BackupInfo.STATUS_COPY_DONE: output.update(dict( end_time_timestamp=backup_info.end_time.strftime('%s'), end_time=backup_info.end_time.ctime(), size_bytes=backup_size, wal_size_bytes=wal_size, size=pretty_size(backup_size), wal_size=pretty_size(wal_size), status=backup_info.status, retention_status=retention_status or BackupInfo.NONE )) output['tablespaces'] = [] if backup_info.tablespaces: for tablespace in backup_info.tablespaces: output['tablespaces'].append(dict( name=tablespace.name, location=tablespace.location )) else: output.update(dict( status=backup_info.status )) self.json_output[server_name].append(output) def result_show_backup(self, backup_ext_info): """ Output all available information about a backup in show-backup command The argument has to be the result of a Server.get_backup_ext_info() call :param dict backup_ext_info: a dictionary containing the info to display """ data = dict(backup_ext_info) server_name = data['server_name'] output = self.json_output[server_name] = dict( backup_id=data['backup_id'], status=data['status'] ) if data['status'] in BackupInfo.STATUS_COPY_DONE: output.update(dict( postgresql_version=data['version'], pgdata_directory=data['pgdata'], tablespaces=[] )) if data['tablespaces']: for item in data['tablespaces']: output['tablespaces'].append(dict( name=item.name, location=item.location, oid=item.oid )) output['base_backup_information'] = dict( disk_usage=pretty_size(data['size']), disk_usage_bytes=data['size'], disk_usage_with_wals=pretty_size( data['size'] + data['wal_size']), disk_usage_with_wals_bytes=data['size'] + data['wal_size'] ) if data['deduplicated_size'] is not None and data['size'] > 0: deduplication_ratio = (1 - ( float(data['deduplicated_size']) / data['size'])) output['base_backup_information'].update(dict( incremental_size=pretty_size(data['deduplicated_size']), incremental_size_bytes=data['deduplicated_size'], incremental_size_ratio='-{percent:.2%}'.format( percent=deduplication_ratio) )) output['base_backup_information'].update(dict( timeline=data['timeline'], begin_wal=data['begin_wal'], end_wal=data['end_wal'] )) if data['wal_compression_ratio'] > 0: output['base_backup_information'].update(dict( wal_compression_ratio='{percent:.2%}'.format( percent=data['wal_compression_ratio']) )) output['base_backup_information'].update(dict( begin_time_timestamp=data['begin_time'].strftime('%s'), begin_time=data['begin_time'].isoformat(sep=' '), end_time_timestamp=data['end_time'].strftime('%s'), end_time=data['end_time'].isoformat(sep=' ') )) copy_stats = data.get('copy_stats') if copy_stats: copy_time = copy_stats.get('copy_time') analysis_time = copy_stats.get('analysis_time', 0) if copy_time: output['base_backup_information'].update(dict( copy_time=human_readable_timedelta( datetime.timedelta(seconds=copy_time)), copy_time_seconds=copy_time, analysis_time=human_readable_timedelta( datetime.timedelta(seconds=analysis_time)), analysis_time_seconds=analysis_time )) size = data['deduplicated_size'] or data['size'] output['base_backup_information'].update(dict( throughput="%s/s" % pretty_size(size / copy_time), throughput_bytes=size / copy_time, number_of_workers=copy_stats.get( 'number_of_workers', 1) )) output['base_backup_information'].update(dict( begin_offset=data['begin_offset'], end_offset=data['end_offset'], begin_lsn=data['begin_xlog'], end_lsn=data['end_xlog'] )) wal_output = output['wal_information'] = dict( no_of_files=data['wal_until_next_num'], disk_usage=pretty_size(data['wal_until_next_size']), disk_usage_bytes=data['wal_until_next_size'], wal_rate=0, wal_rate_per_second=0, compression_ratio=0, last_available=data['wal_last'], timelines=[] ) # TODO: move the following calculations in a separate function # or upstream (backup_ext_info?) so that they are shared with # console output. if data['wals_per_second'] > 0: wal_output['wal_rate'] = \ "%0.2f/hour" % (data['wals_per_second'] * 3600) wal_output['wal_rate_per_second'] = data['wals_per_second'] if data['wal_until_next_compression_ratio'] > 0: wal_output['compression_ratio'] = '{percent:.2%}'.format( percent=data['wal_until_next_compression_ratio']) if data['children_timelines']: wal_output['_WARNING'] = "WAL information is inaccurate \ due to multiple timelines interacting with \ this backup" for history in data['children_timelines']: wal_output['timelines'].append(str(history.tli)) previous_backup_id = data.setdefault( 'previous_backup_id', 'not available') next_backup_id = data.setdefault('next_backup_id', 'not available') output['catalog_information'] = { 'retention_policy': data['retention_policy_status'] or 'not enforced', 'previous_backup': previous_backup_id or '- (this is the oldest base backup)', 'next_backup': next_backup_id or '- (this is the latest base backup)'} else: if data['error']: output['error'] = data['error'] def init_status(self, server_name): """ Init the status command :param str server_name: the server we are start listing """ if not hasattr(self, 'json_output'): self.json_output = {} self.json_output[server_name] = {} def result_status(self, server_name, status, description, message): """ Record a result line of a server status command and output it as INFO :param str server_name: the server is being checked :param str status: the returned status code :param str description: the returned status description :param str,object message: status message. It will be converted to str """ self.json_output[server_name][status] = dict( description=description, message=str(message)) def init_replication_status(self, server_name, minimal=False): """ Init the 'standby-status' command :param str server_name: the server we are start listing :param str minimal: minimal output """ if not hasattr(self, 'json_output'): self.json_output = {} self.json_output[server_name] = {} self.minimal = minimal def result_replication_status(self, server_name, target, server_lsn, standby_info): """ Record a result line of a server status command and output it as INFO :param str server_name: the replication server :param str target: all|hot-standby|wal-streamer :param str server_lsn: server's current lsn :param StatReplication standby_info: status info of a standby """ if target == 'hot-standby': title = 'hot standby servers' elif target == 'wal-streamer': title = 'WAL streamers' else: title = 'streaming clients' title_key = self._mangle_key(title) if title_key not in self.json_output[server_name]: self.json_output[server_name][title_key] = [] self.json_output[server_name]['server_lsn'] = \ server_lsn if server_lsn else None if standby_info is not None and not len(standby_info): self.json_output[server_name]['standby_info'] = \ "No %s attached" % title return self.json_output[server_name][title_key] = [] # Minimal output if self.minimal: for idx, standby in enumerate(standby_info): if not standby.replay_lsn: # WAL streamer self.json_output[server_name][title_key].append(dict( user_name=standby.usename, client_addr=standby.client_addr or 'socket', sent_lsn=standby.sent_lsn, write_lsn=standby.write_lsn, sync_priority=standby.sync_priority, application_name=standby.application_name )) else: # Standby self.json_output[server_name][title_key].append(dict( sync_state=standby.sync_state[0].upper(), user_name=standby.usename, client_addr=standby.client_addr or 'socket', sent_lsn=standby.sent_lsn, flush_lsn=standby.flush_lsn, replay_lsn=standby.replay_lsn, sync_priority=standby.sync_priority, application_name=standby.application_name )) else: for idx, standby in enumerate(standby_info): self.json_output[server_name][title_key].append({}) json_output = self.json_output[server_name][title_key][idx] # Calculate differences in bytes lsn_diff = dict( sent=diff_lsn(standby.sent_lsn, standby.current_lsn), write=diff_lsn(standby.write_lsn, standby.current_lsn), flush=diff_lsn(standby.flush_lsn, standby.current_lsn), replay=diff_lsn(standby.replay_lsn, standby.current_lsn) ) # Determine the sync stage of the client sync_stage = None if not standby.replay_lsn: client_type = 'WAL streamer' max_level = 3 else: client_type = 'standby' max_level = 5 # Only standby can replay WAL info if lsn_diff['replay'] == 0: sync_stage = '5/5 Hot standby (max)' elif lsn_diff['flush'] == 0: sync_stage = '4/5 2-safe' # remote flush # If not yet done, set the sync stage if not sync_stage: if lsn_diff['write'] == 0: sync_stage = '3/%s Remote write' % max_level elif lsn_diff['sent'] == 0: sync_stage = '2/%s WAL Sent (min)' % max_level else: sync_stage = '1/%s 1-safe' % max_level # Synchronous standby if getattr(standby, 'sync_priority', None) > 0: json_output['name'] = "#%s %s %s" % ( standby.sync_priority, standby.sync_state.capitalize(), client_type) # Asynchronous standby else: json_output['name'] = "%s %s" % ( standby.sync_state.capitalize(), client_type) json_output['application_name'] = standby.application_name json_output['sync_stage'] = sync_stage if getattr(standby, 'client_addr', None): json_output.update(dict( communication="TCP/IP", ip_address=standby.client_addr, port=standby.client_port, host=standby.client_hostname or None )) else: json_output['communication'] = "Unix domain socket" json_output.update(dict( user_name=standby.usename, current_state=standby.state, current_sync_state=standby.sync_state )) if getattr(standby, 'slot_name', None): json_output['replication_slot'] = standby.slot_name json_output.update(dict( wal_sender_pid=standby.pid, started_at=standby.backend_start.isoformat(sep=' '), )) if getattr(standby, 'backend_xmin', None): json_output['standbys_xmin'] = standby.backend_xmin or None for lsn in lsn_diff.keys(): standby_key = lsn + '_lsn' if getattr(standby, standby_key, None): json_output.update({ lsn + '_lsn': getattr(standby, standby_key), lsn + '_lsn_diff': pretty_size(lsn_diff[lsn]), lsn + '_lsn_diff_bytes': lsn_diff[lsn] }) def init_list_server(self, server_name, minimal=False): """ Init the list-server command :param str server_name: the server we are listing """ self.json_output[server_name] = {} self.minimal = minimal def result_list_server(self, server_name, description=None): """ Output a result line of a list-server command :param str server_name: the server is being checked :param str,None description: server description if applicable """ self.json_output[server_name] = dict( description=description ) def init_show_server(self, server_name): """ Init the show-server command output method :param str server_name: the server we are displaying """ self.json_output[server_name] = {} def result_show_server(self, server_name, server_info): """ Output the results of the show-server command :param str server_name: the server we are displaying :param dict server_info: a dictionary containing the info to display """ for status, message in sorted(server_info.items()): if not isinstance(message, (int, str, bool, list, dict, type(None))): message = str(message) self.json_output[server_name][status] = message class NagiosOutputWriter(ConsoleOutputWriter): """ Nagios output writer. This writer doesn't output anything to console. On close it writes a nagios-plugin compatible status """ def _out(self, message, args): """ Do not print anything on standard output """ def _err(self, message, args): """ Do not print anything on standard error """ def close(self): """ Display the result of a check run as expected by Nagios. Also set the exit code as 2 (CRITICAL) in case of errors """ global error_occurred, error_exit_code # List of all servers that have been checked servers = [] # List of servers reporting issues issues = [] for item in self.result_check_list: # Keep track of all the checked servers if item['server_name'] not in servers: servers.append(item['server_name']) # Keep track of the servers with issues if not item['status'] and item['server_name'] not in issues: issues.append(item['server_name']) # Global error (detected at configuration level) if len(issues) == 0 and error_occurred: print("BARMAN CRITICAL - Global configuration errors") error_exit_code = 2 return if len(issues) > 0 and error_occurred: fail_summary = [] details = [] for server in issues: # Join all the issues for a server. Output format is in the # form: # " FAILED: , ... " # All strings will be concatenated into the $SERVICEOUTPUT$ # macro of the Nagios output server_fail = "%s FAILED: %s" % ( server, ", ".join([ item['check'] for item in self.result_check_list if item['server_name'] == server and not item['status'] ])) fail_summary.append(server_fail) # Prepare an array with the detailed output for # the $LONGSERVICEOUTPUT$ macro of the Nagios output # line format: # .: FAILED # .: FAILED (Hint if present) # : FAILED # ..... for issue in self.result_check_list: if issue['server_name'] == server and not issue['status']: fail_detail = "%s.%s: FAILED" % (server, issue['check']) if issue['hint']: fail_detail += " (%s)" % issue['hint'] details.append(fail_detail) # Append the summary of failures to the first line of the output # using * as delimiter if len(servers) == 1: print("BARMAN CRITICAL - server %s has issues * %s" % (servers[0], " * ".join(fail_summary))) else: print("BARMAN CRITICAL - %d server out of %d have issues * " "%s" % (len(issues), len(servers), " * ".join(fail_summary))) # add the detailed list to the output for issue in details: print(issue) error_exit_code = 2 elif len(issues) > 0 and not error_occurred: # Some issues, but only in skipped server good = [item for item in servers if item not in issues] # Display the output message for a single server check if len(good) == 0: print("BARMAN OK - No server configured * IGNORING: %s" % (" * IGNORING: ".join(issues))) elif len(good) == 1: print("BARMAN OK - Ready to serve the Espresso backup " "for %s * IGNORING: %s" % (good[0], " * IGNORING: ".join(issues))) else: # Display the output message for several servers, using # '*' as delimiter print("BARMAN OK - Ready to serve the Espresso backup " "for %d servers * %s * IGNORING: %s" % ( len(good), " * ".join(good), " * IGNORING: ".join(issues))) else: # No issues, all good! # Display the output message for a single server check if not len(servers): print("BARMAN OK - No server configured") elif len(servers) == 1: print("BARMAN OK - Ready to serve the Espresso backup " "for %s" % (servers[0])) else: # Display the output message for several servers, using # '*' as delimiter print("BARMAN OK - Ready to serve the Espresso backup " "for %d servers * %s" % ( len(servers), " * ".join(servers))) #: This dictionary acts as a registry of available OutputWriters AVAILABLE_WRITERS = { 'console': ConsoleOutputWriter, 'json': JsonOutputWriter, # nagios is not registered as it isn't a general purpose output writer # 'nagios': NagiosOutputWriter, } #: The default OutputWriter DEFAULT_WRITER = 'console' #: the current active writer. Initialized according DEFAULT_WRITER on load _writer = AVAILABLE_WRITERS[DEFAULT_WRITER]() barman-2.10/barman/clients/0000755000015500001620000000000013571162463013757 5ustar 00000000000000barman-2.10/barman/clients/cloud_backup.py0000755000015500001620000001640513571162460016772 0ustar 00000000000000# Copyright (C) 2018-2019 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . import logging import re from contextlib import closing import barman from barman.cloud import CloudInterface, S3BackupUploader from barman.exceptions import PostgresConnectionError from barman.postgres import PostgreSQLConnection from barman.utils import check_positive, force_str try: import argparse except ImportError: raise SystemExit("Missing required python module: argparse") LOGGING_FORMAT = "%(asctime)s %(levelname)s %(message)s" _find_space = re.compile(r'[\s]').search def quote_conninfo(value): """ Quote a connection info parameter :param str value: :rtype: str """ if not value: return "''" if not _find_space(value): return value return "'%s'" % value.replace("\\", "\\\\").replace("'", "\\'") def build_conninfo(config): """ Build a DSN to connect to postgres using command-line arguments """ conn_parts = [] if config.host: conn_parts.append("host=%s" % quote_conninfo(config.host)) if config.port: conn_parts.append("port=%s" % quote_conninfo(config.port)) if config.user: conn_parts.append("user=%s" % quote_conninfo(config.user)) return ' '.join(conn_parts) def main(args=None): """ The main script entry point :param list[str] args: the raw arguments list. When not provided it defaults to sys.args[1:] """ config = parse_arguments(args) configure_logging(config) try: conninfo = build_conninfo(config) postgres = PostgreSQLConnection(conninfo, config.immediate_checkpoint, application_name='barman_cloud_backup') try: postgres.connect() except PostgresConnectionError as exc: logging.error("Cannot connect to postgres: %s", force_str(exc)) logging.debug('Exception details:', exc_info=exc) raise SystemExit(1) with closing(postgres): cloud_interface = CloudInterface( destination_url=config.destination_url, encryption=config.encryption, jobs=config.jobs, profile_name=config.profile) if not cloud_interface.test_connectivity(): raise SystemExit(1) # If test is requested, just exit after connectivity test elif config.test: raise SystemExit(0) with closing(cloud_interface): # TODO: Should the setup be optional? cloud_interface.setup_bucket() uploader = S3BackupUploader( server_name=config.server_name, compression=config.compression, postgres=postgres, cloud_interface=cloud_interface) # Perform the backup uploader.backup() except KeyboardInterrupt as exc: logging.error("Barman cloud backup was interrupted by the user") logging.debug('Exception details:', exc_info=exc) raise SystemExit(1) except Exception as exc: logging.error("Barman cloud backup exception: %s", force_str(exc)) logging.debug('Exception details:', exc_info=exc) raise SystemExit(1) def parse_arguments(args=None): """ Parse command line arguments :return: The options parsed """ parser = argparse.ArgumentParser( description='This script can be used to perform a backup ' 'of a local PostgreSQL instance and ship ' 'the resulting tarball(s) to the Cloud. ' 'Currently only AWS S3 is supported.', add_help=False ) parser.add_argument( 'destination_url', help='URL of the cloud destination, such as a bucket in AWS S3.' ' For example: `s3://bucket/path/to/folder`.' ) parser.add_argument( 'server_name', help='the name of the server as configured in Barman.' ) parser.add_argument( '-V', '--version', action='version', version='%%(prog)s %s' % barman.__version__ ) parser.add_argument( '--help', action='help', help='show this help message and exit') verbosity = parser.add_mutually_exclusive_group() verbosity.add_argument( '-v', '--verbose', action='count', default=0, help='increase output verbosity (e.g., -vv is more than -v)') verbosity.add_argument( '-q', '--quiet', action='count', default=0, help='decrease output verbosity (e.g., -qq is less than -q)') parser.add_argument( '-P', '--profile', help='profile name (e.g. INI section in AWS credentials file)', ) compression = parser.add_mutually_exclusive_group() compression.add_argument( "-z", "--gzip", help="gzip-compress the WAL while uploading to the cloud", action='store_const', const='gz', dest='compression', ) compression.add_argument( "-j", "--bzip2", help="bzip2-compress the WAL while uploading to the cloud", action='store_const', const='bz2', dest='compression', ) parser.add_argument( "-e", "--encryption", help="Enable server-side encryption for the transfer. " "Allowed values: 'AES256'|'aws:kms'.", choices=['AES256', 'aws:kms'], ) parser.add_argument( "-t", "--test", help="Test cloud connectivity and exit", action="store_true", default=False ) parser.add_argument( '-h', '--host', help='host or Unix socket for PostgreSQL connection ' '(default: libpq settings)', ) parser.add_argument( '-p', '--port', help='port for PostgreSQL connection (default: libpq settings)', ) parser.add_argument( '-U', '--user', help='user name for PostgreSQL connection (default: libpq settings)', ) parser.add_argument( '--immediate-checkpoint', help='forces the initial checkpoint to be done as quickly as possible', action='store_true') parser.add_argument( '-J', '--jobs', type=check_positive, help='number of subprocesses to upload data to S3, ' 'defaults to 2', default=2) return parser.parse_args(args=args) def configure_logging(config): """ Get a nicer output from the Python logging package """ verbosity = config.verbose - config.quiet log_level = max(logging.WARNING - verbosity * 10, logging.DEBUG) logging.basicConfig(format=LOGGING_FORMAT, level=log_level) if __name__ == '__main__': main() barman-2.10/barman/clients/__init__.py0000644000015500001620000000126413571162460016070 0ustar 00000000000000# Copyright (C) 2019 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . barman-2.10/barman/clients/walrestore.py0000755000015500001620000003737413571162460016536 0ustar 00000000000000# walrestore - Remote Barman WAL restore command for PostgreSQL # # This script remotely fetches WAL files from Barman via SSH, on demand. # It is intended to be used in restore_command in recovery configuration files # of PostgreSQL standby servers. Supports parallel fetching and # protects against SSH failures. # # See the help page for usage information. # # Copyright (C) 2016-2019 2ndQuadrant Limited # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from __future__ import print_function import os import shutil import subprocess import sys import time import barman from barman.utils import force_str try: import argparse except ImportError: raise SystemExit("Missing required python module: argparse") DEFAULT_USER = 'barman' DEFAULT_SPOOL_DIR = '/var/tmp/walrestore' # The string_types list is used to identify strings # in a consistent way between python 2 and 3 if sys.version_info[0] == 3: string_types = str, else: string_types = basestring, # noqa def main(args=None): """ The main script entry point """ config = parse_arguments(args) # Do connectivity test if requested if config.test: connectivity_test(config) return # never reached # Check WAL destination is not a directory if os.path.isdir(config.wal_dest): exit_with_error("WAL_DEST cannot be a directory: %s" % config.wal_dest) # Open the destination file try: dest_file = open(config.wal_dest, 'wb') except EnvironmentError as e: exit_with_error("Cannot open '%s' (WAL_DEST) for writing: %s" % (config.wal_dest, e)) return # never reached # If the file is present in SPOOL_DIR use it and terminate try_deliver_from_spool(config, dest_file) # If required load the list of files to download in parallel additional_files = peek_additional_files(config) try: # Execute barman get-wal through the ssh connection ssh_process = RemoteGetWal(config, config.wal_name, dest_file) except EnvironmentError as e: exit_with_error('Error executing "ssh": %s' % e, sleep=config.sleep) return # never reached # Spawn a process for every additional file parallel_ssh_processes = spawn_additional_process( config, additional_files) # Wait for termination of every subprocess. If CTRL+C is pressed, # terminate all of them try: RemoteGetWal.wait_for_all() finally: # Cleanup failed spool files in case of errors for process in parallel_ssh_processes: if process.returncode != 0: os.unlink(process.dest_file) # If the command succeeded exit here if ssh_process.returncode == 0: sys.exit(0) # Report the exit code, remapping ssh failure code (255) to 3 if ssh_process.returncode == 255: exit_with_error("Connection problem with ssh", 3, sleep=config.sleep) else: exit_with_error("Remote 'barman get-wal' command has failed!", ssh_process.returncode, sleep=config.sleep) def spawn_additional_process(config, additional_files): """ Execute additional barman get-wal processes :param argparse.Namespace config: the configuration from command line :param additional_files: A list of WAL file to be downloaded in parallel :return list[subprocess.Popen]: list of created processes """ processes = [] for wal_name in additional_files: spool_file_name = os.path.join(config.spool_dir, wal_name) try: # Spawn a process and write the output in the spool dir process = RemoteGetWal(config, wal_name, spool_file_name) processes.append(process) except EnvironmentError: # If execution has failed make sure the spool file is unlinked try: os.unlink(spool_file_name) except EnvironmentError: # Suppress unlink errors pass return processes def peek_additional_files(config): """ Invoke remote get-wal --peek to receive a list of wal files to copy :param argparse.Namespace config: the configuration from command line :returns set: a set of WAL file names from the peek command """ # If parallel downloading is not required return an empty array if not config.parallel: return [] # Make sure the SPOOL_DIR exists try: if not os.path.exists(config.spool_dir): os.mkdir(config.spool_dir) except EnvironmentError as e: exit_with_error("Cannot create '%s' directory: %s" % (config.spool_dir, e)) # Retrieve the list of files from remote additional_files = execute_peek(config) # Sanity check if len(additional_files) == 0 or additional_files[0] != config.wal_name: exit_with_error("The required file is not available: %s" % config.wal_name) # Remove the first element, as now we know is identical to config.wal_name del additional_files[0] return additional_files def build_ssh_command(config, wal_name, peek=0): """ Prepare an ssh command according to the arguments passed on command line :param argparse.Namespace config: the configuration from command line :param str wal_name: the wal_name get-wal parameter :param int peek: in :return list[str]: the ssh command as list of string """ ssh_command = [ 'ssh', "%s@%s" % (config.user, config.barman_host), "barman", ] if config.config: ssh_command.append("--config %s" % config.config) options = [] if config.test: options.append("--test") if peek: options.append("--peek '%s'" % peek) if config.compression: options.append("--%s" % config.compression) if config.partial: options.append("--partial") if options: get_wal_command = "get-wal %s '%s' '%s'" % ( ' '.join(options), config.server_name, wal_name) else: get_wal_command = "get-wal '%s' '%s'" % ( config.server_name, wal_name) ssh_command.append(get_wal_command) return ssh_command def execute_peek(config): """ Invoke remote get-wal --peek to receive a list of wal file to copy :param argparse.Namespace config: the configuration from command line :returns set: a set of WAL file names from the peek command """ # Build the peek command ssh_command = build_ssh_command(config, config.wal_name, config.parallel) # Issue the command try: output = subprocess.Popen(ssh_command, stdout=subprocess.PIPE).communicate() return list(output[0].decode().splitlines()) except subprocess.CalledProcessError as e: exit_with_error("Impossible to invoke remote get-wal --peek: %s" % e) def try_deliver_from_spool(config, dest_file): """ Search for the requested file in the spool directory. If is already present, then copy it locally and exit, return otherwise. :param argparse.Namespace config: the configuration from command line :param dest_file: The destination file object """ spool_file = os.path.join(config.spool_dir, config.wal_name) # id the file is not present, give up if not os.path.exists(spool_file): return try: shutil.copyfileobj(open(spool_file, 'rb'), dest_file) os.unlink(spool_file) sys.exit(0) except IOError as e: exit_with_error("Failure copying %s to %s: %s" % (spool_file, dest_file.name, e)) def exit_with_error(message, status=2, sleep=0): """ Print ``message`` and terminate the script with ``status`` :param str message: message to print :param int status: script exit code :param int sleep: second to sleep before exiting """ print("ERROR: %s" % message, file=sys.stderr) # Sleep for config.sleep seconds if required if sleep: print("Sleeping for %d seconds." % sleep, file=sys.stderr) time.sleep(sleep) sys.exit(status) def connectivity_test(config): """ Invoke remote get-wal --test to test the connection with Barman server :param argparse.Namespace config: the configuration from command line """ # Build the peek command ssh_command = build_ssh_command(config, 'dummy_wal_name') # Issue the command try: pipe = subprocess.Popen(ssh_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output = pipe.communicate() print(force_str(output[0])) sys.exit(pipe.returncode) except subprocess.CalledProcessError as e: exit_with_error("Impossible to invoke remote get-wal: %s" % e) def parse_arguments(args=None): """ Parse the command line arguments :param list[str] args: the raw arguments list. When not provided it defaults to sys.args[1:] :rtype: argparse.Namespace """ parser = argparse.ArgumentParser( description="This script will be used as a 'restore_command' " "based on the get-wal feature of Barman. " "A ssh connection will be opened to the Barman host.", ) parser.add_argument( '-V', '--version', action='version', version='%%(prog)s %s' % barman.__version__) parser.add_argument( "-U", "--user", default=DEFAULT_USER, help="The user used for the ssh connection to the Barman server. " "Defaults to '%(default)s'.", ) parser.add_argument( "-s", "--sleep", default=0, type=int, metavar="SECONDS", help="Sleep for SECONDS after a failure of get-wal request. " "Defaults to 0 (nowait).", ) parser.add_argument( "-p", "--parallel", default=0, type=int, metavar="JOBS", help="Specifies the number of files to peek and transfer " "in parallel. " "Defaults to 0 (disabled).", ) parser.add_argument( "--spool-dir", default=DEFAULT_SPOOL_DIR, metavar="SPOOL_DIR", help="Specifies spool directory for WAL files. Defaults to " "'{0}'.".format(DEFAULT_SPOOL_DIR) ) parser.add_argument( '-P', '--partial', help='retrieve also partial WAL files (.partial)', action='store_true', dest='partial', default=False, ) parser.add_argument( '-z', '--gzip', help='Transfer the WAL files compressed with gzip', action='store_const', const='gzip', dest='compression', ) parser.add_argument( '-j', '--bzip2', help='Transfer the WAL files compressed with bzip2', action='store_const', const='bzip2', dest='compression', ) parser.add_argument( '-c', '--config', metavar="CONFIG", help='configuration file on the Barman server', ) parser.add_argument( '-t', '--test', action='store_true', help="test both the connection and the configuration of the " "requested PostgreSQL server in Barman to make sure it is " "ready to receive WAL files. With this option, " "the 'wal_name' and 'wal_dest' mandatory arguments are ignored.", ) parser.add_argument( "barman_host", metavar="BARMAN_HOST", help="The host of the Barman server.", ) parser.add_argument( "server_name", metavar="SERVER_NAME", help="The server name configured in Barman " "from which WALs are taken.", ) parser.add_argument( "wal_name", metavar="WAL_NAME", help="The value of the '%%f' keyword " "(according to 'restore_command').", ) parser.add_argument( "wal_dest", metavar="WAL_DEST", help="The value of the '%%p' keyword " "(according to 'restore_command').", ) return parser.parse_args(args=args) class RemoteGetWal(object): processes = set() """ The list of processes that has been spawned by RemoteGetWal """ def __init__(self, config, wal_name, dest_file): """ Spawn a process that download a WAL from remote. If needed decompress the remote stream on the fly. :param argparse.Namespace config: the configuration from command line :param wal_name: The name of WAL to download :param dest_file: The destination file name or a writable file object """ self.config = config self.wal_name = wal_name self.decompressor = None self.dest_file = None # If a string has been passed, it's the name of the destination file # We convert it in a writable binary file object if isinstance(dest_file, string_types): self.dest_file = dest_file dest_file = open(dest_file, 'wb') with dest_file: # If compression has been required, we need to spawn two processes if config.compression: # Spawn a remote get-wal process self.ssh_process = subprocess.Popen( build_ssh_command(config, wal_name), stdout=subprocess.PIPE) # Spawn the local decompressor self.decompressor = subprocess.Popen( [config.compression, '-d'], stdin=self.ssh_process.stdout, stdout=dest_file ) # Close the pipe descriptor, letting the decompressor process # to receive the SIGPIPE self.ssh_process.stdout.close() else: # With no compression only the remote get-wal process # is required self.ssh_process = subprocess.Popen( build_ssh_command(config, wal_name), stdout=dest_file) # Register the spawned processes in the class registry self.processes.add(self.ssh_process) if self.decompressor: self.processes.add(self.decompressor) @classmethod def wait_for_all(cls): """ Wait for the termination of all the registered spawned processes. """ try: while len(cls.processes): time.sleep(0.1) for process in cls.processes.copy(): if process.poll() is not None: cls.processes.remove(process) except KeyboardInterrupt: # If a SIGINT has been received, make sure that every subprocess # terminate for process in cls.processes: process.kill() exit_with_error('SIGINT received! Terminating.') @property def returncode(self): """ Return the exit code of the RemoteGetWal processes. A remote get-wal process return code is 0 only if both the remote get-wal process and the eventual decompressor return 0 :return: exit code of the RemoteGetWal processes """ if self.ssh_process.returncode != 0: return self.ssh_process.returncode if self.decompressor: if self.decompressor.returncode != 0: return self.decompressor.returncode return 0 if __name__ == '__main__': main() barman-2.10/barman/clients/cloud_walarchive.py0000755000015500001620000002160713571162460017652 0ustar 00000000000000# Copyright (C) 2018-2019 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . import bz2 import gzip import logging import os import os.path import shutil from contextlib import closing from io import BytesIO import barman from barman.cloud import CloudInterface from barman.utils import force_str from barman.xlog import hash_dir, is_any_xlog_file try: import argparse except ImportError: raise SystemExit("Missing required python module: argparse") LOGGING_FORMAT = "%(asctime)s %(levelname)s %(message)s" def main(args=None): """ The main script entry point :param list[str] args: the raw arguments list. When not provided it defaults to sys.args[1:] """ config = parse_arguments(args) configure_logging() # Validate the WAL file name before uploading it if not is_any_xlog_file(config.wal_path): logging.error('%s is an invalid name for a WAL file' % config.wal_path) raise SystemExit(1) try: cloud_interface = CloudInterface( destination_url=config.destination_url, encryption=config.encryption, profile_name=config.profile) with closing(cloud_interface): uploader = S3WalUploader( cloud_interface=cloud_interface, server_name=config.server_name, compression=config.compression) if not cloud_interface.test_connectivity(): raise SystemExit(1) # If test is requested, just exit after connectivity test elif config.test: raise SystemExit(0) # TODO: Should the setup be optional? cloud_interface.setup_bucket() uploader.upload_wal(config.wal_path) except Exception as exc: logging.error("Barman cloud WAL archiver exception: %s", force_str(exc)) logging.debug('Exception details:', exc_info=exc) raise SystemExit(1) def parse_arguments(args=None): """ Parse command line arguments :return: The options parsed """ parser = argparse.ArgumentParser( description='This script can be used in the `archive_command` ' 'of a PostgreSQL server to ship WAL files to the Cloud. ' 'Currently only AWS S3 is supported.' ) parser.add_argument( 'destination_url', help='URL of the cloud destination, such as a bucket in AWS S3.' ' For example: `s3://bucket/path/to/folder`.' ) parser.add_argument( 'server_name', help='the name of the server as configured in Barman.' ) parser.add_argument( 'wal_path', help="the value of the '%%p' keyword" " (according to 'archive_command')." ) parser.add_argument( '-V', '--version', action='version', version='%%(prog)s %s' % barman.__version__ ) parser.add_argument( '-P', '--profile', help='profile name (e.g. INI section in AWS credentials file)', ) compression = parser.add_mutually_exclusive_group() compression.add_argument( "-z", "--gzip", help="gzip-compress the WAL while uploading to the cloud", action='store_const', const='gzip', dest='compression', ) compression.add_argument( "-j", "--bzip2", help="bzip2-compress the WAL while uploading to the cloud", action='store_const', const='bzip2', dest='compression', ) parser.add_argument( "-e", "--encryption", help="Enable server-side encryption for the transfer. " "Allowed values: 'AES256', 'aws:kms'", choices=['AES256', 'aws:kms'], metavar="ENCRYPTION", ) parser.add_argument( "-t", "--test", help="Test cloud connectivity and exit", action="store_true", default=False ) return parser.parse_args(args=args) def configure_logging(): """ Get a nicer output from the Python logging package """ logging.basicConfig(format=LOGGING_FORMAT, level=logging.ERROR) class S3WalUploader(object): """ S3 upload client """ def __init__(self, cloud_interface, server_name, compression=None): """ Object responsible for handling interactions with S3 :param CloudInterface cloud_interface: The interface to use to upload the backup :param str server_name: The name of the server as configured in Barman :param str compression: Compression algorithm to use """ self.cloud_interface = cloud_interface # If netloc is not present, the s3 url is badly formatted. self.compression = compression self.server_name = server_name def upload_wal(self, wal_path): """ Upload a WAL file from postgres to S3 :param str wal_path: Full path of the WAL file """ # Extract the WAL file wal_name = self.retrieve_wal_name(wal_path) # Use the correct file object for the upload (simple|gzip|bz2) file_object = self.retrieve_file_obj(wal_path) # Correctly format the destination path on s3 destination = os.path.join( self.cloud_interface.path, self.server_name, 'wals', hash_dir(wal_path), wal_name ) # Remove initial "/", otherwise we will create a folder with an empty # name. if destination[0] == '/': destination = destination[1:] # Put the file in the correct bucket. # The put method will handle automatically multipart upload self.cloud_interface.upload_fileobj( fileobj=file_object, key=destination) def retrieve_file_obj(self, wal_path): """ Create the correct type of file object necessary for the file transfer. If no compression is required a simple File object is returned. In case of compression, a BytesIO object is returned, containing the result of the compression. NOTE: the Wal files are actually compressed straight into memory, thanks to the usual small dimension of the WAL. This could change in the future because the WAL files dimension could be more than 16MB on some postgres install. TODO: Evaluate using tempfile if the WAL is bigger than 16MB :param str wal_path: :return File: simple or compressed file object """ # Read the wal_file in binary mode wal_file = open(wal_path, 'rb') # return the opened file if is uncompressed if not self.compression: return wal_file if self.compression == 'gzip': # Create a BytesIO for in memory compression in_mem_gzip = BytesIO() # TODO: closing is redundant with python >= 2.7 with closing(gzip.GzipFile(fileobj=in_mem_gzip, mode='wb')) as gz: # copy the gzipped data in memory shutil.copyfileobj(wal_file, gz) in_mem_gzip.seek(0) return in_mem_gzip elif self.compression == 'bzip2': # Create a BytesIO for in memory compression in_mem_bz2 = BytesIO(bz2.compress(wal_file.read())) in_mem_bz2.seek(0) return in_mem_bz2 else: raise ValueError("Unknown compression type: %s" % self.compression) def retrieve_wal_name(self, wal_path): """ Extract the name of the WAL file from the complete path. If no compression is specified, then the simple file name is returned. In case of compression, the correct file extension is applied to the WAL file name. :param str wal_path: the WAL file complete path :return str: WAL file name """ # Extract the WAL name wal_name = os.path.basename(wal_path) # return the plain file name if no compression is specified if not self.compression: return wal_name if self.compression == 'gzip': # add gz extension return "%s.gz" % wal_name elif self.compression == 'bzip2': # add bz2 extension return "%s.bz2" % wal_name else: raise ValueError("Unknown compression type: %s" % self.compression) if __name__ == '__main__': main() barman-2.10/barman/clients/walarchive.py0000755000015500001620000002565213571162460016470 0ustar 00000000000000# walarchive - Remote Barman WAL archive command for PostgreSQL # # This script remotely sends WAL files to Barman via SSH, on demand. # It is intended to be used as archive_command in PostgreSQL configuration. # # See the help page for usage information. # # Copyright (C) 2019 2ndQuadrant Limited # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from __future__ import print_function import copy import hashlib import os import subprocess import sys import tarfile import time from contextlib import closing from io import BytesIO import barman try: import argparse except ImportError: raise SystemExit("Missing required python module: argparse") DEFAULT_USER = 'barman' BUFSIZE = 16 * 1024 def main(args=None): """ The main script entry point :param list[str] args: the raw arguments list. When not provided it defaults to sys.args[1:] """ config = parse_arguments(args) # Do connectivity test if requested if config.test: connectivity_test(config) return # never reached # Check WAL destination is not a directory if os.path.isdir(config.wal_path): exit_with_error("WAL_PATH cannot be a directory: %s" % config.wal_path) try: # Execute barman put-wal through the ssh connection ssh_process = RemotePutWal(config, config.wal_path) except EnvironmentError as exc: exit_with_error('Error executing ssh: %s' % exc) return # never reached # Wait for termination of every subprocess. If CTRL+C is pressed, # terminate all of them RemotePutWal.wait_for_all() # If the command succeeded exit here if ssh_process.returncode == 0: return # Report the exit code, remapping ssh failure code (255) to 3 if ssh_process.returncode == 255: exit_with_error("Connection problem with ssh", 3) else: exit_with_error("Remote 'barman put-wal' command has failed!", ssh_process.returncode) def build_ssh_command(config): """ Prepare an ssh command according to the arguments passed on command line :param argparse.Namespace config: the configuration from command line :return list[str]: the ssh command as list of string """ ssh_command = [ 'ssh', "%s@%s" % (config.user, config.barman_host), "barman", ] if config.config: ssh_command.append("--config='%s'" % config.config) ssh_command.extend(['put-wal', config.server_name]) if config.test: ssh_command.append("--test") return ssh_command def exit_with_error(message, status=2): """ Print ``message`` and terminate the script with ``status`` :param str message: message to print :param int status: script exit code """ print("ERROR: %s" % message, file=sys.stderr) sys.exit(status) def connectivity_test(config): """ Invoke remote put-wal --test to test the connection with Barman server :param argparse.Namespace config: the configuration from command line """ ssh_command = build_ssh_command(config) try: output = subprocess.Popen(ssh_command, stdout=subprocess.PIPE).communicate() print(output[0]) sys.exit(0) except subprocess.CalledProcessError as e: exit_with_error("Impossible to invoke remote put-wal: %s" % e) def parse_arguments(args=None): """ Parse the command line arguments :param list[str] args: the raw arguments list. When not provided it defaults to sys.args[1:] :rtype: argparse.Namespace """ parser = argparse.ArgumentParser( description="This script will be used as an 'archive_command' " "based on the put-wal feature of Barman. " "A ssh connection will be opened to the Barman host.", ) parser.add_argument( '-V', '--version', action='version', version='%%(prog)s %s' % barman.__version__) parser.add_argument( "-U", "--user", default=DEFAULT_USER, help="The user used for the ssh connection to the Barman server. " "Defaults to '%(default)s'.", ) parser.add_argument( '-c', '--config', metavar="CONFIG", help='configuration file on the Barman server', ) parser.add_argument( '-t', '--test', action='store_true', help="test both the connection and the configuration of the " "requested PostgreSQL server in Barman for WAL retrieval. " "With this option, the 'wal_name' mandatory argument is " "ignored.", ) parser.add_argument( "barman_host", metavar="BARMAN_HOST", help="The host of the Barman server.", ) parser.add_argument( "server_name", metavar="SERVER_NAME", help="The server name configured in Barman " "from which WALs are taken.", ) parser.add_argument( "wal_path", metavar="WAL_PATH", help="The value of the '%%p' keyword " "(according to 'archive_command').", ) return parser.parse_args(args=args) def md5copyfileobj(src, dst, length=None): """ Copy length bytes from fileobj src to fileobj dst. If length is None, copy the entire content. This method is used by the ChecksumTarFile.addfile(). Returns the md5 checksum """ checksum = hashlib.md5() if length == 0: return checksum.hexdigest() if length is None: while 1: buf = src.read(BUFSIZE) if not buf: break checksum.update(buf) dst.write(buf) return checksum.hexdigest() blocks, remainder = divmod(length, BUFSIZE) for _ in range(blocks): buf = src.read(BUFSIZE) if len(buf) < BUFSIZE: raise IOError("end of file reached") checksum.update(buf) dst.write(buf) if remainder != 0: buf = src.read(remainder) if len(buf) < remainder: raise IOError("end of file reached") checksum.update(buf) dst.write(buf) return checksum.hexdigest() class ChecksumTarInfo(tarfile.TarInfo): """ Special TarInfo that can hold a file checksum """ def __init__(self, *args, **kwargs): super(ChecksumTarInfo, self).__init__(*args, **kwargs) self.data_checksum = None class ChecksumTarFile(tarfile.TarFile): """ Custom TarFile class that automatically calculates md5 checksum of each file and appends a file called 'MD5SUMS' to the stream. """ tarinfo = ChecksumTarInfo # The default TarInfo class used by TarFile format = tarfile.PAX_FORMAT # Use PAX format to better preserve metadata MD5SUMS_FILE = "MD5SUMS" def addfile(self, tarinfo, fileobj=None): """ Add the provided fileobj to the tar using md5copyfileobj and saves the file md5 in the provided ChecksumTarInfo object. This method completely replaces TarFile.addfile() """ self._check("aw") tarinfo = copy.copy(tarinfo) buf = tarinfo.tobuf(self.format, self.encoding, self.errors) self.fileobj.write(buf) self.offset += len(buf) # If there's data to follow, append it. if fileobj is not None: tarinfo.data_checksum = md5copyfileobj( fileobj, self.fileobj, tarinfo.size) blocks, remainder = divmod(tarinfo.size, tarfile.BLOCKSIZE) if remainder > 0: self.fileobj.write( tarfile.NUL * (tarfile.BLOCKSIZE - remainder)) blocks += 1 self.offset += blocks * tarfile.BLOCKSIZE self.members.append(tarinfo) def close(self): """ Add an MD5SUMS file to the tar just before closing. This method extends TarFile.close(). """ if self.closed: return if self.mode in "aw": with BytesIO() as md5sums: for tarinfo in self.members: line = "%s *%s\n" % ( tarinfo.data_checksum, tarinfo.name) md5sums.write(line.encode()) md5sums.seek(0, os.SEEK_END) size = md5sums.tell() md5sums.seek(0, os.SEEK_SET) tarinfo = self.tarinfo(self.MD5SUMS_FILE) tarinfo.size = size self.addfile(tarinfo, md5sums) super(ChecksumTarFile, self).close() class RemotePutWal(object): """ Spawn a process that sends a WAL to a remote Barman server. :param argparse.Namespace config: the configuration from command line :param wal_path: The name of WAL to upload """ processes = set() """ The list of processes that has been spawned by RemotePutWal """ def __init__(self, config, wal_path): self.config = config self.wal_path = wal_path self.dest_file = None # Spawn a remote put-wal process self.ssh_process = subprocess.Popen( build_ssh_command(config), stdin=subprocess.PIPE) # Register the spawned processes in the class registry self.processes.add(self.ssh_process) # Send the data as a tar file (containing checksums) with self.ssh_process.stdin as dest_file: with closing(ChecksumTarFile.open( mode='w|', fileobj=dest_file)) as tar: tar.add(wal_path, os.path.basename(wal_path)) @classmethod def wait_for_all(cls): """ Wait for the termination of all the registered spawned processes. """ try: while cls.processes: time.sleep(0.1) for process in cls.processes.copy(): if process.poll() is not None: cls.processes.remove(process) except KeyboardInterrupt: # If a SIGINT has been received, make sure that every subprocess # terminate for process in cls.processes: process.kill() exit_with_error('SIGINT received! Terminating.') @property def returncode(self): """ Return the exit code of the RemoteGetWal processes. :return: exit code of the RemoteGetWal processes """ if self.ssh_process.returncode != 0: return self.ssh_process.returncode return 0 if __name__ == '__main__': main() barman-2.10/barman/retention_policies.py0000644000015500001620000003425513571162460016574 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module defines backup retention policies. A backup retention policy in Barman is a user-defined policy for determining how long backups and archived logs (WAL segments) need to be retained for media recovery. You can define a retention policy in terms of backup redundancy or a recovery window. Barman retains the periodical backups required to satisfy the current retention policy, and any archived WAL files required for complete recovery of those backups. """ import logging import re from abc import ABCMeta, abstractmethod from datetime import datetime, timedelta from dateutil import tz from barman.infofile import BackupInfo from barman.utils import with_metaclass _logger = logging.getLogger(__name__) class RetentionPolicy(with_metaclass(ABCMeta, object)): """Abstract base class for retention policies""" def __init__(self, mode, unit, value, context, server): """Constructor of the retention policy base class""" self.mode = mode self.unit = unit self.value = int(value) self.context = context self.server = server self._first_backup = None self._first_wal = None def report(self, source=None, context=None): """Report obsolete/valid objects according to the retention policy""" if context is None: context = self.context # Overrides the list of available backups if source is None: source = self.server.get_available_backups( BackupInfo.STATUS_NOT_EMPTY) if context == 'BASE': return self._backup_report(source) elif context == 'WAL': return self._wal_report() else: raise ValueError('Invalid context %s', context) def backup_status(self, backup_id): """Report the status of a backup according to the retention policy""" source = self.server.get_available_backups(BackupInfo.STATUS_NOT_EMPTY) if self.context == 'BASE': return self._backup_report(source)[backup_id] else: return BackupInfo.NONE def first_backup(self): """Returns the first valid backup according to retention policies""" if not self._first_backup: self.report(context='BASE') return self._first_backup def first_wal(self): """Returns the first valid WAL according to retention policies""" if not self._first_wal: self.report(context='WAL') return self._first_wal @abstractmethod def __str__(self): """String representation""" pass @abstractmethod def debug(self): """Debug information""" pass @abstractmethod def _backup_report(self, source): """Report obsolete/valid backups according to the retention policy""" pass @abstractmethod def _wal_report(self): """Report obsolete/valid WALs according to the retention policy""" pass @classmethod def create(cls, server, option, value): """ If given option and value from the configuration file match, creates the retention policy object for the given server """ # using @abstractclassmethod from python3 would be better here raise NotImplementedError( 'The class %s must override the create() class method', cls.__name__) def to_json(self): """ Output representation of the obj for JSON serialization """ return "%s %s %s" % (self.mode, self.value, self.unit) class RedundancyRetentionPolicy(RetentionPolicy): """ Retention policy based on redundancy, the setting that determines many periodical backups to keep. A redundancy-based retention policy is contrasted with retention policy that uses a recovery window. """ _re = re.compile(r'^\s*redundancy\s+(\d+)\s*$', re.IGNORECASE) def __init__(self, context, value, server): super(RedundancyRetentionPolicy, self ).__init__('redundancy', 'b', value, 'BASE', server) assert (value >= 0) def __str__(self): return "REDUNDANCY %s" % self.value def debug(self): return "Redundancy: %s (%s)" % (self.value, self.context) def _backup_report(self, source): """Report obsolete/valid backups according to the retention policy""" report = dict() backups = source # Normalise the redundancy value (according to minimum redundancy) redundancy = self.value if redundancy < self.server.config.minimum_redundancy: _logger.warning( "Retention policy redundancy (%s) is lower than " "the required minimum redundancy (%s). Enforce %s.", redundancy, self.server.config.minimum_redundancy, self.server.config.minimum_redundancy) redundancy = self.server.config.minimum_redundancy # Map the latest 'redundancy' DONE backups as VALID # The remaining DONE backups are classified as OBSOLETE # Non DONE backups are classified as NONE # NOTE: reverse key orders (simulate reverse chronology) i = 0 for bid in sorted(backups.keys(), reverse=True): if backups[bid].status == BackupInfo.DONE: if i < redundancy: report[bid] = BackupInfo.VALID self._first_backup = bid else: report[bid] = BackupInfo.OBSOLETE i = i + 1 else: report[bid] = BackupInfo.NONE return report def _wal_report(self): """Report obsolete/valid WALs according to the retention policy""" pass @classmethod def create(cls, server, context, optval): # Detect Redundancy retention type mtch = cls._re.match(optval) if not mtch: return None value = int(mtch.groups()[0]) return cls(context, value, server) class RecoveryWindowRetentionPolicy(RetentionPolicy): """ Retention policy based on recovery window. The DBA specifies a period of time and Barman ensures retention of backups and archived WAL files required for point-in-time recovery to any time during the recovery window. The interval always ends with the current time and extends back in time for the number of days specified by the user. For example, if the retention policy is set for a recovery window of seven days, and the current time is 9:30 AM on Friday, Barman retains the backups required to allow point-in-time recovery back to 9:30 AM on the previous Friday. """ _re = re.compile( r""" ^\s* recovery\s+window\s+of\s+ # recovery window of (\d+)\s+(day|month|week)s? # N (day|month|week) with optional 's' \s*$ """, re.IGNORECASE | re.VERBOSE) _kw = {'d': 'DAYS', 'm': 'MONTHS', 'w': 'WEEKS'} def __init__(self, context, value, unit, server): super(RecoveryWindowRetentionPolicy, self ).__init__('window', unit, value, context, server) assert (value >= 0) assert (unit == 'd' or unit == 'm' or unit == 'w') assert (context == 'WAL' or context == 'BASE') # Calculates the time delta if unit == 'd': self.timedelta = timedelta(days=self.value) elif unit == 'w': self.timedelta = timedelta(weeks=self.value) elif unit == 'm': self.timedelta = timedelta(days=(31 * self.value)) def __str__(self): return "RECOVERY WINDOW OF %s %s" % (self.value, self._kw[self.unit]) def debug(self): return "Recovery Window: %s %s: %s (%s)" % ( self.value, self.unit, self.context, self._point_of_recoverability()) def _point_of_recoverability(self): """ Based on the current time and the window, calculate the point of recoverability, which will be then used to define the first backup or the first WAL """ return datetime.now(tz.tzlocal()) - self.timedelta def _backup_report(self, source): """Report obsolete/valid backups according to the retention policy""" report = dict() backups = source # Map as VALID all DONE backups having end time lower than # the point of recoverability. The older ones # are classified as OBSOLETE. # Non DONE backups are classified as NONE found = False valid = 0 # NOTE: reverse key orders (simulate reverse chronology) for bid in sorted(backups.keys(), reverse=True): # We are interested in DONE backups only if backups[bid].status == BackupInfo.DONE: if found: # Check minimum redundancy requirements if valid < self.server.config.minimum_redundancy: _logger.warning( "Keeping obsolete backup %s for server %s " "(older than %s) " "due to minimum redundancy requirements (%s)", bid, self.server.config.name, self._point_of_recoverability(), self.server.config.minimum_redundancy) # We mark the backup as potentially obsolete # as we must respect minimum redundancy requirements report[bid] = BackupInfo.POTENTIALLY_OBSOLETE self._first_backup = bid valid = valid + 1 else: # We mark this backup as obsolete # (older than the first valid one) _logger.info( "Reporting backup %s for server %s as OBSOLETE " "(older than %s)", bid, self.server.config.name, self._point_of_recoverability()) report[bid] = BackupInfo.OBSOLETE else: _logger.debug( "Reporting backup %s for server %s as VALID " "(newer than %s)", bid, self.server.config.name, self._point_of_recoverability()) # Backup within the recovery window report[bid] = BackupInfo.VALID self._first_backup = bid valid = valid + 1 # TODO: Currently we use the backup local end time # We need to make this more accurate if backups[bid].end_time < self._point_of_recoverability(): found = True else: report[bid] = BackupInfo.NONE return report def _wal_report(self): """Report obsolete/valid WALs according to the retention policy""" pass @classmethod def create(cls, server, context, optval): # Detect Recovery Window retention type match = cls._re.match(optval) if not match: return None value = int(match.groups()[0]) unit = match.groups()[1][0].lower() return cls(context, value, unit, server) class SimpleWALRetentionPolicy(RetentionPolicy): """Simple retention policy for WAL files (identical to the main one)""" _re = re.compile(r'^\s*main\s*$', re.IGNORECASE) def __init__(self, context, policy, server): super(SimpleWALRetentionPolicy, self ).__init__('simple-wal', policy.unit, policy.value, context, server) # The referred policy must be of type 'BASE' assert (self.context == 'WAL' and policy.context == 'BASE') self.policy = policy def __str__(self): return "MAIN" def debug(self): return "Simple WAL Retention Policy (%s)" % self.policy def _backup_report(self, source): """Report obsolete/valid backups according to the retention policy""" pass def _wal_report(self): """Report obsolete/valid backups according to the retention policy""" self.policy.report(context='WAL') def first_wal(self): """Returns the first valid WAL according to retention policies""" return self.policy.first_wal() @classmethod def create(cls, server, context, optval): # Detect Redundancy retention type match = cls._re.match(optval) if not match: return None return cls(context, server.config.retention_policy, server) class RetentionPolicyFactory(object): """Factory for retention policy objects""" # Available retention policy types policy_classes = [ RedundancyRetentionPolicy, RecoveryWindowRetentionPolicy, SimpleWALRetentionPolicy ] @classmethod def create(cls, server, option, value): """ Based on the given option and value from the configuration file, creates the appropriate retention policy object for the given server """ if option == 'wal_retention_policy': context = 'WAL' elif option == 'retention_policy': context = 'BASE' else: raise ValueError('Unknown option for retention policy: %s' % option) # Look for the matching rule for policy_class in cls.policy_classes: policy = policy_class.create(server, context, value) if policy: return policy raise ValueError('Cannot parse option %s: %s' % (option, value)) barman-2.10/barman/utils.py0000644000015500001620000004044713571162460014036 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module contains utility functions used in Barman. """ import datetime import decimal import errno import grp import hashlib import json import logging import logging.handlers import os import pwd import re import signal import sys from argparse import ArgumentTypeError from contextlib import contextmanager from distutils.version import Version from barman.exceptions import TimeoutError _logger = logging.getLogger(__name__) if sys.version_info[0] >= 3: _text_type = str _string_types = str else: _text_type = unicode # noqa _string_types = basestring # noqa def drop_privileges(user): """ Change the system user of the current python process. It will only work if called as root or as the target user. :param string user: target user :raise KeyError: if the target user doesn't exists :raise OSError: when the user change fails """ pw = pwd.getpwnam(user) if pw.pw_uid == os.getuid(): return groups = [e.gr_gid for e in grp.getgrall() if pw.pw_name in e.gr_mem] groups.append(pw.pw_gid) os.setgroups(groups) os.setgid(pw.pw_gid) os.setuid(pw.pw_uid) os.environ['HOME'] = pw.pw_dir def mkpath(directory): """ Recursively create a target directory. If the path already exists it does nothing. :param str directory: directory to be created """ if not os.path.isdir(directory): os.makedirs(directory) def configure_logging( log_file, log_level=logging.INFO, log_format="%(asctime)s %(name)s %(levelname)s: %(message)s"): """ Configure the logging module :param str,None log_file: target file path. If None use standard error. :param int log_level: min log level to be reported in log file. Default to INFO :param str log_format: format string used for a log line. Default to "%(asctime)s %(name)s %(levelname)s: %(message)s" """ warn = None handler = logging.StreamHandler() if log_file: log_file = os.path.abspath(log_file) log_dir = os.path.dirname(log_file) try: mkpath(log_dir) handler = logging.handlers.WatchedFileHandler( log_file, encoding='utf-8') except (OSError, IOError): # fallback to standard error warn = "Failed opening the requested log file. " \ "Using standard error instead." formatter = logging.Formatter(log_format) handler.setFormatter(formatter) logging.root.addHandler(handler) if warn: # this will be always displayed because the default level is WARNING _logger.warn(warn) logging.root.setLevel(log_level) def parse_log_level(log_level): """ Convert a log level to its int representation as required by logging module. :param log_level: An integer or a string :return: an integer or None if an invalid argument is provided """ try: log_level_int = int(log_level) except ValueError: log_level_int = logging.getLevelName(str(log_level).upper()) if isinstance(log_level_int, int): return log_level_int return None def pretty_size(size, unit=1024): """ This function returns a pretty representation of a size value :param int|long|float size: the number to to prettify :param int unit: 1000 or 1024 (the default) :rtype: str """ suffixes = ["B"] + [i + {1000: "B", 1024: "iB"}[unit] for i in "KMGTPEZY"] if unit == 1000: suffixes[1] = 'kB' # special case kB instead of KB # cast to float to avoid loosing decimals size = float(size) for suffix in suffixes: if abs(size) < unit or suffix == suffixes[-1]: if suffix == suffixes[0]: return "%d %s" % (size, suffix) else: return "%.1f %s" % (size, suffix) else: size /= unit def human_readable_timedelta(timedelta): """ Given a time interval, returns a human readable string :param timedelta: the timedelta to transform in a human readable form """ delta = abs(timedelta) # Calculate time units for the given interval time_map = { 'day': int(delta.days), 'hour': int(delta.seconds / 3600), 'minute': int(delta.seconds / 60) % 60, 'second': int(delta.seconds % 60), } # Build the resulting string time_list = [] # 'Day' part if time_map['day'] > 0: if time_map['day'] == 1: time_list.append('%s day' % time_map['day']) else: time_list.append('%s days' % time_map['day']) # 'Hour' part if time_map['hour'] > 0: if time_map['hour'] == 1: time_list.append('%s hour' % time_map['hour']) else: time_list.append('%s hours' % time_map['hour']) # 'Minute' part if time_map['minute'] > 0: if time_map['minute'] == 1: time_list.append('%s minute' % time_map['minute']) else: time_list.append('%s minutes' % time_map['minute']) # 'Second' part if time_map['second'] > 0: if time_map['second'] == 1: time_list.append('%s second' % time_map['second']) else: time_list.append('%s seconds' % time_map['second']) human = ', '.join(time_list) # Take care of timedelta when is shorter than a second if delta < datetime.timedelta(seconds=1): human = 'less than one second' # If timedelta is negative append 'ago' suffix if delta != timedelta: human += " ago" return human def total_seconds(timedelta): """ Compatibility method because the total_seconds method has been introduced in Python 2.7 :param timedelta: a timedelta object :rtype: float """ if hasattr(timedelta, 'total_seconds'): return timedelta.total_seconds() else: secs = (timedelta.seconds + timedelta.days * 24 * 3600) * 10**6 return (timedelta.microseconds + secs) / 10.0**6 def which(executable, path=None): """ This method is useful to find if a executable is present into the os PATH :param str executable: The name of the executable to find :param str|None path: An optional search path to override the current one. :return str|None: the path of the executable or None """ # Get the system path if needed if path is None: path = os.getenv('PATH') # If the path is None at this point we have nothing to search if path is None: return None # If executable is an absolute path, check if it exists and is executable # otherwise return failure. if os.path.isabs(executable): if os.path.exists(executable) and os.access(executable, os.X_OK): return executable else: return None # Search the requested executable in every directory present in path and # return the first occurrence that exists and is executable. for file_path in path.split(os.path.pathsep): file_path = os.path.join(file_path, executable) # If the file exists and is executable return the full path. if os.path.exists(file_path) and os.access(file_path, os.X_OK): return file_path # If no matching file is present on the system return None return None class BarmanEncoder(json.JSONEncoder): """ Custom JSON encoder used for BackupInfo encoding This encoder supports the following types: * dates and timestamps if they have a ctime() method. * objects that implement the 'to_json' method. * binary strings (python 3) """ def default(self, obj): # If the object implements to_json() method use it if hasattr(obj, 'to_json'): return obj.to_json() # Serialise date and datetime objects using ctime() method if hasattr(obj, 'ctime') and callable(obj.ctime): return obj.ctime() # Serialise timedelta objects using human_readable_timedelta() if isinstance(obj, datetime.timedelta): return human_readable_timedelta(obj) # Serialise Decimal objects using their string representation # WARNING: When deserialized they will be treat as float values # which have a lower precision if isinstance(obj, decimal.Decimal): return float(obj) # Binary strings must be decoded before using them in # an unicode string if hasattr(obj, 'decode') and callable(obj.decode): return obj.decode('utf-8', 'replace') # Manage (Loose|Strict)Version objects as strings. if isinstance(obj, Version): return str(obj) # Let the base class default method raise the TypeError return super(BarmanEncoder, self).default(obj) def fsync_dir(dir_path): """ Execute fsync on a directory ensuring it is synced to disk :param str dir_path: The directory to sync :raise OSError: If fail opening the directory """ dir_fd = os.open(dir_path, os.O_DIRECTORY) try: os.fsync(dir_fd) except OSError as e: # On some filesystem doing a fsync on a directory # raises an EINVAL error. Ignoring it is usually safe. if e.errno != errno.EINVAL: raise os.close(dir_fd) def fsync_file(file_path): """ Execute fsync on a file ensuring it is synced to disk Returns the file stats :param str file_path: The file to sync :return: file stat :raise OSError: If something fails """ file_fd = os.open(file_path, os.O_RDONLY) file_stat = os.fstat(file_fd) os.fsync(file_fd) os.close(file_fd) return file_stat def simplify_version(version_string): """ Simplify a version number by removing the patch level :param version_string: the version number to simplify :return str: the simplified version number """ if version_string is None: return None version = version_string.split('.') # If a development/beta/rc version, split out the string part unreleased = re.search(r'[^0-9.]', version[-1]) if unreleased: last_component = version.pop() number = last_component[:unreleased.start()] string = last_component[unreleased.start():] version += [number, string] return '.'.join(version[:-1]) def with_metaclass(meta, *bases): """ Function from jinja2/_compat.py. License: BSD. Create a base class with a metaclass. :param type meta: Metaclass to add to base class """ # This requires a bit of explanation: the basic idea is to make a # dummy metaclass for one level of class instantiation that replaces # itself with the actual metaclass. class Metaclass(type): def __new__(mcs, name, this_bases, d): return meta(name, bases, d) return type.__new__(Metaclass, 'temporary_class', (), {}) @contextmanager def timeout(timeout_duration): """ ContextManager responsible for timing out the contained block of code after a defined time interval. """ # Define the handler for the alarm signal def handler(signum, frame): raise TimeoutError() # set the timeout handler previous_handler = signal.signal(signal.SIGALRM, handler) if previous_handler != signal.SIG_DFL: signal.signal(signal.SIGALRM, previous_handler) raise AssertionError("Another timeout is already defined") # set the timeout duration signal.alarm(timeout_duration) try: # Execute the contained block of code yield finally: # Reset the signal signal.alarm(0) signal.signal(signal.SIGALRM, signal.SIG_DFL) def is_power_of_two(number): """ Check if a number is a power of two or not """ # Returns None if number is set to None. if number is None: return None # This is a fast method to check for a power of two. # # A power of two has this structure: 100000 (one or more zeroes) # This is the same number minus one: 011111 (composed by ones) # This is the bitwise and: 000000 # # This is true only for every power of two return number != 0 and (number & (number - 1)) == 0 def file_md5(file_path, buffer_size=1024 * 16): """ Calculate the md5 checksum for the provided file path :param str file_path: path of the file to read :param int buffer_size: read buffer size, default 16k :return str: Hexadecimal md5 string """ md5 = hashlib.md5() with open(file_path, 'rb') as file_object: while 1: buf = file_object.read(buffer_size) if not buf: break md5.update(buf) return md5.hexdigest() def force_str(obj, encoding='utf-8', errors='replace'): """ Force any object to an unicode string. Code inspired by Django's force_text function """ # Handle the common case first for performance reasons. if issubclass(type(obj), _text_type): return obj try: if issubclass(type(obj), _string_types): obj = obj.decode(encoding, errors) else: if sys.version_info[0] >= 3: if isinstance(obj, bytes): obj = _text_type(obj, encoding, errors) else: obj = _text_type(obj) elif hasattr(obj, '__unicode__'): obj = _text_type(obj) else: obj = _text_type(bytes(obj), encoding, errors) except (UnicodeDecodeError, TypeError): if isinstance(obj, Exception): # If we get to here, the caller has passed in an Exception # subclass populated with non-ASCII bytestring data without a # working unicode method. Try to handle this without raising a # further exception by individually forcing the exception args # to unicode. obj = ' '.join(force_str(arg, encoding, errors) for arg in obj.args) else: # As last resort, use a repr call to avoid any exception obj = repr(obj) return obj def redact_passwords(text): """ Redact passwords from the input text. Password are found in these two forms: Keyword/Value Connection Strings: - host=localhost port=5432 dbname=mydb password=SHAME_ON_ME Connection URIs: - postgresql://[user[:password]][netloc][:port][/dbname] :param str text: Input content :return: String with passwords removed """ # Remove passwords as found in key/value connection strings text = re.sub( "password=('(\\'|[^'])+'|[^ '\"]*)", "password=*REDACTED*", text) # Remove passwords in connection URLs text = re.sub( r'(?<=postgresql:\/\/)([^ :@]+:)([^ :@]+)?@', r'\1*REDACTED*@', text) return text def check_non_negative(value): """ Check for a positive integer option :param value: str containing the value to check """ if value is None: return None try: int_value = int(value) except Exception: raise ArgumentTypeError("'%s' is not a valid non negative integer" % value) if int_value < 0: raise ArgumentTypeError("'%s' is not a valid non negative integer" % value) return int_value def check_positive(value): """ Check for a positive integer option :param value: str containing the value to check """ if value is None: return None try: int_value = int(value) except Exception: raise ArgumentTypeError("'%s' is not a valid positive integer" % value) if int_value < 1: raise ArgumentTypeError("'%s' is not a valid positive integer" % value) return int_value barman-2.10/barman/lockfile.py0000644000015500001620000002567313571162460014472 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module is the lock manager for Barman """ import errno import fcntl import os import re from barman.exceptions import (LockFileBusy, LockFileParsingError, LockFilePermissionDenied) class LockFile(object): """ Ensures that there is only one process which is running against a specified LockFile. It supports the Context Manager interface, allowing the use in with statements. with LockFile('file.lock') as locked: if not locked: print "failed" else: You can also use exceptions on failures try: with LockFile('file.lock', True): except LockFileBusy, e, file: print "failed to lock %s" % file """ LOCK_PATTERN = None r""" If defined in a subclass, it must be a compiled regular expression which matches the lock filename. It must provide named groups for the constructor parameters which produce the same lock name. I.e.: >>> ServerWalReceiveLock('/tmp', 'server-name').filename '/tmp/.server-name-receive-wal.lock' >>> ServerWalReceiveLock.LOCK_PATTERN = re.compile( r'\.(?P.+)-receive-wal\.lock') >>> m = ServerWalReceiveLock.LOCK_PATTERN.match( '.server-name-receive-wal.lock') >>> ServerWalReceiveLock('/tmp', **(m.groupdict())).filename '/tmp/.server-name-receive-wal.lock' """ @classmethod def build_if_matches(cls, path): """ Factory method that creates a lock instance if the path matches the lock filename created by the actual class :param path: the full path of a LockFile :return: """ # If LOCK_PATTERN is not defined always return None if not cls.LOCK_PATTERN: return None # Matches the provided path against LOCK_PATTERN lock_directory = os.path.abspath(os.path.dirname(path)) lock_name = os.path.basename(path) match = cls.LOCK_PATTERN.match(lock_name) if match: # Build the lock object for the provided path return cls(lock_directory, **(match.groupdict())) return None def __init__(self, filename, raise_if_fail=True, wait=False): self.filename = os.path.abspath(filename) self.fd = None self.raise_if_fail = raise_if_fail self.wait = wait def acquire(self, raise_if_fail=None, wait=None, update_pid=True): """ Creates and holds on to the lock file. When raise_if_fail, a LockFileBusy is raised if the lock is held by someone else and a LockFilePermissionDenied is raised when the user executing barman have insufficient rights for the creation of a LockFile. Returns True if lock has been successfully acquired, False otherwise. :param bool raise_if_fail: If True raise an exception on failure :param bool wait: If True issue a blocking request :param bool update_pid: Whether to write our pid in the lockfile :returns bool: whether the lock has been acquired """ if self.fd: return True fd = None # method arguments take precedence on class parameters raise_if_fail = raise_if_fail \ if raise_if_fail is not None else self.raise_if_fail wait = wait if wait is not None else self.wait try: # 384 is 0600 in octal, 'rw-------' fd = os.open(self.filename, os.O_CREAT | os.O_RDWR, 384) flags = fcntl.LOCK_EX if not wait: flags |= fcntl.LOCK_NB fcntl.flock(fd, flags) if update_pid: # Once locked, replace the content of the file os.lseek(fd, 0, os.SEEK_SET) os.write(fd, ("%s\n" % os.getpid()).encode('ascii')) # Truncate the file at the current position os.ftruncate(fd, os.lseek(fd, 0, os.SEEK_CUR)) self.fd = fd return True except (OSError, IOError) as e: if fd: os.close(fd) # let's not leak file descriptors if raise_if_fail: if e.errno in (errno.EAGAIN, errno.EWOULDBLOCK): raise LockFileBusy(self.filename) elif e.errno == errno.EACCES: raise LockFilePermissionDenied(self.filename) else: raise else: return False def release(self): """ Releases the lock. If the lock is not held by the current process it does nothing. """ if not self.fd: return try: fcntl.flock(self.fd, fcntl.LOCK_UN) os.close(self.fd) except (OSError, IOError): pass self.fd = None def __del__(self): """ Avoid stale lock files. """ self.release() # Contextmanager interface def __enter__(self): return self.acquire() def __exit__(self, exception_type, value, traceback): self.release() def get_owner_pid(self): """ Test whether a lock is already held by a process. Returns the PID of the owner process or None if the lock is available. :rtype: int|None :raises LockFileParsingError: when the lock content is garbled :raises LockFilePermissionDenied: when the lockfile is not accessible """ try: self.acquire(raise_if_fail=True, wait=False, update_pid=False) except LockFileBusy: try: # Read the lock content and parse the PID # NOTE: We cannot read it in the self.acquire method to avoid # reading the previous locker PID with open(self.filename, 'r') as file_object: return int(file_object.readline().strip()) except ValueError as e: # This should not happen raise LockFileParsingError(e) # release the lock and return None self.release() return None class GlobalCronLock(LockFile): """ This lock protects cron from multiple executions. Creates a global '.cron.lock' lock file under the given lock_directory. """ def __init__(self, lock_directory): super(GlobalCronLock, self).__init__( os.path.join(lock_directory, '.cron.lock'), raise_if_fail=True) class ServerBackupLock(LockFile): """ This lock protects a server from multiple executions of backup command Creates a '.-backup.lock' lock file under the given lock_directory for the named SERVER. """ def __init__(self, lock_directory, server_name): super(ServerBackupLock, self).__init__( os.path.join(lock_directory, '.%s-backup.lock' % server_name), raise_if_fail=True) class ServerCronLock(LockFile): """ This lock protects a server from multiple executions of cron command Creates a '.-cron.lock' lock file under the given lock_directory for the named SERVER. """ def __init__(self, lock_directory, server_name): super(ServerCronLock, self).__init__( os.path.join(lock_directory, '.%s-cron.lock' % server_name), raise_if_fail=True, wait=False) class ServerXLOGDBLock(LockFile): """ This lock protects a server's xlogdb access Creates a '.-xlogdb.lock' lock file under the given lock_directory for the named SERVER. """ def __init__(self, lock_directory, server_name): super(ServerXLOGDBLock, self).__init__( os.path.join(lock_directory, '.%s-xlogdb.lock' % server_name), raise_if_fail=True, wait=True) class ServerWalArchiveLock(LockFile): """ This lock protects a server from multiple executions of wal-archive command Creates a '.-archive-wal.lock' lock file under the given lock_directory for the named SERVER. """ def __init__(self, lock_directory, server_name): super(ServerWalArchiveLock, self).__init__( os.path.join(lock_directory, '.%s-archive-wal.lock' % server_name), raise_if_fail=True, wait=False) class ServerWalReceiveLock(LockFile): """ This lock protects a server from multiple executions of receive-wal command Creates a '.-receive-wal.lock' lock file under the given lock_directory for the named SERVER. """ # TODO: Implement on the other LockFile subclasses LOCK_PATTERN = re.compile(r'\.(?P.+)-receive-wal\.lock') def __init__(self, lock_directory, server_name): super(ServerWalReceiveLock, self).__init__( os.path.join(lock_directory, '.%s-receive-wal.lock' % server_name), raise_if_fail=True, wait=False) class ServerBackupIdLock(LockFile): """ This lock protects from changing a backup that is in use. Creates a '.-.lock' lock file under the given lock_directory for a BACKUP of a SERVER. """ def __init__(self, lock_directory, server_name, backup_id): super(ServerBackupIdLock, self).__init__( os.path.join(lock_directory, '.%s-%s.lock' % ( server_name, backup_id)), raise_if_fail=True, wait=False) class ServerBackupSyncLock(LockFile): """ This lock protects from multiple executions of the sync command on the same backup. Creates a '.--sync-backup.lock' lock file under the given lock_directory for a BACKUP of a SERVER. """ def __init__(self, lock_directory, server_name, backup_id): super(ServerBackupSyncLock, self).__init__( os.path.join(lock_directory, '.%s-%s-sync-backup.lock' % ( server_name, backup_id)), raise_if_fail=True, wait=False) class ServerWalSyncLock(LockFile): """ This lock protects from multiple executions of the sync-wal command Creates a '.-sync-wal.lock' lock file under the given lock_directory for the named SERVER. """ def __init__(self, lock_directory, server_name): super(ServerWalSyncLock, self).__init__( os.path.join(lock_directory, '.%s-sync-wal.lock' % server_name), raise_if_fail=True, wait=True) barman-2.10/barman/process.py0000644000015500001620000001333213571162460014345 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see import errno import logging import os import signal import time from glob import glob from barman import output from barman.exceptions import LockFileParsingError from barman.lockfile import ServerWalReceiveLock _logger = logging.getLogger(__name__) class ProcessInfo(object): """ Barman process representation """ def __init__(self, pid, server_name, task): """ This object contains all the information required to identify a barman process :param int pid: Process ID :param string server_name: Name of the server owning the process :param string task: Task name (receive-wal, archive-wal...) """ self.pid = pid self.server_name = server_name self.task = task class ProcessManager(object): """ Class for the management of barman processes owned by a server """ # Map containing the tasks we want to retrieve (and eventually manage) TASKS = { 'receive-wal': ServerWalReceiveLock } def __init__(self, config): """ Build a ProcessManager for the provided server :param config: configuration of the server owning the process manager """ self.config = config self.process_list = [] # Cycle over the lock files in the lock directory for this server for path in glob(os.path.join(self.config.barman_lock_directory, '.%s-*.lock' % self.config.name)): for task, lock_class in self.TASKS.items(): # Check the lock_name against the lock class lock = lock_class.build_if_matches(path) if lock: try: # Use the lock to get the owner pid pid = lock.get_owner_pid() except LockFileParsingError: _logger.warning( "Skipping the %s process for server %s: " "Error reading the PID from lock file '%s'", task, self.config.name, path) break # If there is a pid save it in the process list if pid: self.process_list.append( ProcessInfo(pid, config.name, task)) # In any case, we found a match, so we must stop iterating # over the task types and handle the the next path break def list(self, task_filter=None): """ Returns a list of processes owned by this server If no filter is provided, all the processes are returned. :param str task_filter: Type of process we want to retrieve :return list[ProcessInfo]: List of processes for the server """ server_tasks = [] for process in self.process_list: # Filter the processes if necessary if task_filter and process.task != task_filter: continue server_tasks.append(process) return server_tasks def kill(self, process_info, retries=10): """ Kill a process Returns True if killed successfully False otherwise :param ProcessInfo process_info: representation of the process we want to kill :param int retries: number of times the method will check if the process is still alive :rtype: bool """ # Try to kill the process try: _logger.debug("Sending SIGINT to PID %s", process_info.pid) os.kill(process_info.pid, signal.SIGINT) _logger.debug("os.kill call succeeded") except OSError as e: _logger.debug("os.kill call failed: %s", e) # The process doesn't exists. It has probably just terminated. if e.errno == errno.ESRCH: return True # Something unexpected has happened output.error("%s", e) return False # Check if the process have been killed. the fastest (and maybe safest) # way is to send a kill with 0 as signal. # If the method returns an OSError exceptions, the process have been # killed successfully, otherwise is still alive. for counter in range(retries): try: _logger.debug("Checking with SIG_DFL if PID %s is still alive", process_info.pid) os.kill(process_info.pid, signal.SIG_DFL) _logger.debug("os.kill call succeeded") except OSError as e: _logger.debug("os.kill call failed: %s", e) # If the process doesn't exists, we are done. if e.errno == errno.ESRCH: return True # Something unexpected has happened output.error("%s", e) return False time.sleep(1) _logger.debug("The PID %s has not been terminated after %s retries", process_info.pid, retries) return False barman-2.10/barman/server.py0000644000015500001620000045324613571162460014211 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module represents a Server. Barman is able to manage multiple servers. """ import errno import json import logging import os import re import shutil import sys import tarfile import time from collections import namedtuple from contextlib import closing, contextmanager from glob import glob from tempfile import NamedTemporaryFile import barman from barman import output, xlog from barman.backup import BackupManager from barman.command_wrappers import BarmanSubProcess, Command, Rsync from barman.copy_controller import RsyncCopyController from barman.exceptions import (ArchiverFailure, BadXlogSegmentName, CommandFailedException, ConninfoException, LockFileBusy, LockFileException, LockFilePermissionDenied, PostgresDuplicateReplicationSlot, PostgresException, PostgresInvalidReplicationSlot, PostgresIsInRecovery, PostgresReplicationSlotInUse, PostgresReplicationSlotsFull, PostgresSuperuserRequired, PostgresUnsupportedFeature, SyncError, SyncNothingToDo, SyncToBeDeleted, TimeoutError, UnknownBackupIdException) from barman.infofile import BackupInfo, LocalBackupInfo, WalFileInfo from barman.lockfile import (ServerBackupIdLock, ServerBackupLock, ServerBackupSyncLock, ServerCronLock, ServerWalArchiveLock, ServerWalReceiveLock, ServerWalSyncLock, ServerXLOGDBLock) from barman.postgres import PostgreSQLConnection, StreamingConnection from barman.process import ProcessManager from barman.remote_status import RemoteStatusMixin from barman.retention_policies import RetentionPolicyFactory from barman.utils import (BarmanEncoder, file_md5, force_str, fsync_dir, fsync_file, human_readable_timedelta, is_power_of_two, mkpath, pretty_size, timeout) from barman.wal_archiver import (FileWalArchiver, StreamingWalArchiver, WalArchiver) PARTIAL_EXTENSION = '.partial' PRIMARY_INFO_FILE = 'primary.info' SYNC_WALS_INFO_FILE = 'sync-wals.info' _logger = logging.getLogger(__name__) # NamedTuple for a better readability of SyncWalInfo SyncWalInfo = namedtuple('SyncWalInfo', 'last_wal last_position') class CheckStrategy(object): """ This strategy for the 'check' collects the results of every check and does not print any message. This basic class is also responsible for immediately logging any performed check with an error in case of check failure and a debug message in case of success. """ # create a namedtuple object called CheckResult to manage check results CheckResult = namedtuple('CheckResult', 'server_name check status') # Default list used as a filter to identify non-critical checks NON_CRITICAL_CHECKS = ['minimum redundancy requirements', 'backup maximum age', 'failed backups', 'archiver errors', 'empty incoming directory', 'empty streaming directory', 'incoming WALs directory', 'streaming WALs directory', ] def __init__(self, ignore_checks=NON_CRITICAL_CHECKS): """ Silent Strategy constructor :param list ignore_checks: list of checks that can be ignored """ self.ignore_list = ignore_checks self.check_result = [] self.has_error = False self.running_check = None def init_check(self, check_name): """ Mark in the debug log when barman starts the execution of a check :param str check_name: the name of the check that is starting """ self.running_check = check_name _logger.debug("Starting check: '%s'" % check_name) def _check_name(self, check): if not check: check = self.running_check assert check return check def result(self, server_name, status, hint=None, check=None): """ Store the result of a check (with no output). Log any check result (error or debug level). :param str server_name: the server is being checked :param bool status: True if succeeded :param str,None hint: hint to print if not None: :param str,None check: the check name """ check = self._check_name(check) if not status: # If the name of the check is not in the filter list, # treat it as a blocking error, then notify the error # and change the status of the strategy if check not in self.ignore_list: self.has_error = True _logger.error( "Check '%s' failed for server '%s'" % (check, server_name)) else: # otherwise simply log the error (as info) _logger.info( "Ignoring failed check '%s' for server '%s'" % (check, server_name)) else: _logger.debug( "Check '%s' succeeded for server '%s'" % (check, server_name)) # Store the result and does not output anything result = self.CheckResult(server_name, check, status) self.check_result.append(result) self.running_check = None class CheckOutputStrategy(CheckStrategy): """ This strategy for the 'check' command immediately sends the result of a check to the designated output channel. This class derives from the basic CheckStrategy, reuses the same logic and adds output messages. """ def __init__(self): """ Output Strategy constructor """ super(CheckOutputStrategy, self).__init__(ignore_checks=()) def result(self, server_name, status, hint=None, check=None): """ Store the result of a check. Log any check result (error or debug level). Output the result to the user :param str server_name: the server being checked :param str check: the check name :param bool status: True if succeeded :param str,None hint: hint to print if not None: """ check = self._check_name(check) super(CheckOutputStrategy, self).result( server_name, status, hint, check) # Send result to output output.result('check', server_name, check, status, hint) class Server(RemoteStatusMixin): """ This class represents the PostgreSQL server to backup. """ XLOG_DB = "xlog.db" # the strategy for the management of the results of the various checks __default_check_strategy = CheckOutputStrategy() def __init__(self, config): """ Server constructor. :param barman.config.ServerConfig config: the server configuration """ super(Server, self).__init__() self.config = config self.path = self._build_path(self.config.path_prefix) self.process_manager = ProcessManager(self.config) # If 'primary_ssh_command' is specified, the source of the backup # for this server is a Barman installation (not a Postgres server) self.passive_node = config.primary_ssh_command is not None self.enforce_retention_policies = False self.postgres = None self.streaming = None self.archivers = [] # Postgres configuration is available only if node is not passive if not self.passive_node: # Initialize the main PostgreSQL connection try: # Check that 'conninfo' option is properly set if config.conninfo is None: raise ConninfoException( "Missing 'conninfo' parameter for server '%s'" % config.name) self.postgres = PostgreSQLConnection( config.conninfo, config.immediate_checkpoint, config.slot_name) # If the PostgreSQLConnection creation fails, disable the Server except ConninfoException as e: self.config.disabled = True self.config.msg_list.append( "PostgreSQL connection: " + force_str(e).strip()) # Initialize the streaming PostgreSQL connection only when # backup_method is postgres or the streaming_archiver is in use if config.backup_method == 'postgres' or config.streaming_archiver: try: if config.streaming_conninfo is None: raise ConninfoException( "Missing 'streaming_conninfo' parameter for " "server '%s'" % config.name) self.streaming = StreamingConnection( config.streaming_conninfo) # If the StreamingConnection creation fails, disable the server except ConninfoException as e: self.config.disabled = True self.config.msg_list.append( "Streaming connection: " + force_str(e).strip()) # Initialize the backup manager self.backup_manager = BackupManager(self) if not self.passive_node: # Initialize the StreamingWalArchiver # WARNING: Order of items in self.archivers list is important! # The files will be archived in that order. if self.config.streaming_archiver: try: self.archivers.append(StreamingWalArchiver( self.backup_manager)) # If the StreamingWalArchiver creation fails, # disable the server except AttributeError as e: _logger.debug(e) self.config.disabled = True self.config.msg_list.append('Unable to initialise the ' 'streaming archiver') # IMPORTANT: The following lines of code have been # temporarily commented in order to make the code # back-compatible after the introduction of 'archiver=off' # as default value in Barman 2.0. # When the back compatibility feature for archiver will be # removed, the following lines need to be decommented. # ARCHIVER_OFF_BACKCOMPATIBILITY - START OF CODE # # At least one of the available archive modes should be enabled # if len(self.archivers) < 1: # self.config.disabled = True # self.config.msg_list.append( # "No archiver enabled for server '%s'. " # "Please turn on 'archiver', 'streaming_archiver' or both" # % config.name) # ARCHIVER_OFF_BACKCOMPATIBILITY - END OF CODE # Sanity check: if file based archiver is disabled, and only # WAL streaming is enabled, a replication slot name must be # configured. if not self.config.archiver and \ self.config.streaming_archiver and \ self.config.slot_name is None: self.config.disabled = True self.config.msg_list.append( "Streaming-only archiver requires 'streaming_conninfo' " "and 'slot_name' options to be properly configured") # ARCHIVER_OFF_BACKCOMPATIBILITY - START OF CODE # IMPORTANT: This is a back-compatibility feature that has # been added in Barman 2.0. It highlights a deprecated # behaviour, and helps users during this transition phase. # It forces 'archiver=on' when both archiver and streaming_archiver # are set to 'off' (default values) and displays a warning, # requesting users to explicitly set the value in the # configuration. # When this back-compatibility feature will be removed from Barman # (in a couple of major releases), developers will need to remove # this block completely and reinstate the block of code you find # a few lines below (search for ARCHIVER_OFF_BACKCOMPATIBILITY # throughout the code). if self.config.archiver is False and \ self.config.streaming_archiver is False: output.warning("No archiver enabled for server '%s'. " "Please turn on 'archiver', " "'streaming_archiver' or both", self.config.name) output.warning("Forcing 'archiver = on'") self.config.archiver = True # ARCHIVER_OFF_BACKCOMPATIBILITY - END OF CODE # Initialize the FileWalArchiver # WARNING: Order of items in self.archivers list is important! # The files will be archived in that order. if self.config.archiver: try: self.archivers.append(FileWalArchiver(self.backup_manager)) except AttributeError as e: _logger.debug(e) self.config.disabled = True self.config.msg_list.append('Unable to initialise the ' 'file based archiver') # Set bandwidth_limit if self.config.bandwidth_limit: try: self.config.bandwidth_limit = int(self.config.bandwidth_limit) except ValueError: _logger.warning('Invalid bandwidth_limit "%s" for server "%s" ' '(fallback to "0")' % ( self.config.bandwidth_limit, self.config.name)) self.config.bandwidth_limit = None # set tablespace_bandwidth_limit if self.config.tablespace_bandwidth_limit: rules = {} for rule in self.config.tablespace_bandwidth_limit.split(): try: key, value = rule.split(':', 1) value = int(value) if value != self.config.bandwidth_limit: rules[key] = value except ValueError: _logger.warning( "Invalid tablespace_bandwidth_limit rule '%s'" % rule) if len(rules) > 0: self.config.tablespace_bandwidth_limit = rules else: self.config.tablespace_bandwidth_limit = None # Set minimum redundancy (default 0) if self.config.minimum_redundancy.isdigit(): self.config.minimum_redundancy = int( self.config.minimum_redundancy) if self.config.minimum_redundancy < 0: _logger.warning('Negative value of minimum_redundancy "%s" ' 'for server "%s" (fallback to "0")' % ( self.config.minimum_redundancy, self.config.name)) self.config.minimum_redundancy = 0 else: _logger.warning('Invalid minimum_redundancy "%s" for server "%s" ' '(fallback to "0")' % ( self.config.minimum_redundancy, self.config.name)) self.config.minimum_redundancy = 0 # Initialise retention policies self._init_retention_policies() def _init_retention_policies(self): # Set retention policy mode if self.config.retention_policy_mode != 'auto': _logger.warning( 'Unsupported retention_policy_mode "%s" for server "%s" ' '(fallback to "auto")' % ( self.config.retention_policy_mode, self.config.name)) self.config.retention_policy_mode = 'auto' # If retention_policy is present, enforce them if self.config.retention_policy: # Check wal_retention_policy if self.config.wal_retention_policy != 'main': _logger.warning( 'Unsupported wal_retention_policy value "%s" ' 'for server "%s" (fallback to "main")' % ( self.config.wal_retention_policy, self.config.name)) self.config.wal_retention_policy = 'main' # Create retention policy objects try: rp = RetentionPolicyFactory.create( self, 'retention_policy', self.config.retention_policy) # Reassign the configuration value (we keep it in one place) self.config.retention_policy = rp _logger.debug('Retention policy for server %s: %s' % ( self.config.name, self.config.retention_policy)) try: rp = RetentionPolicyFactory.create( self, 'wal_retention_policy', self.config.wal_retention_policy) # Reassign the configuration value # (we keep it in one place) self.config.wal_retention_policy = rp _logger.debug( 'WAL retention policy for server %s: %s' % ( self.config.name, self.config.wal_retention_policy)) except ValueError: _logger.exception( 'Invalid wal_retention_policy setting "%s" ' 'for server "%s" (fallback to "main")' % ( self.config.wal_retention_policy, self.config.name)) rp = RetentionPolicyFactory.create( self, 'wal_retention_policy', 'main') self.config.wal_retention_policy = rp self.enforce_retention_policies = True except ValueError: _logger.exception( 'Invalid retention_policy setting "%s" for server "%s"' % ( self.config.retention_policy, self.config.name)) def get_identity_file_path(self): """ Get the path of the file that should contain the identity of the cluster :rtype: str """ return os.path.join( self.config.backup_directory, 'identity.json') def write_identity_file(self): """ Store the identity of the server if it doesn't already exist. """ file_path = self.get_identity_file_path() # Do not write the identity if file already exists if os.path.exists(file_path): return systemid = self.systemid if systemid: try: with open(file_path, "w") as fp: json.dump( { "systemid": systemid, "version": self.postgres.server_major_version }, fp, indent=4, sort_keys=True) fp.write("\n") except IOError: _logger.exception( 'Cannot write system Id file for server "%s"' % ( self.config.name)) def read_identity_file(self): """ Read the server identity :rtype: dict[str,str] """ file_path = self.get_identity_file_path() try: with open(file_path, "r") as fp: return json.load(fp) except IOError: _logger.exception( 'Cannot read system Id file for server "%s"' % ( self.config.name)) return {} def close(self): """ Close all the open connections to PostgreSQL """ if self.postgres: self.postgres.close() if self.streaming: self.streaming.close() def check(self, check_strategy=__default_check_strategy): """ Implements the 'server check' command and makes sure SSH and PostgreSQL connections work properly. It checks also that backup directories exist (and if not, it creates them). The check command will time out after a time interval defined by the check_timeout configuration value (default 30 seconds) :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ try: with timeout(self.config.check_timeout): # Check WAL archive self.check_archive(check_strategy) # Postgres configuration is not available on passive nodes if not self.passive_node: self.check_postgres(check_strategy) # Check barman directories from barman configuration self.check_directories(check_strategy) # Check retention policies self.check_retention_policy_settings(check_strategy) # Check for backup validity self.check_backup_validity(check_strategy) # Executes the backup manager set of checks self.backup_manager.check(check_strategy) # Check if the msg_list of the server # contains messages and output eventual failures self.check_configuration(check_strategy) # Check the system Id coherence between # streaming and normal connections self.check_identity(check_strategy) # Executes check() for every archiver, passing # remote status information for efficiency for archiver in self.archivers: archiver.check(check_strategy) # Check archiver errors self.check_archiver_errors(check_strategy) except TimeoutError: # The check timed out. # Add a failed entry to the check strategy for this. _logger.debug("Check command timed out executing '%s' check" % check_strategy.running_check) check_strategy.result(self.config.name, False, hint='barman check command timed out', check='check timeout') def check_archive(self, check_strategy): """ Checks WAL archive :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check("WAL archive") # Make sure that WAL archiving has been setup # XLOG_DB needs to exist and its size must be > 0 # NOTE: we do not need to acquire a lock in this phase xlogdb_empty = True if os.path.exists(self.xlogdb_file_name): with open(self.xlogdb_file_name, "rb") as fxlogdb: if os.fstat(fxlogdb.fileno()).st_size > 0: xlogdb_empty = False # NOTE: This check needs to be only visible if it fails if xlogdb_empty: # Skip the error if we have a terminated backup # with status WAITING_FOR_WALS. # TODO: Improve this check backup_id = self.get_last_backup_id([BackupInfo.WAITING_FOR_WALS]) if not backup_id: check_strategy.result( self.config.name, False, hint='please make sure WAL shipping is setup') # Check the number of wals in the incoming directory self._check_wal_queue(check_strategy, 'incoming', 'archiver') # Check the number of wals in the streaming directory self._check_wal_queue(check_strategy, 'streaming', 'streaming_archiver') def _check_wal_queue(self, check_strategy, dir_name, archiver_name): """ Check if one of the wal queue directories beyond the max file threshold """ # Read the wal queue location from the configuration config_name = "%s_wals_directory" % dir_name assert hasattr(self.config, config_name) incoming_dir = getattr(self.config, config_name) # Check if the archiver is enabled assert hasattr(self.config, archiver_name) enabled = getattr(self.config, archiver_name) # Inspect the wal queue directory file_count = 0 for file_item in glob(os.path.join(incoming_dir, '*')): # Ignore temporary files if file_item.endswith('.tmp'): continue file_count += 1 max_incoming_wal = self.config.max_incoming_wals_queue # Subtract one from the count because of .partial file inside the # streaming directory if dir_name == 'streaming': file_count -= 1 # If this archiver is disabled, check the number of files in the # corresponding directory. # If the directory is NOT empty, fail the check and warn the user. # NOTE: This check is visible only when it fails check_strategy.init_check("empty %s directory" % dir_name) if not enabled: if file_count > 0: check_strategy.result( self.config.name, False, hint="'%s' must be empty when %s=off" % (incoming_dir, archiver_name)) # No more checks are required if the archiver # is not enabled return # At this point if max_wals_count is none, # means that no limit is set so we just need to return if max_incoming_wal is None: return check_strategy.init_check("%s WALs directory" % dir_name) if file_count > max_incoming_wal: msg = 'there are too many WALs in queue: ' \ '%s, max %s' % (file_count, max_incoming_wal) check_strategy.result(self.config.name, False, hint=msg) def check_postgres(self, check_strategy): """ Checks PostgreSQL connection :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check('PostgreSQL') # Take the status of the remote server remote_status = self.get_remote_status() if remote_status.get('server_txt_version'): check_strategy.result(self.config.name, True) else: check_strategy.result(self.config.name, False) return # Check for superuser privileges in PostgreSQL if remote_status.get('is_superuser') is not None: check_strategy.init_check('is_superuser') if remote_status.get('is_superuser'): check_strategy.result( self.config.name, True) else: check_strategy.result( self.config.name, False, hint='superuser privileges for PostgreSQL ' 'connection required', check='not superuser' ) if 'streaming_supported' in remote_status: check_strategy.init_check("PostgreSQL streaming") hint = None # If a streaming connection is available, # add its status to the output of the check if remote_status['streaming_supported'] is None: hint = remote_status['connection_error'] elif not remote_status['streaming_supported']: hint = ('Streaming connection not supported' ' for PostgreSQL < 9.2') check_strategy.result(self.config.name, remote_status.get('streaming'), hint=hint) # Check wal_level parameter: must be different from 'minimal' # the parameter has been introduced in postgres >= 9.0 if 'wal_level' in remote_status: check_strategy.init_check("wal_level") if remote_status['wal_level'] != 'minimal': check_strategy.result( self.config.name, True) else: check_strategy.result( self.config.name, False, hint="please set it to a higher level than 'minimal'") # Check the presence and the status of the configured replication slot # This check will be skipped if `slot_name` is undefined if self.config.slot_name: check_strategy.init_check("replication slot") slot = remote_status['replication_slot'] # The streaming_archiver is enabled if self.config.streaming_archiver is True: # Error if PostgreSQL is too old if not remote_status['replication_slot_support']: check_strategy.result( self.config.name, False, hint="slot_name parameter set but PostgreSQL server " "is too old (%s < 9.4)" % remote_status['server_txt_version']) # Replication slots are supported else: # The slot is not present if slot is None: check_strategy.result( self.config.name, False, hint="replication slot '%s' doesn't exist. " "Please execute 'barman receive-wal " "--create-slot %s'" % (self.config.slot_name, self.config.name)) else: # The slot is present but not initialised if slot.restart_lsn is None: check_strategy.result( self.config.name, False, hint="slot '%s' not initialised: is " "'receive-wal' running?" % self.config.slot_name) # The slot is present but not active elif slot.active is False: check_strategy.result( self.config.name, False, hint="slot '%s' not active: is " "'receive-wal' running?" % self.config.slot_name) else: check_strategy.result(self.config.name, True) else: # If the streaming_archiver is disabled and the slot_name # option is present in the configuration, we check that # a replication slot with the specified name is NOT present # and NOT active. # NOTE: This is not a failure, just a warning. if slot is not None: if slot.restart_lsn \ is not None: slot_status = 'initialised' # Check if the slot is also active if slot.active: slot_status = 'active' # Warn the user check_strategy.result( self.config.name, True, hint="WARNING: slot '%s' is %s but not required " "by the current config" % ( self.config.slot_name, slot_status)) def _make_directories(self): """ Make backup directories in case they do not exist """ for key in self.config.KEYS: if key.endswith('_directory') and hasattr(self.config, key): val = getattr(self.config, key) if val is not None and not os.path.isdir(val): # noinspection PyTypeChecker os.makedirs(val) def check_directories(self, check_strategy): """ Checks backup directories and creates them if they do not exist :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check("directories") if not self.config.disabled: try: self._make_directories() except OSError as e: check_strategy.result(self.config.name, False, "%s: %s" % (e.filename, e.strerror)) else: check_strategy.result(self.config.name, True) def check_configuration(self, check_strategy): """ Check for error messages in the message list of the server and output eventual errors :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check('configuration') if len(self.config.msg_list): check_strategy.result(self.config.name, False) for conflict_paths in self.config.msg_list: output.info("\t\t%s" % conflict_paths) def check_retention_policy_settings(self, check_strategy): """ Checks retention policy setting :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check("retention policy settings") config = self.config if config.retention_policy and not self.enforce_retention_policies: check_strategy.result(self.config.name, False, hint='see log') else: check_strategy.result(self.config.name, True) def check_backup_validity(self, check_strategy): """ Check if backup validity requirements are satisfied :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check('backup maximum age') # first check: check backup maximum age if self.config.last_backup_maximum_age is not None: # get maximum age information backup_age = self.backup_manager.validate_last_backup_maximum_age( self.config.last_backup_maximum_age) # format the output check_strategy.result( self.config.name, backup_age[0], hint="interval provided: %s, latest backup age: %s" % ( human_readable_timedelta( self.config.last_backup_maximum_age), backup_age[1])) else: # last_backup_maximum_age provided by the user check_strategy.result( self.config.name, True, hint="no last_backup_maximum_age provided") def check_archiver_errors(self, check_strategy): """ Checks the presence of archiving errors :param CheckStrategy check_strategy: the strategy for the management of the results of the check """ check_strategy.init_check('archiver errors') if os.path.isdir(self.config.errors_directory): errors = os.listdir(self.config.errors_directory) else: errors = [] check_strategy.result( self.config.name, len(errors) == 0, hint=WalArchiver.summarise_error_files(errors) ) def check_identity(self, check_strategy): """ Check the systemid retrieved from the streaming connection is the same that is retrieved from the standard connection, and then verifies it matches the one stored on disk. :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check("systemid coherence") remote_status = self.get_remote_status() # Get system identifier from streaming and standard connections systemid_from_streaming = remote_status.get('streaming_systemid') systemid_from_postgres = remote_status.get('postgres_systemid') # If both available, makes sure they are coherent with each other if systemid_from_streaming and systemid_from_postgres: if systemid_from_streaming != systemid_from_postgres: check_strategy.result( self.config.name, systemid_from_streaming == systemid_from_postgres, hint="is the streaming DSN targeting the same server " "of the PostgreSQL connection string?") return systemid_from_server = ( systemid_from_streaming or systemid_from_postgres) if not systemid_from_server: # Can't check without system Id information check_strategy.result(self.config.name, True, hint="no system Id available") return # Retrieves the content on disk and matches it with the live ID file_path = self.get_identity_file_path() if not os.path.exists(file_path): # We still don't have the systemid cached on disk, # so let's wait until we store it check_strategy.result(self.config.name, True, hint="no system Id stored on disk") return identity_from_file = self.read_identity_file() if systemid_from_server != identity_from_file.get('systemid'): check_strategy.result( self.config.name, False, hint='the system Id of the connected PostgreSQL server ' 'changed, stored in "%s"' % file_path) else: check_strategy.result(self.config.name, True) def status_postgres(self): """ Status of PostgreSQL server """ remote_status = self.get_remote_status() if remote_status['server_txt_version']: output.result('status', self.config.name, "pg_version", "PostgreSQL version", remote_status['server_txt_version']) else: output.result('status', self.config.name, "pg_version", "PostgreSQL version", "FAILED trying to get PostgreSQL version") return # Define the cluster state as pg_controldata do. if remote_status['is_in_recovery']: output.result('status', self.config.name, 'is_in_recovery', 'Cluster state', "in archive recovery") else: output.result('status', self.config.name, 'is_in_recovery', 'Cluster state', "in production") if remote_status['pgespresso_installed']: output.result('status', self.config.name, 'pgespresso', 'pgespresso extension', "Available") else: output.result('status', self.config.name, 'pgespresso', 'pgespresso extension', "Not available") if remote_status.get('current_size') is not None: output.result('status', self.config.name, 'current_size', 'Current data size', pretty_size(remote_status['current_size'])) if remote_status['data_directory']: output.result('status', self.config.name, "data_directory", "PostgreSQL Data directory", remote_status['data_directory']) if remote_status['current_xlog']: output.result('status', self.config.name, "current_xlog", "Current WAL segment", remote_status['current_xlog']) def status_wal_archiver(self): """ Status of WAL archiver(s) """ for archiver in self.archivers: archiver.status() def status_retention_policies(self): """ Status of retention policies enforcement """ if self.enforce_retention_policies: output.result('status', self.config.name, "retention_policies", "Retention policies", "enforced " "(mode: %s, retention: %s, WAL retention: %s)" % ( self.config.retention_policy_mode, self.config.retention_policy, self.config.wal_retention_policy)) else: output.result('status', self.config.name, "retention_policies", "Retention policies", "not enforced") def status(self): """ Implements the 'server-status' command. """ if self.config.description: output.result('status', self.config.name, "description", "Description", self.config.description) output.result('status', self.config.name, "active", "Active", self.config.active) output.result('status', self.config.name, "disabled", "Disabled", self.config.disabled) # Postgres status is available only if node is not passive if not self.passive_node: self.status_postgres() self.status_wal_archiver() output.result('status', self.config.name, "passive_node", "Passive node", self.passive_node) self.status_retention_policies() # Executes the backup manager status info method self.backup_manager.status() def fetch_remote_status(self): """ Get the status of the remote server This method does not raise any exception in case of errors, but set the missing values to None in the resulting dictionary. :rtype: dict[str, None|str] """ result = {} # Merge status for a postgres connection if self.postgres: result.update(self.postgres.get_remote_status()) # Merge status for a streaming connection if self.streaming: result.update(self.streaming.get_remote_status()) # Merge status for each archiver for archiver in self.archivers: result.update(archiver.get_remote_status()) # Merge status defined by the BackupManager result.update(self.backup_manager.get_remote_status()) return result def show(self): """ Shows the server configuration """ # Populate result map with all the required keys result = self.config.to_json() # Is the server a passive node? result['passive_node'] = self.passive_node # Skip remote status if the server is passive if not self.passive_node: remote_status = self.get_remote_status() result.update(remote_status) # Backup maximum age section if self.config.last_backup_maximum_age is not None: age = self.backup_manager.validate_last_backup_maximum_age( self.config.last_backup_maximum_age) # If latest backup is between the limits of the # last_backup_maximum_age configuration, display how old is # the latest backup. if age[0]: msg = "%s (latest backup: %s )" % \ (human_readable_timedelta( self.config.last_backup_maximum_age), age[1]) else: # If latest backup is outside the limits of the # last_backup_maximum_age configuration (or the configuration # value is none), warn the user. msg = "%s (WARNING! latest backup is %s old)" % \ (human_readable_timedelta( self.config.last_backup_maximum_age), age[1]) result['last_backup_maximum_age'] = msg else: result['last_backup_maximum_age'] = "None" output.result('show_server', self.config.name, result) def delete_backup(self, backup): """Deletes a backup :param backup: the backup to delete """ try: # Lock acquisition: if you can acquire a ServerBackupLock # it means that no backup process is running on that server, # so there is no need to check the backup status. # Simply proceed with the normal delete process. server_backup_lock = ServerBackupLock( self.config.barman_lock_directory, self.config.name) server_backup_lock.acquire(server_backup_lock.raise_if_fail, server_backup_lock.wait) server_backup_lock.release() except LockFileBusy: # Otherwise if the lockfile is busy, a backup process is actually # running on that server. To be sure that it's safe # to delete the backup, we must check its status and its position # in the catalogue. # If it is the first and it is STARTED or EMPTY, we are trying to # remove a running backup. This operation must be forbidden. # Otherwise, normally delete the backup. first_backup_id = self.get_first_backup_id(BackupInfo.STATUS_ALL) if backup.backup_id == first_backup_id \ and backup.status in (BackupInfo.STARTED, BackupInfo.EMPTY): output.error("Cannot delete a running backup (%s %s)" % (self.config.name, backup.backup_id)) return except LockFilePermissionDenied as e: # We cannot access the lockfile. # Exit without removing the backup. output.error("Permission denied, unable to access '%s'" % e) return try: # Take care of the backup lock. # Only one process can modify a backup at a time lock = ServerBackupIdLock(self.config.barman_lock_directory, self.config.name, backup.backup_id) with lock: deleted = self.backup_manager.delete_backup(backup) # At this point no-one should try locking a backup that # doesn't exists, so we can remove the lock # WARNING: the previous statement is true only as long as # no-one wait on this lock if deleted: os.remove(lock.filename) return deleted except LockFileBusy: # If another process is holding the backup lock, # warn the user and terminate output.error( "Another process is holding the lock for " "backup %s of server %s." % ( backup.backup_id, self.config.name)) return except LockFilePermissionDenied as e: # We cannot access the lockfile. # warn the user and terminate output.error("Permission denied, unable to access '%s'" % e) return def backup(self, wait=False, wait_timeout=None): """ Performs a backup for the server :param bool wait: wait for all the required WAL files to be archived :param int|None wait_timeout: the time, in seconds, the backup will wait for the required WAL files to be archived before timing out """ # The 'backup' command is not available on a passive node. # We assume that if we get here the node is not passive assert not self.passive_node try: # Default strategy for check in backup is CheckStrategy # This strategy does not print any output - it only logs checks strategy = CheckStrategy() self.check(strategy) if strategy.has_error: output.error("Impossible to start the backup. Check the log " "for more details, or run 'barman check %s'" % self.config.name) return # check required backup directories exist self._make_directories() except OSError as e: output.error('failed to create %s directory: %s', e.filename, e.strerror) return # Save the database identity self.write_identity_file() # Make sure we are not wasting an precious streaming PostgreSQL # connection that may have been opened by the self.check() call if self.streaming: self.streaming.close() try: # lock acquisition and backup execution with ServerBackupLock(self.config.barman_lock_directory, self.config.name): backup_info = self.backup_manager.backup( wait=wait, wait_timeout=wait_timeout) # Archive incoming WALs and update WAL catalogue self.archive_wal(verbose=False) # Invoke sanity check of the backup if backup_info.status == BackupInfo.WAITING_FOR_WALS: self.check_backup(backup_info) # At this point is safe to remove any remaining WAL file before the # first backup previous_backup = self.get_previous_backup(backup_info.backup_id) if not previous_backup: self.backup_manager.remove_wal_before_backup(backup_info) if backup_info.status == BackupInfo.WAITING_FOR_WALS: output.warning( "IMPORTANT: this backup is classified as " "WAITING_FOR_WALS, meaning that Barman has not received " "yet all the required WAL files for the backup " "consistency.\n" "This is a common behaviour in concurrent backup " "scenarios, and Barman automatically set the backup as " "DONE once all the required WAL files have been " "archived.\n" "Hint: execute the backup command with '--wait'") except LockFileBusy: output.error("Another backup process is running") except LockFilePermissionDenied as e: output.error("Permission denied, unable to access '%s'" % e) def get_available_backups( self, status_filter=BackupManager.DEFAULT_STATUS_FILTER): """ Get a list of available backups param: status_filter: the status of backups to return, default to BackupManager.DEFAULT_STATUS_FILTER """ return self.backup_manager.get_available_backups(status_filter) def get_last_backup_id( self, status_filter=BackupManager.DEFAULT_STATUS_FILTER): """ Get the id of the latest/last backup in the catalog (if exists) :param status_filter: The status of the backup to return, default to DEFAULT_STATUS_FILTER. :return string|None: ID of the backup """ return self.backup_manager.get_last_backup_id(status_filter) def get_first_backup_id( self, status_filter=BackupManager.DEFAULT_STATUS_FILTER): """ Get the id of the oldest/first backup in the catalog (if exists) :param status_filter: The status of the backup to return, default to DEFAULT_STATUS_FILTER. :return string|None: ID of the backup """ return self.backup_manager.get_first_backup_id(status_filter) def list_backups(self): """ Lists all the available backups for the server """ retention_status = self.report_backups() backups = self.get_available_backups(BackupInfo.STATUS_ALL) for key in sorted(backups.keys(), reverse=True): backup = backups[key] backup_size = backup.size or 0 wal_size = 0 rstatus = None if backup.status in BackupInfo.STATUS_COPY_DONE: try: wal_info = self.get_wal_info(backup) backup_size += wal_info['wal_size'] wal_size = wal_info['wal_until_next_size'] except BadXlogSegmentName as e: output.error( "invalid WAL segment name %r\n" "HINT: Please run \"barman rebuild-xlogdb %s\" " "to solve this issue", force_str(e), self.config.name) if self.enforce_retention_policies and \ retention_status[backup.backup_id] != BackupInfo.VALID: rstatus = retention_status[backup.backup_id] output.result('list_backup', backup, backup_size, wal_size, rstatus) def get_backup(self, backup_id): """ Return the backup information for the given backup id. If the backup_id is None or backup.info file doesn't exists, it returns None. :param str|None backup_id: the ID of the backup to return :rtype: barman.infofile.LocalBackupInfo|None """ return self.backup_manager.get_backup(backup_id) def get_previous_backup(self, backup_id): """ Get the previous backup (if any) from the catalog :param backup_id: the backup id from which return the previous """ return self.backup_manager.get_previous_backup(backup_id) def get_next_backup(self, backup_id): """ Get the next backup (if any) from the catalog :param backup_id: the backup id from which return the next """ return self.backup_manager.get_next_backup(backup_id) def get_required_xlog_files(self, backup, target_tli=None, target_time=None, target_xid=None): """ Get the xlog files required for a recovery """ begin = backup.begin_wal end = backup.end_wal # If timeline isn't specified, assume it is the same timeline # of the backup if not target_tli: target_tli, _, _ = xlog.decode_segment_name(end) with self.xlogdb() as fxlogdb: for line in fxlogdb: wal_info = WalFileInfo.from_xlogdb_line(line) # Handle .history files: add all of them to the output, # regardless of their age if xlog.is_history_file(wal_info.name): yield wal_info continue if wal_info.name < begin: continue tli, _, _ = xlog.decode_segment_name(wal_info.name) if tli > target_tli: continue yield wal_info if wal_info.name > end: end = wal_info.name if target_time and target_time < wal_info.time: break # return all the remaining history files for line in fxlogdb: wal_info = WalFileInfo.from_xlogdb_line(line) if xlog.is_history_file(wal_info.name): yield wal_info # TODO: merge with the previous def get_wal_until_next_backup(self, backup, include_history=False): """ Get the xlog files between backup and the next :param BackupInfo backup: a backup object, the starting point to retrieve WALs :param bool include_history: option for the inclusion of include_history files into the output """ begin = backup.begin_wal next_end = None if self.get_next_backup(backup.backup_id): next_end = self.get_next_backup(backup.backup_id).end_wal backup_tli, _, _ = xlog.decode_segment_name(begin) with self.xlogdb() as fxlogdb: for line in fxlogdb: wal_info = WalFileInfo.from_xlogdb_line(line) # Handle .history files: add all of them to the output, # regardless of their age, if requested (the 'include_history' # parameter is True) if xlog.is_history_file(wal_info.name): if include_history: yield wal_info continue if wal_info.name < begin: continue tli, _, _ = xlog.decode_segment_name(wal_info.name) if tli > backup_tli: continue if not xlog.is_wal_file(wal_info.name): continue if next_end and wal_info.name > next_end: break yield wal_info def get_wal_full_path(self, wal_name): """ Build the full path of a WAL for a server given the name :param wal_name: WAL file name """ # Build the path which contains the file hash_dir = os.path.join(self.config.wals_directory, xlog.hash_dir(wal_name)) # Build the WAL file full path full_path = os.path.join(hash_dir, wal_name) return full_path def get_wal_possible_paths(self, wal_name, partial=False): """ Build a list of possible positions of a WAL file :param str wal_name: WAL file name :param bool partial: add also the '.partial' paths """ paths = list() # Path in the archive hash_dir = os.path.join(self.config.wals_directory, xlog.hash_dir(wal_name)) full_path = os.path.join(hash_dir, wal_name) paths.append(full_path) # Path in incoming directory incoming_path = os.path.join(self.config.incoming_wals_directory, wal_name) paths.append(incoming_path) # Path in streaming directory streaming_path = os.path.join(self.config.streaming_wals_directory, wal_name) paths.append(streaming_path) # If partial files are required check also the '.partial' path if partial: paths.append(streaming_path + PARTIAL_EXTENSION) # Add the streaming_path again to handle races with pg_receivewal # completing the WAL file paths.append(streaming_path) # The following two path are only useful to retrieve the last # incomplete segment archived before a promotion. paths.append(full_path + PARTIAL_EXTENSION) paths.append(incoming_path + PARTIAL_EXTENSION) # Append the archive path again, to handle races with the archiver paths.append(full_path) return paths def get_wal_info(self, backup_info): """ Returns information about WALs for the given backup :param barman.infofile.LocalBackupInfo backup_info: the target backup """ begin = backup_info.begin_wal end = backup_info.end_wal # counters wal_info = dict.fromkeys( ('wal_num', 'wal_size', 'wal_until_next_num', 'wal_until_next_size', 'wal_until_next_compression_ratio', 'wal_compression_ratio'), 0) # First WAL (always equal to begin_wal) and Last WAL names and ts wal_info['wal_first'] = None wal_info['wal_first_timestamp'] = None wal_info['wal_last'] = None wal_info['wal_last_timestamp'] = None # WAL rate (default 0.0 per second) wal_info['wals_per_second'] = 0.0 for item in self.get_wal_until_next_backup(backup_info): if item.name == begin: wal_info['wal_first'] = item.name wal_info['wal_first_timestamp'] = item.time if item.name <= end: wal_info['wal_num'] += 1 wal_info['wal_size'] += item.size else: wal_info['wal_until_next_num'] += 1 wal_info['wal_until_next_size'] += item.size wal_info['wal_last'] = item.name wal_info['wal_last_timestamp'] = item.time # Calculate statistics only for complete backups # If the cron is not running for any reason, the required # WAL files could be missing if wal_info['wal_first'] and wal_info['wal_last']: # Estimate WAL ratio # Calculate the difference between the timestamps of # the first WAL (begin of backup) and the last WAL # associated to the current backup wal_last_timestamp = wal_info['wal_last_timestamp'] wal_first_timestamp = wal_info['wal_first_timestamp'] wal_info['wal_total_seconds'] = ( wal_last_timestamp - wal_first_timestamp) if wal_info['wal_total_seconds'] > 0: wal_num = wal_info['wal_num'] wal_until_next_num = wal_info['wal_until_next_num'] wal_total_seconds = wal_info['wal_total_seconds'] wal_info['wals_per_second'] = ( float(wal_num + wal_until_next_num) / wal_total_seconds) # evaluation of compression ratio for basebackup WAL files wal_info['wal_theoretical_size'] = \ wal_info['wal_num'] * float(backup_info.xlog_segment_size) try: wal_size = wal_info['wal_size'] wal_info['wal_compression_ratio'] = ( 1 - (wal_size / wal_info['wal_theoretical_size'])) except ZeroDivisionError: wal_info['wal_compression_ratio'] = 0.0 # evaluation of compression ratio of WAL files wal_until_next_num = wal_info['wal_until_next_num'] wal_info['wal_until_next_theoretical_size'] = ( wal_until_next_num * float(backup_info.xlog_segment_size)) try: wal_until_next_size = wal_info['wal_until_next_size'] until_next_theoretical_size = ( wal_info['wal_until_next_theoretical_size']) wal_info['wal_until_next_compression_ratio'] = ( 1 - (wal_until_next_size / until_next_theoretical_size)) except ZeroDivisionError: wal_info['wal_until_next_compression_ratio'] = 0.0 return wal_info def recover(self, backup_info, dest, tablespaces=None, remote_command=None, **kwargs): """ Performs a recovery of a backup :param barman.infofile.LocalBackupInfo backup_info: the backup to recover :param str dest: the destination directory :param dict[str,str]|None tablespaces: a tablespace name -> location map (for relocation) :param str|None remote_command: default None. The remote command to recover the base backup, in case of remote backup. :kwparam str|None target_tli: the target timeline :kwparam str|None target_time: the target time :kwparam str|None target_xid: the target xid :kwparam str|None target_lsn: the target LSN :kwparam str|None target_name: the target name created previously with pg_create_restore_point() function call :kwparam bool|None target_immediate: end recovery as soon as consistency is reached :kwparam bool exclusive: whether the recovery is exclusive or not :kwparam str|None target_action: the recovery target action :kwparam bool|None standby_mode: the standby mode """ return self.backup_manager.recover( backup_info, dest, tablespaces, remote_command, **kwargs) def get_wal(self, wal_name, compression=None, output_directory=None, peek=None, partial=False): """ Retrieve a WAL file from the archive :param str wal_name: id of the WAL file to find into the WAL archive :param str|None compression: compression format for the output :param str|None output_directory: directory where to deposit the WAL file :param int|None peek: if defined list the next N WAL file :param bool partial: retrieve also partial WAL files """ # If used through SSH identify the client to add it to logs source_suffix = '' ssh_connection = os.environ.get('SSH_CONNECTION') if ssh_connection: # The client IP is the first value contained in `SSH_CONNECTION` # which contains four space-separated values: client IP address, # client port number, server IP address, and server port number. source_suffix = ' (SSH host: %s)' % (ssh_connection.split()[0],) # Sanity check if not xlog.is_any_xlog_file(wal_name): output.error("'%s' is not a valid wal file name%s", wal_name, source_suffix) return # If peek is requested we only output a list of files if peek: # Get the next ``peek`` files following the provided ``wal_name``. # If ``wal_name`` is not a simple wal file, # we cannot guess the names of the following WAL files. # So ``wal_name`` is the only possible result, if exists. if xlog.is_wal_file(wal_name): # We can't know what was the segment size of PostgreSQL WAL # files at backup time. Because of this, we generate all # the possible names for a WAL segment, and then we check # if the requested one is included. wal_peek_list = xlog.generate_segment_names(wal_name) else: wal_peek_list = iter([wal_name]) # Output the content of wal_peek_list until we have displayed # enough files or find a missing file count = 0 while count < peek: try: wal_peek_name = next(wal_peek_list) except StopIteration: # No more item in wal_peek_list break # Get list of possible location. We do not prefetch # partial files wal_peek_paths = self.get_wal_possible_paths(wal_peek_name, partial=False) # If the next WAL file is found, output the name # and continue to the next one if any(os.path.exists(path) for path in wal_peek_paths): count += 1 output.info(wal_peek_name, log=False) continue # If ``wal_peek_file`` doesn't exist, check if we need to # look in the following segment tli, log, seg = xlog.decode_segment_name(wal_peek_name) # If `seg` is not a power of two, it is not possible that we # are at the end of a WAL group, so we are done if not is_power_of_two(seg): break # This is a possible WAL group boundary, let's try the # following group seg = 0 log += 1 # Install a new generator from the start of the next segment. # If the file doesn't exists we will terminate because # zero is not a power of two wal_peek_name = xlog.encode_segment_name(tli, log, seg) wal_peek_list = xlog.generate_segment_names(wal_peek_name) # Do not output anything else return # If an output directory was provided write the file inside it # otherwise we use standard output if output_directory is not None: destination_path = os.path.join(output_directory, wal_name) destination_description = "into '%s' file" % destination_path # Use the standard output for messages logger = output try: destination = open(destination_path, 'wb') except IOError as e: output.error("Unable to open '%s' file%s: %s", destination_path, source_suffix, e) return else: destination_description = 'to standard output' # Do not use the standard output for messages, otherwise we would # taint the output stream logger = _logger try: # Python 3.x destination = sys.stdout.buffer except AttributeError: # Python 2.x destination = sys.stdout # Get the list of WAL file possible paths wal_paths = self.get_wal_possible_paths(wal_name, partial) for wal_file in wal_paths: # Check for file existence if not os.path.exists(wal_file): continue logger.info( "Sending WAL '%s' for server '%s' %s%s", os.path.basename(wal_file), self.config.name, destination_description, source_suffix) try: # Try returning the wal_file to the client self.get_wal_sendfile(wal_file, compression, destination) # We are done, return to the caller return except CommandFailedException: # If an external command fails we cannot really know why, # but if the WAL file disappeared, we assume # it has been moved in the archive so we ignore the error. # This file will be retrieved later, as the last entry # returned by get_wal_possible_paths() is the archive position if not os.path.exists(wal_file): pass else: raise except OSError as exc: # If the WAL file disappeared just ignore the error # This file will be retrieved later, as the last entry # returned by get_wal_possible_paths() is the archive # position if exc.errno == errno.ENOENT and exc.filename == wal_file: pass else: raise logger.info("Skipping vanished WAL file '%s'%s", wal_file, source_suffix) output.error("WAL file '%s' not found in server '%s'%s", wal_name, self.config.name, source_suffix) def get_wal_sendfile(self, wal_file, compression, destination): """ Send a WAL file to the destination file, using the required compression :param str wal_file: WAL file path :param str compression: required compression :param destination: file stream to use to write the data """ # Identify the wal file wal_info = self.backup_manager.compression_manager \ .get_wal_file_info(wal_file) # Get a decompressor for the file (None if not compressed) wal_compressor = self.backup_manager.compression_manager \ .get_compressor(wal_info.compression) # Get a compressor for the output (None if not compressed) out_compressor = self.backup_manager.compression_manager \ .get_compressor(compression) # Initially our source is the stored WAL file and we do not have # any temporary file source_file = wal_file uncompressed_file = None compressed_file = None # If the required compression is different from the source we # decompress/compress it into the required format (getattr is # used here to gracefully handle None objects) if getattr(wal_compressor, 'compression', None) != \ getattr(out_compressor, 'compression', None): # If source is compressed, decompress it into a temporary file if wal_compressor is not None: uncompressed_file = NamedTemporaryFile( dir=self.config.wals_directory, prefix='.%s.' % os.path.basename(wal_file), suffix='.uncompressed') # decompress wal file wal_compressor.decompress(source_file, uncompressed_file.name) source_file = uncompressed_file.name # If output compression is required compress the source # into a temporary file if out_compressor is not None: compressed_file = NamedTemporaryFile( dir=self.config.wals_directory, prefix='.%s.' % os.path.basename(wal_file), suffix='.compressed') out_compressor.compress(source_file, compressed_file.name) source_file = compressed_file.name # Copy the prepared source file to destination with open(source_file, 'rb') as input_file: shutil.copyfileobj(input_file, destination) # Remove temp files if uncompressed_file is not None: uncompressed_file.close() if compressed_file is not None: compressed_file.close() def put_wal(self, fileobj): """ Receive a WAL file from SERVER_NAME and securely store it in the incoming directory. The file will be read from the fileobj passed as parameter. """ # If used through SSH identify the client to add it to logs source_suffix = '' ssh_connection = os.environ.get('SSH_CONNECTION') if ssh_connection: # The client IP is the first value contained in `SSH_CONNECTION` # which contains four space-separated values: client IP address, # client port number, server IP address, and server port number. source_suffix = ' (SSH host: %s)' % (ssh_connection.split()[0],) # Incoming directory is where the files will be extracted dest_dir = self.config.incoming_wals_directory # Ensure the presence of the destination directory mkpath(dest_dir) incoming_file = namedtuple('incoming_file', [ 'name', 'tmp_path', 'path', 'checksum', ]) # Stream read tar from stdin, store content in incoming directory # The closing wrapper is needed only for Python 2.6 extracted_files = {} validated_files = {} md5sums = {} try: with closing(tarfile.open(mode='r|', fileobj=fileobj)) as tar: for item in tar: name = item.name # Strip leading './' - tar has been manually created if name.startswith('./'): name = name[2:] # Requires a regular file as tar item if not item.isreg(): output.error( "Unsupported file type '%s' for file '%s' " "in put-wal for server '%s'%s", item.type, name, self.config.name, source_suffix) return # Subdirectories are not supported if '/' in name: output.error( "Unsupported filename '%s' " "in put-wal for server '%s'%s", name, self.config.name, source_suffix) return # Checksum file if name == 'MD5SUMS': # Parse content and store it in md5sums dictionary for line in tar.extractfile(item).readlines(): line = line.decode().rstrip() try: # Split checksums and path info checksum, path = re.split( r' [* ]', line, 1) except ValueError: output.warning( "Bad checksum line '%s' found " "in put-wal for server '%s'%s", line, self.config.name, source_suffix) continue # Strip leading './' from path in the checksum file if path.startswith('./'): path = path[2:] md5sums[path] = checksum else: # Extract using a temp name (with PID) tmp_path = os.path.join(dest_dir, '.%s-%s' % ( os.getpid(), name)) path = os.path.join(dest_dir, name) tar.makefile(item, tmp_path) # Set the original timestamp tar.utime(item, tmp_path) # Add the tuple to the dictionary of extracted files extracted_files[name] = incoming_file( name, tmp_path, path, file_md5(tmp_path)) validated_files[name] = False # For each received checksum verify the corresponding file for name in md5sums: # Check that file is present in the tar archive if name not in extracted_files: output.error( "Checksum without corresponding file '%s' " "in put-wal for server '%s'%s", name, self.config.name, source_suffix) return # Verify the checksum of the file if extracted_files[name].checksum != md5sums[name]: output.error( "Bad file checksum '%s' (should be %s) " "for file '%s' " "in put-wal for server '%s'%s", extracted_files[name].checksum, md5sums[name], name, self.config.name, source_suffix) return _logger.info( "Received file '%s' with checksum '%s' " "by put-wal for server '%s'%s", name, md5sums[name], self.config.name, source_suffix) validated_files[name] = True # Put the files in the final place, atomically and fsync all for item in extracted_files.values(): # Final verification of checksum presence for each file if not validated_files[item.name]: output.error( "Missing checksum for file '%s' " "in put-wal for server '%s'%s", item.name, self.config.name, source_suffix) return # If a file with the same name exists, returns an error. # PostgreSQL archive command will retry again later and, # at that time, Barman's WAL archiver should have already # managed this file. if os.path.exists(item.path): output.error( "Impossible to write already existing file '%s' " "in put-wal for server '%s'%s", item.name, self.config.name, source_suffix) return os.rename(item.tmp_path, item.path) fsync_file(item.path) fsync_dir(dest_dir) finally: # Cleanup of any remaining temp files (where applicable) for item in extracted_files.values(): if os.path.exists(item.tmp_path): os.unlink(item.tmp_path) def cron(self, wals=True, retention_policies=True, keep_descriptors=False): """ Maintenance operations :param bool wals: WAL archive maintenance :param bool retention_policies: retention policy maintenance :param bool keep_descriptors: whether to keep subprocess descriptors, defaults to False """ try: # Actually this is the highest level of locking in the cron, # this stops the execution of multiple cron on the same server with ServerCronLock(self.config.barman_lock_directory, self.config.name): # When passive call sync.cron() and never run # local WAL archival if self.passive_node: self.sync_cron(keep_descriptors) # WAL management and maintenance elif wals: # Execute the archive-wal sub-process self.cron_archive_wal(keep_descriptors) if self.config.streaming_archiver: # Spawn the receive-wal sub-process self.cron_receive_wal(keep_descriptors) else: # Terminate the receive-wal sub-process if present self.kill('receive-wal', fail_if_not_present=False) # Verify backup self.cron_check_backup(keep_descriptors) # Retention policies execution if retention_policies: self.backup_manager.cron_retention_policy() except LockFileBusy: output.info( "Another cron process is already running on server %s. " "Skipping to the next server" % self.config.name) except LockFilePermissionDenied as e: output.error("Permission denied, unable to access '%s'" % e) except (OSError, IOError) as e: output.error("%s", e) def cron_archive_wal(self, keep_descriptors): """ Method that handles the start of an 'archive-wal' sub-process. This method must be run protected by ServerCronLock :param bool keep_descriptors: whether to keep subprocess descriptors attached to this process. """ try: # Try to acquire ServerWalArchiveLock, if the lock is available, # no other 'archive-wal' processes are running on this server. # # There is a very little race condition window here because # even if we are protected by ServerCronLock, the user could run # another 'archive-wal' command manually. However, it would result # in one of the two commands failing on lock acquisition, # with no other consequence. with ServerWalArchiveLock( self.config.barman_lock_directory, self.config.name): # Output and release the lock immediately output.info("Starting WAL archiving for server %s", self.config.name, log=False) # Init a Barman sub-process object archive_process = BarmanSubProcess( subcommand='archive-wal', config=barman.__config__.config_file, args=[self.config.name], keep_descriptors=keep_descriptors) # Launch the sub-process archive_process.execute() except LockFileBusy: # Another archive process is running for the server, # warn the user and skip to the next sever. output.info( "Another archive-wal process is already running " "on server %s. Skipping to the next server" % self.config.name) def cron_receive_wal(self, keep_descriptors): """ Method that handles the start of a 'receive-wal' sub process This method must be run protected by ServerCronLock :param bool keep_descriptors: whether to keep subprocess descriptors attached to this process. """ try: # Try to acquire ServerWalReceiveLock, if the lock is available, # no other 'receive-wal' processes are running on this server. # # There is a very little race condition window here because # even if we are protected by ServerCronLock, the user could run # another 'receive-wal' command manually. However, it would result # in one of the two commands failing on lock acquisition, # with no other consequence. with ServerWalReceiveLock( self.config.barman_lock_directory, self.config.name): # Output and release the lock immediately output.info("Starting streaming archiver " "for server %s", self.config.name, log=False) # Start a new receive-wal process receive_process = BarmanSubProcess( subcommand='receive-wal', config=barman.__config__.config_file, args=[self.config.name], keep_descriptors=keep_descriptors) # Launch the sub-process receive_process.execute() except LockFileBusy: # Another receive-wal process is running for the server # exit without message _logger.debug("Another STREAMING ARCHIVER process is running for " "server %s" % self.config.name) def cron_check_backup(self, keep_descriptors): """ Method that handles the start of a 'check-backup' sub process :param bool keep_descriptors: whether to keep subprocess descriptors attached to this process. """ backup_id = self.get_first_backup_id([BackupInfo.WAITING_FOR_WALS]) if not backup_id: # Nothing to be done for this server return try: # Try to acquire ServerBackupIdLock, if the lock is available, # no other 'check-backup' processes are running on this backup. # # There is a very little race condition window here because # even if we are protected by ServerCronLock, the user could run # another command that takes the lock. However, it would result # in one of the two commands failing on lock acquisition, # with no other consequence. with ServerBackupIdLock( self.config.barman_lock_directory, self.config.name, backup_id): # Output and release the lock immediately output.info("Starting check-backup for backup %s of server %s", backup_id, self.config.name, log=False) # Start a check-backup process check_process = BarmanSubProcess( subcommand='check-backup', config=barman.__config__.config_file, args=[self.config.name, backup_id], keep_descriptors=keep_descriptors) check_process.execute() except LockFileBusy: # Another process is holding the backup lock _logger.debug("Another process is holding the backup lock for %s " "of server %s" % (backup_id, self.config.name)) def archive_wal(self, verbose=True): """ Perform the WAL archiving operations. Usually run as subprocess of the barman cron command, but can be executed manually using the barman archive-wal command :param bool verbose: if false outputs something only if there is at least one file """ output.debug("Starting archive-wal for server %s", self.config.name) try: # Take care of the archive lock. # Only one archive job per server is admitted with ServerWalArchiveLock(self.config.barman_lock_directory, self.config.name): self.backup_manager.archive_wal(verbose) except LockFileBusy: # If another process is running for this server, # warn the user and skip to the next server output.info("Another archive-wal process is already running " "on server %s. Skipping to the next server" % self.config.name) def create_physical_repslot(self): """ Create a physical replication slot using the streaming connection """ if not self.streaming: output.error("Unable to create a physical replication slot: " "streaming connection not configured") return # Replication slots are not supported by PostgreSQL < 9.4 try: if self.streaming.server_version < 90400: output.error("Unable to create a physical replication slot: " "not supported by '%s' " "(9.4 or higher is required)" % self.streaming.server_major_version) return except PostgresException as exc: msg = "Cannot connect to server '%s'" % self.config.name output.error(msg, log=False) _logger.error("%s: %s", msg, force_str(exc).strip()) return if not self.config.slot_name: output.error("Unable to create a physical replication slot: " "slot_name configuration option required") return output.info( "Creating physical replication slot '%s' on server '%s'", self.config.slot_name, self.config.name) try: self.streaming.create_physical_repslot(self.config.slot_name) output.info("Replication slot '%s' created", self.config.slot_name) except PostgresDuplicateReplicationSlot: output.error("Replication slot '%s' already exists", self.config.slot_name) except PostgresReplicationSlotsFull: output.error("All replication slots for server '%s' are in use\n" "Free one or increase the max_replication_slots " "value on your PostgreSQL server.", self.config.name) except PostgresException as exc: output.error( "Cannot create replication slot '%s' on server '%s': %s", self.config.slot_name, self.config.name, force_str(exc).strip()) def drop_repslot(self): """ Drop a replication slot using the streaming connection """ if not self.streaming: output.error("Unable to drop a physical replication slot: " "streaming connection not configured") return # Replication slots are not supported by PostgreSQL < 9.4 try: if self.streaming.server_version < 90400: output.error("Unable to drop a physical replication slot: " "not supported by '%s' (9.4 or higher is " "required)" % self.streaming.server_major_version) return except PostgresException as exc: msg = "Cannot connect to server '%s'" % self.config.name output.error(msg, log=False) _logger.error("%s: %s", msg, force_str(exc).strip()) return if not self.config.slot_name: output.error("Unable to drop a physical replication slot: " "slot_name configuration option required") return output.info( "Dropping physical replication slot '%s' on server '%s'", self.config.slot_name, self.config.name) try: self.streaming.drop_repslot(self.config.slot_name) output.info("Replication slot '%s' dropped", self.config.slot_name) except PostgresInvalidReplicationSlot: output.error("Replication slot '%s' does not exist", self.config.slot_name) except PostgresReplicationSlotInUse: output.error( "Cannot drop replication slot '%s' on server '%s' " "because it is in use.", self.config.slot_name, self.config.name) except PostgresException as exc: output.error( "Cannot drop replication slot '%s' on server '%s': %s", self.config.slot_name, self.config.name, force_str(exc).strip()) def receive_wal(self, reset=False): """ Enable the reception of WAL files using streaming protocol. Usually started by barman cron command. Executing this manually, the barman process will not terminate but will continuously receive WAL files from the PostgreSQL server. :param reset: When set, resets the status of receive-wal """ # Execute the receive-wal command only if streaming_archiver # is enabled if not self.config.streaming_archiver: output.error("Unable to start receive-wal process: " "streaming_archiver option set to 'off' in " "barman configuration file") return if not reset: output.info("Starting receive-wal for server %s", self.config.name) try: # Take care of the receive-wal lock. # Only one receiving process per server is permitted with ServerWalReceiveLock(self.config.barman_lock_directory, self.config.name): try: # Only the StreamingWalArchiver implementation # does something. # WARNING: This codes assumes that there is only one # StreamingWalArchiver in the archivers list. for archiver in self.archivers: archiver.receive_wal(reset) except ArchiverFailure as e: output.error(e) except LockFileBusy: # If another process is running for this server, if reset: output.info("Unable to reset the status of receive-wal " "for server %s. Process is still running" % self.config.name) else: output.info("Another receive-wal process is already running " "for server %s." % self.config.name) @property def systemid(self): """ Get the system identifier, as returned by the PostgreSQL server :return str: the system identifier """ status = self.get_remote_status() # Main PostgreSQL connection has higher priority if status.get('postgres_systemid'): return status.get('postgres_systemid') # Fallback: streaming connection return status.get('streaming_systemid') @property def xlogdb_file_name(self): """ The name of the file containing the XLOG_DB :return str: the name of the file that contains the XLOG_DB """ return os.path.join(self.config.wals_directory, self.XLOG_DB) @contextmanager def xlogdb(self, mode='r'): """ Context manager to access the xlogdb file. This method uses locking to make sure only one process is accessing the database at a time. The database file will be created if it not exists. Usage example: with server.xlogdb('w') as file: file.write(new_line) :param str mode: open the file with the required mode (default read-only) """ if not os.path.exists(self.config.wals_directory): os.makedirs(self.config.wals_directory) xlogdb = self.xlogdb_file_name with ServerXLOGDBLock(self.config.barman_lock_directory, self.config.name): # If the file doesn't exist and it is required to read it, # we open it in a+ mode, to be sure it will be created if not os.path.exists(xlogdb) and mode.startswith('r'): if '+' not in mode: mode = "a%s+" % mode[1:] else: mode = "a%s" % mode[1:] with open(xlogdb, mode) as f: # execute the block nested in the with statement try: yield f finally: # we are exiting the context # if file is writable (mode contains w, a or +) # make sure the data is written to disk # http://docs.python.org/2/library/os.html#os.fsync if any((c in 'wa+') for c in f.mode): f.flush() os.fsync(f.fileno()) def report_backups(self): if not self.enforce_retention_policies: return dict() else: return self.config.retention_policy.report() def rebuild_xlogdb(self): """ Rebuild the whole xlog database guessing it from the archive content. """ return self.backup_manager.rebuild_xlogdb() def get_backup_ext_info(self, backup_info): """ Return a dictionary containing all available information about a backup The result is equivalent to the sum of information from * BackupInfo object * the Server.get_wal_info() return value * the context in the catalog (if available) * the retention policy status :param backup_info: the target backup :rtype dict: all information about a backup """ backup_ext_info = backup_info.to_dict() if backup_info.status in BackupInfo.STATUS_COPY_DONE: try: previous_backup = self.backup_manager.get_previous_backup( backup_ext_info['backup_id']) next_backup = self.backup_manager.get_next_backup( backup_ext_info['backup_id']) if previous_backup: backup_ext_info[ 'previous_backup_id'] = previous_backup.backup_id else: backup_ext_info['previous_backup_id'] = None if next_backup: backup_ext_info['next_backup_id'] = next_backup.backup_id else: backup_ext_info['next_backup_id'] = None except UnknownBackupIdException: # no next_backup_id and previous_backup_id items # means "Not available" pass backup_ext_info.update(self.get_wal_info(backup_info)) if self.enforce_retention_policies: policy = self.config.retention_policy backup_ext_info['retention_policy_status'] = \ policy.backup_status(backup_info.backup_id) else: backup_ext_info['retention_policy_status'] = None # Check any child timeline exists children_timelines = self.get_children_timelines( backup_ext_info['timeline'], forked_after=backup_info.end_xlog) backup_ext_info['children_timelines'] = \ children_timelines return backup_ext_info def show_backup(self, backup_info): """ Output all available information about a backup :param backup_info: the target backup """ try: backup_ext_info = self.get_backup_ext_info(backup_info) output.result('show_backup', backup_ext_info) except BadXlogSegmentName as e: output.error( "invalid xlog segment name %r\n" "HINT: Please run \"barman rebuild-xlogdb %s\" " "to solve this issue", force_str(e), self.config.name) output.close_and_exit() @staticmethod def _build_path(path_prefix=None): """ If a path_prefix is provided build a string suitable to be used in PATH environment variable by joining the path_prefix with the current content of PATH environment variable. If the `path_prefix` is None returns None. :rtype: str|None """ if not path_prefix: return None sys_path = os.environ.get('PATH') return "%s%s%s" % (path_prefix, os.pathsep, sys_path) def kill(self, task, fail_if_not_present=True): """ Given the name of a barman sub-task type, attempts to stop all the processes :param string task: The task we want to stop :param bool fail_if_not_present: Display an error when the process is not present (default: True) """ process_list = self.process_manager.list(task) for process in process_list: if self.process_manager.kill(process): output.info('Stopped process %s(%s)', process.task, process.pid) return else: output.error('Cannot terminate process %s(%s)', process.task, process.pid) return if fail_if_not_present: output.error('Termination of %s failed: ' 'no such process for server %s', task, self.config.name) def switch_wal(self, force=False, archive=None, archive_timeout=None): """ Execute the switch-wal command on the target server """ closed_wal = None try: if force: # If called with force, execute a checkpoint before the # switch_wal command _logger.info('Force a CHECKPOINT before pg_switch_wal()') self.postgres.checkpoint() # Perform the switch_wal. expect a WAL name only if the switch # has been successfully executed, False otherwise. closed_wal = self.postgres.switch_wal() if closed_wal is None: # Something went wrong during the execution of the # pg_switch_wal command output.error("Unable to perform pg_switch_wal " "for server '%s'." % self.config.name) return if closed_wal: # The switch_wal command have been executed successfully output.info( "The WAL file %s has been closed on server '%s'" % (closed_wal, self.config.name)) else: # Is not necessary to perform a switch_wal output.info("No switch required for server '%s'" % self.config.name) except PostgresIsInRecovery: output.info("No switch performed because server '%s' " "is a standby." % self.config.name) except PostgresSuperuserRequired: # Superuser rights are required to perform the switch_wal output.error("Barman switch-wal requires superuser rights") return # If the user has asked to wait for a WAL file to be archived, # wait until a new WAL file has been found # or the timeout has expired if archive: self.wait_for_wal(closed_wal, archive_timeout) def wait_for_wal(self, wal_file=None, archive_timeout=None): """ Wait for a WAL file to be archived on the server :param str|None wal_file: Name of the WAL file, or None if we should just wait for a new WAL file to be archived :param int|None archive_timeout: Timeout in seconds """ max_msg = "" if archive_timeout: max_msg = " (max: %s seconds)" % archive_timeout initial_wals = dict() if not wal_file: wals = self.backup_manager.get_latest_archived_wals_info() initial_wals = dict([(tli, wals[tli].name) for tli in wals]) if wal_file: output.info( "Waiting for the WAL file %s from server '%s'%s", wal_file, self.config.name, max_msg) else: output.info( "Waiting for a WAL file from server '%s' to be archived%s", self.config.name, max_msg) # Wait for a new file until end_time or forever if no archive_timeout end_time = None if archive_timeout: end_time = time.time() + archive_timeout while not end_time or time.time() < end_time: self.archive_wal(verbose=False) # Finish if the closed wal file is in the archive. if wal_file: if os.path.exists(self.get_wal_full_path(wal_file)): break else: # Check if any new file has been archived, on any timeline wals = self.backup_manager.get_latest_archived_wals_info() current_wals = dict([(tli, wals[tli].name) for tli in wals]) if current_wals != initial_wals: break # sleep a bit before retrying time.sleep(.1) else: if wal_file: output.error("The WAL file %s has not been received " "in %s seconds", wal_file, archive_timeout) else: output.info( "A WAL file has not been received in %s seconds", archive_timeout) def replication_status(self, target='all'): """ Implements the 'replication-status' command. """ if target == 'hot-standby': client_type = PostgreSQLConnection.STANDBY elif target == 'wal-streamer': client_type = PostgreSQLConnection.WALSTREAMER else: client_type = PostgreSQLConnection.ANY_STREAMING_CLIENT try: standby_info = self.postgres.get_replication_stats(client_type) if standby_info is None: output.error('Unable to connect to server %s' % self.config.name) else: output.result('replication_status', self.config.name, target, self.postgres.current_xlog_location, standby_info) except PostgresUnsupportedFeature as e: output.info(" Requires PostgreSQL %s or higher", e) except PostgresSuperuserRequired: output.info(" Requires superuser rights") def get_children_timelines(self, tli, forked_after=None): """ Get a list of the children of the passed timeline :param int tli: Id of the timeline to check :param str forked_after: XLog location after which the timeline must have been created :return List[xlog.HistoryFileData]: the list of timelines that have the timeline with id 'tli' as parent """ comp_manager = self.backup_manager.compression_manager if forked_after: forked_after = xlog.parse_lsn(forked_after) children = [] # Search all the history files after the passed timeline children_tli = tli while True: children_tli += 1 history_path = os.path.join(self.config.wals_directory, "%08X.history" % children_tli) # If the file doesn't exists, stop searching if not os.path.exists(history_path): break # Create the WalFileInfo object using the file wal_info = comp_manager.get_wal_file_info(history_path) # Get content of the file. We need to pass a compressor manager # here to handle an eventual compression of the history file history_info = xlog.decode_history_file( wal_info, self.backup_manager.compression_manager) # Save the history only if is reachable from this timeline. for tinfo in history_info: # The history file contains the full genealogy # but we keep only the line with `tli` timeline as parent. if tinfo.parent_tli != tli: continue # We need to return this history info only if this timeline # has been forked after the passed LSN if forked_after and tinfo.switchpoint < forked_after: continue children.append(tinfo) return children def check_backup(self, backup_info): """ Make sure that we have all the WAL files required by a physical backup for consistency (from the first to the last WAL file) :param backup_info: the target backup """ output.debug("Checking backup %s of server %s", backup_info.backup_id, self.config.name) try: # No need to check a backup which is not waiting for WALs. # Doing that we could also mark as DONE backups which # were previously FAILED due to copy errors if backup_info.status == BackupInfo.FAILED: output.error( "The validity of a failed backup cannot be checked") return # Take care of the backup lock. # Only one process can modify a backup a a time with ServerBackupIdLock(self.config.barman_lock_directory, self.config.name, backup_info.backup_id): orig_status = backup_info.status self.backup_manager.check_backup(backup_info) if orig_status == backup_info.status: output.debug( "Check finished: the status of backup %s of server %s " "remains %s", backup_info.backup_id, self.config.name, backup_info.status) else: output.debug( "Check finished: the status of backup %s of server %s " "changed from %s to %s", backup_info.backup_id, self.config.name, orig_status, backup_info.status) except LockFileBusy: # If another process is holding the backup lock, # notify the user and terminate. # This is not an error condition because it happens when # another process is validating the backup. output.info( "Another process is holding the lock for " "backup %s of server %s." % ( backup_info.backup_id, self.config.name)) return except LockFilePermissionDenied as e: # We cannot access the lockfile. # warn the user and terminate output.error("Permission denied, unable to access '%s'" % e) return def sync_status(self, last_wal=None, last_position=None): """ Return server status for sync purposes. The method outputs JSON, containing: * list of backups (with DONE status) * server configuration * last read position (in xlog.db) * last read wal * list of archived wal files If last_wal is provided, the method will discard all the wall files older than last_wal. If last_position is provided the method will try to read the xlog.db file using last_position as starting point. If the wal file at last_position does not match last_wal, read from the start and use last_wal as limit :param str|None last_wal: last read wal :param int|None last_position: last read position (in xlog.db) """ sync_status = {} wals = [] # Get all the backups using default filter for # get_available_backups method # (BackupInfo.DONE) backups = self.get_available_backups() # Retrieve the first wal associated to a backup, it will be useful # to filter our eventual WAL too old to be useful first_useful_wal = None if backups: first_useful_wal = backups[sorted(backups.keys())[0]].begin_wal # Read xlogdb file. with self.xlogdb() as fxlogdb: starting_point = self.set_sync_starting_point(fxlogdb, last_wal, last_position) check_first_wal = starting_point == 0 and last_wal is not None # The wal_info and line variables are used after the loop. # We initialize them here to avoid errors with an empty xlogdb. line = None wal_info = None for line in fxlogdb: # Parse the line wal_info = WalFileInfo.from_xlogdb_line(line) # Check if user is requesting data that is not available. # TODO: probably the check should be something like # TODO: last_wal + 1 < wal_info.name if check_first_wal: if last_wal < wal_info.name: raise SyncError( "last_wal '%s' is older than the first" " available wal '%s'" % (last_wal, wal_info.name)) else: check_first_wal = False # If last_wal is provided, discard any line older than last_wal if last_wal: if wal_info.name <= last_wal: continue # Else don't return any WAL older than first available backup elif first_useful_wal and wal_info.name < first_useful_wal: continue wals.append(wal_info) if wal_info is not None: # Check if user is requesting data that is not available. if last_wal is not None and last_wal > wal_info.name: raise SyncError( "last_wal '%s' is newer than the last available wal " " '%s'" % (last_wal, wal_info.name)) # Set last_position with the current position - len(last_line) # (returning the beginning of the last line) sync_status['last_position'] = fxlogdb.tell() - len(line) # Set the name of the last wal of the file sync_status['last_name'] = wal_info.name else: # we started over sync_status['last_position'] = 0 sync_status['last_name'] = '' sync_status['backups'] = backups sync_status['wals'] = wals sync_status['version'] = barman.__version__ sync_status['config'] = self.config json.dump(sync_status, sys.stdout, cls=BarmanEncoder, indent=4) def sync_cron(self, keep_descriptors): """ Manage synchronisation operations between passive node and master node. The method recover information from the remote master server, evaluate if synchronisation with the master is required and spawn barman sub processes, syncing backups and WAL files :param bool keep_descriptors: whether to keep subprocess descriptors attached to this process. """ # Recover information from primary node sync_wal_info = self.load_sync_wals_info() # Use last_wal and last_position for the remote call to the # master server try: remote_info = self.primary_node_info(sync_wal_info.last_wal, sync_wal_info.last_position) except SyncError as exc: output.error("Failed to retrieve the primary node status: %s" % force_str(exc)) return # Perform backup synchronisation if remote_info['backups']: # Get the list of backups that need to be synced # with the local server local_backup_list = self.get_available_backups() # Subtract the list of the already # synchronised backups from the remote backup lists, # obtaining the list of backups still requiring synchronisation sync_backup_list = set(remote_info['backups']) - set( local_backup_list) else: # No backup to synchronisation required output.info("No backup synchronisation required for server %s", self.config.name, log=False) sync_backup_list = [] for backup_id in sorted(sync_backup_list): # Check if this backup_id needs to be synchronized by spawning a # sync-backup process. # The same set of checks will be executed by the spawned process. # This "double check" is necessary because we don't want the cron # to spawn unnecessary processes. try: local_backup_info = self.get_backup(backup_id) self.check_sync_required(backup_id, remote_info, local_backup_info) except SyncError as e: # It means that neither the local backup # nor the remote one exist. # This should not happen here. output.exception("Unexpected state: %s", e) break except SyncToBeDeleted: # The backup does not exist on primary server # and is FAILED here. # It must be removed by the sync-backup process. pass except SyncNothingToDo: # It could mean that the local backup is in DONE state or # that it is obsolete according to # the local retention policies. # In both cases, continue with the next backup. continue # Now that we are sure that a backup-sync subprocess is necessary, # we need to acquire the backup lock, to be sure that # there aren't other processes synchronising the backup. # If cannot acquire the lock, another synchronisation process # is running, so we give up. try: with ServerBackupSyncLock(self.config.barman_lock_directory, self.config.name, backup_id): output.info("Starting copy of backup %s for server %s", backup_id, self.config.name) except LockFileBusy: output.info("A synchronisation process for backup %s" " on server %s is already in progress", backup_id, self.config.name, log=False) # Stop processing this server break # Init a Barman sub-process object sub_process = BarmanSubProcess( subcommand='sync-backup', config=barman.__config__.config_file, args=[self.config.name, backup_id], keep_descriptors=keep_descriptors) # Launch the sub-process sub_process.execute() # Stop processing this server break # Perform WAL synchronisation if remote_info['wals']: # We need to acquire a sync-wal lock, to be sure that # there aren't other processes synchronising the WAL files. # If cannot acquire the lock, another synchronisation process # is running, so we give up. try: with ServerWalSyncLock(self.config.barman_lock_directory, self.config.name,): output.info("Started copy of WAL files for server %s", self.config.name) except LockFileBusy: output.info("WAL synchronisation already running" " for server %s", self.config.name, log=False) return # Init a Barman sub-process object sub_process = BarmanSubProcess( subcommand='sync-wals', config=barman.__config__.config_file, args=[self.config.name], keep_descriptors=keep_descriptors) # Launch the sub-process sub_process.execute() else: # no WAL synchronisation is required output.info("No WAL synchronisation required for server %s", self.config.name, log=False) def check_sync_required(self, backup_name, primary_info, local_backup_info): """ Check if it is necessary to sync a backup. If the backup is present on the Primary node: * if it does not exist locally: continue (synchronise it) * if it exists and is DONE locally: raise SyncNothingToDo (nothing to do) * if it exists and is FAILED locally: continue (try to recover it) If the backup is not present on the Primary node: * if it does not exist locally: raise SyncError (wrong call) * if it exists and is DONE locally: raise SyncNothingToDo (nothing to do) * if it exists and is FAILED locally: raise SyncToBeDeleted (remove it) If a backup needs to be synchronised but it is obsolete according to local retention policies, raise SyncNothingToDo, else return to the caller. :param str backup_name: str name of the backup to sync :param dict primary_info: dict containing the Primary node status :param barman.infofile.BackupInfo local_backup_info: BackupInfo object representing the current backup state :raise SyncError: There is an error in the user request :raise SyncNothingToDo: Nothing to do for this request :raise SyncToBeDeleted: Backup is not recoverable and must be deleted """ backups = primary_info['backups'] # Backup not present on Primary node, and not present # locally. Raise exception. if backup_name not in backups \ and local_backup_info is None: raise SyncError("Backup %s is absent on %s server" % (backup_name, self.config.name)) # Backup not present on Primary node, but is # present locally with status FAILED: backup incomplete. # Remove the backup and warn the user if backup_name not in backups \ and local_backup_info is not None \ and local_backup_info.status == BackupInfo.FAILED: raise SyncToBeDeleted( "Backup %s is absent on %s server and is incomplete locally" % (backup_name, self.config.name)) # Backup not present on Primary node, but is # present locally with status DONE. Sync complete, local only. if backup_name not in backups \ and local_backup_info is not None \ and local_backup_info.status == BackupInfo.DONE: raise SyncNothingToDo( "Backup %s is absent on %s server, but present locally " "(local copy only)" % (backup_name, self.config.name)) # Backup present on Primary node, and present locally # with status DONE. Sync complete. if backup_name in backups \ and local_backup_info is not None \ and local_backup_info.status == BackupInfo.DONE: raise SyncNothingToDo("Backup %s is already synced with" " %s server" % (backup_name, self.config.name)) # Retention Policy: if the local server has a Retention policy, # check that the remote backup is not obsolete. enforce_retention_policies = self.enforce_retention_policies retention_policy_mode = self.config.retention_policy_mode if enforce_retention_policies and retention_policy_mode == 'auto': # All the checks regarding retention policies are in # this boolean method. if self.is_backup_locally_obsolete(backup_name, backups): # The remote backup is obsolete according to # local retention policies. # Nothing to do. raise SyncNothingToDo("Remote backup %s/%s is obsolete for " "local retention policies." % (primary_info['config']['name'], backup_name)) def load_sync_wals_info(self): """ Load the content of SYNC_WALS_INFO_FILE for the given server :return collections.namedtuple: last read wal and position information """ sync_wals_info_file = os.path.join(self.config.wals_directory, SYNC_WALS_INFO_FILE) if not os.path.exists(sync_wals_info_file): return SyncWalInfo(None, None) try: with open(sync_wals_info_file) as f: return SyncWalInfo._make(f.readline().split('\t')) except (OSError, IOError) as e: raise SyncError("Cannot open %s file for server %s: %s" % ( SYNC_WALS_INFO_FILE, self.config.name, e)) def primary_node_info(self, last_wal=None, last_position=None): """ Invoke sync-info directly on the specified primary node The method issues a call to the sync-info method on the primary node through an SSH connection :param barman.server.Server self: the Server object :param str|None last_wal: last read wal :param int|None last_position: last read position (in xlog.db) :raise SyncError: if the ssh command fails """ # First we need to check if the server is in passive mode _logger.debug("primary sync-info(%s, %s, %s)", self.config.name, last_wal, last_position) if not self.passive_node: raise SyncError("server %s is not passive" % self.config.name) # Issue a call to 'barman sync-info' to the primary node, # using primary_ssh_command option to establish an # SSH connection. remote_command = Command(cmd=self.config.primary_ssh_command, shell=True, check=True, path=self.path) # We run it in a loop to retry when the master issues error. while True: try: # Build the command string cmd_str = "barman sync-info %s " % self.config.name # If necessary we add last_wal and last_position # to the command string if last_wal is not None: cmd_str += "%s " % last_wal if last_position is not None: cmd_str += "%s " % last_position # Then issue the command remote_command(cmd_str) # All good, exit the retry loop with 'break' break except CommandFailedException as exc: # In case we requested synchronisation with a last WAL info, # we try again requesting the full current status, but only if # exit code is 1. A different exit code means that # the error is not from Barman (i.e. ssh failure) if exc.args[0]['ret'] == 1 and last_wal is not None: last_wal = None last_position = None output.warning( "sync-info is out of sync. " "Self-recovery procedure started: " "requesting full synchronisation from " "primary server %s" % self.config.name) continue # Wrap the CommandFailed exception with a SyncError # for custom message and logging. raise SyncError("sync-info execution on remote " "primary server %s failed: %s" % (self.config.name, exc.args[0]['err'])) # Save the result on disk primary_info_file = os.path.join(self.config.backup_directory, PRIMARY_INFO_FILE) # parse the json output remote_info = json.loads(remote_command.out) try: # TODO: rename the method to make it public # noinspection PyProtectedMember self._make_directories() # Save remote info to disk # We do not use a LockFile here. Instead we write all data # in a new file (adding '.tmp' extension) then we rename it # replacing the old one. # It works while the renaming is an atomic operation # (this is a POSIX requirement) primary_info_file_tmp = primary_info_file + '.tmp' with open(primary_info_file_tmp, 'w') as info_file: info_file.write(remote_command.out) os.rename(primary_info_file_tmp, primary_info_file) except (OSError, IOError) as e: # Wrap file access exceptions using SyncError raise SyncError("Cannot open %s file for server %s: %s" % ( PRIMARY_INFO_FILE, self.config.name, e)) return remote_info def is_backup_locally_obsolete(self, backup_name, remote_backups): """ Check if a remote backup is obsolete according with the local retention policies. :param barman.server.Server self: Server object :param str backup_name: str name of the backup to sync :param dict remote_backups: dict containing the Primary node status :return bool: returns if the backup is obsolete or not """ # Get the local backups and add the remote backup info. This will # simulate the situation after the copy of the remote backup. local_backups = self.get_available_backups(BackupInfo.STATUS_NOT_EMPTY) backup = remote_backups[backup_name] local_backups[backup_name] = LocalBackupInfo.from_json(self, backup) # Execute the local retention policy on the modified list of backups report = self.config.retention_policy.report(source=local_backups) # If the added backup is obsolete return true. return report[backup_name] == BackupInfo.OBSOLETE def sync_backup(self, backup_name): """ Method for the synchronisation of a backup from a primary server. The Method checks that the server is passive, then if it is possible to sync with the Primary. Acquires a lock at backup level and copy the backup from the Primary node using rsync. During the sync process the backup on the Passive node is marked as SYNCING and if the sync fails (due to network failure, user interruption...) it is marked as FAILED. :param barman.server.Server self: the passive Server object to sync :param str backup_name: the name of the backup to sync. """ _logger.debug("sync_backup(%s, %s)", self.config.name, backup_name) if not self.passive_node: raise SyncError("server %s is not passive" % self.config.name) local_backup_info = self.get_backup(backup_name) # Step 1. Parse data from Primary server. _logger.info( "Synchronising with server %s backup %s: step 1/3: " "parse server information", self.config.name, backup_name) try: primary_info = self.load_primary_info() self.check_sync_required(backup_name, primary_info, local_backup_info) except SyncError as e: # Invocation error: exit with return code 1 output.error("%s", e) return except SyncToBeDeleted as e: # The required backup does not exist on primary, # therefore it should be deleted also on passive node, # as it's not in DONE status. output.warning("%s, purging local backup", e) self.delete_backup(local_backup_info) return except SyncNothingToDo as e: # Nothing to do. Log as info level and exit output.info("%s", e) return # If the backup is present on Primary node, and is not present at all # locally or is present with FAILED status, execute sync. # Retrieve info about the backup from PRIMARY_INFO_FILE remote_backup_info = primary_info['backups'][backup_name] remote_backup_dir = primary_info['config']['basebackups_directory'] # Try to acquire the backup lock, if the lock is not available abort # the copy. try: with ServerBackupSyncLock(self.config.barman_lock_directory, self.config.name, backup_name): try: backup_manager = self.backup_manager # Build a BackupInfo object local_backup_info = LocalBackupInfo.from_json( self, remote_backup_info) local_backup_info.set_attribute('status', BackupInfo.SYNCING) local_backup_info.save() backup_manager.backup_cache_add(local_backup_info) # Activate incremental copy if requested # Calculate the safe_horizon as the start time of the older # backup involved in the copy # NOTE: safe_horizon is a tz-aware timestamp because # BackupInfo class ensures that property reuse_mode = self.config.reuse_backup safe_horizon = None reuse_dir = None if reuse_mode: prev_backup = backup_manager.get_previous_backup( backup_name) next_backup = backup_manager.get_next_backup( backup_name) # If a newer backup is present, using it is preferable # because that backup will remain valid longer if next_backup: safe_horizon = local_backup_info.begin_time reuse_dir = next_backup.get_basebackup_directory() elif prev_backup: safe_horizon = prev_backup.begin_time reuse_dir = prev_backup.get_basebackup_directory() else: reuse_mode = None # Try to copy from the Primary node the backup using # the copy controller. copy_controller = RsyncCopyController( ssh_command=self.config.primary_ssh_command, network_compression=self.config.network_compression, path=self.path, reuse_backup=reuse_mode, safe_horizon=safe_horizon, retry_times=self.config.basebackup_retry_times, retry_sleep=self.config.basebackup_retry_sleep, workers=self.config.parallel_jobs) copy_controller.add_directory( 'basebackup', ":%s/%s/" % (remote_backup_dir, backup_name), local_backup_info.get_basebackup_directory(), exclude_and_protect=['/backup.info', '/.backup.lock'], bwlimit=self.config.bandwidth_limit, reuse=reuse_dir, item_class=RsyncCopyController.PGDATA_CLASS) _logger.info( "Synchronising with server %s backup %s: step 2/3: " "file copy", self.config.name, backup_name) copy_controller.copy() # Save the backup state and exit _logger.info("Synchronising with server %s backup %s: " "step 3/3: finalise sync", self.config.name, backup_name) local_backup_info.set_attribute('status', BackupInfo.DONE) local_backup_info.save() except CommandFailedException as e: # Report rsync errors msg = 'failure syncing server %s backup %s: %s' % ( self.config.name, backup_name, e) output.error(msg) # Set the BackupInfo status to FAILED local_backup_info.set_attribute('status', BackupInfo.FAILED) local_backup_info.set_attribute('error', msg) local_backup_info.save() return # Catch KeyboardInterrupt (Ctrl+c) and all the exceptions except BaseException as e: msg_lines = force_str(e).strip().splitlines() if local_backup_info: # Use only the first line of exception message # in local_backup_info error field local_backup_info.set_attribute("status", BackupInfo.FAILED) # If the exception has no attached message # use the raw type name if not msg_lines: msg_lines = [type(e).__name__] local_backup_info.set_attribute( "error", "failure syncing server %s backup %s: %s" % ( self.config.name, backup_name, msg_lines[0])) local_backup_info.save() output.error("Backup failed syncing with %s: %s\n%s", self.config.name, msg_lines[0], '\n'.join(msg_lines[1:])) except LockFileException: output.error("Another synchronisation process for backup %s " "of server %s is already running.", backup_name, self.config.name) def sync_wals(self): """ Method for the synchronisation of WAL files on the passive node, by copying them from the primary server. The method checks if the server is passive, then tries to acquire a sync-wal lock. Recovers the id of the last locally archived WAL file from the status file ($wals_directory/sync-wals.info). Reads the primary.info file and parses it, then obtains the list of WAL files that have not yet been synchronised with the master. Rsync is used for file synchronisation with the primary server. Once the copy is finished, acquires a lock on xlog.db, updates it then releases the lock. Before exiting, the method updates the last_wal and last_position fields in the sync-wals.info file. :param barman.server.Server self: the Server object to synchronise """ _logger.debug("sync_wals(%s)", self.config.name) if not self.passive_node: raise SyncError("server %s is not passive" % self.config.name) # Try to acquire the sync-wal lock if the lock is not available, # abort the sync-wal operation try: with ServerWalSyncLock(self.config.barman_lock_directory, self.config.name, ): try: # Need to load data from status files: primary.info # and sync-wals.info sync_wals_info = self.load_sync_wals_info() primary_info = self.load_primary_info() # We want to exit if the compression on master is different # from the one on the local server if primary_info['config']['compression'] \ != self.config.compression: raise SyncError("Compression method on server %s " "(%s) does not match local " "compression method (%s) " % (self.config.name, primary_info['config']['compression'], self.config.compression)) # If the first WAL that needs to be copied is older # than the begin WAL of the first locally available backup, # synchronisation is skipped. This means that we need # to copy a WAL file which won't be associated to any local # backup. Consider the following scenarios: # # bw: indicates the begin WAL of the first backup # sw: the first WAL to be sync-ed # # The following examples use truncated names for WAL files # (e.g. 1 instead of 000000010000000000000001) # # Case 1: bw = 10, sw = 9 - SKIP and wait for backup # Case 2: bw = 10, sw = 10 - SYNC # Case 3: bw = 10, sw = 15 - SYNC # # Search for the first WAL file (skip history, # backup and partial files) first_remote_wal = None for wal in primary_info['wals']: if xlog.is_wal_file(wal['name']): first_remote_wal = wal['name'] break first_backup_id = self.get_first_backup_id() first_backup = self.get_backup(first_backup_id) \ if first_backup_id else None # Also if there are not any backups on the local server # no wal synchronisation is required if not first_backup: output.warning("No base backup for server %s" % self.config.name) return if first_backup.begin_wal > first_remote_wal: output.warning("Skipping WAL synchronisation for " "server %s: no available local backup " "for %s" % (self.config.name, first_remote_wal)) return local_wals = [] wal_file_paths = [] for wal in primary_info['wals']: # filter all the WALs that are smaller # or equal to the name of the latest synchronised WAL if sync_wals_info.last_wal and \ wal['name'] <= sync_wals_info.last_wal: continue # Generate WalFileInfo Objects using remote WAL metas. # This list will be used for the update of the xlog.db wal_info_file = WalFileInfo(**wal) local_wals.append(wal_info_file) wal_file_paths.append(wal_info_file.relpath()) # Rsync Options: # recursive: recursive copy of subdirectories # perms: preserve permissions on synced files # times: preserve modification timestamps during # synchronisation # protect-args: force rsync to preserve the integrity of # rsync command arguments and filename. # inplace: for inplace file substitution # and update of files rsync = Rsync( args=['--recursive', '--perms', '--times', '--protect-args', '--inplace'], ssh=self.config.primary_ssh_command, bwlimit=self.config.bandwidth_limit, allowed_retval=(0,), network_compression=self.config.network_compression, path=self.path) # Source and destination of the rsync operations src = ':%s/' % primary_info['config']['wals_directory'] dest = '%s/' % self.config.wals_directory # Perform the rsync copy using the list of relative paths # obtained from the primary.info file rsync.from_file_list(wal_file_paths, src, dest) # If everything is synced without errors, # update xlog.db using the list of WalFileInfo object with self.xlogdb('a') as fxlogdb: for wal_info in local_wals: fxlogdb.write(wal_info.to_xlogdb_line()) # We need to update the sync-wals.info file with the latest # synchronised WAL and the latest read position. self.write_sync_wals_info_file(primary_info) except CommandFailedException as e: msg = "WAL synchronisation for server %s " \ "failed: %s" % (self.config.name, e) output.error(msg) return except BaseException as e: msg_lines = force_str(e).strip().splitlines() # Use only the first line of exception message # If the exception has no attached message # use the raw type name if not msg_lines: msg_lines = [type(e).__name__] output.error("WAL synchronisation for server %s " "failed with: %s\n%s", self.config.name, msg_lines[0], '\n'.join(msg_lines[1:])) except LockFileException: output.error("Another sync-wal operation is running " "for server %s ", self.config.name) @staticmethod def set_sync_starting_point(xlogdb_file, last_wal, last_position): """ Check if the xlog.db file has changed between two requests from the client and set the start point for reading the file :param file xlogdb_file: an open and readable xlog.db file object :param str|None last_wal: last read name :param int|None last_position: last read position :return int: the position has been set """ # If last_position is None start reading from the beginning of the file position = int(last_position) if last_position is not None else 0 # Seek to required position xlogdb_file.seek(position) # Read 24 char (the size of a wal name) wal_name = xlogdb_file.read(24) # If the WAL name is the requested one start from last_position if wal_name == last_wal: # Return to the line start xlogdb_file.seek(position) return position # If the file has been truncated, start over xlogdb_file.seek(0) return 0 def write_sync_wals_info_file(self, primary_info): """ Write the content of SYNC_WALS_INFO_FILE on disk :param dict primary_info: """ try: with open(os.path.join(self.config.wals_directory, SYNC_WALS_INFO_FILE), 'w') as syncfile: syncfile.write("%s\t%s" % (primary_info['last_name'], primary_info['last_position'])) except (OSError, IOError): # Wrap file access exceptions using SyncError raise SyncError("Unable to write %s file for server %s" % (SYNC_WALS_INFO_FILE, self.config.name)) def load_primary_info(self): """ Load the content of PRIMARY_INFO_FILE for the given server :return dict: primary server information """ primary_info_file = os.path.join(self.config.backup_directory, PRIMARY_INFO_FILE) try: with open(primary_info_file) as f: return json.load(f) except (OSError, IOError) as e: # Wrap file access exceptions using SyncError raise SyncError("Cannot open %s file for server %s: %s" % ( PRIMARY_INFO_FILE, self.config.name, e)) barman-2.10/barman/diagnose.py0000644000015500001620000000667013571162460014467 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module represents the barman diagnostic tool. """ import datetime import json import logging import barman from barman import fs, output from barman.backup import BackupInfo from barman.exceptions import CommandFailedException, FsOperationFailed from barman.utils import BarmanEncoder _logger = logging.getLogger(__name__) def exec_diagnose(servers, errors_list): """ Diagnostic command: gathers information from backup server and from all the configured servers. Gathered information should be used for support and problems detection :param dict(str,barman.server.Server) servers: list of configured servers :param list errors_list: list of global errors """ # global section. info about barman server diagnosis = {'global': {}, 'servers': {}} # barman global config diagnosis['global']['config'] = dict(barman.__config__._global_config) diagnosis['global']['config']['errors_list'] = errors_list try: command = fs.UnixLocalCommand() # basic system info diagnosis['global']['system_info'] = command.get_system_info() except CommandFailedException as e: diagnosis['global']['system_info'] = {'error': repr(e)} diagnosis['global']['system_info']['barman_ver'] = barman.__version__ diagnosis['global']['system_info']['timestamp'] = datetime.datetime.now() # per server section for name in sorted(servers): server = servers[name] if server is None: output.error("Unknown server '%s'" % name) continue # server configuration diagnosis['servers'][name] = {} diagnosis['servers'][name]['config'] = vars(server.config) del diagnosis['servers'][name]['config']['config'] # server system info if server.config.ssh_command: try: command = fs.UnixRemoteCommand( ssh_command=server.config.ssh_command, path=server.path ) diagnosis['servers'][name]['system_info'] = ( command.get_system_info()) except FsOperationFailed: pass # barman statuts information for the server diagnosis['servers'][name]['status'] = server.get_remote_status() # backup list backups = server.get_available_backups(BackupInfo.STATUS_ALL) diagnosis['servers'][name]['backups'] = backups # wal status diagnosis['servers'][name]['wals'] = { 'last_archived_wal_per_timeline': server.backup_manager.get_latest_archived_wals_info(), } # Release any PostgreSQL resource server.close() output.info(json.dumps(diagnosis, cls=BarmanEncoder, indent=4, sort_keys=True)) barman-2.10/barman/cli.py0000644000015500001620000013640013571162460013440 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module implements the interface with the command line and the logger. """ import json import logging import os import sys from argparse import SUPPRESS, ArgumentTypeError from contextlib import closing from functools import wraps from argh import ArghParser, arg, expects_obj, named import barman.config import barman.diagnose from barman import output from barman.config import RecoveryOptions from barman.exceptions import BadXlogSegmentName, RecoveryException, SyncError from barman.infofile import BackupInfo from barman.server import Server from barman.utils import (BarmanEncoder, check_non_negative, check_positive, configure_logging, drop_privileges, force_str, parse_log_level) _logger = logging.getLogger(__name__) def check_target_action(value): """ Check the target action option :param value: str containing the value to check """ if value is None: return None if value in ('pause', 'shutdown', 'promote'): return value raise ArgumentTypeError("'%s' is not a valid recovery target action" % value) @named('list-server') @arg('--minimal', help='machine readable output') def list_server(minimal=False): """ List available servers, with useful information """ # Get every server, both inactive and temporarily disabled servers = get_server_list() for name in sorted(servers): server = servers[name] # Exception: manage_server_command is not invoked here # Normally you would call manage_server_command to check if the # server is None and to report inactive and disabled servers, but here # we want all servers and the server cannot be None output.init('list_server', name, minimal=minimal) description = server.config.description or '' # If the server has been manually disabled if not server.config.active: description += " (inactive)" # If server has configuration errors elif server.config.disabled: description += " (WARNING: disabled)" # If server is a passive node if server.passive_node: description += ' (Passive)' output.result('list_server', name, description) output.close_and_exit() @arg('--keep-descriptors', help='Keep the stdout and the stderr streams attached ' 'to Barman subprocesses.') def cron(keep_descriptors=False): """ Run maintenance tasks (global command) """ # Skip inactive and temporarily disabled servers servers = get_server_list(skip_inactive=True, skip_disabled=True) for name in sorted(servers): server = servers[name] # Exception: manage_server_command is not invoked here # Normally you would call manage_server_command to check if the # server is None and to report inactive and disabled servers, # but here we have only active and well configured servers. try: server.cron(keep_descriptors=keep_descriptors) except Exception: # A cron should never raise an exception, so this code # should never be executed. However, it is here to protect # unrelated servers in case of unexpected failures. output.exception( "Unable to run cron on server '%s', " "please look in the barman log file for more details.", name) output.close_and_exit() # noinspection PyUnusedLocal def server_completer(prefix, parsed_args, **kwargs): global_config(parsed_args) for conf in barman.__config__.servers(): if conf.name.startswith(prefix): yield conf.name # noinspection PyUnusedLocal def server_completer_all(prefix, parsed_args, **kwargs): global_config(parsed_args) current_list = getattr(parsed_args, 'server_name', None) or () for conf in barman.__config__.servers(): if conf.name.startswith(prefix) and conf.name not in current_list: yield conf.name if len(current_list) == 0 and 'all'.startswith(prefix): yield 'all' # noinspection PyUnusedLocal def backup_completer(prefix, parsed_args, **kwargs): global_config(parsed_args) server = get_server(parsed_args) backups = server.get_available_backups() for backup_id in sorted(backups, reverse=True): if backup_id.startswith(prefix): yield backup_id for special_id in ('latest', 'last', 'oldest', 'first'): if len(backups) > 0 and special_id.startswith(prefix): yield special_id @arg('server_name', nargs='+', completer=server_completer_all, help="specifies the server names for the backup command " "('all' will show all available servers)") @arg('--immediate-checkpoint', help='forces the initial checkpoint to be done as quickly as possible', dest='immediate_checkpoint', action='store_true', default=SUPPRESS) @arg('--no-immediate-checkpoint', help='forces the initial checkpoint to be spread', dest='immediate_checkpoint', action='store_false', default=SUPPRESS) @arg('--reuse-backup', nargs='?', choices=barman.config.REUSE_BACKUP_VALUES, default=None, const='link', help='use the previous backup to improve transfer-rate. ' 'If no argument is given "link" is assumed') @arg('--retry-times', help='Number of retries after an error if base backup copy fails.', type=check_non_negative) @arg('--retry-sleep', help='Wait time after a failed base backup copy, before retrying.', type=check_non_negative) @arg('--no-retry', help='Disable base backup copy retry logic.', dest='retry_times', action='store_const', const=0) @arg('--jobs', '-j', help='Run the copy in parallel using NJOBS processes.', type=check_positive, metavar='NJOBS') @arg('--bwlimit', help="maximum transfer rate in kilobytes per second. " "A value of 0 means no limit. Overrides 'bandwidth_limit' " "configuration option.", metavar='KBPS', type=check_non_negative, default=SUPPRESS) @arg('--wait', '-w', help='wait for all the required WAL files to be archived', dest='wait', action='store_true', default=False) @arg('--wait-timeout', help='the time, in seconds, spent waiting for the required ' 'WAL files to be archived before timing out', dest='wait_timeout', metavar='TIMEOUT', default=None, type=check_non_negative) @expects_obj def backup(args): """ Perform a full backup for the given server (supports 'all') """ servers = get_server_list(args, skip_inactive=True, skip_passive=True) for name in sorted(servers): server = servers[name] # Skip the server (apply general rule) if not manage_server_command(server, name): continue if args.reuse_backup is not None: server.config.reuse_backup = args.reuse_backup if args.retry_sleep is not None: server.config.basebackup_retry_sleep = args.retry_sleep if args.retry_times is not None: server.config.basebackup_retry_times = args.retry_times if hasattr(args, 'immediate_checkpoint'): server.config.immediate_checkpoint = args.immediate_checkpoint if args.jobs is not None: server.config.parallel_jobs = args.jobs if hasattr(args, 'bwlimit'): server.config.bandwidth_limit = args.bwlimit with closing(server): server.backup(wait=args.wait, wait_timeout=args.wait_timeout) output.close_and_exit() @named('list-backup') @arg('server_name', nargs='+', completer=server_completer_all, help="specifies the server name for the command " "('all' will show all available servers)") @arg('--minimal', help='machine readable output', action='store_true') @expects_obj def list_backup(args): """ List available backups for the given server (supports 'all') """ servers = get_server_list(args, skip_inactive=True) for name in sorted(servers): server = servers[name] # Skip the server (apply general rule) if not manage_server_command(server, name): continue output.init('list_backup', name, minimal=args.minimal) with closing(server): server.list_backups() output.close_and_exit() @arg('server_name', nargs='+', completer=server_completer_all, help='specifies the server name for the command') @expects_obj def status(args): """ Shows live information and status of the PostgreSQL server """ servers = get_server_list(args, skip_inactive=True) for name in sorted(servers): server = servers[name] # Skip the server (apply general rule) if not manage_server_command(server, name): continue output.init('status', name) with closing(server): server.status() output.close_and_exit() @named('replication-status') @arg('server_name', nargs='+', completer=server_completer_all, help='specifies the server name for the command') @arg('--minimal', help='machine readable output', action='store_true') @arg('--target', choices=('all', 'hot-standby', 'wal-streamer'), default='all', help=''' Possible values are: 'hot-standby' (only hot standby servers), 'wal-streamer' (only WAL streaming clients, such as pg_receivexlog), 'all' (any of them). Defaults to %(default)s''') @expects_obj def replication_status(args): """ Shows live information and status of any streaming client """ servers = get_server_list(args, skip_inactive=True) for name in sorted(servers): server = servers[name] # Skip the server (apply general rule) if not manage_server_command(server, name): continue with closing(server): output.init('replication_status', name, minimal=args.minimal) server.replication_status(args.target) output.close_and_exit() @arg('server_name', nargs='+', completer=server_completer_all, help='specifies the server name for the command') @expects_obj def rebuild_xlogdb(args): """ Rebuild the WAL file database guessing it from the disk content. """ servers = get_server_list(args, skip_inactive=True) for name in sorted(servers): server = servers[name] # Skip the server (apply general rule) if not manage_server_command(server, name): continue with closing(server): server.rebuild_xlogdb() output.close_and_exit() @arg('server_name', completer=server_completer, help='specifies the server name for the command') @arg('--target-tli', help='target timeline', type=check_positive) @arg('--target-time', help='target time. You can use any valid unambiguous representation. ' 'e.g: "YYYY-MM-DD HH:MM:SS.mmm"') @arg('--target-xid', help='target transaction ID') @arg('--target-lsn', help='target LSN (Log Sequence Number)') @arg('--target-name', help='target name created previously with ' 'pg_create_restore_point() function call') @arg('--target-immediate', help='end recovery as soon as a consistent state is reached', action='store_true', default=False) @arg('--exclusive', help='set target to be non inclusive', action="store_true") @arg('--tablespace', help='tablespace relocation rule', metavar='NAME:LOCATION', action='append') @arg('--remote-ssh-command', metavar='SSH_COMMAND', help='This options activates remote recovery, by specifying the secure ' 'shell command to be launched on a remote host. It is ' 'the equivalent of the "ssh_command" server option in ' 'the configuration file for remote recovery. ' 'Example: "ssh postgres@db2"') @arg('backup_id', completer=backup_completer, help='specifies the backup ID to recover') @arg('destination_directory', help='the directory where the new server is created') @arg('--bwlimit', help="maximum transfer rate in kilobytes per second. " "A value of 0 means no limit. Overrides 'bandwidth_limit' " "configuration option.", metavar='KBPS', type=check_non_negative, default=SUPPRESS) @arg('--retry-times', help='Number of retries after an error if base backup copy fails.', type=check_non_negative) @arg('--retry-sleep', help='Wait time after a failed base backup copy, before retrying.', type=check_non_negative) @arg('--no-retry', help='Disable base backup copy retry logic.', dest='retry_times', action='store_const', const=0) @arg('--jobs', '-j', help='Run the copy in parallel using NJOBS processes.', type=check_positive, metavar='NJOBS') @arg('--get-wal', help='Enable the get-wal option during the recovery.', dest='get_wal', action='store_true', default=SUPPRESS) @arg('--no-get-wal', help='Disable the get-wal option during recovery.', dest='get_wal', action='store_false', default=SUPPRESS) @arg('--network-compression', help='Enable network compression during remote recovery.', dest='network_compression', action='store_true', default=SUPPRESS) @arg('--no-network-compression', help='Disable network compression during remote recovery.', dest='network_compression', action='store_false', default=SUPPRESS) @arg('--target-action', help='Specifies what action the server should take once the ' 'recovery target is reached. This option is not allowed for ' 'PostgreSQL < 9.1. If PostgreSQL is between 9.1 and 9.4 included ' 'the only allowed value is "pause". If PostgreSQL is 9.5 or newer ' 'the possible values are "shutdown", "pause", "promote".', dest='target_action', type=check_target_action, default=SUPPRESS) @arg('--standby-mode', dest="standby_mode", action='store_true', default=SUPPRESS, help='Enable standby mode when starting ' 'the recovered PostgreSQL instance') @expects_obj def recover(args): """ Recover a server at a given time, name, LSN or xid """ server = get_server(args) # Retrieves the backup backup_id = parse_backup_id(server, args) if backup_id.status not in BackupInfo.STATUS_COPY_DONE: output.error( "Cannot recover from backup '%s' of server '%s': " "backup status is not DONE", args.backup_id, server.config.name) output.close_and_exit() # decode the tablespace relocation rules tablespaces = {} if args.tablespace: for rule in args.tablespace: try: tablespaces.update([rule.split(':', 1)]) except ValueError: output.error( "Invalid tablespace relocation rule '%s'\n" "HINT: The valid syntax for a relocation rule is " "NAME:LOCATION", rule) output.close_and_exit() # validate the rules against the tablespace list valid_tablespaces = [] if backup_id.tablespaces: valid_tablespaces = [tablespace_data.name for tablespace_data in backup_id.tablespaces] for item in tablespaces: if item not in valid_tablespaces: output.error("Invalid tablespace name '%s'\n" "HINT: Please use any of the following " "tablespaces: %s", item, ', '.join(valid_tablespaces)) output.close_and_exit() # explicitly disallow the rsync remote syntax (common mistake) if ':' in args.destination_directory: output.error( "The destination directory parameter " "cannot contain the ':' character\n" "HINT: If you want to do a remote recovery you have to use " "the --remote-ssh-command option") output.close_and_exit() if args.retry_sleep is not None: server.config.basebackup_retry_sleep = args.retry_sleep if args.retry_times is not None: server.config.basebackup_retry_times = args.retry_times if hasattr(args, 'get_wal'): if args.get_wal: server.config.recovery_options.add(RecoveryOptions.GET_WAL) else: server.config.recovery_options.remove(RecoveryOptions.GET_WAL) if args.jobs is not None: server.config.parallel_jobs = args.jobs if hasattr(args, 'bwlimit'): server.config.bandwidth_limit = args.bwlimit # PostgreSQL supports multiple parameters to specify when the recovery # process will end, and in that case the last entry in recovery # configuration files will be used. See [1] # # Since the meaning of the target options is not dependent on the order # of parameters, we decided to make the target options mutually exclusive. # # [1]: https://www.postgresql.org/docs/current/static/ # recovery-target-settings.html target_options = ['target_tli', 'target_time', 'target_xid', 'target_lsn', 'target_name', 'target_immediate'] specified_target_options = len( [option for option in target_options if getattr(args, option)]) if specified_target_options > 1: output.error( "You cannot specify multiple targets for the recovery operation") output.close_and_exit() if hasattr(args, 'network_compression'): if args.network_compression and args.remote_ssh_command is None: output.error( "Network compression can only be used with " "remote recovery.\n" "HINT: If you want to do a remote recovery " "you have to use the --remote-ssh-command option") output.close_and_exit() server.config.network_compression = args.network_compression with closing(server): try: server.recover(backup_id, args.destination_directory, tablespaces=tablespaces, target_tli=args.target_tli, target_time=args.target_time, target_xid=args.target_xid, target_lsn=args.target_lsn, target_name=args.target_name, target_immediate=args.target_immediate, exclusive=args.exclusive, remote_command=args.remote_ssh_command, target_action=getattr(args, 'target_action', None), standby_mode=getattr(args, 'standby_mode', None)) except RecoveryException as exc: output.error(force_str(exc)) output.close_and_exit() @named('show-server') @arg('server_name', nargs='+', completer=server_completer_all, help="specifies the server names to show " "('all' will show all available servers)") @expects_obj def show_server(args): """ Show all configuration parameters for the specified servers """ servers = get_server_list(args) for name in sorted(servers): server = servers[name] # Skip the server (apply general rule) if not manage_server_command( server, name, skip_inactive=False, skip_disabled=False, disabled_is_error=False): continue # If the server has been manually disabled if not server.config.active: name += " (inactive)" # If server has configuration errors elif server.config.disabled: name += " (WARNING: disabled)" output.init('show_server', name) with closing(server): server.show() output.close_and_exit() @named('switch-wal') @arg('server_name', nargs='+', completer=server_completer_all, help="specifies the server name target of the switch-wal command") @arg('--force', help='forces the switch of a WAL by executing a checkpoint before', dest='force', action='store_true', default=False) @arg('--archive', help='wait for one WAL file to be archived', dest='archive', action='store_true', default=False) @arg('--archive-timeout', help='the time, in seconds, the archiver will wait for a new WAL file ' 'to be archived before timing out', metavar='TIMEOUT', default='30', type=check_non_negative) @expects_obj def switch_wal(args): """ Execute the switch-wal command on the target server """ servers = get_server_list(args, skip_inactive=True) for name in sorted(servers): server = servers[name] # Skip the server (apply general rule) if not manage_server_command(server, name): continue with closing(server): server.switch_wal(args.force, args.archive, args.archive_timeout) output.close_and_exit() @named('switch-xlog') # Set switch-xlog as alias of switch-wal. # We cannot use the @argh.aliases decorator, because it needs Python >= 3.2, # so we create a wraqpper function and use @wraps to copy all the function # attributes needed by argh @wraps(switch_wal) def switch_xlog(args): return switch_wal(args) @arg('server_name', nargs='+', completer=server_completer_all, help="specifies the server names to check " "('all' will check all available servers)") @arg('--nagios', help='Nagios plugin compatible output', action='store_true') @expects_obj def check(args): """ Check if the server configuration is working. This command returns success if every checks pass, or failure if any of these fails """ if args.nagios: output.set_output_writer(output.NagiosOutputWriter()) servers = get_server_list(args) for name in sorted(servers): server = servers[name] # Validate the returned server if not manage_server_command( server, name, skip_inactive=False, skip_disabled=False, disabled_is_error=False): continue # If the server has been manually disabled if not server.config.active: name += " (inactive)" # If server has configuration errors elif server.config.disabled: name += " (WARNING: disabled)" output.init('check', name, server.config.active) with closing(server): server.check() output.close_and_exit() def diagnose(): """ Diagnostic command (for support and problems detection purpose) """ # Get every server (both inactive and temporarily disabled) servers = get_server_list(on_error_stop=False, suppress_error=True) # errors list with duplicate paths between servers errors_list = barman.__config__.servers_msg_list barman.diagnose.exec_diagnose(servers, errors_list) output.close_and_exit() @named('sync-info') @arg('--primary', help='execute the sync-info on the primary node (if set)', action='store_true', default=SUPPRESS) @arg("server_name", completer=server_completer, help='specifies the server name for the command') @arg("last_wal", help='specifies the name of the latest WAL read', nargs='?') @arg("last_position", nargs='?', type=check_positive, help='the last position read from xlog database (in bytes)') @expects_obj def sync_info(args): """ Output the internal synchronisation status. Used to sync_backup with a passive node """ server = get_server(args) try: # if called with --primary option if getattr(args, 'primary', False): primary_info = server.primary_node_info(args.last_wal, args.last_position) output.info(json.dumps(primary_info, cls=BarmanEncoder, indent=4), log=False) else: server.sync_status(args.last_wal, args.last_position) except SyncError as e: # Catch SyncError exceptions and output only the error message, # preventing from logging the stack trace output.error(e) output.close_and_exit() @named('sync-backup') @arg("server_name", completer=server_completer, help='specifies the server name for the command') @arg("backup_id", help='specifies the backup ID to be copied on the passive node') @expects_obj def sync_backup(args): """ Command that synchronises a backup from a master to a passive node """ server = get_server(args) try: server.sync_backup(args.backup_id) except SyncError as e: # Catch SyncError exceptions and output only the error message, # preventing from logging the stack trace output.error(e) output.close_and_exit() @named('sync-wals') @arg("server_name", completer=server_completer, help='specifies the server name for the command') @expects_obj def sync_wals(args): """ Command that synchronises WAL files from a master to a passive node """ server = get_server(args) try: server.sync_wals() except SyncError as e: # Catch SyncError exceptions and output only the error message, # preventing from logging the stack trace output.error(e) output.close_and_exit() @named('show-backup') @arg('server_name', completer=server_completer, help='specifies the server name for the command') @arg('backup_id', completer=backup_completer, help='specifies the backup ID') @expects_obj def show_backup(args): """ This method shows a single backup information """ server = get_server(args) # Retrieves the backup backup_info = parse_backup_id(server, args) with closing(server): server.show_backup(backup_info) output.close_and_exit() @named('list-files') @arg('server_name', completer=server_completer, help='specifies the server name for the command') @arg('backup_id', completer=backup_completer, help='specifies the backup ID') @arg('--target', choices=('standalone', 'data', 'wal', 'full'), default='standalone', help=''' Possible values are: data (just the data files), standalone (base backup files, including required WAL files), wal (just WAL files between the beginning of base backup and the following one (if any) or the end of the log) and full (same as data + wal). Defaults to %(default)s''') @expects_obj def list_files(args): """ List all the files for a single backup """ server = get_server(args) # Retrieves the backup backup_info = parse_backup_id(server, args) try: for line in backup_info.get_list_of_files(args.target): output.info(line, log=False) except BadXlogSegmentName as e: output.error( "invalid xlog segment name %r\n" "HINT: Please run \"barman rebuild-xlogdb %s\" " "to solve this issue", force_str(e), server.config.name) output.close_and_exit() @arg('server_name', completer=server_completer, help='specifies the server name for the command') @arg('backup_id', completer=backup_completer, help='specifies the backup ID') @expects_obj def delete(args): """ Delete a backup """ server = get_server(args) # Retrieves the backup backup_id = parse_backup_id(server, args) with closing(server): if not server.delete_backup(backup_id): output.error("Cannot delete backup (%s %s)" % (server.config.name, backup_id)) output.close_and_exit() @named('get-wal') @arg('server_name', completer=server_completer, help='specifies the server name for the command') @arg('wal_name', help='the WAL file to get') @arg('--output-directory', '-o', help='put the retrieved WAL file in this directory ' 'with the original name', default=SUPPRESS) @arg('--partial', '-P', help='retrieve also partial WAL files (.partial)', action='store_true', dest='partial', default=False) @arg('--gzip', '-z', '-x', help='compress the output with gzip', action='store_const', const='gzip', dest='compression', default=SUPPRESS) @arg('--bzip2', '-j', help='compress the output with bzip2', action='store_const', const='bzip2', dest='compression', default=SUPPRESS) @arg('--peek', '-p', help="peek from the WAL archive up to 'SIZE' WAL files, starting " "from the requested one. 'SIZE' must be an integer >= 1. " "When invoked with this option, get-wal returns a list of " "zero to 'SIZE' WAL segment names, one per row.", metavar='SIZE', type=check_positive, default=SUPPRESS) @arg('--test', '-t', help="test both the connection and the configuration of the requested " "PostgreSQL server in Barman for WAL retrieval. With this option, " "the 'wal_name' mandatory argument is ignored.", action='store_true', default=SUPPRESS) @expects_obj def get_wal(args): """ Retrieve WAL_NAME file from SERVER_NAME archive. The content will be streamed on standard output unless the --output-directory option is specified. """ server = get_server(args, inactive_is_error=True) if getattr(args, 'test', None): output.info("Ready to retrieve WAL files from the server %s", server.config.name) return # Retrieve optional arguments. If an argument is not specified, # the namespace doesn't contain it due to SUPPRESS default. # In that case we pick 'None' using getattr third argument. compression = getattr(args, 'compression', None) output_directory = getattr(args, 'output_directory', None) peek = getattr(args, 'peek', None) with closing(server): server.get_wal(args.wal_name, compression=compression, output_directory=output_directory, peek=peek, partial=args.partial) output.close_and_exit() @named('put-wal') @arg('server_name', completer=server_completer, help='specifies the server name for the command') @arg('--test', '-t', help='test both the connection and the configuration of the requested ' 'PostgreSQL server in Barman to make sure it is ready to receive ' 'WAL files.', action='store_true', default=SUPPRESS) @expects_obj def put_wal(args): """ Receive a WAL file from SERVER_NAME and securely store it in the incoming directory. The file will be read from standard input in tar format. """ server = get_server(args, inactive_is_error=True) if getattr(args, 'test', None): output.info("Ready to accept WAL files for the server %s", server.config.name) return try: # Python 3.x stream = sys.stdin.buffer except AttributeError: # Python 2.x stream = sys.stdin with closing(server): server.put_wal(stream) output.close_and_exit() @named('archive-wal') @arg('server_name', completer=server_completer, help='specifies the server name for the command') @expects_obj def archive_wal(args): """ Execute maintenance operations on WAL files for a given server. This command processes any incoming WAL files for the server and archives them along the catalogue. """ server = get_server(args) with closing(server): server.archive_wal() output.close_and_exit() @named('receive-wal') @arg('--stop', help='stop the receive-wal subprocess for the server', action='store_true') @arg('--reset', help='reset the status of receive-wal removing ' 'any status files', action='store_true') @arg('--create-slot', help='create the replication slot, if it does not exist', action='store_true') @arg('--drop-slot', help='drop the replication slot, if it exists', action='store_true') @arg('server_name', completer=server_completer, help='specifies the server name for the command') @expects_obj def receive_wal(args): """ Start a receive-wal process. The process uses the streaming protocol to receive WAL files from the PostgreSQL server. """ server = get_server(args) if args.stop and args.reset: output.error("--stop and --reset options are not compatible") # If the caller requested to shutdown the receive-wal process deliver the # termination signal, otherwise attempt to start it elif args.stop: server.kill('receive-wal') elif args.create_slot: with closing(server): server.create_physical_repslot() elif args.drop_slot: with closing(server): server.drop_repslot() else: with closing(server): server.receive_wal(reset=args.reset) output.close_and_exit() @named('check-backup') @arg('server_name', completer=server_completer, help='specifies the server name for the command') @arg('backup_id', completer=backup_completer, help='specifies the backup ID') @expects_obj def check_backup(args): """ Make sure that all the required WAL files to check the consistency of a physical backup (that is, from the beginning to the end of the full backup) are correctly archived. This command is automatically invoked by the cron command and at the end of every backup operation. """ server = get_server(args) # Retrieves the backup backup_info = parse_backup_id(server, args) with closing(server): server.check_backup(backup_info) output.close_and_exit() def pretty_args(args): """ Prettify the given argh namespace to be human readable :type args: argh.dispatching.ArghNamespace :return: the human readable content of the namespace """ values = dict(vars(args)) # Retrieve the command name with recent argh versions if '_functions_stack' in values: values['command'] = values['_functions_stack'][0].__name__ del values['_functions_stack'] # Older argh versions only have the matching function in the namespace elif 'function' in values: values['command'] = values['function'].__name__ del values['function'] return "%r" % values def global_config(args): """ Set the configuration file """ if hasattr(args, 'config'): filename = args.config else: try: filename = os.environ['BARMAN_CONFIG_FILE'] except KeyError: filename = None config = barman.config.Config(filename) barman.__config__ = config # change user if needed try: drop_privileges(config.user) except OSError: msg = "ERROR: please run barman as %r user" % config.user raise SystemExit(msg) except KeyError: msg = "ERROR: the configured user %r does not exists" % config.user raise SystemExit(msg) # configure logging log_level = parse_log_level(config.log_level) configure_logging(config.log_file, log_level or barman.config.DEFAULT_LOG_LEVEL, config.log_format) if log_level is None: _logger.warning('unknown log_level in config file: %s', config.log_level) # Configure output if args.format != output.DEFAULT_WRITER or args.quiet or args.debug: output.set_output_writer(args.format, quiet=args.quiet, debug=args.debug) # Configure color output if args.color == 'auto': # Enable colored output if both stdout and stderr are TTYs output.ansi_colors_enabled = ( sys.stdout.isatty() and sys.stderr.isatty()) else: output.ansi_colors_enabled = args.color == 'always' # Load additional configuration files config.load_configuration_files_directory() # We must validate the configuration here in order to have # both output and logging configured config.validate_global_config() _logger.debug('Initialised Barman version %s (config: %s, args: %s)', barman.__version__, config.config_file, pretty_args(args)) def get_server(args, skip_inactive=True, skip_disabled=False, skip_passive=False, inactive_is_error=False, on_error_stop=True, suppress_error=False): """ Get a single server retrieving its configuration (wraps get_server_list()) Returns a Server object or None if the required server is unknown and on_error_stop is False. WARNING: this function modifies the 'args' parameter :param args: an argparse namespace containing a single server_name parameter WARNING: the function modifies the content of this parameter :param bool skip_inactive: do nothing if the server is inactive :param bool skip_disabled: do nothing if the server is disabled :param bool skip_passive: do nothing if the server is passive :param bool inactive_is_error: treat inactive server as error :param bool on_error_stop: stop if an error is found :param bool suppress_error: suppress display of errors (e.g. diagnose) :rtype: Server|None """ # This function must to be called with in a single-server context name = args.server_name assert isinstance(name, str) # The 'all' special name is forbidden in this context if name == 'all': output.error("You cannot use 'all' in a single server context") output.close_and_exit() # The following return statement will never be reached # but it is here for clarity return None # Builds a list from a single given name args.server_name = [name] # Skip_inactive is reset if inactive_is_error is set, because # it needs to retrieve the inactive server to emit the error. skip_inactive &= not inactive_is_error # Retrieve the requested server servers = get_server_list(args, skip_inactive, skip_disabled, skip_passive, on_error_stop, suppress_error) # The requested server has been excluded from get_server_list result if len(servers) == 0: output.close_and_exit() # The following return statement will never be reached # but it is here for clarity return None # retrieve the server object server = servers[name] # Apply standard validation control and skips # the server if inactive or disabled, displaying standard # error messages. If on_error_stop (default) exits if not manage_server_command(server, name, inactive_is_error) and \ on_error_stop: output.close_and_exit() # The following return statement will never be reached # but it is here for clarity return None # Returns the filtered server return server def get_server_list(args=None, skip_inactive=False, skip_disabled=False, skip_passive=False, on_error_stop=True, suppress_error=False): """ Get the server list from the configuration If args the parameter is None or arg.server_name is ['all'] returns all defined servers :param args: an argparse namespace containing a list server_name parameter :param bool skip_inactive: skip inactive servers when 'all' is required :param bool skip_disabled: skip disabled servers when 'all' is required :param bool skip_passive: skip passive servers when 'all' is required :param bool on_error_stop: stop if an error is found :param bool suppress_error: suppress display of errors (e.g. diagnose) :rtype: dict[str,Server] """ server_dict = {} # This function must to be called with in a multiple-server context assert not args or isinstance(args.server_name, list) # Generate the list of servers (required for global errors) available_servers = barman.__config__.server_names() # Get a list of configuration errors from all the servers global_error_list = barman.__config__.servers_msg_list # Global errors have higher priority if global_error_list: # Output the list of global errors if not suppress_error: for error in global_error_list: output.error(error) # If requested, exit on first error if on_error_stop: output.close_and_exit() # The following return statement will never be reached # but it is here for clarity return {} # Handle special 'all' server cases # - args is None # - 'all' special name if not args or 'all' in args.server_name: # When 'all' is used, it must be the only specified argument if args and len(args.server_name) != 1: output.error("You cannot use 'all' with other server names") servers = available_servers else: # Put servers in a set, so multiple occurrences are counted only once servers = set(args.server_name) # Loop through all the requested servers for server in servers: conf = barman.__config__.get_server(server) if conf is None: # Unknown server server_dict[server] = None else: server_object = Server(conf) # Skip inactive servers, if requested if skip_inactive and not server_object.config.active: output.info("Skipping inactive server '%s'" % conf.name) continue # Skip disabled servers, if requested if skip_disabled and server_object.config.disabled: output.info("Skipping temporarily disabled server '%s'" % conf.name) continue # Skip passive nodes, if requested if skip_passive and server_object.passive_node: output.info("Skipping passive server '%s'", conf.name) continue server_dict[server] = server_object return server_dict def manage_server_command(server, name=None, inactive_is_error=False, disabled_is_error=True, skip_inactive=True, skip_disabled=True): """ Standard and consistent method for managing server errors within a server command execution. By default, suggests to skip any inactive and disabled server; it also emits errors for disabled servers by default. Returns True if the command has to be executed for this server. :param barman.server.Server server: server to be checked for errors :param str name: name of the server, in a multi-server command :param bool inactive_is_error: treat inactive server as error :param bool disabled_is_error: treat disabled server as error :param bool skip_inactive: skip if inactive :param bool skip_disabled: skip if disabled :return: True if the command has to be executed on this server :rtype: boolean """ # Unknown server (skip it) if not server: output.error("Unknown server '%s'" % name) return False if not server.config.active: # Report inactive server as error if inactive_is_error: output.error('Inactive server: %s' % server.config.name) if skip_inactive: return False # Report disabled server as error if server.config.disabled: # Output all the messages as errors, and exit terminating the run. if disabled_is_error: for message in server.config.msg_list: output.error(message) if skip_disabled: return False # All ok, execute the command return True def parse_backup_id(server, args): """ Parses backup IDs including special words such as latest, oldest, etc. Exit with error if the backup id doesn't exist. :param Server server: server object to search for the required backup :param args: command lien arguments namespace :rtype: barman.infofile.LocalBackupInfo """ if args.backup_id in ('latest', 'last'): backup_id = server.get_last_backup_id() elif args.backup_id in ('oldest', 'first'): backup_id = server.get_first_backup_id() else: backup_id = args.backup_id backup_info = server.get_backup(backup_id) if backup_info is None: output.error( "Unknown backup '%s' for server '%s'", args.backup_id, server.config.name) output.close_and_exit() return backup_info def main(): """ The main method of Barman """ p = ArghParser(epilog='Barman by 2ndQuadrant (www.2ndQuadrant.com)') p.add_argument('-v', '--version', action='version', version='%s\n\nBarman by 2ndQuadrant (www.2ndQuadrant.com)' % barman.__version__) p.add_argument('-c', '--config', help='uses a configuration file ' '(defaults: %s)' % ', '.join(barman.config.Config.CONFIG_FILES), default=SUPPRESS) p.add_argument('--color', '--colour', help='Whether to use colors in the output', choices=['never', 'always', 'auto'], default='auto') p.add_argument('-q', '--quiet', help='be quiet', action='store_true') p.add_argument('-d', '--debug', help='debug output', action='store_true') p.add_argument('-f', '--format', help='output format', choices=output.AVAILABLE_WRITERS.keys(), default=output.DEFAULT_WRITER) p.add_commands( [ archive_wal, backup, check, check_backup, cron, delete, diagnose, get_wal, list_backup, list_files, list_server, put_wal, rebuild_xlogdb, receive_wal, recover, show_backup, show_server, replication_status, status, switch_wal, switch_xlog, sync_info, sync_backup, sync_wals, ] ) # noinspection PyBroadException try: p.dispatch(pre_call=global_config) except KeyboardInterrupt: msg = "Process interrupted by user (KeyboardInterrupt)" output.error(msg) except Exception as e: msg = "%s\nSee log file for more details." % e output.exception(msg) # cleanup output API and exit honoring output.error_occurred and # output.error_exit_code output.close_and_exit() if __name__ == '__main__': # This code requires the mock module and allow us to test # bash completion inside the IDE debugger try: # noinspection PyUnresolvedReferences import mock sys.stdout = mock.Mock(wraps=sys.stdout) sys.stdout.isatty.return_value = True os.dup2(2, 8) except ImportError: pass main() barman-2.10/barman/recovery_executor.py0000644000015500001620000015444313571162460016454 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module contains the methods necessary to perform a recovery """ from __future__ import print_function import collections import datetime import logging import os import re import shutil import socket import tempfile import time from io import BytesIO import dateutil.parser import dateutil.tz from barman import output, xlog from barman.command_wrappers import RsyncPgData from barman.config import RecoveryOptions from barman.copy_controller import RsyncCopyController from barman.exceptions import (BadXlogSegmentName, CommandFailedException, DataTransferFailure, FsOperationFailed, RecoveryInvalidTargetException, RecoveryStandbyModeException, RecoveryTargetActionException) from barman.fs import UnixLocalCommand, UnixRemoteCommand from barman.infofile import BackupInfo, LocalBackupInfo from barman.utils import force_str, mkpath # generic logger for this module _logger = logging.getLogger(__name__) # regexp matching a single value in Postgres configuration file PG_CONF_SETTING_RE = re.compile(r"^\s*([^\s=]+)\s*=?\s*(.*)$") # create a namedtuple object called Assertion # with 'filename', 'line', 'key' and 'value' as properties Assertion = collections.namedtuple('Assertion', 'filename line key value') # noinspection PyMethodMayBeStatic class RecoveryExecutor(object): """ Class responsible of recovery operations """ # Potentially dangerous options list, which need to be revised by the user # after a recovery DANGEROUS_OPTIONS = ['data_directory', 'config_file', 'hba_file', 'ident_file', 'external_pid_file', 'ssl_cert_file', 'ssl_key_file', 'ssl_ca_file', 'ssl_crl_file', 'unix_socket_directory', 'unix_socket_directories', 'include', 'include_dir', 'include_if_exists'] # List of options that, if present, need to be forced to a specific value # during recovery, to avoid data losses MANGLE_OPTIONS = { # Dangerous options 'archive_command': 'false', # Recovery options that may interfere with recovery targets 'recovery_target': None, 'recovery_target_name': None, 'recovery_target_time': None, 'recovery_target_xid': None, 'recovery_target_lsn': None, 'recovery_target_inclusive': None, 'recovery_target_timeline': None, 'recovery_target_action': None, } def __init__(self, backup_manager): """ Constructor :param barman.backup.BackupManager backup_manager: the BackupManager owner of the executor """ self.backup_manager = backup_manager self.server = backup_manager.server self.config = backup_manager.config self.temp_dirs = [] def recover(self, backup_info, dest, tablespaces=None, remote_command=None, target_tli=None, target_time=None, target_xid=None, target_lsn=None, target_name=None, target_immediate=False, exclusive=False, target_action=None, standby_mode=None): """ Performs a recovery of a backup This method should be called in a closing context :param barman.infofile.BackupInfo backup_info: the backup to recover :param str dest: the destination directory :param dict[str,str]|None tablespaces: a tablespace name -> location map (for relocation) :param str|None remote_command: The remote command to recover the base backup, in case of remote backup. :param str|None target_tli: the target timeline :param str|None target_time: the target time :param str|None target_xid: the target xid :param str|None target_lsn: the target LSN :param str|None target_name: the target name created previously with pg_create_restore_point() function call :param str|None target_immediate: end recovery as soon as consistency is reached :param bool exclusive: whether the recovery is exclusive or not :param str|None target_action: The recovery target action :param bool|None standby_mode: standby mode """ # Run the cron to be sure the wal catalog is up to date # Prepare a map that contains all the objects required for a recovery recovery_info = self._setup(backup_info, remote_command, dest) output.info("Starting %s restore for server %s using backup %s", recovery_info['recovery_dest'], self.server.config.name, backup_info.backup_id) output.info("Destination directory: %s", dest) if remote_command: output.info("Remote command: %s", remote_command) # If the backup we are recovering is still not validated and we # haven't requested the get-wal feature, display a warning message if not recovery_info['get_wal']: if backup_info.status == BackupInfo.WAITING_FOR_WALS: output.warning( "IMPORTANT: You have requested a recovery operation for " "a backup that does not have yet all the WAL files that " "are required for consistency.") # Set targets for PITR self._set_pitr_targets(recovery_info, backup_info, dest, target_name, target_time, target_tli, target_xid, target_lsn, target_immediate, target_action) # Retrieve the safe_horizon for smart copy self._retrieve_safe_horizon(recovery_info, backup_info, dest) # check destination directory. If doesn't exist create it try: recovery_info['cmd'].create_dir_if_not_exists(dest) except FsOperationFailed as e: output.error("unable to initialise destination directory " "'%s': %s", dest, e) output.close_and_exit() # Initialize tablespace directories if backup_info.tablespaces: self._prepare_tablespaces(backup_info, recovery_info['cmd'], dest, tablespaces) # Copy the base backup output.info("Copying the base backup.") try: self._backup_copy( backup_info, dest, tablespaces, remote_command, recovery_info['safe_horizon']) except DataTransferFailure as e: output.error("Failure copying base backup: %s", e) output.close_and_exit() # Copy the backup.info file in the destination as # ".barman-recover.info" if remote_command: try: recovery_info['rsync'](backup_info.filename, ':%s/.barman-recover.info' % dest) except CommandFailedException as e: output.error( 'copy of recovery metadata file failed: %s', e) output.close_and_exit() else: backup_info.save(os.path.join(dest, '.barman-recover.info')) # Standby mode is not available for PostgreSQL older than 9.0 if backup_info.version < 90000 and standby_mode: raise RecoveryStandbyModeException( 'standby_mode is available only from PostgreSQL 9.0') # Restore the WAL segments. If GET_WAL option is set, skip this phase # as they will be retrieved using the wal-get command. if not recovery_info['get_wal']: # If the backup we restored is still waiting for WALS, read the # backup info again and check whether it has been validated. # Notify the user if it is still not DONE. if backup_info.status == BackupInfo.WAITING_FOR_WALS: data = LocalBackupInfo(self.server, backup_info.filename) if data.status == BackupInfo.WAITING_FOR_WALS: output.warning( "IMPORTANT: The backup we have recovered IS NOT " "VALID. Required WAL files for consistency are " "missing. Please verify that WAL archiving is " "working correctly or evaluate using the 'get-wal' " "option for recovery") output.info("Copying required WAL segments.") required_xlog_files = () # Makes static analysers happy try: # TODO: Stop early if taget-immediate # Retrieve a list of required log files required_xlog_files = tuple( self.server.get_required_xlog_files( backup_info, target_tli, recovery_info['target_epoch'])) # Restore WAL segments into the wal_dest directory self._xlog_copy(required_xlog_files, recovery_info['wal_dest'], remote_command) except DataTransferFailure as e: output.error("Failure copying WAL files: %s", e) output.close_and_exit() except BadXlogSegmentName as e: output.error( "invalid xlog segment name %r\n" "HINT: Please run \"barman rebuild-xlogdb %s\" " "to solve this issue", force_str(e), self.config.name) output.close_and_exit() # If WAL files are put directly in the pg_xlog directory, # avoid shipping of just recovered files # by creating the corresponding archive status file if not recovery_info['is_pitr']: output.info("Generating archive status files") self._generate_archive_status(recovery_info, remote_command, required_xlog_files) # Generate recovery.conf file (only if needed by PITR or get_wal) is_pitr = recovery_info['is_pitr'] get_wal = recovery_info['get_wal'] if is_pitr or get_wal or standby_mode: output.info("Generating recovery configuration") self._generate_recovery_conf(recovery_info, backup_info, dest, target_immediate, exclusive, remote_command, target_name, target_time, target_tli, target_xid, target_lsn, standby_mode) # Create archive_status directory if necessary archive_status_dir = os.path.join(recovery_info['wal_dest'], 'archive_status') try: recovery_info['cmd'].create_dir_if_not_exists(archive_status_dir) except FsOperationFailed as e: output.error("unable to create the archive_status directory " "'%s': %s", archive_status_dir, e) output.close_and_exit() # As last step, analyse configuration files in order to spot # harmful options. Barman performs automatic conversion of # some options as well as notifying users of their existence. # # This operation is performed in three steps: # 1) mapping # 2) analysis # 3) copy output.info("Identify dangerous settings in destination directory.") self._map_temporary_config_files(recovery_info, backup_info, remote_command) self._analyse_temporary_config_files(recovery_info) self._copy_temporary_config_files(dest, remote_command, recovery_info) return recovery_info def _setup(self, backup_info, remote_command, dest): """ Prepare the recovery_info dictionary for the recovery, as well as temporary working directory :param barman.infofile.LocalBackupInfo backup_info: representation of a backup :param str remote_command: ssh command for remote connection :return dict: recovery_info dictionary, holding the basic values for a recovery """ # Calculate the name of the WAL directory if backup_info.version < 100000: wal_dest = os.path.join(dest, 'pg_xlog') else: wal_dest = os.path.join(dest, 'pg_wal') tempdir = tempfile.mkdtemp(prefix='barman_recovery-') self.temp_dirs.append(tempdir) recovery_info = { 'cmd': None, 'recovery_dest': 'local', 'rsync': None, 'configuration_files': [], 'destination_path': dest, 'temporary_configuration_files': [], 'tempdir': tempdir, 'is_pitr': False, 'wal_dest': wal_dest, 'get_wal': RecoveryOptions.GET_WAL in self.config.recovery_options, } # A map that will keep track of the results of the recovery. # Used for output generation results = { 'changes': [], 'warnings': [], 'delete_barman_wal': False, 'missing_files': [], 'get_wal': False, 'recovery_start_time': datetime.datetime.now() } recovery_info['results'] = results # Set up a list of configuration files recovery_info['configuration_files'].append('postgresql.conf') if backup_info.version >= 90400: recovery_info['configuration_files'].append('postgresql.auto.conf') # Identify the file holding the recovery configuration results['recovery_configuration_file'] = 'postgresql.auto.conf' if backup_info.version < 120000: results['recovery_configuration_file'] = 'recovery.conf' # Handle remote recovery options if remote_command: recovery_info['recovery_dest'] = 'remote' recovery_info['rsync'] = RsyncPgData( path=self.server.path, ssh=remote_command, bwlimit=self.config.bandwidth_limit, network_compression=self.config.network_compression) try: # create a UnixRemoteCommand obj if is a remote recovery recovery_info['cmd'] = UnixRemoteCommand(remote_command, path=self.server.path) except FsOperationFailed: output.error( "Unable to connect to the target host using the command " "'%s'", remote_command) output.close_and_exit() else: # if is a local recovery create a UnixLocalCommand recovery_info['cmd'] = UnixLocalCommand() return recovery_info def _set_pitr_targets(self, recovery_info, backup_info, dest, target_name, target_time, target_tli, target_xid, target_lsn, target_immediate, target_action): """ Set PITR targets - as specified by the user :param dict recovery_info: Dictionary containing all the recovery parameters :param barman.infofile.LocalBackupInfo backup_info: representation of a backup :param str dest: destination directory of the recovery :param str|None target_name: recovery target name for PITR :param str|None target_time: recovery target time for PITR :param str|None target_tli: recovery target timeline for PITR :param str|None target_xid: recovery target transaction id for PITR :param str|None target_lsn: recovery target LSN for PITR :param bool|None target_immediate: end recovery as soon as consistency is reached :param str|None target_action: recovery target action for PITR """ target_epoch = None target_datetime = None d_immediate = backup_info.version >= 90400 and target_immediate d_lsn = backup_info.version >= 100000 and target_lsn d_tli = target_tli and target_tli != backup_info.timeline # Detect PITR if target_time or target_xid or d_tli or target_name or \ d_immediate or d_lsn: recovery_info['is_pitr'] = True targets = {} if target_time: try: target_datetime = dateutil.parser.parse(target_time) except ValueError as e: raise RecoveryInvalidTargetException( "Unable to parse the target time parameter %r: %s" % ( target_time, e)) except TypeError: # this should not happen, but there is a known bug in # dateutil.parser.parse() implementation # ref: https://bugs.launchpad.net/dateutil/+bug/1247643 raise RecoveryInvalidTargetException( "Unable to parse the target time parameter %r" % target_time) # If the parsed timestamp is naive, forces it to local timezone if target_datetime.tzinfo is None: target_datetime = target_datetime.replace( tzinfo=dateutil.tz.tzlocal()) # Check if the target time is reachable from the # selected backup if backup_info.end_time > target_datetime: raise RecoveryInvalidTargetException( "The requested target time %s " "is before the backup end time %s" % (target_datetime, backup_info.end_time)) ms = target_datetime.microsecond / 1000000. target_epoch = time.mktime(target_datetime.timetuple()) + ms targets['time'] = str(target_datetime) if target_xid: targets['xid'] = str(target_xid) if d_lsn: targets['lsn'] = str(d_lsn) if d_tli and target_tli != backup_info.timeline: targets['timeline'] = str(d_tli) if target_name: targets['name'] = str(target_name) if d_immediate: targets['immediate'] = d_immediate # Manage the target_action option if backup_info.version < 90100: if target_action: raise RecoveryTargetActionException( "Illegal target action '%s' " "for this version of PostgreSQL" % target_action) elif 90100 <= backup_info.version < 90500: if target_action == 'pause': recovery_info['pause_at_recovery_target'] = "on" elif target_action: raise RecoveryTargetActionException( "Illegal target action '%s' " "for this version of PostgreSQL" % target_action) else: if target_action in ('pause', 'shutdown', 'promote'): recovery_info['recovery_target_action'] = target_action elif target_action: raise RecoveryTargetActionException( "Illegal target action '%s' " "for this version of PostgreSQL" % target_action) output.info( "Doing PITR. Recovery target %s", (", ".join(["%s: %r" % (k, v) for k, v in targets.items()]))) recovery_info['wal_dest'] = os.path.join(dest, 'barman_wal') # With a PostgreSQL version older than 8.4, it is the user's # responsibility to delete the "barman_wal" directory as the # restore_command option in recovery.conf is not supported if backup_info.version < 80400 and \ not recovery_info['get_wal']: recovery_info['results']['delete_barman_wal'] = True else: # Raise an error if target_lsn is used with a pgversion < 10 if backup_info.version < 100000: if target_lsn: raise RecoveryInvalidTargetException( "Illegal use of recovery_target_lsn '%s' " "for this version of PostgreSQL " "(version 10 minimum required)" % target_lsn) if target_immediate: raise RecoveryInvalidTargetException( "Illegal use of recovery_target_immediate " "for this version of PostgreSQL " "(version 9.4 minimum required)") if target_action: raise RecoveryTargetActionException( "Can't enable recovery target action when PITR " "is not required") recovery_info['target_epoch'] = target_epoch recovery_info['target_datetime'] = target_datetime def _retrieve_safe_horizon(self, recovery_info, backup_info, dest): """ Retrieve the safe_horizon for smart copy If the target directory contains a previous recovery, it is safe to pick the least of the two backup "begin times" (the one we are recovering now and the one previously recovered in the target directory). Set the value in the given recovery_info dictionary. :param dict recovery_info: Dictionary containing all the recovery parameters :param barman.infofile.LocalBackupInfo backup_info: a backup representation :param str dest: recovery destination directory """ # noinspection PyBroadException try: backup_begin_time = backup_info.begin_time # Retrieve previously recovered backup metadata (if available) dest_info_txt = recovery_info['cmd'].get_file_content( os.path.join(dest, '.barman-recover.info')) dest_info = LocalBackupInfo( self.server, info_file=BytesIO(dest_info_txt.encode('utf-8'))) dest_begin_time = dest_info.begin_time # Pick the earlier begin time. Both are tz-aware timestamps because # BackupInfo class ensure it safe_horizon = min(backup_begin_time, dest_begin_time) output.info("Using safe horizon time for smart rsync copy: %s", safe_horizon) except FsOperationFailed as e: # Setting safe_horizon to None will effectively disable # the time-based part of smart_copy method. However it is still # faster than running all the transfers with checksum enabled. # # FsOperationFailed means the .barman-recover.info is not available # on destination directory safe_horizon = None _logger.warning('Unable to retrieve safe horizon time ' 'for smart rsync copy: %s', e) except Exception as e: # Same as above, but something failed decoding .barman-recover.info # or comparing times, so log the full traceback safe_horizon = None _logger.exception('Error retrieving safe horizon time ' 'for smart rsync copy: %s', e) recovery_info['safe_horizon'] = safe_horizon def _prepare_tablespaces(self, backup_info, cmd, dest, tablespaces): """ Prepare the directory structure for required tablespaces, taking care of tablespaces relocation, if requested. :param barman.infofile.LocalBackupInfo backup_info: backup representation :param barman.fs.UnixLocalCommand cmd: Object for filesystem interaction :param str dest: destination dir for the recovery :param dict tablespaces: dict of all the tablespaces and their location """ tblspc_dir = os.path.join(dest, 'pg_tblspc') try: # check for pg_tblspc dir into recovery destination folder. # if it does not exists, create it cmd.create_dir_if_not_exists(tblspc_dir) except FsOperationFailed as e: output.error("unable to initialise tablespace directory " "'%s': %s", tblspc_dir, e) output.close_and_exit() for item in backup_info.tablespaces: # build the filename of the link under pg_tblspc directory pg_tblspc_file = os.path.join(tblspc_dir, str(item.oid)) # by default a tablespace goes in the same location where # it was on the source server when the backup was taken location = item.location # if a relocation has been requested for this tablespace, # use the target directory provided by the user if tablespaces and item.name in tablespaces: location = tablespaces[item.name] try: # remove the current link in pg_tblspc, if it exists cmd.delete_if_exists(pg_tblspc_file) # create tablespace location, if does not exist # (raise an exception if it is not possible) cmd.create_dir_if_not_exists(location) # check for write permissions on destination directory cmd.check_write_permission(location) # create symlink between tablespace and recovery folder cmd.create_symbolic_link(location, pg_tblspc_file) except FsOperationFailed as e: output.error("unable to prepare '%s' tablespace " "(destination '%s'): %s", item.name, location, e) output.close_and_exit() output.info("\t%s, %s, %s", item.oid, item.name, location) def _backup_copy(self, backup_info, dest, tablespaces=None, remote_command=None, safe_horizon=None): """ Perform the actual copy of the base backup for recovery purposes First, it copies one tablespace at a time, then the PGDATA directory. Bandwidth limitation, according to configuration, is applied in the process. TODO: manage configuration files if outside PGDATA. :param barman.infofile.LocalBackupInfo backup_info: the backup to recover :param str dest: the destination directory :param dict[str,str]|None tablespaces: a tablespace name -> location map (for relocation) :param str|None remote_command: default None. The remote command to recover the base backup, in case of remote backup. :param datetime.datetime|None safe_horizon: anything after this time has to be checked with checksum """ # Set a ':' prefix to remote destinations dest_prefix = '' if remote_command: dest_prefix = ':' # Create the copy controller object, specific for rsync, # which will drive all the copy operations. Items to be # copied are added before executing the copy() method controller = RsyncCopyController( path=self.server.path, ssh_command=remote_command, network_compression=self.config.network_compression, safe_horizon=safe_horizon, retry_times=self.config.basebackup_retry_times, retry_sleep=self.config.basebackup_retry_sleep, workers=self.config.parallel_jobs, ) # Dictionary for paths to be excluded from rsync exclude_and_protect = [] # Process every tablespace if backup_info.tablespaces: for tablespace in backup_info.tablespaces: # By default a tablespace goes in the same location where # it was on the source server when the backup was taken location = tablespace.location # If a relocation has been requested for this tablespace # use the user provided target directory if tablespaces and tablespace.name in tablespaces: location = tablespaces[tablespace.name] # If the tablespace location is inside the data directory, # exclude and protect it from being deleted during # the data directory copy if location.startswith(dest): exclude_and_protect += [location[len(dest):]] # Exclude and protect the tablespace from being deleted during # the data directory copy exclude_and_protect.append("/pg_tblspc/%s" % tablespace.oid) # Add the tablespace directory to the list of objects # to be copied by the controller controller.add_directory( label=tablespace.name, src='%s/' % backup_info.get_data_directory(tablespace.oid), dst=dest_prefix + location, bwlimit=self.config.get_bwlimit(tablespace), item_class=controller.TABLESPACE_CLASS ) # Add the PGDATA directory to the list of objects to be copied # by the controller controller.add_directory( label='pgdata', src='%s/' % backup_info.get_data_directory(), dst=dest_prefix + dest, bwlimit=self.config.get_bwlimit(), exclude=[ '/pg_log/*', '/pg_xlog/*', '/pg_wal/*', '/postmaster.pid', '/recovery.conf', '/tablespace_map', ], exclude_and_protect=exclude_and_protect, item_class=controller.PGDATA_CLASS ) # TODO: Manage different location for configuration files # TODO: that were not within the data directory # Execute the copy try: controller.copy() # TODO: Improve the exception output except CommandFailedException as e: msg = "data transfer failure" raise DataTransferFailure.from_command_error( 'rsync', e, msg) def _xlog_copy(self, required_xlog_files, wal_dest, remote_command): """ Restore WAL segments :param required_xlog_files: list of all required WAL files :param wal_dest: the destination directory for xlog recover :param remote_command: default None. The remote command to recover the xlog, in case of remote backup. """ # List of required WAL files partitioned by containing directory xlogs = collections.defaultdict(list) # add '/' suffix to ensure it is a directory wal_dest = '%s/' % wal_dest # Map of every compressor used with any WAL file in the archive, # to be used during this recovery compressors = {} compression_manager = self.backup_manager.compression_manager # Fill xlogs and compressors maps from required_xlog_files for wal_info in required_xlog_files: hashdir = xlog.hash_dir(wal_info.name) xlogs[hashdir].append(wal_info) # If a compressor is required, make sure it exists in the cache if wal_info.compression is not None and \ wal_info.compression not in compressors: compressors[wal_info.compression] = \ compression_manager.get_compressor( compression=wal_info.compression) rsync = RsyncPgData( path=self.server.path, ssh=remote_command, bwlimit=self.config.bandwidth_limit, network_compression=self.config.network_compression) # If compression is used and this is a remote recovery, we need a # temporary directory where to spool uncompressed files, # otherwise we either decompress every WAL file in the local # destination, or we ship the uncompressed file remotely if compressors: if remote_command: # Decompress to a temporary spool directory wal_decompression_dest = tempfile.mkdtemp( prefix='barman_wal-') else: # Decompress directly to the destination directory wal_decompression_dest = wal_dest # Make sure wal_decompression_dest exists mkpath(wal_decompression_dest) else: # If no compression wal_decompression_dest = None if remote_command: # If remote recovery tell rsync to copy them remotely # add ':' prefix to mark it as remote wal_dest = ':%s' % wal_dest total_wals = sum(map(len, xlogs.values())) partial_count = 0 for prefix in sorted(xlogs): batch_len = len(xlogs[prefix]) partial_count += batch_len source_dir = os.path.join(self.config.wals_directory, prefix) _logger.info( "Starting copy of %s WAL files %s/%s from %s to %s", batch_len, partial_count, total_wals, xlogs[prefix][0], xlogs[prefix][-1]) # If at least one compressed file has been found, activate # compression check and decompression for each WAL files if compressors: for segment in xlogs[prefix]: dst_file = os.path.join(wal_decompression_dest, segment.name) if segment.compression is not None: compressors[segment.compression].decompress( os.path.join(source_dir, segment.name), dst_file) else: shutil.copy2(os.path.join(source_dir, segment.name), dst_file) if remote_command: try: # Transfer the WAL files rsync.from_file_list( list(segment.name for segment in xlogs[prefix]), wal_decompression_dest, wal_dest) except CommandFailedException as e: msg = ("data transfer failure while copying WAL files " "to directory '%s'") % (wal_dest[1:],) raise DataTransferFailure.from_command_error( 'rsync', e, msg) # Cleanup files after the transfer for segment in xlogs[prefix]: file_name = os.path.join(wal_decompression_dest, segment.name) try: os.unlink(file_name) except OSError as e: output.warning( "Error removing temporary file '%s': %s", file_name, e) else: try: rsync.from_file_list( list(segment.name for segment in xlogs[prefix]), "%s/" % os.path.join(self.config.wals_directory, prefix), wal_dest) except CommandFailedException as e: msg = "data transfer failure while copying WAL files " \ "to directory '%s'" % (wal_dest[1:],) raise DataTransferFailure.from_command_error( 'rsync', e, msg) _logger.info("Finished copying %s WAL files.", total_wals) # Remove local decompression target directory if different from the # destination directory (it happens when compression is in use during a # remote recovery if wal_decompression_dest and wal_decompression_dest != wal_dest: shutil.rmtree(wal_decompression_dest) def _generate_archive_status(self, recovery_info, remote_command, required_xlog_files): """ Populate the archive_status directory :param dict recovery_info: Dictionary containing all the recovery parameters :param str remote_command: ssh command for remote connection :param tuple required_xlog_files: list of required WAL segments """ if remote_command: status_dir = recovery_info['tempdir'] else: status_dir = os.path.join(recovery_info['wal_dest'], 'archive_status') mkpath(status_dir) for wal_info in required_xlog_files: with open(os.path.join(status_dir, "%s.done" % wal_info.name), 'a') as f: f.write('') if remote_command: try: recovery_info['rsync']('%s/' % status_dir, ':%s' % os.path.join( recovery_info['wal_dest'], 'archive_status')) except CommandFailedException as e: output.error("unable to populate archive_status " "directory: %s", e) output.close_and_exit() def _generate_recovery_conf(self, recovery_info, backup_info, dest, immediate, exclusive, remote_command, target_name, target_time, target_tli, target_xid, target_lsn, standby_mode): """ Generate recovery configuration for PITR :param dict recovery_info: Dictionary containing all the recovery parameters :param barman.infofile.LocalBackupInfo backup_info: representation of a backup :param str dest: destination directory of the recovery :param bool|None immediate: end recovery as soon as consistency is reached :param boolean exclusive: exclusive backup or concurrent :param str remote_command: ssh command for remote connection :param str target_name: recovery target name for PITR :param str target_time: recovery target time for PITR :param str target_tli: recovery target timeline for PITR :param str target_xid: recovery target transaction id for PITR :param str target_lsn: recovery target LSN for PITR :param bool|None standby_mode: standby mode """ recovery_conf_lines = [] # If GET_WAL has been set, use the get-wal command to retrieve the # required wal files. Otherwise use the unix command "cp" to copy # them from the barman_wal directory if recovery_info['get_wal']: partial_option = '' if not standby_mode: partial_option = '-P' # We need to create the right restore command. # If we are doing a remote recovery, # the barman-cli package is REQUIRED on the server that is hosting # the PostgreSQL server. # We use the machine FQDN and the barman_user # setting to call the barman-wal-restore correctly. # If local recovery, we use barman directly, assuming # the postgres process will be executed with the barman user. # It MUST to be reviewed by the user in any case. if remote_command: fqdn = socket.getfqdn() recovery_conf_lines.append( "# The 'barman-wal-restore' command " "is provided in the 'barman-cli' package") recovery_conf_lines.append( "restore_command = 'barman-wal-restore %s -U %s " "%s %s %%f %%p'" % (partial_option, self.config.config.user, fqdn, self.config.name)) else: recovery_conf_lines.append( "# The 'barman get-wal' command " "must run as '%s' user" % self.config.config.user) recovery_conf_lines.append( "restore_command = 'sudo -u %s " "barman get-wal %s %s %%f > %%p'" % ( self.config.config.user, partial_option, self.config.name)) recovery_info['results']['get_wal'] = True else: recovery_conf_lines.append( "restore_command = 'cp barman_wal/%f %p'") if backup_info.version >= 80400 and not recovery_info['get_wal']: recovery_conf_lines.append( "recovery_end_command = 'rm -fr barman_wal'") # Writes recovery target if target_time: recovery_conf_lines.append( "recovery_target_time = '%s'" % target_time) if target_xid: recovery_conf_lines.append( "recovery_target_xid = '%s'" % target_xid) if target_lsn: recovery_conf_lines.append( "recovery_target_lsn = '%s'" % target_lsn) if target_name: recovery_conf_lines.append( "recovery_target_name = '%s'" % target_name) # TODO: log a warning if PostgreSQL < 9.4 and --immediate if backup_info.version >= 90400 and immediate: recovery_conf_lines.append( "recovery_target = 'immediate'") # Manage what happens after recovery target is reached if (target_xid or target_time or target_lsn) and exclusive: recovery_conf_lines.append( "recovery_target_inclusive = '%s'" % (not exclusive)) if target_tli: recovery_conf_lines.append( "recovery_target_timeline = %s" % target_tli) # Write recovery target action if 'pause_at_recovery_target' in recovery_info: recovery_conf_lines.append( "pause_at_recovery_target = '%s'" % recovery_info['pause_at_recovery_target']) if 'recovery_target_action' in recovery_info: recovery_conf_lines.append( "recovery_target_action = '%s'" % recovery_info['recovery_target_action']) # Set the standby mode if backup_info.version >= 120000: signal_file = 'recovery.signal' if standby_mode: signal_file = 'standby.signal' if remote_command: recovery_file = os.path.join(recovery_info['tempdir'], signal_file) else: recovery_file = os.path.join(dest, signal_file) open(recovery_file, 'ab').close() recovery_info['auto_conf_append_lines'] = recovery_conf_lines else: if standby_mode: recovery_conf_lines.append("standby_mode = 'on'") if remote_command: recovery_file = os.path.join(recovery_info['tempdir'], 'recovery.conf') else: recovery_file = os.path.join(dest, 'recovery.conf') with open(recovery_file, 'wb') as recovery: recovery.write(('\n'.join(recovery_conf_lines) + '\n') .encode('utf-8')) if remote_command: plain_rsync = RsyncPgData( path=self.server.path, ssh=remote_command, bwlimit=self.config.bandwidth_limit, network_compression=self.config.network_compression) try: plain_rsync.from_file_list( [os.path.basename(recovery_file)], recovery_info['tempdir'], ':%s' % dest) except CommandFailedException as e: output.error('remote copy of %s failed: %s', os.path.basename(recovery_file), e) output.close_and_exit() def _map_temporary_config_files(self, recovery_info, backup_info, remote_command): """ Map configuration files, by filling the 'temporary_configuration_files' array, depending on remote or local recovery. This array will be used by the subsequent methods of the class. :param dict recovery_info: Dictionary containing all the recovery parameters :param barman.infofile.LocalBackupInfo backup_info: a backup representation :param str remote_command: ssh command for remote recovery """ # Cycle over postgres configuration files which my be missing. # If a file is missing, we will be unable to restore it and # we will warn the user. # This can happen if we are using pg_basebackup and # a configuration file is located outside the data dir. # This is not an error condition, so we check also for # `pg_ident.conf` which is an optional file. hardcoded_files = ['pg_hba.conf', 'pg_ident.conf'] conf_files = recovery_info['configuration_files'] + hardcoded_files for conf_file in conf_files: source_path = os.path.join( backup_info.get_data_directory(), conf_file) if not os.path.exists(source_path): recovery_info['results']['missing_files'].append(conf_file) # Remove the file from the list of configuration files if conf_file in recovery_info['configuration_files']: recovery_info['configuration_files'].remove(conf_file) for conf_file in recovery_info['configuration_files']: if remote_command: # If the recovery is remote, copy the postgresql.conf # file in a temp dir # Otherwise we can modify the postgresql.conf file # in the destination directory. conf_file_path = os.path.join( recovery_info['tempdir'], conf_file) shutil.copy2( os.path.join(backup_info.get_data_directory(), conf_file), conf_file_path) else: # Otherwise use the local destination path. conf_file_path = os.path.join( recovery_info['destination_path'], conf_file) recovery_info['temporary_configuration_files'].append( conf_file_path) if backup_info.version >= 120000: # Make sure 'postgresql.auto.conf' file exists in # recovery_info['temporary_configuration_files'] because # the recovery settings will end up there conf_file = 'postgresql.auto.conf' if conf_file not in recovery_info['configuration_files']: if remote_command: conf_file_path = os.path.join(recovery_info['tempdir'], conf_file) else: conf_file_path = os.path.join( recovery_info['destination_path'], conf_file) # Touch the file into existence open(conf_file_path, 'ab').close() recovery_info['temporary_configuration_files'].append( conf_file_path) def _analyse_temporary_config_files(self, recovery_info): """ Analyse temporary configuration files and identify dangerous options Mark all the dangerous options for the user to review. This procedure also changes harmful options such as 'archive_command'. :param dict recovery_info: dictionary holding all recovery parameters """ results = recovery_info['results'] # Check for dangerous options inside every config file for conf_file in recovery_info['temporary_configuration_files']: append_lines = None if conf_file.endswith('postgresql.auto.conf'): append_lines = recovery_info.get('auto_conf_append_lines') # Identify and comment out dangerous options, replacing them with # the appropriate values results['changes'] += self._pg_config_mangle( conf_file, self.MANGLE_OPTIONS, "%s.origin" % conf_file, append_lines) # Identify dangerous options and warn users about their presence results['warnings'] += self._pg_config_detect_possible_issues( conf_file) def _copy_temporary_config_files(self, dest, remote_command, recovery_info): """ Copy modified configuration files using rsync in case of remote recovery :param str dest: destination directory of the recovery :param str remote_command: ssh command for remote connection :param dict recovery_info: Dictionary containing all the recovery parameters """ if remote_command: # If this is a remote recovery, rsync the modified files from the # temporary local directory to the remote destination directory. file_list = [] for conf_file in recovery_info['configuration_files']: file_list.append('%s' % conf_file) file_list.append('%s.origin' % conf_file) try: recovery_info['rsync'].from_file_list(file_list, recovery_info['tempdir'], ':%s' % dest) except CommandFailedException as e: output.error('remote copy of configuration files failed: %s', e) output.close_and_exit() def close(self): """ Cleanup operations for a recovery """ # Remove the temporary directories for temp_dir in self.temp_dirs: shutil.rmtree(temp_dir, ignore_errors=True) self.temp_dirs = [] def _pg_config_mangle(self, filename, settings, backup_filename=None, append_lines=None): """ This method modifies the given PostgreSQL configuration file, commenting out the given settings, and adding the ones generated by Barman. If backup_filename is passed, keep a backup copy. :param filename: the PostgreSQL configuration file :param settings: dictionary of settings to be mangled :param backup_filename: config file backup copy. Default is None. """ # Read the full content of the file in memory with open(filename, 'rb') as f: content = f.readlines() # Rename the original file to backup_filename or to a temporary name # if backup_filename is missing. We need to keep it to preserve # permissions. if backup_filename: orig_filename = backup_filename else: orig_filename = "%s.config_mangle.old" % filename shutil.move(filename, orig_filename) # Write the mangled content mangled = [] with open(filename, 'wb') as f: for l_number, line in enumerate(content): rm = PG_CONF_SETTING_RE.match(line.decode('utf-8')) if rm: key = rm.group(1) if key in settings: value = settings[key] f.write("#BARMAN#".encode('utf-8') + line) # If value is None, simply comment the old line if value is not None: changes = "%s = %s\n" % (key, value) f.write(changes.encode('utf-8')) mangled.append( Assertion._make([ os.path.basename(f.name), l_number, key, value])) continue f.write(line) # Append content of append_lises array if append_lines: if line[-1] != '\n'.encode('utf-8'): f.write('\n'.encode('utf-8')) f.write(('\n'.join(append_lines) + '\n').encode('utf-8')) # Restore original permissions shutil.copymode(orig_filename, filename) # If a backup copy of the file is not requested, # unlink the orig file if not backup_filename: os.unlink(orig_filename) return mangled def _pg_config_detect_possible_issues(self, filename): """ This method looks for any possible issue with PostgreSQL location options such as data_directory, config_file, etc. It returns a dictionary with the dangerous options that have been found. :param filename: the Postgres configuration file """ clashes = [] with open(filename) as f: content = f.readlines() # Read line by line and identify dangerous options for l_number, line in enumerate(content): rm = PG_CONF_SETTING_RE.match(line) if rm: key = rm.group(1) if key in self.DANGEROUS_OPTIONS: clashes.append( Assertion._make([ os.path.basename(f.name), l_number, key, rm.group(2)])) return clashes barman-2.10/barman/copy_controller.py0000644000015500001620000012546213571162460016114 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ Copy controller module A copy controller will handle the copy between a series of files and directory, and their final destination. """ import collections import datetime import logging import os.path import re import shutil import signal import tempfile from functools import partial from multiprocessing import Lock, Pool import dateutil.tz from barman.command_wrappers import RsyncPgData from barman.exceptions import CommandFailedException, RsyncListFilesFailure from barman.utils import human_readable_timedelta, total_seconds _logger = logging.getLogger(__name__) _logger_lock = Lock() _worker_callable = None """ Global variable containing a callable used to execute the jobs. Initialized by `_init_worker` and used by `_run_worker` function. This variable must be None outside a multiprocessing worker Process. """ # Parallel copy bucket size (10GB) BUCKET_SIZE = (1024 * 1024 * 1024 * 10) def _init_worker(func): """ Store the callable used to execute jobs passed to `_run_worker` function :param callable func: the callable to invoke for every job """ global _worker_callable _worker_callable = func def _run_worker(job): """ Execute a job using the callable set using `_init_worker` function :param _RsyncJob job: the job to be executed """ global _worker_callable assert _worker_callable is not None, \ "Worker has not been initialized with `_init_worker`" # This is the entrypoint of the worker process. Since the KeyboardInterrupt # exceptions is handled by the main process, let's forget about Ctrl-C # here. # When the parent process will receive a KeyboardInterrupt, it will ask # the pool to terminate its workers and then terminate itself. signal.signal(signal.SIGINT, signal.SIG_IGN) return _worker_callable(job) class _RsyncJob(object): """ A job to be executed by a worker Process """ def __init__(self, item_idx, description, id=None, file_list=None, checksum=None): """ :param int item_idx: The index of copy item containing this job :param str description: The description of the job, used for logging :param int id: Job ID (as in bucket) :param list[RsyncCopyController._FileItem] file_list: Path to the file containing the file list :param bool checksum: Whether to force the checksum verification """ self.id = id self.item_idx = item_idx self.description = description self.file_list = file_list self.checksum = checksum # Statistics self.copy_start_time = None self.copy_end_time = None class _FileItem(collections.namedtuple('_FileItem', 'mode size date path')): """ This named tuple is used to store the content each line of the output of a "rsync --list-only" call """ class _RsyncCopyItem(object): """ Internal data object that contains the information about one of the items that have to be copied during a RsyncCopyController run. """ def __init__(self, label, src, dst, exclude=None, exclude_and_protect=None, include=None, is_directory=False, bwlimit=None, reuse=None, item_class=None, optional=False): """ The "label" parameter is meant to be used for error messages and logging. If "src" or "dst" content begin with a ':' character, it is a remote path. Only local paths are supported in "reuse" argument. If "reuse" parameter is provided and is not None, it is used to implement the incremental copy. This only works if "is_directory" is True :param str label: a symbolic name for this item :param str src: source directory. :param str dst: destination directory. :param list[str] exclude: list of patterns to be excluded from the copy. The destination will be deleted if present. :param list[str] exclude_and_protect: list of patterns to be excluded from the copy. The destination will be preserved if present. :param list[str] include: list of patterns to be included in the copy even if excluded. :param bool is_directory: Whether the item points to a directory. :param bwlimit: bandwidth limit to be enforced. (KiB) :param str|None reuse: the reference path for incremental mode. :param str|None item_class: If specified carries a meta information about what the object to be copied is. :param bool optional: Whether a failure copying this object should be treated as a fatal failure. This only works if "is_directory" is False """ self.label = label self.src = src self.dst = dst self.exclude = exclude self.exclude_and_protect = exclude_and_protect self.include = include self.is_directory = is_directory self.bwlimit = bwlimit self.reuse = reuse self.item_class = item_class self.optional = optional # Attributes that will e filled during the analysis self.temp_dir = None self.dir_file = None self.exclude_and_protect_file = None self.safe_list = None self.check_list = None # Statistics self.analysis_start_time = None self.analysis_end_time = None # Ensure that the user specified the item class, since it is mandatory # to correctly handle the item assert self.item_class def __str__(self): # Prepare strings for messages formatted_class = self.item_class formatted_name = self.src if self.src.startswith(':'): formatted_class = 'remote ' + self.item_class formatted_name = self.src[1:] formatted_class += ' directory' if self.is_directory else ' file' # Log the operation that is being executed if self.item_class in(RsyncCopyController.PGDATA_CLASS, RsyncCopyController.PGCONTROL_CLASS): return "%s: %s" % ( formatted_class, formatted_name) else: return "%s '%s': %s" % ( formatted_class, self.label, formatted_name) class RsyncCopyController(object): """ Copy a list of files and directory to their final destination. """ # Constants to be used as "item_class" values PGDATA_CLASS = "PGDATA" TABLESPACE_CLASS = "tablespace" PGCONTROL_CLASS = "pg_control" CONFIG_CLASS = "config" # This regular expression is used to parse each line of the output # of a "rsync --list-only" call. This regexp has been tested with any known # version of upstream rsync that is supported (>= 3.0.4) LIST_ONLY_RE = re.compile(r""" ^ # start of the line # capture the mode (es. "-rw-------") (?P[-\w]+) \s+ # size is an integer (?P\d+) \s+ # The date field can have two different form (?P # "2014/06/05 18:00:00" if the sending rsync is compiled # with HAVE_STRFTIME [\d/]+\s+[\d:]+ | # "Thu Jun 5 18:00:00 2014" otherwise \w+\s+\w+\s+\d+\s+[\d:]+\s+\d+ ) \s+ # all the remaining characters are part of filename (?P.+) $ # end of the line """, re.VERBOSE) # This regular expression is used to ignore error messages regarding # vanished files that are not really an error. It is used because # in some cases rsync reports it with exit code 23 which could also mean # a fatal error VANISHED_RE = re.compile(r""" ^ # start of the line ( # files which vanished before rsync start rsync:\ link_stat\ ".+"\ failed:\ No\ such\ file\ or\ directory\ \(2\) | # files which vanished after rsync start file\ has\ vanished:\ ".+" | # files which have been truncated during transfer rsync:\ read\ errors\ mapping\ ".+":\ No\ data\ available\ \(61\) | # final summary rsync\ error:\ .* \(code\ 23\)\ at\ main\.c\(\d+\) \ \[(generator|receiver)=[^\]]+\] ) $ # end of the line """, re.VERBOSE + re.IGNORECASE) def __init__(self, path=None, ssh_command=None, ssh_options=None, network_compression=False, reuse_backup=None, safe_horizon=None, exclude=None, retry_times=0, retry_sleep=0, workers=1): """ :param str|None path: the PATH where rsync executable will be searched :param str|None ssh_command: the ssh executable to be used to access remote paths :param list[str]|None ssh_options: list of ssh options to be used to access remote paths :param boolean network_compression: whether to use the network compression :param str|None reuse_backup: if "link" or "copy" enables the incremental copy feature :param datetime.datetime|None safe_horizon: if set, assumes that every files older than it are save to copy without checksum verification. :param list[str]|None exclude: list of patterns to be excluded from the copy :param int retry_times: The number of times to retry a failed operation :param int retry_sleep: Sleep time between two retry :param int workers: The number of parallel copy workers """ super(RsyncCopyController, self).__init__() self.path = path self.ssh_command = ssh_command self.ssh_options = ssh_options self.network_compression = network_compression self.reuse_backup = reuse_backup self.safe_horizon = safe_horizon self.exclude = exclude self.retry_times = retry_times self.retry_sleep = retry_sleep self.workers = workers self.item_list = [] """List of items to be copied""" self.rsync_cache = {} """A cache of RsyncPgData objects""" # Attributes used for progress reporting self.total_steps = None """Total number of steps""" self.current_step = None """Current step number""" self.temp_dir = None """Temp dir used to store the status during the copy""" # Statistics self.jobs_done = None """Already finished jobs list""" self.copy_start_time = None """Copy start time""" self.copy_end_time = None """Copy end time""" def add_directory(self, label, src, dst, exclude=None, exclude_and_protect=None, include=None, bwlimit=None, reuse=None, item_class=None): """ Add a directory that we want to copy. If "src" or "dst" content begin with a ':' character, it is a remote path. Only local paths are supported in "reuse" argument. If "reuse" parameter is provided and is not None, it is used to implement the incremental copy. This only works if "is_directory" is True :param str label: symbolic name to be used for error messages and logging. :param str src: source directory. :param str dst: destination directory. :param list[str] exclude: list of patterns to be excluded from the copy. The destination will be deleted if present. :param list[str] exclude_and_protect: list of patterns to be excluded from the copy. The destination will be preserved if present. :param list[str] include: list of patterns to be included in the copy even if excluded. :param bwlimit: bandwidth limit to be enforced. (KiB) :param str|None reuse: the reference path for incremental mode. :param str item_class: If specified carries a meta information about what the object to be copied is. """ self.item_list.append( _RsyncCopyItem( label=label, src=src, dst=dst, is_directory=True, bwlimit=bwlimit, reuse=reuse, item_class=item_class, optional=False, exclude=exclude, exclude_and_protect=exclude_and_protect, include=include)) def add_file(self, label, src, dst, item_class=None, optional=False): """ Add a file that we want to copy :param str label: symbolic name to be used for error messages and logging. :param str src: source directory. :param str dst: destination directory. :param str item_class: If specified carries a meta information about what the object to be copied is. :param bool optional: Whether a failure copying this object should be treated as a fatal failure. """ self.item_list.append( _RsyncCopyItem( label=label, src=src, dst=dst, is_directory=False, bwlimit=None, reuse=None, item_class=item_class, optional=optional)) def _rsync_factory(self, item): """ Build the RsyncPgData object required for copying the provided item :param _RsyncCopyItem item: information about a copy operation :rtype: RsyncPgData """ # If the object already exists, use it if item in self.rsync_cache: return self.rsync_cache[item] # Prepare the command arguments args = self._reuse_args(item.reuse) # Merge the global exclude with the one into the item object if self.exclude and item.exclude: exclude = self.exclude + item.exclude else: exclude = self.exclude or item.exclude # TODO: remove debug output or use it to progress tracking # By adding a double '--itemize-changes' option, the rsync # output will contain the full list of files that have been # touched, even those that have not changed args.append('--itemize-changes') args.append('--itemize-changes') # Build the rsync object that will execute the copy rsync = RsyncPgData( path=self.path, ssh=self.ssh_command, ssh_options=self.ssh_options, args=args, bwlimit=item.bwlimit, network_compression=self.network_compression, exclude=exclude, exclude_and_protect=item.exclude_and_protect, include=item.include, retry_times=self.retry_times, retry_sleep=self.retry_sleep, retry_handler=partial(self._retry_handler, item) ) self.rsync_cache[item] = rsync return rsync def copy(self): """ Execute the actual copy """ # Store the start time self.copy_start_time = datetime.datetime.now() # Create a temporary directory to hold the file lists. self.temp_dir = tempfile.mkdtemp(suffix='', prefix='barman-') # The following try block is to make sure the temporary directory # will be removed on exit and all the pool workers # have been terminated. pool = None try: # Initialize the counters used by progress reporting self._progress_init() _logger.info("Copy started (safe before %r)", self.safe_horizon) # Execute some preliminary steps for each item to be copied for item in self.item_list: # The initial preparation is necessary only for directories if not item.is_directory: continue # Store the analysis start time item.analysis_start_time = datetime.datetime.now() # Analyze the source and destination directory content _logger.info(self._progress_message( "[global] analyze %s" % item)) self._analyze_directory(item) # Prepare the target directories, removing any unneeded file _logger.info(self._progress_message( "[global] create destination directories and delete " "unknown files for %s" % item)) self._create_dir_and_purge(item) # Store the analysis end time item.analysis_end_time = datetime.datetime.now() # Init the list of jobs done. Every job will be added to this list # once finished. The content will be used to calculate statistics # about the copy process. self.jobs_done = [] # The jobs are executed using a parallel processes pool # Each job is generated by `self._job_generator`, it is executed by # `_run_worker` using `self._execute_job`, which has been set # calling `_init_worker` function during the Pool initialization. pool = Pool(processes=self.workers, initializer=_init_worker, initargs=(self._execute_job,)) for job in pool.imap_unordered(_run_worker, self._job_generator( exclude_classes=[self.PGCONTROL_CLASS])): # Store the finished job for further analysis self.jobs_done.append(job) # The PGCONTROL_CLASS items must always be copied last for job in pool.imap_unordered(_run_worker, self._job_generator( include_classes=[self.PGCONTROL_CLASS])): # Store the finished job for further analysis self.jobs_done.append(job) except KeyboardInterrupt: _logger.info("Copy interrupted by the user (safe before %s)", self.safe_horizon) raise except BaseException: _logger.info("Copy failed (safe before %s)", self.safe_horizon) raise else: _logger.info("Copy finished (safe before %s)", self.safe_horizon) finally: # The parent process may have finished naturally or have been # interrupted by an exception (i.e. due to a copy error or # the user pressing Ctrl-C). # At this point we must make sure that all the workers have been # correctly terminated before continuing. if pool: pool.terminate() pool.join() # Clean up the temp dir, any exception raised here is logged # and discarded to not clobber an eventual exception being handled. try: shutil.rmtree(self.temp_dir) except EnvironmentError as e: _logger.error("Error cleaning up '%s' (%s)", self.temp_dir, e) self.temp_dir = None # Store the end time self.copy_end_time = datetime.datetime.now() def _job_generator(self, include_classes=None, exclude_classes=None): """ Generate the jobs to be executed by the workers :param list[str]|None include_classes: If not none, copy only the items which have one of the specified classes. :param list[str]|None exclude_classes: If not none, skip all items which have one of the specified classes. :rtype: iter[_RsyncJob] """ for item_idx, item in enumerate(self.item_list): # Skip items of classes which are not required if include_classes and item.item_class not in include_classes: continue if exclude_classes and item.item_class in exclude_classes: continue # If the item is a directory then copy it in two stages, # otherwise copy it using a plain rsync if item.is_directory: # Copy the safe files using the default rsync algorithm msg = self._progress_message( "[%%s] %%s copy safe files from %s" % item) phase_skipped = True for i, bucket in enumerate( self._fill_buckets(item.safe_list)): phase_skipped = False yield _RsyncJob(item_idx, id=i, description=msg, file_list=bucket, checksum=False) if phase_skipped: _logger.info(msg, 'global', 'skipping') # Copy the check files forcing rsync to verify the checksum msg = self._progress_message( "[%%s] %%s copy files with checksum from %s" % item) phase_skipped = True for i, bucket in enumerate( self._fill_buckets(item.check_list)): phase_skipped = False yield _RsyncJob(item_idx, id=i, description=msg, file_list=bucket, checksum=True) if phase_skipped: _logger.info(msg, 'global', 'skipping') else: # Copy the file using plain rsync msg = self._progress_message("[%%s] %%s copy %s" % item) yield _RsyncJob(item_idx, description=msg) def _fill_buckets(self, file_list): """ Generate buckets for parallel copy :param list[_FileItem] file_list: list of file to transfer :rtype: iter[list[_FileItem]] """ # If there is only one worker, fall back to copying all file at once if self.workers < 2: yield file_list return # Create `self.workers` buckets buckets = [[] for _ in range(self.workers)] bucket_sizes = [0 for _ in range(self.workers)] pos = -1 # Sort the list by size for entry in sorted(file_list, key=lambda item: item.size): # Try to fill the file in a bucket for i in range(self.workers): pos = (pos + 1) % self.workers new_size = bucket_sizes[pos] + entry.size if new_size < BUCKET_SIZE: bucket_sizes[pos] = new_size buckets[pos].append(entry) break else: # All the buckets are filled, so return them all for i in range(self.workers): if len(buckets[i]) > 0: yield buckets[i] # Clear the bucket buckets[i] = [] bucket_sizes[i] = 0 # Put the current file in the first bucket bucket_sizes[0] = entry.size buckets[0].append(entry) pos = 0 # Send all the remaining buckets for i in range(self.workers): if len(buckets[i]) > 0: yield buckets[i] def _execute_job(self, job): """ Execute a `_RsyncJob` in a worker process :type job: _RsyncJob """ item = self.item_list[job.item_idx] if job.id is not None: bucket = 'bucket %s' % job.id else: bucket = 'global' # Build the rsync object required for the copy rsync = self._rsync_factory(item) # Store the start time job.copy_start_time = datetime.datetime.now() # Write in the log that the job is starting with _logger_lock: _logger.info(job.description, bucket, 'starting') if item.is_directory: # A directory item must always have checksum and file_list set assert job.file_list is not None, \ 'A directory item must not have a None `file_list` attribute' assert job.checksum is not None, \ 'A directory item must not have a None `checksum` attribute' # Generate a unique name for the file containing the list of files file_list_path = os.path.join( self.temp_dir, '%s_%s_%s.list' % ( item.label, 'check' if job.checksum else 'safe', os.getpid())) # Write the list, one path per line with open(file_list_path, 'w') as file_list: for entry in job.file_list: assert isinstance(entry, _FileItem), \ "expect %r to be a _FileItem" % entry file_list.write(entry.path + "\n") self._copy(rsync, item.src, item.dst, file_list=file_list_path, checksum=job.checksum) else: # A file must never have checksum and file_list set assert job.file_list is None, \ 'A file item must have a None `file_list` attribute' assert job.checksum is None, \ 'A file item must have a None `checksum` attribute' rsync(item.src, item.dst, allowed_retval=(0, 23, 24)) if rsync.ret == 23: if item.optional: _logger.warning( "Ignoring error reading %s", item) else: raise CommandFailedException(dict( ret=rsync.ret, out=rsync.out, err=rsync.err)) # Store the stop time job.copy_end_time = datetime.datetime.now() # Write in the log that the job is finished with _logger_lock: _logger.info(job.description, bucket, 'finished (duration: %s)' % human_readable_timedelta( job.copy_end_time - job.copy_start_time)) # Return the job to the caller, for statistics purpose return job def _progress_init(self): """ Init counters used by progress logging """ self.total_steps = 0 for item in self.item_list: # Directories require 4 steps, files only one if item.is_directory: self.total_steps += 4 else: self.total_steps += 1 self.current_step = 0 def _progress_message(self, msg): """ Log a message containing the progress :param str msg: the message :return srt: message to log """ self.current_step += 1 return "Copy step %s of %s: %s" % ( self.current_step, self.total_steps, msg) def _reuse_args(self, reuse_directory): """ If reuse_backup is 'copy' or 'link', build the rsync option to enable the reuse, otherwise returns an empty list :param str reuse_directory: the local path with data to be reused :rtype: list[str] """ if self.reuse_backup in ('copy', 'link') and \ reuse_directory is not None: return ['--%s-dest=%s' % (self.reuse_backup, reuse_directory)] else: return [] def _retry_handler(self, item, command, args, kwargs, attempt, exc): """ :param _RsyncCopyItem item: The item that is being processed :param RsyncPgData command: Command object being executed :param list args: command args :param dict kwargs: command kwargs :param int attempt: attempt number (starting from 0) :param CommandFailedException exc: the exception which caused the failure """ _logger.warn("Failure executing rsync on %s (attempt %s)", item, attempt) _logger.warn("Retrying in %s seconds", self.retry_sleep) def _analyze_directory(self, item): """ Analyzes the status of source and destination directories identifying the files that are safe from the point of view of a PostgreSQL backup. The safe_horizon value is the timestamp of the beginning of the older backup involved in copy (as source or destination). Any files updated after that timestamp, must be checked as they could have been modified during the backup - and we do not reply WAL files to update them. The destination directory must exist. If the "safe_horizon" parameter is None, we cannot make any assumptions about what can be considered "safe", so we must check everything with checksums enabled. If "ref" parameter is provided and is not None, it is looked up instead of the "dst" dir. This is useful when we are copying files using '--link-dest' and '--copy-dest' rsync options. In this case, both the "dst" and "ref" dir must exist and the "dst" dir must be empty. If source or destination path begin with a ':' character, it is a remote path. Only local paths are supported in "ref" argument. :param _RsyncCopyItem item: information about a copy operation """ # Build the rsync object required for the analysis rsync = self._rsync_factory(item) # If reference is not set we use dst as reference path ref = item.reuse if ref is None: ref = item.dst # Make sure the ref path ends with a '/' or rsync will add the # last path component to all the returned items during listing if ref[-1] != '/': ref += '/' # Build a hash containing all files present on reference directory. # Directories are not included try: ref_hash = dict(( (item.path, item) for item in self._list_files(rsync, ref) if item.mode[0] != 'd')) except (CommandFailedException, RsyncListFilesFailure) as e: # Here we set ref_hash to None, thus disable the code that marks as # "safe matching" those destination files with different time or # size, even if newer than "safe_horizon". As a result, all files # newer than "safe_horizon" will be checked through checksums. ref_hash = None _logger.error( "Unable to retrieve reference directory file list. " "Using only source file information to decide which files" " need to be copied with checksums enabled: %s" % e) # The 'dir.list' file will contain every directory in the # source tree item.dir_file = os.path.join(self.temp_dir, '%s_dir.list' % item.label) dir_list = open(item.dir_file, 'w+') # The 'protect.list' file will contain a filter rule to protect # each file present in the source tree. It will be used during # the first phase to delete all the extra files on destination. item.exclude_and_protect_file = os.path.join( self.temp_dir, '%s_exclude_and_protect.filter' % item.label) exclude_and_protect_filter = open(item.exclude_and_protect_file, 'w+') # The `safe_list` will contain all items older than # safe_horizon, as well as files that we know rsync will # check anyway due to a difference in mtime or size item.safe_list = [] # The `check_list` will contain all items that need # to be copied with checksum option enabled item.check_list = [] for entry in self._list_files(rsync, item.src): # If item is a directory, we only need to save it in 'dir.list' if entry.mode[0] == 'd': dir_list.write(entry.path + '\n') continue # Add every file in the source path to the list of files # to be protected from deletion ('exclude_and_protect.filter') exclude_and_protect_filter.write('P /' + entry.path + '\n') exclude_and_protect_filter.write('- /' + entry.path + '\n') # If source item is older than safe_horizon, # add it to 'safe.list' if self.safe_horizon and entry.date < self.safe_horizon: item.safe_list.append(entry) continue # If ref_hash is None, it means we failed to retrieve the # destination file list. We assume the only safe way is to # check every file that is older than safe_horizon if ref_hash is None: item.check_list.append(entry) continue # If source file differs by time or size from the matching # destination, rsync will discover the difference in any case. # It is then safe to skip checksum check here. dst_item = ref_hash.get(entry.path, None) if dst_item is None: item.safe_list.append(entry) continue different_size = dst_item.size != entry.size different_date = dst_item.date != entry.date if different_size or different_date: item.safe_list.append(entry) continue # All remaining files must be checked with checksums enabled item.check_list.append(entry) # Close all the control files dir_list.close() exclude_and_protect_filter.close() def _create_dir_and_purge(self, item): """ Create destination directories and delete any unknown file :param _RsyncCopyItem item: information about a copy operation """ # Build the rsync object required for the analysis rsync = self._rsync_factory(item) # Create directories and delete any unknown file self._rsync_ignore_vanished_files( rsync, '--recursive', '--delete', '--files-from=%s' % item.dir_file, '--filter', 'merge %s' % item.exclude_and_protect_file, item.src, item.dst, check=True) def _copy(self, rsync, src, dst, file_list, checksum=False): """ The method execute the call to rsync, using as source a a list of files, and adding the the checksum option if required by the caller. :param Rsync rsync: the Rsync object used to retrieve the list of files inside the directories for copy purposes :param str src: source directory :param str dst: destination directory :param str file_list: path to the file containing the sources for rsync :param bool checksum: if checksum argument for rsync is required """ # Build the rsync call args args = ['--files-from=%s' % file_list] if checksum: # Add checksum option if needed args.append('--checksum') self._rsync_ignore_vanished_files(rsync, src, dst, *args, check=True) def _list_files(self, rsync, path): """ This method recursively retrieves a list of files contained in a directory, either local or remote (if starts with ':') :param Rsync rsync: the Rsync object used to retrieve the list :param str path: the path we want to inspect :except CommandFailedException: if rsync call fails :except RsyncListFilesFailure: if rsync output can't be parsed """ _logger.debug("list_files: %r", path) # Use the --no-human-readable option to avoid digit groupings # in "size" field with rsync >= 3.1.0. # Ref: http://ftp.samba.org/pub/rsync/src/rsync-3.1.0-NEWS rsync.get_output('--no-human-readable', '--list-only', '-r', path, check=True) # Cache tzlocal object we need to build dates tzinfo = dateutil.tz.tzlocal() for line in rsync.out.splitlines(): line = line.rstrip() match = self.LIST_ONLY_RE.match(line) if match: mode = match.group('mode') # no exceptions here: the regexp forces 'size' to be an integer size = int(match.group('size')) try: date_str = match.group('date') # The date format has been validated by LIST_ONLY_RE. # Use "2014/06/05 18:00:00" format if the sending rsync # is compiled with HAVE_STRFTIME, otherwise use # "Thu Jun 5 18:00:00 2014" format if date_str[0].isdigit(): date = datetime.datetime.strptime( date_str, "%Y/%m/%d %H:%M:%S") else: date = datetime.datetime.strptime( date_str, "%a %b %d %H:%M:%S %Y") date = date.replace(tzinfo=tzinfo) except (TypeError, ValueError): # This should not happen, due to the regexp msg = ("Unable to parse rsync --list-only output line " "(date): '%s'" % line) _logger.exception(msg) raise RsyncListFilesFailure(msg) path = match.group('path') yield _FileItem(mode, size, date, path) else: # This is a hard error, as we are unable to parse the output # of rsync. It can only happen with a modified or unknown # rsync version (perhaps newer than 3.1?) msg = ("Unable to parse rsync --list-only output line: " "'%s'" % line) _logger.error(msg) raise RsyncListFilesFailure(msg) def _rsync_ignore_vanished_files(self, rsync, *args, **kwargs): """ Wrap an Rsync.get_output() call and ignore missing args TODO: when rsync 3.1 will be widespread, replace this with --ignore-missing-args argument :param Rsync rsync: the Rsync object used to execute the copy """ kwargs['allowed_retval'] = (0, 23, 24) rsync.get_output(*args, **kwargs) # If return code is 23 and there is any error which doesn't match # the VANISHED_RE regexp raise an error if rsync.ret == 23 and rsync.err is not None: for line in rsync.err.splitlines(): match = self.VANISHED_RE.match(line.rstrip()) if match: continue else: _logger.error("First rsync error line: %s", line) raise CommandFailedException(dict( ret=rsync.ret, out=rsync.out, err=rsync.err)) return rsync.out, rsync.err def statistics(self): """ Return statistics about the copy object. :rtype: dict """ # This method can only run at the end of a non empty copy assert self.copy_end_time assert self.item_list assert self.jobs_done # Initialise the result calculating the total runtime stat = { 'total_time': total_seconds( self.copy_end_time - self.copy_start_time), 'number_of_workers': self.workers, 'analysis_time_per_item': {}, 'copy_time_per_item': {}, 'serialized_copy_time_per_item': {}, } # Calculate the time spent during the analysis of the items analysis_start = None analysis_end = None for item in self.item_list: # Some items don't require analysis if not item.analysis_end_time: continue # Build a human readable name to refer to an item in the output ident = item.label if not analysis_start: analysis_start = item.analysis_start_time elif analysis_start > item.analysis_start_time: analysis_start = item.analysis_start_time if not analysis_end: analysis_end = item.analysis_end_time elif analysis_end < item.analysis_end_time: analysis_end = item.analysis_end_time stat['analysis_time_per_item'][ident] = total_seconds( item.analysis_end_time - item.analysis_start_time) stat['analysis_time'] = total_seconds(analysis_end - analysis_start) # Calculate the time spent per job # WARNING: this code assumes that every item is copied separately, # so it's strictly tied to the `_job_generator` method code item_data = {} for job in self.jobs_done: # WARNING: the item contained in the job is not the same object # contained in self.item_list, as it has gone through two # pickling/unpickling cycle # Build a human readable name to refer to an item in the output ident = self.item_list[job.item_idx].label # If this is the first time we see this item we just store the # values from the job if ident not in item_data: item_data[ident] = { 'start': job.copy_start_time, 'end': job.copy_end_time, 'total_time': job.copy_end_time - job.copy_start_time } else: data = item_data[ident] if data['start'] > job.copy_start_time: data['start'] = job.copy_start_time if data['end'] < job.copy_end_time: data['end'] = job.copy_end_time data['total_time'] += job.copy_end_time - job.copy_start_time # Calculate the time spent copying copy_start = None copy_end = None serialized_time = datetime.timedelta(0) for ident in item_data: data = item_data[ident] if copy_start is None or copy_start > data['start']: copy_start = data['start'] if copy_end is None or copy_end < data['end']: copy_end = data['end'] stat['copy_time_per_item'][ident] = total_seconds( data['end'] - data['start']) stat['serialized_copy_time_per_item'][ident] = total_seconds( data['total_time']) serialized_time += data['total_time'] # Store the total time spent by copying stat['copy_time'] = total_seconds(copy_end - copy_start) stat['serialized_copy_time'] = total_seconds(serialized_time) return stat barman-2.10/barman/cloud.py0000644000015500001620000011456313571162460014005 0ustar 00000000000000# Copyright (C) 2018-2019 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . import collections import copy import datetime import errno import json import logging import multiprocessing import operator import os import shutil import signal import tarfile from functools import partial from io import BytesIO from tempfile import NamedTemporaryFile from barman.backup_executor import ConcurrentBackupStrategy from barman.fs import path_allowed from barman.infofile import BackupInfo from barman.postgres_plumbing import EXCLUDE_LIST, PGDATA_EXCLUDE_LIST from barman.utils import (BarmanEncoder, force_str, human_readable_timedelta, total_seconds) try: import boto3 from botocore.exceptions import ClientError, EndpointConnectionError except ImportError: raise SystemExit("Missing required python module: boto3") try: # Python 3.x from urllib.parse import urlparse except ImportError: # Python 2.x from urlparse import urlparse try: # Python 3.x from queue import Empty as EmptyQueue except ImportError: # Python 2.x from Queue import Empty as EmptyQueue DEFAULT_CHUNK_SIZE = 20 << 20 BUFSIZE = 16 * 1024 def copyfileobj_pad_truncate(src, dst, length=None): """ Copy length bytes from fileobj src to fileobj dst. If length is None, copy the entire content. This method is used by the TarFileIgnoringTruncate.addfile(). """ if length == 0: return if length is None: shutil.copyfileobj(src, dst, BUFSIZE) return blocks, remainder = divmod(length, BUFSIZE) for _ in range(blocks): buf = src.read(BUFSIZE) dst.write(buf) if len(buf) < BUFSIZE: # End of file reached # The file must have been truncated, so pad with zeroes dst.write(tarfile.NUL * (BUFSIZE - len(buf))) if remainder != 0: buf = src.read(remainder) dst.write(buf) if len(buf) < remainder: # End of file reached # The file must have been truncated, so pad with zeroes dst.write(tarfile.NUL * (remainder - len(buf))) class CloudUploadingError(Exception): """ This exception is raised when there are upload errors """ class TarFileIgnoringTruncate(tarfile.TarFile): """ Custom TarFile class that ignore truncated or vanished files. """ format = tarfile.PAX_FORMAT # Use PAX format to better preserve metadata def addfile(self, tarinfo, fileobj=None): """ Add the provided fileobj to the tar ignoring truncated or vanished files. This method completely replaces TarFile.addfile() """ self._check("awx") tarinfo = copy.copy(tarinfo) buf = tarinfo.tobuf(self.format, self.encoding, self.errors) self.fileobj.write(buf) self.offset += len(buf) # If there's data to follow, append it. if fileobj is not None: copyfileobj_pad_truncate(fileobj, self.fileobj, tarinfo.size) blocks, remainder = divmod(tarinfo.size, tarfile.BLOCKSIZE) if remainder > 0: self.fileobj.write( tarfile.NUL * (tarfile.BLOCKSIZE - remainder)) blocks += 1 self.offset += blocks * tarfile.BLOCKSIZE self.members.append(tarinfo) class S3TarUploader(object): # This is the method we use to create new buffers # We use named temporary files, so we can pass them by name to # other processes _buffer = partial(NamedTemporaryFile, delete=False, prefix='barman-cloud-', suffix='.part') def __init__(self, cloud_interface, key, compression=None, chunk_size=DEFAULT_CHUNK_SIZE): """ A tar archive that resides on S3 :param CloudInterface cloud_interface: cloud interface instance :param str key: path inside the bucket :param str compression: required compression :param int chunk_size: the upload chunk size """ self.cloud_interface = cloud_interface self.key = key self.mpu = None self.chunk_size = chunk_size self.buffer = None self.counter = 1 tar_mode = 'w|%s' % (compression or '') self.tar = TarFileIgnoringTruncate.open(fileobj=self, mode=tar_mode) self.stats = None def write(self, buf): if self.buffer and self.buffer.tell() > self.chunk_size: self.flush() if not self.buffer: self.buffer = self._buffer() self.buffer.write(buf) def flush(self): if not self.mpu: self.mpu = self.cloud_interface.create_multipart_upload(self.key) self.buffer.flush() self.buffer.seek(0, os.SEEK_SET) self.cloud_interface.async_upload_part( mpu=self.mpu, key=self.key, body=self.buffer, part_number=self.counter) self.counter += 1 self.buffer.close() self.buffer = None def close(self): if self.tar: self.tar.close() self.flush() self.cloud_interface.async_complete_multipart_upload( mpu=self.mpu, key=self.key) self.stats = self.cloud_interface.wait_for_multipart_upload(self.key) class S3UploadController(object): def __init__(self, cloud_interface, key_prefix, compression): """ Create a new controller that upload the backup in S3 :param CloudInterface cloud_interface: cloud interface instance :param str|None key_prefix: path inside the bucket :param str|None compression: required compression """ self.cloud_interface = cloud_interface if key_prefix and key_prefix[0] == '/': key_prefix = key_prefix[1:] self.key_prefix = key_prefix self.compression = compression self.tar_list = {} self.upload_stats = {} """Already finished uploads list""" self.copy_start_time = datetime.datetime.now() """Copy start time""" self.copy_end_time = None """Copy end time""" def _build_dest_name(self, name): """ Get the name suffix :rtype: str """ if self.compression == 'gz': return "%s.tar.gz" % name elif self.compression == 'bz2': return "%s.tar.bz2" % name else: return "%s.tar" % name def _get_tar(self, name): """ Get a named S3 tar file. Subsequent call with the same name return the same name :param str name: tar name :rtype: tarfile.TarFile """ if name not in self.tar_list or not self.tar_list[name]: self.tar_list[name] = S3TarUploader( cloud_interface=self.cloud_interface, key=os.path.join(self.key_prefix, self._build_dest_name(name)), compression=self.compression ) return self.tar_list[name].tar def upload_directory(self, label, src, dst, exclude=None, include=None): logging.info("S3UploadController.upload_directory(%r, %r, %r)", label, src, dst) tar = self._get_tar(dst) for root, dirs, files in os.walk(src): tar_root = os.path.relpath(root, src) if not path_allowed(exclude, include, tar_root, True): continue try: tar.add(root, arcname=tar_root, recursive=False) except EnvironmentError as e: if e.errno == errno.ENOENT: # If a directory disappeared just skip it, # WAL reply will take care during recovery. continue else: raise for item in files: tar_item = os.path.join(tar_root, item) if not path_allowed(exclude, include, tar_item, False): continue logging.debug("Uploading %s", tar_item) try: tar.add(os.path.join(root, item), arcname=tar_item) except EnvironmentError as e: if e.errno == errno.ENOENT: # If a file disappeared just skip it, # WAL reply will take care during recovery. continue else: raise def add_file(self, label, src, dst, path, optional=False): logging.info("S3UploadController.add_file(%r, %r, %r, %r, %r)", label, src, dst, path, optional) if optional and not os.path.exists(src): return tar = self._get_tar(dst) tar.add(src, arcname=path) def add_fileobj(self, label, fileobj, dst, path, mode=None, uid=None, gid=None): logging.info("S3UploadController.add_fileobj(%r, %r, %r)", label, dst, path) tar = self._get_tar(dst) tarinfo = tar.tarinfo(path) fileobj.seek(0, os.SEEK_END) tarinfo.size = fileobj.tell() if mode is not None: tarinfo.mode = mode if uid is not None: tarinfo.gid = uid if gid is not None: tarinfo.gid = gid fileobj.seek(0, os.SEEK_SET) tar.addfile(tarinfo, fileobj) def close(self): logging.info("S3UploadController.close()") for name in self.tar_list: tar = self.tar_list[name] if tar: tar.close() self.upload_stats[name] = tar.stats self.tar_list[name] = None # Store the end time self.copy_end_time = datetime.datetime.now() def statistics(self): """ Return statistics about the S3UploadController object. :rtype: dict """ logging.info("S3UploadController.statistics()") # This method can only run at the end of a non empty copy assert self.copy_end_time assert self.upload_stats # Initialise the result calculating the total runtime stat = { 'total_time': total_seconds( self.copy_end_time - self.copy_start_time), 'number_of_workers': self.cloud_interface.worker_processes_count, # Cloud uploads have no analysis 'analysis_time': 0, 'analysis_time_per_item': {}, 'copy_time_per_item': {}, 'serialized_copy_time_per_item': {}, } # Calculate the time spent uploading upload_start = None upload_end = None serialized_time = datetime.timedelta(0) for name in self.upload_stats: data = self.upload_stats[name] logging.debug('Calculating statistics for file %s, data: %s', name, json.dumps(data, indent=2, sort_keys=True, cls=BarmanEncoder)) if upload_start is None or upload_start > data['start_time']: upload_start = data['start_time'] if upload_end is None or upload_end < data['end_time']: upload_end = data['end_time'] # Cloud uploads have no analysis stat['analysis_time_per_item'][name] = 0 stat['copy_time_per_item'][name] = total_seconds( data['end_time'] - data['start_time']) parts = data['parts'] total_time = datetime.timedelta(0) for num in parts: part = parts[num] total_time += part['end_time'] - part['start_time'] stat['serialized_copy_time_per_item'][name] = total_seconds( total_time) serialized_time += total_time # Store the total time spent by copying stat['copy_time'] = total_seconds(upload_end - upload_start) stat['serialized_copy_time'] = total_seconds(serialized_time) return stat class FileUploadStatistics(dict): def __init__(self, *args, **kwargs): super(FileUploadStatistics, self).__init__(*args, **kwargs) start_time = datetime.datetime.now() self.setdefault('status', 'uploading') self.setdefault('start_time', start_time) self.setdefault('parts', {}) def set_part_end_time(self, part_number, end_time): part = self['parts'].setdefault(part_number, { 'part_number': part_number }) part['end_time'] = end_time def set_part_start_time(self, part_number, start_time): part = self['parts'].setdefault(part_number, { 'part_number': part_number }) part['start_time'] = start_time class CloudInterface(object): def __init__(self, destination_url, encryption, jobs=2, profile_name=None): """ Create a new S3 interface given the S3 destination url and the profile name :param str destination_url: Full URL of the cloud destination :param str|None encryption: Encryption type string :param int jobs: How many sub-processes to use for asynchronous uploading, defaults to 2. :param str profile_name: Amazon auth profile identifier """ self.destination_url = destination_url self.profile_name = profile_name self.encryption = encryption # Extract information from the destination URL parsed_url = urlparse(destination_url) # If netloc is not present, the s3 url is badly formatted. if parsed_url.netloc == '' or parsed_url.scheme != 's3': raise ValueError('Invalid s3 URL address: %s' % destination_url) self.bucket_name = parsed_url.netloc self.path = parsed_url.path # Build a session, so we can extract the correct resource session = boto3.Session(profile_name=profile_name) self.s3 = session.resource('s3') # The worker process and the shared queue are created only when # needed self.queue = None self.result_queue = None self.errors_queue = None self.done_queue = None self.error = None self.abort_requested = False self.worker_processes_count = jobs self.worker_processes = [] # The parts DB is a dictionary mapping each bucket key name to a list # of uploaded parts. # This structure is updated by the _refresh_parts_db method call self.parts_db = collections.defaultdict(list) # Statistics about uploads self.upload_stats = collections.defaultdict(FileUploadStatistics) def close(self): """ Wait for all the asynchronous operations to be done """ if self.queue: for _ in self.worker_processes: self.queue.put(None) for process in self.worker_processes: process.join() def abort(self): """ Abort all the operations """ if self.queue: for process in self.worker_processes: os.kill(process.pid, signal.SIGINT) self.close() def _ensure_async(self): """ Ensure that the asynchronous execution infrastructure is up and the worker process is running """ if self.queue: return self.queue = multiprocessing.JoinableQueue( maxsize=self.worker_processes_count) self.result_queue = multiprocessing.Queue() self.errors_queue = multiprocessing.Queue() self.done_queue = multiprocessing.Queue() for process_number in range(self.worker_processes_count): process = multiprocessing.Process( target=self.worker_process_main, args=(process_number,)) process.start() self.worker_processes.append(process) def _retrieve_results(self): """ Receive the results from workers and update the local parts DB, making sure that each part list is sorted by part number """ # Wait for all the current jobs to be completed self.queue.join() touched_keys = [] while not self.result_queue.empty(): result = self.result_queue.get() touched_keys.append(result["key"]) self.parts_db[result["key"]].append(result["part"]) # Save the upload end time of the part stats = self.upload_stats[result["key"]] stats.set_part_end_time(result["part_number"], result['end_time']) for key in touched_keys: self.parts_db[key] = sorted( self.parts_db[key], key=operator.itemgetter("PartNumber")) # Read the results of completed uploads while not self.done_queue.empty(): result = self.done_queue.get() self.upload_stats[result["key"]].update(result) def _handle_async_errors(self): """ If an upload error has been discovered, stop the upload process, stop all the workers and raise an exception :return: """ # If an error has already been reported, do nothing if self.error: return try: self.error = self.errors_queue.get_nowait() except EmptyQueue: return logging.error("Error received from upload worker: %s", self.error) self.abort() raise CloudUploadingError(self.error) def worker_process_main(self, process_number): """ Repeatedly grab a task from the queue and execute it, until a task containing "None" is grabbed, indicating that the process must stop. :param int process_number: the process number, used in the logging output """ logging.info("Upload process started (worker %s)", process_number) while True: task = self.queue.get() if not task: self.queue.task_done() break try: self.worker_process_execute_job(task, process_number) except Exception as exc: logging.error('Upload error: %s (worker %s)', force_str(exc), process_number) logging.debug('Exception details:', exc_info=exc) self.errors_queue.put(force_str(exc)) except KeyboardInterrupt: if not self.abort_requested: logging.info('Got abort request: upload cancelled ' '(worker %s)', process_number) self.abort_requested = True finally: self.queue.task_done() logging.info("Upload process stopped (worker %s)", process_number) def worker_process_execute_job(self, task, process_number): """ Exec a single task :param Dict task: task to execute :param int process_number: the process number, used in the logging output :return: """ if task["job_type"] == "upload_part": if self.abort_requested: logging.info( "Skipping %s, part %s (worker %s)" % ( task["key"], task["part_number"], process_number)) os.unlink(task["body"]) return else: logging.info( "Uploading %s, part %s (worker %s)" % ( task["key"], task["part_number"], process_number)) with open(task["body"], "rb") as fp: part = self.upload_part( task["mpu"], task["key"], fp, task["part_number"]) os.unlink(task["body"]) self.result_queue.put( { "key": task["key"], "part_number": task["part_number"], "end_time": datetime.datetime.now(), "part": part, }) elif task["job_type"] == "complete_multipart_upload": if self.abort_requested: logging.info( "Aborting %s (worker %s)" % ( task["key"], process_number)) self.abort_multipart_upload( task["mpu"], task["key"]) self.done_queue.put( { "key": task["key"], "end_time": datetime.datetime.now(), "status": "aborted" }) else: logging.info( "Completing %s (worker %s)" % ( task["key"], process_number)) self.complete_multipart_upload( task["mpu"], task["key"], task["parts"]) self.done_queue.put( { "key": task["key"], "end_time": datetime.datetime.now(), "status": "done" }) else: raise ValueError("Unknown task: %s", repr(task)) def test_connectivity(self): """ Test the S3 connectivity trying to access a bucket """ try: self.s3.Bucket(self.bucket_name).load() # We are not even interested in the existence of the bucket, # we just want to try if aws is reachable return True except EndpointConnectionError as exc: logging.error("Can't connect to Amazon AWS/S3: %s", exc) return False def setup_bucket(self): """ Search for the target bucket. Create it if not exists """ try: # Search the bucket on s3 self.s3.meta.client.head_bucket(Bucket=self.bucket_name) except ClientError as exc: # If a client error is thrown, then check that it was a 405 error. # If it was a 404 error, then the bucket does not exist. error_code = exc.response['Error']['Code'] if error_code == '404': # Get the current region from client. # Do not use session.region_name here because it may be None region = self.s3.meta.client.meta.region_name logging.info( "Bucket %s does not exist, creating it on region %s", self.bucket_name, region) create_bucket_config = { 'ACL': 'private', } # The location constraint is required during bucket creation # for all regions outside of us-east-1. This constraint cannot # be specified in us-east-1; specifying it in this region # results in a failure, so we will only # add it if we are deploying outside of us-east-1. # See https://github.com/boto/boto3/issues/125 if region != 'us-east-1': create_bucket_config['CreateBucketConfiguration'] = { 'LocationConstraint': region, } self.s3.Bucket(self.bucket_name).create(**create_bucket_config) else: raise def upload_fileobj(self, fileobj, key): """ Synchronously upload the content of a file-like object to a cloud key """ additional_args = {} if self.encryption: additional_args['ServerSideEncryption'] = self.encryption self.s3.meta.client.upload_fileobj( Fileobj=fileobj, Bucket=self.bucket_name, Key=key, ExtraArgs=additional_args) def create_multipart_upload(self, key): """ Create a new multipart upload :param key: The key to use in the cloud service :return: The multipart upload handle """ return self.s3.meta.client.create_multipart_upload( Bucket=self.bucket_name, Key=key) def async_upload_part(self, mpu, key, body, part_number): """ Asynchronously upload a part into a multipart upload :param mpu: The multipart upload handle :param str key: The key to use in the cloud service :param any body: A stream-like object to upload :param int part_number: Part number, starting from 1 :return: The part handle """ # If an error has already been reported, do nothing if self.error: return self._ensure_async() self._handle_async_errors() # Save the upload start time of the part stats = self.upload_stats[key] stats.set_part_start_time(part_number, datetime.datetime.now()) # If the body is a named temporary file use it directly # WARNING: this imply that the file will be deleted after the upload if hasattr(body, 'name') and hasattr(body, 'delete') and \ not body.delete: fp = body else: # Write a temporary file with the part contents with NamedTemporaryFile(delete=False) as fp: shutil.copyfileobj(body, fp, BUFSIZE) # Pass the job to the uploader process self.queue.put({ "job_type": "upload_part", "mpu": mpu, "key": key, "body": fp.name, "part_number": part_number, }) def upload_part(self, mpu, key, body, part_number): """ Upload a part into this multipart upload :param mpu: The multipart upload handle :param str key: The key to use in the cloud service :param object body: A stream-like object to upload :param int part_number: Part number, starting from 1 :return: The part handle """ part = self.s3.meta.client.upload_part( Body=body, Bucket=self.bucket_name, Key=key, UploadId=mpu["UploadId"], PartNumber=part_number) return { 'PartNumber': part_number, 'ETag': part['ETag'], } def async_complete_multipart_upload(self, mpu, key): """ Asynchronously finish a certain multipart upload. This method grant that the final S3 call will happen after all the already scheduled parts have been uploaded. :param mpu: The multipart upload handle :param str key: The key to use in the cloud service """ # If an error has already been reported, do nothing if self.error: return self._ensure_async() self._handle_async_errors() # Wait for all the current jobs to be completed and # receive all available updates on worker status self._retrieve_results() # Finish the job in S3 to the uploader process self.queue.put({ "job_type": "complete_multipart_upload", "mpu": mpu, "key": key, "parts": self.parts_db[key], }) del self.parts_db[key] def complete_multipart_upload(self, mpu, key, parts): """ Finish a certain multipart upload :param mpu: The multipart upload handle :param str key: The key to use in the cloud service :param parts: The list of parts composing the multipart upload """ self.s3.meta.client.complete_multipart_upload( Bucket=self.bucket_name, Key=key, UploadId=mpu["UploadId"], MultipartUpload={"Parts": parts}) def abort_multipart_upload(self, mpu, key): """ Abort a certain multipart upload :param mpu: The multipart upload handle :param str key: The key to use in the cloud service """ self.s3.meta.client.abort_multipart_upload( Bucket=self.bucket_name, Key=key, UploadId=mpu["UploadId"]) def wait_for_multipart_upload(self, key): """ Wait for a multipart upload to be completed and return the result :param str key: The key to use in the cloud service """ # The upload must exist assert key in self.upload_stats # async_complete_multipart_upload must have been called assert key not in self.parts_db # If status is still uploading the upload has not finished yet while self.upload_stats[key]['status'] == 'uploading': # Wait for all the current jobs to be completed and # receive all available updates on worker status self._retrieve_results() return self.upload_stats[key] class S3BackupUploader(object): """ S3 upload client """ def __init__(self, server_name, postgres, cloud_interface, compression=None): """ Object responsible for handling interactions with S3 :param str server_name: The name of the server as configured in Barman :param PostgreSQLConnection postgres: The PostgreSQL connection info :param CloudInterface cloud_interface: The interface to use to upload the backup :param str compression: Compression algorithm to use """ self.compression = compression self.server_name = server_name self.postgres = postgres self.cloud_interface = cloud_interface # Stats self.copy_start_time = None self.copy_end_time = None def backup_copy(self, controller, backup_info): """ Perform the actual copy of the backup uploading it to S3. First, it copies one tablespace at a time, then the PGDATA directory, and finally configuration files (if outside PGDATA). Bandwidth limitation, according to configuration, is applied in the process. This method is the core of base backup copy using Rsync+Ssh. :param barman.cloud.S3UploadController controller: upload controller :param barman.infofile.BackupInfo backup_info: backup information """ # Store the start time self.copy_start_time = datetime.datetime.now() # List of paths to be excluded by the PGDATA copy exclude = [] # Process every tablespace if backup_info.tablespaces: for tablespace in backup_info.tablespaces: # If the tablespace location is inside the data directory, # exclude and protect it from being copied twice during # the data directory copy if tablespace.location.startswith(backup_info.pgdata + '/'): exclude += [ tablespace.location[len(backup_info.pgdata):]] # Exclude and protect the tablespace from being copied again # during the data directory copy exclude += ["/pg_tblspc/%s" % tablespace.oid] # Copy the tablespace directory. # NOTE: Barman should archive only the content of directory # "PG_" + PG_MAJORVERSION + "_" + CATALOG_VERSION_NO # but CATALOG_VERSION_NO is not easy to retrieve, so we copy # "PG_" + PG_MAJORVERSION + "_*" # It could select some spurious directory if a development or # a beta version have been used, but it's good enough for a # production system as it filters out other major versions. controller.upload_directory( label=tablespace.name, src=tablespace.location, dst='%s' % tablespace.oid, exclude=['/*'] + EXCLUDE_LIST, include=['/PG_%s_*' % self.postgres.server_major_version], ) # Copy PGDATA directory controller.upload_directory( label='pgdata', src=backup_info.pgdata, dst='data', exclude=PGDATA_EXCLUDE_LIST + EXCLUDE_LIST + exclude ) # At last copy pg_control controller.add_file( label='pg_control', src='%s/global/pg_control' % backup_info.pgdata, dst='data', path='global/pg_control' ) # Copy configuration files (if not inside PGDATA) external_config_files = backup_info.get_external_config_files() included_config_files = [] for config_file in external_config_files: # Add included files to a list, they will be handled later if config_file.file_type == 'include': included_config_files.append(config_file) continue # If the ident file is missing, it isn't an error condition # for PostgreSQL. # Barman is consistent with this behavior. optional = False if config_file.file_type == 'ident_file': optional = True # Create the actual copy jobs in the controller controller.add_file( label=config_file.file_type, src=config_file.path, dst='data', path=os.path.basename(config_file.path), optional=optional, ) # Check for any include directives in PostgreSQL configuration # Currently, include directives are not supported for files that # reside outside PGDATA. These files must be manually backed up. # Barman will emit a warning and list those files if any(included_config_files): msg = ("The usage of include directives is not supported " "for files that reside outside PGDATA.\n" "Please manually backup the following files:\n" "\t%s\n" % "\n\t".join(icf.path for icf in included_config_files)) logging.warning(msg) def backup(self): """ Upload a Backup to S3 """ backup_info = BackupInfo( backup_id=datetime.datetime.now().strftime('%Y%m%dT%H%M%S')) backup_info.set_attribute("systemid", self.postgres.get_systemid()) key_prefix = os.path.join( self.cloud_interface.path, self.server_name, 'base', backup_info.backup_id ) controller = S3UploadController( self.cloud_interface, key_prefix, self.compression) strategy = ConcurrentBackupStrategy(self.postgres) logging.info("Starting backup %s", backup_info.backup_id) strategy.start_backup(backup_info) try: self.backup_copy(controller, backup_info) logging.info("Stopping backup %s", backup_info.backup_id) strategy.stop_backup(backup_info) pgdata_stat = os.stat(backup_info.pgdata) controller.add_fileobj( label='backup_label', fileobj=BytesIO(backup_info.backup_label.encode('UTF-8')), dst='data', path='backup_label', uid=pgdata_stat.st_uid, gid=pgdata_stat.st_gid, ) # Closing the controller will finalize all the running uploads controller.close() # Store the end time self.copy_end_time = datetime.datetime.now() # Store statistics about the copy backup_info.set_attribute("copy_stats", controller.statistics()) # Use BaseException instead of Exception to catch events like # KeyboardInterrupt (e.g.: CTRL-C) except BaseException as exc: # Mark the backup as failed and exit self.handle_backup_errors("uploading data", backup_info, exc) raise SystemExit(1) finally: try: with BytesIO() as backup_info_file: backup_info.save(file_object=backup_info_file) backup_info_file.seek(0, os.SEEK_SET) key = os.path.join(controller.key_prefix, 'backup.info') logging.info("Uploading %s", key) self.cloud_interface.upload_fileobj(backup_info_file, key) except BaseException as exc: # Mark the backup as failed and exit self.handle_backup_errors("uploading backup.info file", backup_info, exc) raise SystemExit(1) logging.info("Backup end at LSN: %s (%s, %08X)", backup_info.end_xlog, backup_info.end_wal, backup_info.end_offset) logging.info( "Backup completed (start time: %s, elapsed time: %s)", self.copy_start_time, human_readable_timedelta( datetime.datetime.now() - self.copy_start_time)) # Create a restore point after a backup target_name = 'barman_%s' % backup_info.backup_id self.postgres.create_restore_point(target_name) def handle_backup_errors(self, action, backup_info, exc): """ Mark the backup as failed and exit :param str action: the upload phase that has failed :param barman.infofile.BackupInfo backup_info: the backup info file :param BaseException exc: the exception that caused the failure """ msg_lines = force_str(exc).strip().splitlines() # If the exception has no attached message use the raw # type name if len(msg_lines) == 0: msg_lines = [type(exc).__name__] if backup_info: # Use only the first line of exception message # in backup_info error field backup_info.set_attribute("status", "FAILED") backup_info.set_attribute( "error", "failure %s (%s)" % (action, msg_lines[0])) logging.error("Backup failed %s (%s)", action, msg_lines[0]) logging.debug('Exception details:', exc_info=exc) barman-2.10/barman/infofile.py0000644000015500001620000006264013571162460014470 0ustar 00000000000000# Copyright (C) 2013-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . import ast import collections import inspect import logging import os import dateutil.parser import dateutil.tz import barman.compression from barman import xlog from barman.exceptions import BackupInfoBadInitialisation from barman.utils import fsync_dir # Named tuple representing a Tablespace with 'name' 'oid' and 'location' # as property. Tablespace = collections.namedtuple('Tablespace', 'name oid location') # Named tuple representing a file 'path' with an associated 'file_type' TypedFile = collections.namedtuple('ConfFile', 'file_type path') _logger = logging.getLogger(__name__) def output_tablespace_list(tablespaces): """ Return the literal representation of tablespaces as a Python string :param tablespaces tablespaces: list of Tablespaces objects :return str: Literal representation of tablespaces """ if tablespaces: return repr([tuple(item) for item in tablespaces]) else: return None def load_tablespace_list(string): """ Load the tablespaces as a Python list of namedtuple Uses ast to evaluate information about tablespaces. The returned list is used to create a list of namedtuple :param str string: :return list: list of namedtuple representing all the tablespaces """ obj = ast.literal_eval(string) if obj: return [Tablespace._make(item) for item in obj] else: return None def null_repr(obj): """ Return the literal representation of an object :param object obj: object to represent :return str|None: Literal representation of an object or None """ return repr(obj) if obj else None def load_datetime_tz(time_str): """ Load datetime and ensure the result is timezone-aware. If the parsed timestamp is naive, transform it into a timezone-aware one using the local timezone. :param str time_str: string representing a timestamp :return datetime: the parsed timezone-aware datetime """ # dateutil parser returns naive or tz-aware string depending on the format # of the input string timestamp = dateutil.parser.parse(time_str) # if the parsed timestamp is naive, forces it to local timezone if timestamp.tzinfo is None: timestamp = timestamp.replace(tzinfo=dateutil.tz.tzlocal()) return timestamp class Field(object): def __init__(self, name, dump=None, load=None, default=None, doc=None): """ Field descriptor to be used with a FieldListFile subclass. The resulting field is like a normal attribute with two optional associated function: to_str and from_str The Field descriptor can also be used as a decorator class C(FieldListFile): x = Field('x') @x.dump def x(val): return '0x%x' % val @x.load def x(val): return int(val, 16) :param str name: the name of this attribute :param callable dump: function used to dump the content to a disk :param callable load: function used to reload the content from disk :param default: default value for the field :param str doc: docstring of the filed """ self.name = name self.to_str = dump self.from_str = load self.default = default self.__doc__ = doc # noinspection PyUnusedLocal def __get__(self, obj, objtype=None): if obj is None: return self if not hasattr(obj, '_fields'): obj._fields = {} return obj._fields.setdefault(self.name, self.default) def __set__(self, obj, value): if not hasattr(obj, '_fields'): obj._fields = {} obj._fields[self.name] = value def __delete__(self, obj): raise AttributeError("can't delete attribute") def dump(self, to_str): return type(self)(self.name, to_str, self.from_str, self.__doc__) def load(self, from_str): return type(self)(self.name, self.to_str, from_str, self.__doc__) class FieldListFile(object): __slots__ = ('_fields', 'filename') def __init__(self, **kwargs): """ Represent a predefined set of keys with the associated value. The constructor build the object assigning every keyword argument to the corresponding attribute. If a provided keyword argument doesn't has a corresponding attribute an AttributeError exception is raised. The values provided to the constructor must be of the appropriate type for the corresponding attribute. The constructor will not attempt any validation or conversion on them. This class is meant to be an abstract base class. :raises: AttributeError """ self._fields = {} self.filename = None for name in kwargs: field = getattr(type(self), name, None) if isinstance(field, Field): setattr(self, name, kwargs[name]) else: raise AttributeError('unknown attribute %s' % name) @classmethod def from_meta_file(cls, filename): """ Factory method that read the specified file and build an object with its content. :param str filename: the file to read """ o = cls() o.load(filename) return o def save(self, filename=None, file_object=None): """ Serialize the object to the specified file or file object If a file_object is specified it will be used. If the filename is not specified it uses the one memorized in the filename attribute. If neither the filename attribute and parameter are set a ValueError exception is raised. :param str filename: path of the file to write :param file file_object: a file like object to write in :param str filename: the file to write :raises: ValueError """ if file_object: info = file_object else: filename = filename or self.filename if filename: info = open(filename + '.tmp', 'wb') else: info = None if not info: raise ValueError( 'either a valid filename or a file_object must be specified') try: for name, field in sorted(inspect.getmembers(type(self))): value = getattr(self, name, None) if isinstance(field, Field): if callable(field.to_str): value = field.to_str(value) info.write(("%s=%s\n" % (name, value)).encode('UTF-8')) finally: if not file_object: info.close() if not file_object: os.rename(filename + '.tmp', filename) fsync_dir(os.path.normpath(os.path.dirname(filename))) def load(self, filename=None, file_object=None): """ Replaces the current object content with the one deserialized from the provided file. This method set the filename attribute. A ValueError exception is raised if the provided file contains any invalid line. :param str filename: path of the file to read :param file file_object: a file like object to read from :param str filename: the file to read :raises: ValueError """ if file_object: info = file_object elif filename: info = open(filename, 'rb') else: raise ValueError( 'either filename or file_object must be specified') # detect the filename if a file_object is passed if not filename and file_object: if hasattr(file_object, 'name'): filename = file_object.name # canonicalize filename if filename: self.filename = os.path.abspath(filename) else: self.filename = None filename = '' # This is only for error reporting with info: for line in info: line = line.decode('UTF-8') # skip spaces and comments if line.isspace() or line.rstrip().startswith('#'): continue # parse the line of form "key = value" try: name, value = [x.strip() for x in line.split('=', 1)] except ValueError: raise ValueError('invalid line %s in file %s' % ( line.strip(), filename)) # use the from_str function to parse the value field = getattr(type(self), name, None) if value == 'None': value = None elif isinstance(field, Field) and callable(field.from_str): value = field.from_str(value) setattr(self, name, value) def items(self): """ Return a generator returning a list of (key, value) pairs. If a filed has a dump function defined, it will be used. """ for name, field in sorted(inspect.getmembers(type(self))): value = getattr(self, name, None) if isinstance(field, Field): if callable(field.to_str): value = field.to_str(value) yield (name, value) def __repr__(self): return "%s(%s)" % ( self.__class__.__name__, ', '.join(['%s=%r' % x for x in self.items()])) class WalFileInfo(FieldListFile): """ Metadata of a WAL file. """ __slots__ = ('orig_filename',) name = Field('name', doc='base name of WAL file') size = Field('size', load=int, doc='WAL file size after compression') time = Field('time', load=float, doc='WAL file modification time ' '(seconds since epoch)') compression = Field('compression', doc='compression type') @classmethod def from_file(cls, filename, unidentified_compression=None, **kwargs): """ Factory method to generate a WalFileInfo from a WAL file. Every keyword argument will override any attribute from the provided file. If a keyword argument doesn't has a corresponding attribute an AttributeError exception is raised. :param str filename: the file to inspect :param str unidentified_compression: the compression to set if the current schema is not identifiable. """ identify_compression = barman.compression.identify_compression stat = os.stat(filename) kwargs.setdefault('name', os.path.basename(filename)) kwargs.setdefault('size', stat.st_size) kwargs.setdefault('time', stat.st_mtime) if 'compression' not in kwargs: kwargs['compression'] = identify_compression(filename) \ or unidentified_compression obj = cls(**kwargs) obj.filename = "%s.meta" % filename obj.orig_filename = filename return obj def to_xlogdb_line(self): """ Format the content of this object as a xlogdb line. """ return "%s\t%s\t%s\t%s\n" % ( self.name, self.size, self.time, self.compression) @classmethod def from_xlogdb_line(cls, line): """ Parse a line from xlog catalogue :param str line: a line in the wal database to parse :rtype: WalFileInfo """ try: name, size, time, compression = line.split() except ValueError: # Old format compatibility (no compression) compression = None try: name, size, time = line.split() except ValueError: raise ValueError("cannot parse line: %r" % (line,)) # The to_xlogdb_line method writes None values as literal 'None' if compression == 'None': compression = None size = int(size) time = float(time) return cls(name=name, size=size, time=time, compression=compression) def to_json(self): """ Return an equivalent dictionary that can be encoded in json """ return dict(self.items()) def relpath(self): """ Returns the WAL file path relative to the server's wals_directory """ return os.path.join(xlog.hash_dir(self.name), self.name) def fullpath(self, server): """ Returns the WAL file full path :param barman.server.Server server: the server that owns the wal file """ return os.path.join(server.config.wals_directory, self.relpath()) class BackupInfo(FieldListFile): #: Conversion to string EMPTY = 'EMPTY' STARTED = 'STARTED' FAILED = 'FAILED' WAITING_FOR_WALS = 'WAITING_FOR_WALS' DONE = 'DONE' SYNCING = 'SYNCING' STATUS_COPY_DONE = (WAITING_FOR_WALS, DONE) STATUS_ALL = (EMPTY, STARTED, WAITING_FOR_WALS, DONE, SYNCING, FAILED) STATUS_NOT_EMPTY = (STARTED, WAITING_FOR_WALS, DONE, SYNCING, FAILED) STATUS_ARCHIVING = (STARTED, WAITING_FOR_WALS, DONE, SYNCING) #: Status according to retention policies OBSOLETE = 'OBSOLETE' VALID = 'VALID' POTENTIALLY_OBSOLETE = 'OBSOLETE*' NONE = '-' RETENTION_STATUS = (OBSOLETE, VALID, POTENTIALLY_OBSOLETE, NONE) version = Field('version', load=int) pgdata = Field('pgdata') # Parse the tablespaces as a literal Python list of namedtuple # Output the tablespaces as a literal Python list of tuple tablespaces = Field('tablespaces', load=load_tablespace_list, dump=output_tablespace_list) # Timeline is an integer timeline = Field('timeline', load=int) begin_time = Field('begin_time', load=load_datetime_tz) begin_xlog = Field('begin_xlog') begin_wal = Field('begin_wal') begin_offset = Field('begin_offset', load=int) size = Field('size', load=int) deduplicated_size = Field('deduplicated_size', load=int) end_time = Field('end_time', load=load_datetime_tz) end_xlog = Field('end_xlog') end_wal = Field('end_wal') end_offset = Field('end_offset', load=int) status = Field('status', default=EMPTY) server_name = Field('server_name') error = Field('error') mode = Field('mode') config_file = Field('config_file') hba_file = Field('hba_file') ident_file = Field('ident_file') included_files = Field('included_files', load=ast.literal_eval, dump=null_repr) backup_label = Field('backup_label', load=ast.literal_eval, dump=null_repr) copy_stats = Field('copy_stats', load=ast.literal_eval, dump=null_repr) xlog_segment_size = Field('xlog_segment_size', load=int, default=xlog.DEFAULT_XLOG_SEG_SIZE) systemid = Field('systemid') __slots__ = 'backup_id', 'backup_version' def __init__(self, backup_id, **kwargs): """ Stores meta information about a single backup :param str,None backup_id: """ self.backup_version = 2 self.backup_id = backup_id super(BackupInfo, self).__init__(**kwargs) def get_required_wal_segments(self): """ Get the list of required WAL segments for the current backup """ return xlog.generate_segment_names( self.begin_wal, self.end_wal, self.version, self.xlog_segment_size) def get_external_config_files(self): """ Identify all the configuration files that reside outside the PGDATA. Returns a list of TypedFile objects. :rtype: list[TypedFile] """ config_files = [] for file_type in ('config_file', 'hba_file', 'ident_file'): config_file = getattr(self, file_type, None) if config_file: # Consider only those that reside outside of the original # PGDATA directory if config_file.startswith(self.pgdata): _logger.debug("Config file '%s' already in PGDATA", config_file[len(self.pgdata) + 1:]) continue config_files.append(TypedFile(file_type, config_file)) # Check for any include directives in PostgreSQL configuration # Currently, include directives are not supported for files that # reside outside PGDATA. These files must be manually backed up. # Barman will emit a warning and list those files if self.included_files: for included_file in self.included_files: if not included_file.startswith(self.pgdata): config_files.append(TypedFile('include', included_file)) return config_files def set_attribute(self, key, value): """ Set a value for a given key """ setattr(self, key, value) def to_dict(self): """ Return the backup_info content as a simple dictionary :return dict: """ result = dict(self.items()) result.update(backup_id=self.backup_id, server_name=self.server_name, mode=self.mode, tablespaces=self.tablespaces, included_files=self.included_files, copy_stats=self.copy_stats) return result def to_json(self): """ Return an equivalent dictionary that uses only json-supported types """ data = self.to_dict() # Convert fields which need special types not supported by json if data.get('tablespaces') is not None: data['tablespaces'] = [list(item) for item in data['tablespaces']] if data.get('begin_time') is not None: data['begin_time'] = data['begin_time'].ctime() if data.get('end_time') is not None: data['end_time'] = data['end_time'].ctime() return data @classmethod def from_json(cls, server, json_backup_info): """ Factory method that builds a BackupInfo object from a json dictionary :param barman.Server server: the server related to the Backup :param dict json_backup_info: the data set containing values from json """ data = dict(json_backup_info) # Convert fields which need special types not supported by json if data.get('tablespaces') is not None: data['tablespaces'] = [Tablespace._make(item) for item in data['tablespaces']] if data.get('begin_time') is not None: data['begin_time'] = load_datetime_tz(data['begin_time']) if data.get('end_time') is not None: data['end_time'] = load_datetime_tz(data['end_time']) # Instantiate a BackupInfo object using the converted fields return cls(server, **data) class LocalBackupInfo(BackupInfo): __slots__ = 'server', 'config', 'backup_manager' def __init__(self, server, info_file=None, backup_id=None, **kwargs): """ Stores meta information about a single backup :param Server server: :param file,str,None info_file: :param str,None backup_id: :raise BackupInfoBadInitialisation: if the info_file content is invalid or neither backup_info or """ # Initialises the attributes for the object # based on the predefined keys super(LocalBackupInfo, self).__init__(backup_id=backup_id, **kwargs) self.server = server self.config = server.config self.backup_manager = self.server.backup_manager self.server_name = self.config.name self.mode = self.backup_manager.mode if backup_id: # Cannot pass both info_file and backup_id if info_file: raise BackupInfoBadInitialisation( 'both info_file and backup_id parameters are set') self.backup_id = backup_id self.filename = self.get_filename() self.systemid = server.systemid # Check if a backup info file for a given server and a given ID # already exists. If so load the values from the file. if os.path.exists(self.filename): self.load(filename=self.filename) elif info_file: if hasattr(info_file, 'read'): # We have been given a file-like object self.load(file_object=info_file) else: # Just a file name self.load(filename=info_file) self.backup_id = self.detect_backup_id() elif not info_file: raise BackupInfoBadInitialisation( 'backup_id and info_file parameters are both unset') # Manage backup version for new backup structure try: # the presence of pgdata directory is the marker of version 1 if self.backup_id is not None and os.path.exists( os.path.join(self.get_basebackup_directory(), 'pgdata')): self.backup_version = 1 except Exception as e: _logger.warning("Error detecting backup_version, " "use default: 2. Failure reason: %s", e) def get_list_of_files(self, target): """ Get the list of files for the current backup """ # Walk down the base backup directory if target in ('data', 'standalone', 'full'): for root, _, files in os.walk(self.get_basebackup_directory()): for f in files: yield os.path.join(root, f) if target in 'standalone': # List all the WAL files for this backup for x in self.get_required_wal_segments(): yield self.server.get_wal_full_path(x) if target in ('wal', 'full'): for wal_info in self.server.get_wal_until_next_backup( self, include_history=True): yield wal_info.fullpath(self.server) def detect_backup_id(self): """ Detect the backup ID from the name of the parent dir of the info file """ if self.filename: return os.path.basename(os.path.dirname(self.filename)) else: return None def get_basebackup_directory(self): """ Get the default filename for the backup.info file based on backup ID and server directory for base backups """ return os.path.join(self.config.basebackups_directory, self.backup_id) def get_data_directory(self, tablespace_oid=None): """ Get path to the backup data dir according with the backup version If tablespace_oid is passed, build the path to the tablespace base directory, according with the backup version :param int tablespace_oid: the oid of a valid tablespace """ # Check if a tablespace oid is passed and if is a valid oid if tablespace_oid is not None: if self.tablespaces is None: raise ValueError("Invalid tablespace OID %s" % tablespace_oid) invalid_oid = all( str(tablespace_oid) != str(tablespace.oid) for tablespace in self.tablespaces) if invalid_oid: raise ValueError("Invalid tablespace OID %s" % tablespace_oid) # Build the requested path according to backup_version value path = [self.get_basebackup_directory()] # Check te version of the backup if self.backup_version == 2: # If an oid has been provided, we are looking for a tablespace if tablespace_oid is not None: # Append the oid to the basedir of the backup path.append(str(tablespace_oid)) else: # Looking for the data dir path.append('data') else: # Backup v1, use pgdata as base path.append('pgdata') # If a oid has been provided, we are looking for a tablespace. if tablespace_oid is not None: # Append the path to pg_tblspc/oid folder inside pgdata path.extend(('pg_tblspc', str(tablespace_oid))) # Return the built path return os.path.join(*path) def get_filename(self): """ Get the default filename for the backup.info file based on backup ID and server directory for base backups """ return os.path.join(self.get_basebackup_directory(), 'backup.info') def save(self, filename=None, file_object=None): if not file_object: # Make sure the containing directory exists filename = filename or self.filename dir_name = os.path.dirname(filename) if not os.path.exists(dir_name): os.makedirs(dir_name) super(LocalBackupInfo, self).save(filename=filename, file_object=file_object) barman-2.10/barman/backup_executor.py0000644000015500001620000021163413571162460016057 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ Backup Executor module A Backup Executor is a class responsible for the execution of a backup. Specific implementations of backups are defined by classes that derive from BackupExecutor (e.g.: backup with rsync through Ssh). A BackupExecutor is invoked by the BackupManager for backup operations. """ import datetime import logging import os import re import shutil from abc import ABCMeta, abstractmethod from functools import partial import dateutil.parser from distutils.version import LooseVersion as Version from barman import output, xlog from barman.command_wrappers import PgBaseBackup from barman.config import BackupOptions from barman.copy_controller import RsyncCopyController from barman.exceptions import (CommandFailedException, DataTransferFailure, FsOperationFailed, PostgresConnectionError, PostgresIsInRecovery, SshCommandException) from barman.fs import UnixRemoteCommand from barman.infofile import BackupInfo from barman.postgres_plumbing import EXCLUDE_LIST, PGDATA_EXCLUDE_LIST from barman.remote_status import RemoteStatusMixin from barman.utils import (force_str, human_readable_timedelta, mkpath, total_seconds, with_metaclass) _logger = logging.getLogger(__name__) class BackupExecutor(with_metaclass(ABCMeta, RemoteStatusMixin)): """ Abstract base class for any backup executors. """ def __init__(self, backup_manager, mode=None): """ Base constructor :param barman.backup.BackupManager backup_manager: the BackupManager assigned to the executor """ super(BackupExecutor, self).__init__() self.backup_manager = backup_manager self.server = backup_manager.server self.config = backup_manager.config self.strategy = None self._mode = mode self.copy_start_time = None self.copy_end_time = None # Holds the action being executed. Used for error messages. self.current_action = None def init(self): """ Initialise the internal state of the backup executor """ self.current_action = "starting backup" @property def mode(self): """ Property that defines the mode used for the backup. If a strategy is present, the returned string is a combination of the mode of the executor and the mode of the strategy (eg: rsync-exclusive) :return str: a string describing the mode used for the backup """ strategy_mode = self.strategy.mode if strategy_mode: return "%s-%s" % (self._mode, strategy_mode) else: return self._mode @abstractmethod def backup(self, backup_info): """ Perform a backup for the server - invoked by BackupManager.backup() :param barman.infofile.LocalBackupInfo backup_info: backup information """ def check(self, check_strategy): """ Perform additional checks - invoked by BackupManager.check() :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ def status(self): """ Set additional status info - invoked by BackupManager.status() """ def fetch_remote_status(self): """ Get additional remote status info - invoked by BackupManager.get_remote_status() This method does not raise any exception in case of errors, but set the missing values to None in the resulting dictionary. :rtype: dict[str, None|str] """ return {} def _purge_unused_wal_files(self, backup_info): """ It the provided backup is the first, purge all WAL files before the backup start. :param barman.infofile.LocalBackupInfo backup_info: the backup to check """ # Do nothing if the begin_wal is not defined yet if backup_info.begin_wal is None: return # If this is the first backup, purge unused WAL files previous_backup = self.backup_manager.get_previous_backup( backup_info.backup_id) if not previous_backup: output.info("This is the first backup for server %s", self.config.name) removed = self.backup_manager.remove_wal_before_backup( backup_info) if removed: # report the list of the removed WAL files output.info("WAL segments preceding the current backup " "have been found:", log=False) for wal_name in removed: output.info("\t%s from server %s " "has been removed", wal_name, self.config.name) def _start_backup_copy_message(self, backup_info): """ Output message for backup start :param barman.infofile.LocalBackupInfo backup_info: backup information """ output.info("Copying files for %s", backup_info.backup_id) def _stop_backup_copy_message(self, backup_info): """ Output message for backup end :param barman.infofile.LocalBackupInfo backup_info: backup information """ output.info("Copy done (time: %s)", human_readable_timedelta(datetime.timedelta( seconds=backup_info.copy_stats['copy_time']))) def _parse_ssh_command(ssh_command): """ Parse a user provided ssh command to a single command and a list of arguments In case of error, the first member of the result (the command) will be None :param ssh_command: a ssh command provided by the user :return tuple[str,list[str]]: the command and a list of options """ try: ssh_options = ssh_command.split() except AttributeError: return None, [] ssh_command = ssh_options.pop(0) ssh_options.extend("-o BatchMode=yes -o StrictHostKeyChecking=no".split()) return ssh_command, ssh_options class PostgresBackupExecutor(BackupExecutor): """ Concrete class for backup via pg_basebackup (plain format). Relies on pg_basebackup command to copy data files from the PostgreSQL cluster using replication protocol. """ def __init__(self, backup_manager): """ Constructor :param barman.backup.BackupManager backup_manager: the BackupManager assigned to the executor """ super(PostgresBackupExecutor, self).__init__(backup_manager, 'postgres') self.validate_configuration() self.strategy = PostgresBackupStrategy(self) def validate_configuration(self): """ Validate the configuration for this backup executor. If the configuration is not compatible this method will disable the server. """ # Check for the correct backup options if BackupOptions.EXCLUSIVE_BACKUP in self.config.backup_options: self.config.backup_options.remove( BackupOptions.EXCLUSIVE_BACKUP) output.warning( "'exclusive_backup' is not a valid backup_option " "using postgres backup_method. " "Overriding with 'concurrent_backup'.") # Apply the default backup strategy if BackupOptions.CONCURRENT_BACKUP not in \ self.config.backup_options: self.config.backup_options.add(BackupOptions.CONCURRENT_BACKUP) output.debug("The default backup strategy for " "postgres backup_method is: concurrent_backup") # Forbid tablespace_bandwidth_limit option. # It works only with rsync based backups. if self.config.tablespace_bandwidth_limit: self.server.config.disabled = True # Report the error in the configuration errors message list self.server.config.msg_list.append( 'tablespace_bandwidth_limit option is not supported by ' 'postgres backup_method') # Forbid reuse_backup option. # It works only with rsync based backups. if self.config.reuse_backup in ('copy', 'link'): self.server.config.disabled = True # Report the error in the configuration errors message list self.server.config.msg_list.append( 'reuse_backup option is not supported by ' 'postgres backup_method') # Forbid network_compression option. # It works only with rsync based backups. if self.config.network_compression: self.server.config.disabled = True # Report the error in the configuration errors message list self.server.config.msg_list.append( 'network_compression option is not supported by ' 'postgres backup_method') # bandwidth_limit option is supported by pg_basebackup executable # starting from Postgres 9.4 if self.server.config.bandwidth_limit: # This method is invoked too early to have a working streaming # connection. So we avoid caching the result by directly # invoking fetch_remote_status() instead of get_remote_status() remote_status = self.fetch_remote_status() # If pg_basebackup is present and it doesn't support bwlimit # disable the server. if remote_status['pg_basebackup_bwlimit'] is False: self.server.config.disabled = True # Report the error in the configuration errors message list self.server.config.msg_list.append( "bandwidth_limit option is not supported by " "pg_basebackup version (current: %s, required: 9.4)" % remote_status['pg_basebackup_version']) def backup(self, backup_info): """ Perform a backup for the server - invoked by BackupManager.backup() through the generic interface of a BackupExecutor. This implementation is responsible for performing a backup through the streaming protocol. The connection must be made with a superuser or a user having REPLICATION permissions (see PostgreSQL documentation, Section 20.2), and pg_hba.conf must explicitly permit the replication connection. The server must also be configured with enough max_wal_senders to leave at least one session available for the backup. :param barman.infofile.LocalBackupInfo backup_info: backup information """ try: # Set data directory and server version self.strategy.start_backup(backup_info) backup_info.save() if backup_info.begin_wal is not None: output.info("Backup start at LSN: %s (%s, %08X)", backup_info.begin_xlog, backup_info.begin_wal, backup_info.begin_offset) else: output.info("Backup start at LSN: %s", backup_info.begin_xlog) # Start the copy self.current_action = "copying files" self._start_backup_copy_message(backup_info) self.backup_copy(backup_info) self._stop_backup_copy_message(backup_info) self.strategy.stop_backup(backup_info) # If this is the first backup, purge eventually unused WAL files self._purge_unused_wal_files(backup_info) except CommandFailedException as e: _logger.exception(e) raise def check(self, check_strategy): """ Perform additional checks for PostgresBackupExecutor :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check('pg_basebackup') remote_status = self.get_remote_status() # Check for the presence of pg_basebackup check_strategy.result( self.config.name, remote_status['pg_basebackup_installed']) # remote_status['pg_basebackup_compatible'] is None if # pg_basebackup cannot be executed and False if it is # not compatible. hint = None check_strategy.init_check('pg_basebackup compatible') if not remote_status['pg_basebackup_compatible']: pg_version = 'Unknown' basebackup_version = 'Unknown' if self.server.streaming is not None: pg_version = self.server.streaming.server_txt_version if remote_status['pg_basebackup_version'] is not None: basebackup_version = remote_status['pg_basebackup_version'] hint = "PostgreSQL version: %s, pg_basebackup version: %s" % ( pg_version, basebackup_version ) check_strategy.result( self.config.name, remote_status['pg_basebackup_compatible'], hint=hint) # Skip further checks if the postgres connection doesn't work. # We assume that this error condition will be reported by # another check. postgres = self.server.postgres if postgres is None or postgres.server_txt_version is None: return check_strategy.init_check('pg_basebackup supports tablespaces mapping') # We can't backup a cluster with tablespaces if the tablespace # mapping option is not available in the installed version # of pg_basebackup. pg_version = Version(postgres.server_txt_version) tablespaces_list = postgres.get_tablespaces() # pg_basebackup supports the tablespace-mapping option, # so there are no problems in this case if remote_status['pg_basebackup_tbls_mapping']: hint = None check_result = True # pg_basebackup doesn't support the tablespace-mapping option # and the data directory contains tablespaces, we can't correctly # backup it. elif tablespaces_list: check_result = False if pg_version < '9.3': hint = "pg_basebackup can't be used with tablespaces " \ "and PostgreSQL older than 9.3" else: hint = "pg_basebackup 9.4 or higher is required for " \ "tablespaces support" # Even if pg_basebackup doesn't support the tablespace-mapping # option, this location can be correctly backed up as doesn't # have any tablespaces else: check_result = True if pg_version < '9.3': hint = "pg_basebackup can be used as long as tablespaces " \ "support is not required" else: hint = "pg_basebackup 9.4 or higher is required for " \ "tablespaces support" check_strategy.result( self.config.name, check_result, hint=hint ) def fetch_remote_status(self): """ Gather info from the remote server. This method does not raise any exception in case of errors, but set the missing values to None in the resulting dictionary. """ remote_status = dict.fromkeys( ('pg_basebackup_compatible', 'pg_basebackup_installed', 'pg_basebackup_tbls_mapping', 'pg_basebackup_path', 'pg_basebackup_bwlimit', 'pg_basebackup_version'), None) # Test pg_basebackup existence version_info = PgBaseBackup.get_version_info( self.server.path) if version_info['full_path']: remote_status["pg_basebackup_installed"] = True remote_status["pg_basebackup_path"] = version_info['full_path'] remote_status["pg_basebackup_version"] = ( version_info['full_version']) pgbasebackup_version = version_info['major_version'] else: remote_status["pg_basebackup_installed"] = False return remote_status # Is bandwidth limit supported? if remote_status['pg_basebackup_version'] is not None \ and remote_status['pg_basebackup_version'] < '9.4': remote_status['pg_basebackup_bwlimit'] = False else: remote_status['pg_basebackup_bwlimit'] = True # Is the tablespace mapping option supported? if pgbasebackup_version >= '9.4': remote_status["pg_basebackup_tbls_mapping"] = True else: remote_status["pg_basebackup_tbls_mapping"] = False # Retrieve the PostgreSQL version pg_version = None if self.server.streaming is not None: pg_version = self.server.streaming.server_major_version # If any of the two versions is unknown, we can't compare them if pgbasebackup_version is None or pg_version is None: # Return here. We are unable to retrieve # pg_basebackup or PostgreSQL versions return remote_status # pg_version is not None so transform into a Version object # for easier comparison between versions pg_version = Version(pg_version) # pg_basebackup 9.2 is compatible only with PostgreSQL 9.2. if "9.2" == pg_version == pgbasebackup_version: remote_status["pg_basebackup_compatible"] = True # other versions are compatible with lesser versions of PostgreSQL # WARNING: The development versions of `pg_basebackup` are considered # higher than the stable versions here, but this is not an issue # because it accepts everything that is less than # the `pg_basebackup` version(e.g. '9.6' is less than '9.6devel') elif "9.2" < pg_version <= pgbasebackup_version: remote_status["pg_basebackup_compatible"] = True else: remote_status["pg_basebackup_compatible"] = False return remote_status def backup_copy(self, backup_info): """ Perform the actual copy of the backup using pg_basebackup. First, manages tablespaces, then copies the base backup using the streaming protocol. In case of failure during the execution of the pg_basebackup command the method raises a DataTransferFailure, this trigger the retrying mechanism when necessary. :param barman.infofile.LocalBackupInfo backup_info: backup information """ # Make sure the destination directory exists, ensure the # right permissions to the destination dir backup_dest = backup_info.get_data_directory() dest_dirs = [backup_dest] # Store the start time self.copy_start_time = datetime.datetime.now() # Manage tablespaces, we need to handle them now in order to # be able to relocate them inside the # destination directory of the basebackup tbs_map = {} if backup_info.tablespaces: for tablespace in backup_info.tablespaces: source = tablespace.location destination = backup_info.get_data_directory(tablespace.oid) tbs_map[source] = destination dest_dirs.append(destination) # Prepare the destination directories for pgdata and tablespaces self._prepare_backup_destination(dest_dirs) # Retrieve pg_basebackup version information remote_status = self.get_remote_status() # If pg_basebackup supports --max-rate set the bandwidth_limit bandwidth_limit = None if remote_status['pg_basebackup_bwlimit']: bandwidth_limit = self.config.bandwidth_limit # Make sure we are not wasting precious PostgreSQL resources # for the whole duration of the copy self.server.close() pg_basebackup = PgBaseBackup( connection=self.server.streaming, destination=backup_dest, command=remote_status['pg_basebackup_path'], version=remote_status['pg_basebackup_version'], app_name=self.config.streaming_backup_name, tbs_mapping=tbs_map, bwlimit=bandwidth_limit, immediate=self.config.immediate_checkpoint, path=self.server.path, retry_times=self.config.basebackup_retry_times, retry_sleep=self.config.basebackup_retry_sleep, retry_handler=partial(self._retry_handler, dest_dirs)) # Do the actual copy try: pg_basebackup() except CommandFailedException as e: msg = "data transfer failure on directory '%s'" % \ backup_info.get_data_directory() raise DataTransferFailure.from_command_error( 'pg_basebackup', e, msg) # Store the end time self.copy_end_time = datetime.datetime.now() # Store statistics about the copy copy_time = total_seconds(self.copy_end_time - self.copy_start_time) backup_info.copy_stats = { 'copy_time': copy_time, 'total_time': copy_time, } # Check for the presence of configuration files outside the PGDATA external_config = backup_info.get_external_config_files() if any(external_config): msg = ("pg_basebackup does not copy the PostgreSQL " "configuration files that reside outside PGDATA. " "Please manually backup the following files:\n" "\t%s\n" % "\n\t".join(ecf.path for ecf in external_config)) # Show the warning only if the EXTERNAL_CONFIGURATION option # is not specified in the backup_options. if (BackupOptions.EXTERNAL_CONFIGURATION not in self.config.backup_options): output.warning(msg) else: _logger.debug(msg) def _retry_handler(self, dest_dirs, command, args, kwargs, attempt, exc): """ Handler invoked during a backup in case of retry. The method simply warn the user of the failure and remove the already existing directories of the backup. :param list[str] dest_dirs: destination directories :param RsyncPgData command: Command object being executed :param list args: command args :param dict kwargs: command kwargs :param int attempt: attempt number (starting from 0) :param CommandFailedException exc: the exception which caused the failure """ output.warning("Failure executing a backup using pg_basebackup " "(attempt %s)", attempt) output.warning("The files copied so far will be removed and " "the backup process will restart in %s seconds", self.config.basebackup_retry_sleep) # Remove all the destination directories and reinit the backup self._prepare_backup_destination(dest_dirs) def _prepare_backup_destination(self, dest_dirs): """ Prepare the destination of the backup, including tablespaces. This method is also responsible for removing a directory if it already exists and for ensuring the correct permissions for the created directories :param list[str] dest_dirs: destination directories """ for dest_dir in dest_dirs: # Remove a dir if exists. Ignore eventual errors shutil.rmtree(dest_dir, ignore_errors=True) # create the dir mkpath(dest_dir) # Ensure the right permissions to the destination directory # chmod 0700 octal os.chmod(dest_dir, 448) def _start_backup_copy_message(self, backup_info): output.info("Starting backup copy via pg_basebackup for %s", backup_info.backup_id) class SshBackupExecutor(with_metaclass(ABCMeta, BackupExecutor)): """ Abstract base class for any backup executors based on Ssh remote connections. This class is also a factory for exclusive/concurrent backup strategy objects. Raises a SshCommandException if 'ssh_command' is not set. """ def __init__(self, backup_manager, mode): """ Constructor of the abstract class for backups via Ssh :param barman.backup.BackupManager backup_manager: the BackupManager assigned to the executor """ super(SshBackupExecutor, self).__init__(backup_manager, mode) # Retrieve the ssh command and the options necessary for the # remote ssh access. self.ssh_command, self.ssh_options = _parse_ssh_command( backup_manager.config.ssh_command) # Requires ssh_command to be set if not self.ssh_command: raise SshCommandException( 'Missing or invalid ssh_command in barman configuration ' 'for server %s' % backup_manager.config.name) # Apply the default backup strategy backup_options = self.config.backup_options concurrent_backup = ( BackupOptions.CONCURRENT_BACKUP in backup_options) exclusive_backup = ( BackupOptions.EXCLUSIVE_BACKUP in backup_options) if not concurrent_backup and not exclusive_backup: self.config.backup_options.add(BackupOptions.EXCLUSIVE_BACKUP) output.warning( "No backup strategy set for server '%s' " "(using default 'exclusive_backup').", self.config.name) output.warning( "The default backup strategy will change " "to 'concurrent_backup' in the future. " "Explicitly set 'backup_options' to silence this warning.") # Depending on the backup options value, create the proper strategy if BackupOptions.CONCURRENT_BACKUP in self.config.backup_options: # Concurrent backup strategy self.strategy = LocalConcurrentBackupStrategy(self) else: # Exclusive backup strategy self.strategy = ExclusiveBackupStrategy(self) def _update_action_from_strategy(self): """ Update the executor's current action with the one of the strategy. This is used during exception handling to let the caller know where the failure occurred. """ action = getattr(self.strategy, 'current_action', None) if action: self.current_action = action @abstractmethod def backup_copy(self, backup_info): """ Performs the actual copy of a backup for the server :param barman.infofile.LocalBackupInfo backup_info: backup information """ def backup(self, backup_info): """ Perform a backup for the server - invoked by BackupManager.backup() through the generic interface of a BackupExecutor. This implementation is responsible for performing a backup through a remote connection to the PostgreSQL server via Ssh. The specific set of instructions depends on both the specific class that derives from SshBackupExecutor and the selected strategy (e.g. exclusive backup through Rsync). :param barman.infofile.LocalBackupInfo backup_info: backup information """ # Start the backup, all the subsequent code must be wrapped in a # try except block which finally issues a stop_backup command try: self.strategy.start_backup(backup_info) except BaseException: self._update_action_from_strategy() raise try: # save any metadata changed by start_backup() call # This must be inside the try-except, because it could fail backup_info.save() if backup_info.begin_wal is not None: output.info("Backup start at LSN: %s (%s, %08X)", backup_info.begin_xlog, backup_info.begin_wal, backup_info.begin_offset) else: output.info("Backup start at LSN: %s", backup_info.begin_xlog) # If this is the first backup, purge eventually unused WAL files self._purge_unused_wal_files(backup_info) # Start the copy self.current_action = "copying files" self._start_backup_copy_message(backup_info) self.backup_copy(backup_info) self._stop_backup_copy_message(backup_info) # Try again to purge eventually unused WAL files. At this point # the begin_wal value is surely known. Doing it twice is safe # because this function is useful only during the first backup. self._purge_unused_wal_files(backup_info) except BaseException: # we do not need to do anything here besides re-raising the # exception. It will be handled in the external try block. output.error("The backup has failed %s", self.current_action) raise else: self.current_action = "issuing stop of the backup" finally: output.info("Asking PostgreSQL server to finalize the backup.") try: self.strategy.stop_backup(backup_info) except BaseException: self._update_action_from_strategy() raise def check(self, check_strategy): """ Perform additional checks for SshBackupExecutor, including Ssh connection (executing a 'true' command on the remote server) and specific checks for the given backup strategy. :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check('ssh') hint = "PostgreSQL server" cmd = None minimal_ssh_output = None try: cmd = UnixRemoteCommand(self.ssh_command, self.ssh_options, path=self.server.path) minimal_ssh_output = ''.join(cmd.get_last_output()) except FsOperationFailed as e: hint = force_str(e).strip() # Output the result check_strategy.result(self.config.name, cmd is not None, hint=hint) # Check if the communication channel is "clean" if minimal_ssh_output: check_strategy.init_check('ssh output clean') check_strategy.result( self.config.name, False, hint="the configured ssh_command must not add anything to " "the remote command output") # If SSH works but PostgreSQL is not responding server_txt_version = self.server.get_remote_status().get( 'server_txt_version') if cmd is not None and server_txt_version is None: # Check for 'backup_label' presence last_backup = self.server.get_backup( self.server.get_last_backup_id(BackupInfo.STATUS_NOT_EMPTY) ) # Look for the latest backup in the catalogue if last_backup: check_strategy.init_check('backup_label') # Get PGDATA and build path to 'backup_label' backup_label = os.path.join(last_backup.pgdata, 'backup_label') # Verify that backup_label exists in the remote PGDATA. # If so, send an alert. Do not show anything if OK. exists = cmd.exists(backup_label) if exists: hint = "Check that the PostgreSQL server is up " \ "and no 'backup_label' file is in PGDATA." check_strategy.result(self.config.name, False, hint=hint) try: # Invoke specific checks for the backup strategy self.strategy.check(check_strategy) except BaseException: self._update_action_from_strategy() raise def status(self): """ Set additional status info for SshBackupExecutor using remote commands via Ssh, as well as those defined by the given backup strategy. """ try: # Invoke the status() method for the given strategy self.strategy.status() except BaseException: self._update_action_from_strategy() raise def fetch_remote_status(self): """ Get remote information on PostgreSQL using Ssh, such as last archived WAL file This method does not raise any exception in case of errors, but set the missing values to None in the resulting dictionary. :rtype: dict[str, None|str] """ remote_status = {} # Retrieve the last archived WAL using a Ssh connection on # the remote server and executing an 'ls' command. Only # for pre-9.4 versions of PostgreSQL. try: if self.server.postgres and \ self.server.postgres.server_version < 90400: remote_status['last_archived_wal'] = None if self.server.postgres.get_setting('data_directory') and \ self.server.postgres.get_setting('archive_command'): cmd = UnixRemoteCommand(self.ssh_command, self.ssh_options, path=self.server.path) # Here the name of the PostgreSQL WALs directory is # hardcoded, but that doesn't represent a problem as # this code runs only for PostgreSQL < 9.4 archive_dir = os.path.join( self.server.postgres.get_setting('data_directory'), 'pg_xlog', 'archive_status') out = str(cmd.list_dir_content(archive_dir, ['-t'])) for line in out.splitlines(): if line.endswith('.done'): name = line[:-5] if xlog.is_any_xlog_file(name): remote_status['last_archived_wal'] = name break except (PostgresConnectionError, FsOperationFailed) as e: _logger.warning("Error retrieving PostgreSQL status: %s", e) return remote_status def _start_backup_copy_message(self, backup_info): number_of_workers = self.config.parallel_jobs message = "Starting backup copy via rsync/SSH for %s" % ( backup_info.backup_id,) if number_of_workers > 1: message += " (%s jobs)" % number_of_workers output.info(message) class PassiveBackupExecutor(BackupExecutor): """ Dummy backup executors for Passive servers. Raises a SshCommandException if 'primary_ssh_command' is not set. """ def __init__(self, backup_manager): """ Constructor of Dummy backup executors for Passive servers. :param barman.backup.BackupManager backup_manager: the BackupManager assigned to the executor """ super(PassiveBackupExecutor, self).__init__(backup_manager) # Retrieve the ssh command and the options necessary for the # remote ssh access. self.ssh_command, self.ssh_options = _parse_ssh_command( backup_manager.config.primary_ssh_command) # Requires ssh_command to be set if not self.ssh_command: raise SshCommandException( 'Invalid primary_ssh_command in barman configuration ' 'for server %s' % backup_manager.config.name) def backup(self, backup_info): """ This method should never be called, because this is a passive server :param barman.infofile.LocalBackupInfo backup_info: backup information """ # The 'backup' command is not available on a passive node. # If we get here, there is a programming error assert False def check(self, check_strategy): """ Perform additional checks for PassiveBackupExecutor, including Ssh connection to the primary (executing a 'true' command on the remote server). :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check('ssh') hint = 'Barman primary node' cmd = None minimal_ssh_output = None try: cmd = UnixRemoteCommand(self.ssh_command, self.ssh_options, path=self.server.path) minimal_ssh_output = ''.join(cmd.get_last_output()) except FsOperationFailed as e: hint = force_str(e).strip() # Output the result check_strategy.result(self.config.name, cmd is not None, hint=hint) # Check if the communication channel is "clean" if minimal_ssh_output: check_strategy.init_check('ssh output clean') check_strategy.result( self.config.name, False, hint="the configured ssh_command must not add anything to " "the remote command output") def status(self): """ Set additional status info for PassiveBackupExecutor. """ # On passive nodes show the primary_ssh_command output.result('status', self.config.name, "primary_ssh_command", "SSH command to primary server", self.config.primary_ssh_command) @property def mode(self): """ Property that defines the mode used for the backup. :return str: a string describing the mode used for the backup """ return 'passive' class RsyncBackupExecutor(SshBackupExecutor): """ Concrete class for backup via Rsync+Ssh. It invokes PostgreSQL commands to start and stop the backup, depending on the defined strategy. Data files are copied using Rsync via Ssh. It heavily relies on methods defined in the SshBackupExecutor class from which it derives. """ def __init__(self, backup_manager): """ Constructor :param barman.backup.BackupManager backup_manager: the BackupManager assigned to the strategy """ super(RsyncBackupExecutor, self).__init__(backup_manager, 'rsync') def backup_copy(self, backup_info): """ Perform the actual copy of the backup using Rsync. First, it copies one tablespace at a time, then the PGDATA directory, and finally configuration files (if outside PGDATA). Bandwidth limitation, according to configuration, is applied in the process. This method is the core of base backup copy using Rsync+Ssh. :param barman.infofile.LocalBackupInfo backup_info: backup information """ # Retrieve the previous backup metadata, then calculate safe_horizon previous_backup = self.backup_manager.get_previous_backup( backup_info.backup_id) safe_horizon = None reuse_backup = None # Store the start time self.copy_start_time = datetime.datetime.now() if previous_backup: # safe_horizon is a tz-aware timestamp because BackupInfo class # ensures that property reuse_backup = self.config.reuse_backup safe_horizon = previous_backup.begin_time # Create the copy controller object, specific for rsync, # which will drive all the copy operations. Items to be # copied are added before executing the copy() method controller = RsyncCopyController( path=self.server.path, ssh_command=self.ssh_command, ssh_options=self.ssh_options, network_compression=self.config.network_compression, reuse_backup=reuse_backup, safe_horizon=safe_horizon, retry_times=self.config.basebackup_retry_times, retry_sleep=self.config.basebackup_retry_sleep, workers=self.config.parallel_jobs, ) # List of paths to be excluded by the PGDATA copy exclude_and_protect = [] # Process every tablespace if backup_info.tablespaces: for tablespace in backup_info.tablespaces: # If the tablespace location is inside the data directory, # exclude and protect it from being copied twice during # the data directory copy if tablespace.location.startswith(backup_info.pgdata + '/'): exclude_and_protect += [ tablespace.location[len(backup_info.pgdata):]] # Exclude and protect the tablespace from being copied again # during the data directory copy exclude_and_protect += ["/pg_tblspc/%s" % tablespace.oid] # Make sure the destination directory exists in order for # smart copy to detect that no file is present there tablespace_dest = backup_info.get_data_directory( tablespace.oid) mkpath(tablespace_dest) # Add the tablespace directory to the list of objects # to be copied by the controller. # NOTE: Barman should archive only the content of directory # "PG_" + PG_MAJORVERSION + "_" + CATALOG_VERSION_NO # but CATALOG_VERSION_NO is not easy to retrieve, so we copy # "PG_" + PG_MAJORVERSION + "_*" # It could select some spurious directory if a development or # a beta version have been used, but it's good enough for a # production system as it filters out other major versions. controller.add_directory( label=tablespace.name, src=':%s/' % tablespace.location, dst=tablespace_dest, exclude=['/*'] + EXCLUDE_LIST, include=['/PG_%s_*' % self.server.postgres.server_major_version], bwlimit=self.config.get_bwlimit(tablespace), reuse=self._reuse_path(previous_backup, tablespace), item_class=controller.TABLESPACE_CLASS, ) # Make sure the destination directory exists in order for smart copy # to detect that no file is present there backup_dest = backup_info.get_data_directory() mkpath(backup_dest) # Add the PGDATA directory to the list of objects to be copied # by the controller controller.add_directory( label='pgdata', src=':%s/' % backup_info.pgdata, dst=backup_dest, exclude=PGDATA_EXCLUDE_LIST + EXCLUDE_LIST, exclude_and_protect=exclude_and_protect, bwlimit=self.config.get_bwlimit(), reuse=self._reuse_path(previous_backup), item_class=controller.PGDATA_CLASS, ) # At last copy pg_control controller.add_file( label='pg_control', src=':%s/global/pg_control' % backup_info.pgdata, dst='%s/global/pg_control' % (backup_dest,), item_class=controller.PGCONTROL_CLASS, ) # Copy configuration files (if not inside PGDATA) external_config_files = backup_info.get_external_config_files() included_config_files = [] for config_file in external_config_files: # Add included files to a list, they will be handled later if config_file.file_type == 'include': included_config_files.append(config_file) continue # If the ident file is missing, it isn't an error condition # for PostgreSQL. # Barman is consistent with this behavior. optional = False if config_file.file_type == 'ident_file': optional = True # Create the actual copy jobs in the controller controller.add_file( label=config_file.file_type, src=':%s' % config_file.path, dst=backup_dest, optional=optional, item_class=controller.CONFIG_CLASS, ) # Execute the copy try: controller.copy() # TODO: Improve the exception output except CommandFailedException as e: msg = "data transfer failure" raise DataTransferFailure.from_command_error( 'rsync', e, msg) # Store the end time self.copy_end_time = datetime.datetime.now() # Store statistics about the copy backup_info.copy_stats = controller.statistics() # Check for any include directives in PostgreSQL configuration # Currently, include directives are not supported for files that # reside outside PGDATA. These files must be manually backed up. # Barman will emit a warning and list those files if any(included_config_files): msg = ("The usage of include directives is not supported " "for files that reside outside PGDATA.\n" "Please manually backup the following files:\n" "\t%s\n" % "\n\t".join(icf.path for icf in included_config_files)) # Show the warning only if the EXTERNAL_CONFIGURATION option # is not specified in the backup_options. if (BackupOptions.EXTERNAL_CONFIGURATION not in self.config.backup_options): output.warning(msg) else: _logger.debug(msg) def _reuse_path(self, previous_backup_info, tablespace=None): """ If reuse_backup is 'copy' or 'link', builds the path of the directory to reuse, otherwise always returns None. If oid is None, it returns the full path of PGDATA directory of the previous_backup otherwise it returns the path to the specified tablespace using it's oid. :param barman.infofile.LocalBackupInfo previous_backup_info: backup to be reused :param barman.infofile.Tablespace tablespace: the tablespace to copy :returns: a string containing the local path with data to be reused or None :rtype: str|None """ oid = None if tablespace: oid = tablespace.oid if self.config.reuse_backup in ('copy', 'link') and \ previous_backup_info is not None: try: return previous_backup_info.get_data_directory(oid) except ValueError: return None class BackupStrategy(with_metaclass(ABCMeta, object)): """ Abstract base class for a strategy to be used by a backup executor. """ #: Regex for START WAL LOCATION info START_TIME_RE = re.compile(r'^START TIME: (.*)', re.MULTILINE) #: Regex for START TIME info WAL_RE = re.compile(r'^START WAL LOCATION: (.*) \(file (.*)\)', re.MULTILINE) def __init__(self, postgres, mode=None): """ Constructor :param barman.postgres.PostgreSQLConnection postgres: the PostgreSQL connection """ self.postgres = postgres # Holds the action being executed. Used for error messages. self.current_action = None self.mode = mode def start_backup(self, backup_info): """ Issue a start of a backup - invoked by BackupExecutor.backup() :param barman.infofile.BackupInfo backup_info: backup information """ # Retrieve PostgreSQL server metadata self._pg_get_metadata(backup_info) # Record that we are about to start the backup self.current_action = "issuing start backup command" _logger.debug(self.current_action) @abstractmethod def stop_backup(self, backup_info): """ Issue a stop of a backup - invoked by BackupExecutor.backup() :param barman.infofile.LocalBackupInfo backup_info: backup information """ @abstractmethod def check(self, check_strategy): """ Perform additional checks - invoked by BackupExecutor.check() :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ # noinspection PyMethodMayBeStatic def status(self): """ Set additional status info - invoked by BackupExecutor.status() """ def _pg_get_metadata(self, backup_info): """ Load PostgreSQL metadata into the backup_info parameter :param barman.infofile.BackupInfo backup_info: backup information """ # Get the PostgreSQL data directory location self.current_action = 'detecting data directory' output.debug(self.current_action) data_directory = self.postgres.get_setting('data_directory') backup_info.set_attribute('pgdata', data_directory) # Set server version backup_info.set_attribute('version', self.postgres.server_version) # Set XLOG segment size backup_info.set_attribute('xlog_segment_size', self.postgres.xlog_segment_size) # Set configuration files location cf = self.postgres.get_configuration_files() for key in cf: backup_info.set_attribute(key, cf[key]) # Get tablespaces information self.current_action = 'detecting tablespaces' output.debug(self.current_action) tablespaces = self.postgres.get_tablespaces() if tablespaces and len(tablespaces) > 0: backup_info.set_attribute('tablespaces', tablespaces) for item in tablespaces: msg = "\t%s, %s, %s" % (item.oid, item.name, item.location) _logger.info(msg) @staticmethod def _backup_info_from_start_location(backup_info, start_info): """ Fill a backup info with information from a start_backup :param barman.infofile.BackupInfo backup_info: object representing a backup :param DictCursor start_info: the result of the pg_start_backup command """ backup_info.set_attribute('status', "STARTED") backup_info.set_attribute('begin_time', start_info['timestamp']) backup_info.set_attribute('begin_xlog', start_info['location']) # PostgreSQL 9.6+ directly provides the timeline if start_info.get('timeline') is not None: backup_info.set_attribute('timeline', start_info['timeline']) # Take a copy of stop_info because we are going to update it start_info = start_info.copy() start_info.update(xlog.location_to_xlogfile_name_offset( start_info['location'], start_info['timeline'], backup_info.xlog_segment_size)) # If file_name and file_offset are available, use them file_name = start_info.get('file_name') file_offset = start_info.get('file_offset') if file_name is not None and file_offset is not None: backup_info.set_attribute('begin_wal', start_info['file_name']) backup_info.set_attribute('begin_offset', start_info['file_offset']) # If the timeline is still missing, extract it from the file_name if backup_info.timeline is None: backup_info.set_attribute( 'timeline', int(start_info['file_name'][0:8], 16)) @staticmethod def _backup_info_from_stop_location(backup_info, stop_info): """ Fill a backup info with information from a backup stop location :param barman.infofile.BackupInfo backup_info: object representing a backup :param DictCursor stop_info: location info of stop backup """ # If file_name or file_offset are missing build them using the stop # location and the timeline. file_name = stop_info.get('file_name') file_offset = stop_info.get('file_offset') if file_name is None or file_offset is None: # Take a copy of stop_info because we are going to update it stop_info = stop_info.copy() # Get the timeline from the stop_info if available, otherwise # Use the one from the backup_label timeline = stop_info.get('timeline') if timeline is None: timeline = backup_info.timeline stop_info.update(xlog.location_to_xlogfile_name_offset( stop_info['location'], timeline, backup_info.xlog_segment_size)) backup_info.set_attribute('end_time', stop_info['timestamp']) backup_info.set_attribute('end_xlog', stop_info['location']) backup_info.set_attribute('end_wal', stop_info['file_name']) backup_info.set_attribute('end_offset', stop_info['file_offset']) def _backup_info_from_backup_label(self, backup_info): """ Fill a backup info with information from the backup_label file :param barman.infofile.BackupInfo backup_info: object representing a backup """ # If backup_label is present in backup_info use it... if backup_info.backup_label: backup_label_data = backup_info.backup_label # ... otherwise load backup info from backup_label file elif hasattr(backup_info, 'get_data_directory'): backup_label_path = os.path.join(backup_info.get_data_directory(), 'backup_label') with open(backup_label_path) as backup_label_file: backup_label_data = backup_label_file.read() else: raise ValueError("Failure accessing backup_label for backup %s" % backup_info.backup_id) # Parse backup label wal_info = self.WAL_RE.search(backup_label_data) start_time = self.START_TIME_RE.search(backup_label_data) if wal_info is None or start_time is None: raise ValueError("Failure parsing backup_label for backup %s" % backup_info.backup_id) # Set data in backup_info from backup_label backup_info.set_attribute('timeline', int(wal_info.group(2)[0:8], 16)) backup_info.set_attribute('begin_xlog', wal_info.group(1)) backup_info.set_attribute('begin_wal', wal_info.group(2)) backup_info.set_attribute('begin_offset', xlog.parse_lsn( wal_info.group(1)) % backup_info.xlog_segment_size) backup_info.set_attribute('begin_time', dateutil.parser.parse( start_time.group(1))) class PostgresBackupStrategy(BackupStrategy): """ Concrete class for postgres backup strategy. This strategy is for PostgresBackupExecutor only and is responsible for executing pre e post backup operations during a physical backup executed using pg_basebackup. """ def __init__(self, executor, *args, **kwargs): """ Constructor :param BackupExecutor executor: the BackupExecutor assigned to the strategy """ super(PostgresBackupStrategy, self).__init__( executor.server.postgres, *args, **kwargs) self.executor = executor def check(self, check_strategy): """ Perform additional checks for the Postgres backup strategy """ def start_backup(self, backup_info): """ Manage the start of an pg_basebackup backup The method performs all the preliminary operations required for a backup executed using pg_basebackup to start, gathering information from postgres and filling the backup_info. :param barman.infofile.LocalBackupInfo backup_info: backup information """ self.current_action = "initialising postgres backup_method" super(PostgresBackupStrategy, self).start_backup(backup_info) postgres = self.executor.server.postgres current_xlog_info = postgres.current_xlog_info self._backup_info_from_start_location(backup_info, current_xlog_info) def stop_backup(self, backup_info): """ Manage the stop of an pg_basebackup backup The method retrieves the information necessary for the backup.info file reading the backup_label file. Due of the nature of the pg_basebackup, information that are gathered during the start of a backup performed using rsync, are retrieved here :param barman.infofile.LocalBackupInfo backup_info: backup information """ self._backup_info_from_backup_label(backup_info) # Set data in backup_info from current_xlog_info self.current_action = "stopping postgres backup_method" output.info("Finalising the backup.") # Get the current xlog position postgres = self.executor.server.postgres current_xlog_info = postgres.current_xlog_info if current_xlog_info: self._backup_info_from_stop_location( backup_info, current_xlog_info) # Ask PostgreSQL to switch to another WAL file. This is needed # to archive the transaction log file containing the backup # end position, which is required to recover from the backup. try: postgres.switch_wal() except PostgresIsInRecovery: # Skip switching XLOG if a standby server pass class ExclusiveBackupStrategy(BackupStrategy): """ Concrete class for exclusive backup strategy. This strategy is for SshBackupExecutor only and is responsible for coordinating Barman with PostgreSQL on standard physical backup operations (known as 'exclusive' backup), such as invoking pg_start_backup() and pg_stop_backup() on the master server. """ def __init__(self, executor): """ Constructor :param BackupExecutor executor: the BackupExecutor assigned to the strategy """ super(ExclusiveBackupStrategy, self).__init__( executor.server.postgres, 'exclusive') self.executor = executor # Make sure that executor is of type SshBackupExecutor assert isinstance(executor, SshBackupExecutor) # Make sure that backup_options does not contain 'concurrent' assert (BackupOptions.CONCURRENT_BACKUP not in self.executor.config.backup_options) def start_backup(self, backup_info): """ Manage the start of an exclusive backup The method performs all the preliminary operations required for an exclusive physical backup to start, as well as preparing the information on the backup for Barman. :param barman.infofile.LocalBackupInfo backup_info: backup information """ super(ExclusiveBackupStrategy, self).start_backup(backup_info) label = "Barman backup %s %s" % ( backup_info.server_name, backup_info.backup_id) # Issue an exclusive start backup command _logger.debug("Start of exclusive backup") postgres = self.executor.server.postgres start_info = postgres.start_exclusive_backup(label) self._backup_info_from_start_location(backup_info, start_info) def stop_backup(self, backup_info): """ Manage the stop of an exclusive backup The method informs the PostgreSQL server that the physical exclusive backup is finished, as well as preparing the information returned by PostgreSQL for Barman. :param barman.infofile.LocalBackupInfo backup_info: backup information """ self.current_action = "issuing stop backup command" _logger.debug("Stop of exclusive backup") stop_info = self.executor.server.postgres.stop_exclusive_backup() self._backup_info_from_stop_location(backup_info, stop_info) def check(self, check_strategy): """ Perform additional checks for ExclusiveBackupStrategy :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ # Make sure PostgreSQL is not in recovery (i.e. is a master) check_strategy.init_check('not in recovery') if self.executor.server.postgres: is_in_recovery = self.executor.server.postgres.is_in_recovery if not is_in_recovery: check_strategy.result( self.executor.config.name, True) else: check_strategy.result( self.executor.config.name, False, hint='cannot perform exclusive backup on a standby') class ConcurrentBackupStrategy(BackupStrategy): """ Concrete class for concurrent backup strategy. This strategy is responsible for coordinating Barman with PostgreSQL on concurrent physical backup operations through concurrent backup PostgreSQL api or the pgespresso extension. """ def __init__(self, postgres): """ Constructor :param barman.postgres.PostgreSQLConnection postgres: the PostgreSQL connection """ super(ConcurrentBackupStrategy, self).__init__(postgres, 'concurrent') def check(self, check_strategy): """ Perform additional checks for ConcurrentBackupStrategy :param CheckStrategy check_strategy: the strategy for the management of the results of the various checks """ check_strategy.init_check('pgespresso extension') try: # We execute this check only if the postgres connection is non None # and the server version is lower than 9.6. On latest PostgreSQL # there is a native API for concurrent backups. if self.postgres and self.postgres.server_version < 90600: if self.postgres.has_pgespresso: check_strategy.result(self.executor.config.name, True) else: check_strategy.result( self.executor.config.name, False, hint='required for concurrent ' 'backups on PostgreSQL %s' % self.postgres.server_major_version) except PostgresConnectionError: # Skip the check if the postgres connection doesn't work. # We assume that this error condition will be reported by # another check. pass def start_backup(self, backup_info): """ Start of the backup. The method performs all the preliminary operations required for a backup to start. :param barman.infofile.BackupInfo backup_info: backup information """ super(ConcurrentBackupStrategy, self).start_backup(backup_info) label = "Barman backup %s %s" % ( backup_info.server_name, backup_info.backup_id) pg_version = self.postgres.server_version if pg_version >= 90600: # On 9.6+ execute native concurrent start backup _logger.debug("Start of native concurrent backup") self._concurrent_start_backup(backup_info, label) else: # On older Postgres use pgespresso _logger.debug("Start of concurrent backup with pgespresso") self._pgespresso_start_backup(backup_info, label) def stop_backup(self, backup_info): """ Stop backup wrapper :param barman.infofile.BackupInfo backup_info: backup information """ pg_version = self.postgres.server_version self.current_action = "issuing stop backup command" if pg_version >= 90600: # On 9.6+ execute native concurrent stop backup self.current_action += " (native concurrent)" _logger.debug("Stop of native concurrent backup") self._concurrent_stop_backup(backup_info) else: # On older Postgres use pgespresso self.current_action += " (pgespresso)" _logger.debug("Stop of concurrent backup with pgespresso") self._pgespresso_stop_backup(backup_info) # Write backup_label retrieved from postgres connection self.current_action = "writing backup label" # Ask PostgreSQL to switch to another WAL file. This is needed # to archive the transaction log file containing the backup # end position, which is required to recover from the backup. try: self.postgres.switch_wal() except PostgresIsInRecovery: # Skip switching XLOG if a standby server pass def _pgespresso_start_backup(self, backup_info, label): """ Start a concurrent backup using pgespresso :param barman.infofile.BackupInfo backup_info: backup information """ backup_info.set_attribute('status', "STARTED") start_info = self.postgres.pgespresso_start_backup(label) backup_info.set_attribute('backup_label', start_info['backup_label']) self._backup_info_from_backup_label(backup_info) def _pgespresso_stop_backup(self, backup_info): """ Stop a concurrent backup using pgespresso :param barman.infofile.BackupInfo backup_info: backup information """ stop_info = self.postgres.pgespresso_stop_backup( backup_info.backup_label) # Obtain a modifiable copy of stop_info object stop_info = stop_info.copy() # We don't know the exact backup stop location, # so we include the whole segment. stop_info['location'] = xlog.location_from_xlogfile_name_offset( stop_info['end_wal'], 0xFFFFFF) self._backup_info_from_stop_location(backup_info, stop_info) def _concurrent_start_backup(self, backup_info, label): """ Start a concurrent backup using the PostgreSQL 9.6 concurrent backup api :param barman.infofile.BackupInfo backup_info: backup information :param str label: the backup label """ start_info = self.postgres.start_concurrent_backup(label) self.postgres.allow_reconnect = False self._backup_info_from_start_location(backup_info, start_info) def _concurrent_stop_backup(self, backup_info): """ Stop a concurrent backup using the PostgreSQL 9.6 concurrent backup api :param barman.infofile.BackupInfo backup_info: backup information """ stop_info = self.postgres.stop_concurrent_backup() self.postgres.allow_reconnect = True backup_info.set_attribute('backup_label', stop_info['backup_label']) self._backup_info_from_stop_location(backup_info, stop_info) class LocalConcurrentBackupStrategy(ConcurrentBackupStrategy): """ Concrete class for concurrent backup strategy writing data locally. This strategy is for SshBackupExecutor only and is responsible for coordinating Barman with PostgreSQL on concurrent physical backup operations through the pgespresso extension. """ def __init__(self, executor): """ Constructor :param BackupExecutor executor: the BackupExecutor assigned to the strategy """ super(LocalConcurrentBackupStrategy, self).__init__( executor.server.postgres) self.executor = executor # Make sure that executor is of type SshBackupExecutor assert isinstance(executor, SshBackupExecutor) # Make sure that backup_options contains 'concurrent' assert (BackupOptions.CONCURRENT_BACKUP in self.executor.config.backup_options) # noinspection PyMethodMayBeStatic def _write_backup_label(self, backup_info): """ Write backup_label file inside PGDATA folder :param barman.infofile.LocalBackupInfo backup_info: backup information """ label_file = os.path.join(backup_info.get_data_directory(), 'backup_label') output.debug("Writing backup label: %s" % label_file) with open(label_file, 'w') as f: f.write(backup_info.backup_label) def stop_backup(self, backup_info): """ Stop backup wrapper :param barman.infofile.LocalBackupInfo backup_info: backup information """ super(LocalConcurrentBackupStrategy, self).stop_backup(backup_info) self._write_backup_label(backup_info) barman-2.10/barman/xlog.py0000644000015500001620000003413613571162460013645 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module contains functions to retrieve information about xlog files """ import collections import os import re from tempfile import NamedTemporaryFile from barman.exceptions import BadHistoryFileContents, BadXlogSegmentName # xlog file segment name parser (regular expression) _xlog_re = re.compile(r''' ^ ([\dA-Fa-f]{8}) # everything has a timeline (?: ([\dA-Fa-f]{8})([\dA-Fa-f]{8}) # segment name, if a wal file (?: # and optional \.[\dA-Fa-f]{8}\.backup # offset, if a backup label | \.partial # partial, if a partial file )? | \.history # or only .history, if a history file ) $ ''', re.VERBOSE) # xlog location parser for concurrent backup (regular expression) _location_re = re.compile(r'^([\dA-F]+)/([\dA-F]+)$') # Taken from xlog_internal.h from PostgreSQL sources #: XLOG_SEG_SIZE is the size of a single WAL file. This must be a power of 2 #: and larger than XLOG_BLCKSZ (preferably, a great deal larger than #: XLOG_BLCKSZ). DEFAULT_XLOG_SEG_SIZE = 1 << 24 #: This namedtuple is a container for the information #: contained inside history files HistoryFileData = collections.namedtuple( 'HistoryFileData', 'tli parent_tli switchpoint reason') def is_any_xlog_file(path): """ Return True if the xlog is either a WAL segment, a .backup file or a .history file, False otherwise. It supports either a full file path or a simple file name. :param str path: the file name to test :rtype: bool """ match = _xlog_re.match(os.path.basename(path)) if match: return True return False def is_history_file(path): """ Return True if the xlog is a .history file, False otherwise It supports either a full file path or a simple file name. :param str path: the file name to test :rtype: bool """ match = _xlog_re.search(os.path.basename(path)) if match and match.group(0).endswith('.history'): return True return False def is_backup_file(path): """ Return True if the xlog is a .backup file, False otherwise It supports either a full file path or a simple file name. :param str path: the file name to test :rtype: bool """ match = _xlog_re.search(os.path.basename(path)) if match and match.group(0).endswith('.backup'): return True return False def is_partial_file(path): """ Return True if the xlog is a .partial file, False otherwise It supports either a full file path or a simple file name. :param str path: the file name to test :rtype: bool """ match = _xlog_re.search(os.path.basename(path)) if match and match.group(0).endswith('.partial'): return True return False def is_wal_file(path): """ Return True if the xlog is a regular xlog file, False otherwise It supports either a full file path or a simple file name. :param str path: the file name to test :rtype: bool """ match = _xlog_re.search(os.path.basename(path)) if not match: return False ends_with_backup = match.group(0).endswith('.backup') ends_with_history = match.group(0).endswith('.history') ends_with_partial = match.group(0).endswith('.partial') if ends_with_backup: return False if ends_with_history: return False if ends_with_partial: return False return True def decode_segment_name(path): """ Retrieve the timeline, log ID and segment ID from the name of a xlog segment It can handle either a full file path or a simple file name. :param str path: the file name to decode :rtype: list[int] """ name = os.path.basename(path) match = _xlog_re.match(name) if not match: raise BadXlogSegmentName(name) return [int(x, 16) if x else None for x in match.groups()] def encode_segment_name(tli, log, seg): """ Build the xlog segment name based on timeline, log ID and segment ID :param int tli: timeline number :param int log: log number :param int seg: segment number :return str: segment file name """ return "%08X%08X%08X" % (tli, log, seg) def encode_history_file_name(tli): """ Build the history file name based on timeline :return str: history file name """ return "%08X.history" % (tli,) def xlog_segments_per_file(xlog_segment_size): """ Given that WAL files are named using the following pattern: this is the number of XLOG segments in an XLOG file. By XLOG file we don't mean an actual file on the filesystem, but the definition used in the PostgreSQL sources: meaning a set of files containing the same file number. :param int xlog_segment_size: The XLOG segment size in bytes :return int: The number of segments in an XLOG file """ return 0xffffffff // xlog_segment_size def xlog_file_size(xlog_segment_size): """ Given that WAL files are named using the following pattern: this is the size in bytes of an XLOG file, which is composed on many segments. See the documentation of `xlog_segments_per_file` for a commentary on the definition of `XLOG` file. :param int xlog_segment_size: The XLOG segment size in bytes :return int: The size of an XLOG file """ return xlog_segment_size * xlog_segments_per_file(xlog_segment_size) def generate_segment_names(begin, end=None, version=None, xlog_segment_size=None): """ Generate a sequence of XLOG segments starting from ``begin`` If an ``end`` segment is provided the sequence will terminate after returning it, otherwise the sequence will never terminate. If the XLOG segment size is known, this generator is precise, switching to the next file when required. It the XLOG segment size is unknown, this generator will generate all the possible XLOG file names. The size of an XLOG segment can be every power of 2 between the XLOG block size (8Kib) and the size of a log segment (4Gib) :param str begin: begin segment name :param str|None end: optional end segment name :param int|None version: optional postgres version as an integer (e.g. 90301 for 9.3.1) :param int xlog_segment_size: the size of a XLOG segment :rtype: collections.Iterable[str] :raise: BadXlogSegmentName """ begin_tli, begin_log, begin_seg = decode_segment_name(begin) end_tli, end_log, end_seg = None, None, None if end: end_tli, end_log, end_seg = decode_segment_name(end) # this method doesn't support timeline changes assert begin_tli == end_tli, ( "Begin segment (%s) and end segment (%s) " "must have the same timeline part" % (begin, end)) # If version is less than 9.3 the last segment must be skipped skip_last_segment = version is not None and version < 90300 # This is the number of XLOG segments in an XLOG file. By XLOG file # we don't mean an actual file on the filesystem, but the definition # used in the PostgreSQL sources: a set of files containing the # same file number. if xlog_segment_size: # The generator is operating is precise and correct mode: # knowing exactly when a switch to the next file is required xlog_seg_per_file = xlog_segments_per_file(xlog_segment_size) else: # The generator is operating only in precise mode: generating every # possible XLOG file name. xlog_seg_per_file = 0x7ffff # Start from the first xlog and generate the segments sequentially # If ``end`` has been provided, the while condition ensure the termination # otherwise this generator will never stop cur_log, cur_seg = begin_log, begin_seg while end is None or \ cur_log < end_log or \ (cur_log == end_log and cur_seg <= end_seg): yield encode_segment_name(begin_tli, cur_log, cur_seg) cur_seg += 1 if cur_seg > xlog_seg_per_file or ( skip_last_segment and cur_seg == xlog_seg_per_file): cur_seg = 0 cur_log += 1 def hash_dir(path): """ Get the directory where the xlog segment will be stored It can handle either a full file path or a simple file name. :param str|unicode path: xlog file name :return str: directory name """ tli, log, _ = decode_segment_name(path) # tli is always not None if log is not None: return "%08X%08X" % (tli, log) else: return '' def parse_lsn(lsn_string): """ Transform a string XLOG location, formatted as %X/%X, in the corresponding numeric representation :param str lsn_string: the string XLOG location, i.e. '2/82000168' :rtype: int """ lsn_list = lsn_string.split('/') if len(lsn_list) != 2: raise ValueError('Invalid LSN: %s', lsn_string) return (int(lsn_list[0], 16) << 32) + int(lsn_list[1], 16) def diff_lsn(lsn_string1, lsn_string2): """ Calculate the difference in bytes between two string XLOG location, formatted as %X/%X Tis function is a Python implementation of the ``pg_xlog_location_diff(str, str)`` PostgreSQL function. :param str lsn_string1: the string XLOG location, i.e. '2/82000168' :param str lsn_string2: the string XLOG location, i.e. '2/82000168' :rtype: int """ # If one the input is None returns None if lsn_string1 is None or lsn_string2 is None: return None return parse_lsn(lsn_string1) - parse_lsn(lsn_string2) def format_lsn(lsn): """ Transform a numeric XLOG location, in the corresponding %X/%X string representation :param int lsn: numeric XLOG location :rtype: str """ return "%X/%X" % (lsn >> 32, lsn & 0xFFFFFFFF) def location_to_xlogfile_name_offset(location, timeline, xlog_segment_size): """ Convert transaction log location string to file_name and file_offset This is a reimplementation of pg_xlogfile_name_offset PostgreSQL function This method returns a dictionary containing the following data: * file_name * file_offset :param str location: XLOG location :param int timeline: timeline :param int xlog_segment_size: the size of a XLOG segment :rtype: dict """ lsn = parse_lsn(location) log = lsn >> 32 seg = (lsn & xlog_file_size(xlog_segment_size)) >> 24 offset = lsn & 0xFFFFFF return { 'file_name': encode_segment_name(timeline, log, seg), 'file_offset': offset, } def location_from_xlogfile_name_offset(file_name, file_offset): """ Convert file_name and file_offset to a transaction log location. This is the inverted function of PostgreSQL's pg_xlogfile_name_offset function. :param str file_name: a WAL file name :param int file_offset: a numeric offset :rtype: str """ decoded_segment = decode_segment_name(file_name) location = ( (decoded_segment[1] << 32) + (decoded_segment[2] << 24) + file_offset) return format_lsn(location) def decode_history_file(wal_info, comp_manager): """ Read an history file and parse its contents. Each line in the file represents a timeline switch, each field is separated by tab, empty lines are ignored and lines starting with '#' are comments. Each line is composed by three fields: parentTLI, switchpoint and reason. "parentTLI" is the ID of the parent timeline. "switchpoint" is the WAL position where the switch happened "reason" is an human-readable explanation of why the timeline was changed The method requires a CompressionManager object to handle the eventual compression of the history file. :param barman.infofile.WalFileInfo wal_info: history file obj :param comp_manager: compression manager used in case of history file compression :return List[HistoryFileData]: information from the history file """ path = wal_info.orig_filename # Decompress the file if needed if wal_info.compression: # Use a NamedTemporaryFile to avoid explicit cleanup uncompressed_file = NamedTemporaryFile( dir=os.path.dirname(path), prefix='.%s.' % wal_info.name, suffix='.uncompressed') path = uncompressed_file.name comp_manager.get_compressor(wal_info.compression).decompress( wal_info.orig_filename, path) # Extract the timeline from history file name tli, _, _ = decode_segment_name(wal_info.name) lines = [] with open(path) as fp: for line in fp: line = line.strip() # Skip comments and empty lines if line.startswith("#"): continue # Skip comments and empty lines if len(line) == 0: continue # Use tab as separator contents = line.split('\t') if len(contents) != 3: # Invalid content of the line raise BadHistoryFileContents(path) history = HistoryFileData( tli=tli, parent_tli=int(contents[0]), switchpoint=parse_lsn(contents[1]), reason=contents[2]) lines.append(history) # Empty history file or containing invalid content if len(lines) == 0: raise BadHistoryFileContents(path) else: return lines barman-2.10/barman/compression.py0000644000015500001620000002655013571162460015236 0ustar 00000000000000# Copyright (C) 2011-2018 2ndQuadrant Limited # # This file is part of Barman. # # Barman is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Barman is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Barman. If not, see . """ This module is responsible to manage the compression features of Barman """ import bz2 import gzip import logging import shutil from abc import ABCMeta, abstractmethod from contextlib import closing import barman.infofile from barman.command_wrappers import Command from barman.exceptions import (CommandFailedException, CompressionIncompatibility) from barman.utils import force_str, with_metaclass _logger = logging.getLogger(__name__) class CompressionManager(object): def __init__(self, config, path): """ Compression manager """ self.config = config self.path = path self.unidentified_compression = None # If Barman is set to use the custom compression, it assumes that # every unidentified file is custom compressed if self.config.compression == 'custom': self.unidentified_compression = self.config.compression def check(self, compression=None): """ This method returns True if the compression specified in the configuration file is present in the register, otherwise False """ if not compression: compression = self.config.compression if compression not in compression_registry: return False return True def get_default_compressor(self): """ Returns a new default compressor instance """ return self.get_compressor(self.config.compression) def get_compressor(self, compression): """ Returns a new compressor instance :param str compression: Compression name or none """ # Check if the requested compression mechanism is allowed if compression and self.check(compression): return compression_registry[compression]( config=self.config, compression=compression, path=self.path) return None def get_wal_file_info(self, filename): """ Populate a WalFileInfo object taking into account the server configuration. Set compression to 'custom' if no compression is identified and Barman is configured to use custom compression. :param str filename: the path of the file to identify :rtype: barman.infofile.WalFileInfo """ return barman.infofile.WalFileInfo.from_file( filename, self.unidentified_compression) def identify_compression(filename): """ Try to guess the compression algorithm of a file :param str filename: the path of the file to identify :rtype: str """ # TODO: manage multiple decompression methods for the same # compression algorithm (e.g. what to do when gzip is detected? # should we use gzip or pigz?) with open(filename, 'rb') as f: file_start = f.read(MAGIC_MAX_LENGTH) for file_type, cls in sorted(compression_registry.items()): if cls.validate(file_start): return file_type return None class Compressor(with_metaclass(ABCMeta, object)): """ Base class for all the compressors """ MAGIC = None def __init__(self, config, compression, path=None): self.config = config self.compression = compression self.path = path @classmethod def validate(cls, file_start): """ Guess if the first bytes of a file are compatible with the compression implemented by this class :param file_start: a binary string representing the first few bytes of a file :rtype: bool """ return cls.MAGIC and file_start.startswith(cls.MAGIC) @abstractmethod def compress(self, src, dst): """ Abstract Method for compression method :param str src: source file path :param str dst: destination file path """ @abstractmethod def decompress(self, src, dst): """ Abstract method for decompression method :param str src: source file path :param str dst: destination file path """ class CommandCompressor(Compressor): """ Base class for compressors built on external commands """ def __init__(self, config, compression, path=None): super(CommandCompressor, self).__init__( config, compression, path) self._compress = None self._decompress = None def compress(self, src, dst): """ Compress using the specific command defined in the sublcass :param src: source file to compress :param dst: destination of the decompression """ return self._compress(src, dst) def decompress(self, src, dst): """ Decompress using the specific command defined in the sublcass :param src: source file to decompress :param dst: destination of the decompression """ return self._decompress(src, dst) def _build_command(self, pipe_command): """ Build the command string and create the actual Command object :param pipe_command: the command used to compress/decompress :rtype: Command """ command = 'barman_command(){ ' command += pipe_command command += ' > "$2" < "$1"' command += ';}; barman_command' return Command(command, shell=True, check=True, path=self.path) class InternalCompressor(Compressor): """ Base class for compressors built on python libraries """ def compress(self, src, dst): """ Compress using the object defined in the sublcass :param src: source file to compress :param dst: destination of the decompression """ try: with open(src, 'rb') as istream: with closing(self._compressor(dst)) as ostream: shutil.copyfileobj(istream, ostream) except Exception as e: # you won't get more information from the compressors anyway raise CommandFailedException(dict( ret=None, err=force_str(e), out=None)) return 0 def decompress(self, src, dst): """ Decompress using the object defined in the sublcass :param src: source file to decompress :param dst: destination of the decompression """ try: with closing(self._decompressor(src)) as istream: with open(dst, 'wb') as ostream: shutil.copyfileobj(istream, ostream) except Exception as e: # you won't get more information from the compressors anyway raise CommandFailedException(dict( ret=None, err=force_str(e), out=None)) return 0 @abstractmethod def _decompressor(self, src): """ Abstract decompressor factory method :param src: source file path :return: a file-like readable decompressor object """ @abstractmethod def _compressor(self, dst): """ Abstract compressor factory method :param dst: destination file path :return: a file-like writable compressor object """ class GZipCompressor(CommandCompressor): """ Predefined compressor with GZip """ MAGIC = b'\x1f\x8b\x08' def __init__(self, config, compression, path=None): super(GZipCompressor, self).__init__( config, compression, path) self._compress = self._build_command('gzip -c') self._decompress = self._build_command('gzip -c -d') class PyGZipCompressor(InternalCompressor): """ Predefined compressor that uses GZip Python libraries """ MAGIC = b'\x1f\x8b\x08' def __init__(self, config, compression, path=None): super(PyGZipCompressor, self).__init__( config, compression, path) # Default compression level used in system gzip utility self._level = -1 # Z_DEFAULT_COMPRESSION constant of zlib def _compressor(self, name): return gzip.GzipFile(name, mode='wb', compresslevel=self._level) def _decompressor(self, name): return gzip.GzipFile(name, mode='rb') class PigzCompressor(CommandCompressor): """ Predefined compressor with Pigz Note that pigz on-disk is the same as gzip, so the MAGIC value of this class is the same """ MAGIC = b'\x1f\x8b\x08' def __init__(self, config, compression, path=None): super(PigzCompressor, self).__init__( config, compression, path) self._compress = self._build_command('pigz -c') self._decompress = self._build_command('pigz -c -d') class BZip2Compressor(CommandCompressor): """ Predefined compressor with BZip2 """ MAGIC = b'\x42\x5a\x68' def __init__(self, config, compression, path=None): super(BZip2Compressor, self).__init__( config, compression, path) self._compress = self._build_command('bzip2 -c') self._decompress = self._build_command('bzip2 -c -d') class PyBZip2Compressor(InternalCompressor): """ Predefined compressor with BZip2 Python libraries """ MAGIC = b'\x42\x5a\x68' def __init__(self, config, compression, path=None): super(PyBZip2Compressor, self).__init__( config, compression, path) # Default compression level used in system gzip utility self._level = 9 def _compressor(self, name): return bz2.BZ2File(name, mode='wb', compresslevel=self._level) def _decompressor(self, name): return bz2.BZ2File(name, mode='rb') class CustomCompressor(CommandCompressor): """ Custom compressor """ def __init__(self, config, compression, path=None): if not config.custom_compression_filter: raise CompressionIncompatibility("custom_compression_filter") if not config.custom_decompression_filter: raise CompressionIncompatibility("custom_decompression_filter") super(CustomCompressor, self).__init__( config, compression, path) self._compress = self._build_command( config.custom_compression_filter) self._decompress = self._build_command( config.custom_decompression_filter) # a dictionary mapping all supported compression schema # to the class implementing it # WARNING: items in this dictionary are extracted using alphabetical order # It's important that gzip and bzip2 are positioned before their variants compression_registry = { 'gzip': GZipCompressor, 'pigz': PigzCompressor, 'bzip2': BZip2Compressor, 'pygzip': PyGZipCompressor, 'pybzip2': PyBZip2Compressor, 'custom': CustomCompressor, } #: The longest string needed to identify a compression schema MAGIC_MAX_LENGTH = max(len(x.MAGIC or '') for x in compression_registry.values()) barman-2.10/barman.egg-info/0000755000015500001620000000000013571162463014010 5ustar 00000000000000barman-2.10/barman.egg-info/SOURCES.txt0000644000015500001620000001512413571162463015677 0ustar 00000000000000AUTHORS ChangeLog INSTALL LICENSE MANIFEST.in NEWS README.rst setup.cfg setup.py barman/__init__.py barman/backup.py barman/backup_executor.py barman/cli.py barman/cloud.py barman/command_wrappers.py barman/compression.py barman/config.py barman/copy_controller.py barman/diagnose.py barman/exceptions.py barman/fs.py barman/hooks.py barman/infofile.py barman/lockfile.py barman/output.py barman/postgres.py barman/postgres_plumbing.py barman/process.py barman/recovery_executor.py barman/remote_status.py barman/retention_policies.py barman/server.py barman/utils.py barman/version.py barman/wal_archiver.py barman/xlog.py barman.egg-info/PKG-INFO barman.egg-info/SOURCES.txt barman.egg-info/dependency_links.txt barman.egg-info/entry_points.txt barman.egg-info/requires.txt barman.egg-info/top_level.txt barman/clients/__init__.py barman/clients/cloud_backup.py barman/clients/cloud_walarchive.py barman/clients/walarchive.py barman/clients/walrestore.py doc/.gitignore doc/Makefile doc/barman-cloud-backup.1 doc/barman-cloud-backup.1.md doc/barman-cloud-wal-archive.1 doc/barman-cloud-wal-archive.1.md doc/barman-wal-archive.1 doc/barman-wal-archive.1.md doc/barman-wal-restore.1 doc/barman-wal-restore.1.md doc/barman.1 doc/barman.5 doc/barman.conf doc/barman.1.d/00-header.md doc/barman.1.d/05-name.md doc/barman.1.d/10-synopsis.md doc/barman.1.d/15-description.md doc/barman.1.d/20-options.md doc/barman.1.d/45-commands.md doc/barman.1.d/50-archive-wal.md doc/barman.1.d/50-backup.md doc/barman.1.d/50-check-backup.md doc/barman.1.d/50-check.md doc/barman.1.d/50-cron.md doc/barman.1.d/50-delete.md doc/barman.1.d/50-diagnose.md doc/barman.1.d/50-get-wal.md doc/barman.1.d/50-list-backup.md doc/barman.1.d/50-list-files.md doc/barman.1.d/50-list-server.md doc/barman.1.d/50-put-wal.md doc/barman.1.d/50-rebuild-xlogdb.md doc/barman.1.d/50-receive-wal.md doc/barman.1.d/50-recover.md doc/barman.1.d/50-replication-status.md doc/barman.1.d/50-show-backup.md doc/barman.1.d/50-show-server.md doc/barman.1.d/50-status.md doc/barman.1.d/50-switch-wal.md doc/barman.1.d/50-switch-xlog.md doc/barman.1.d/50-sync-backup.md doc/barman.1.d/50-sync-info.md doc/barman.1.d/50-sync-wals.md doc/barman.1.d/70-backup-id-shortcuts.md doc/barman.1.d/75-exit-status.md doc/barman.1.d/80-see-also.md doc/barman.1.d/85-bugs.md doc/barman.1.d/90-authors.md doc/barman.1.d/95-resources.md doc/barman.1.d/99-copying.md doc/barman.5.d/00-header.md doc/barman.5.d/05-name.md doc/barman.5.d/15-description.md doc/barman.5.d/20-configuration-file-locations.md doc/barman.5.d/25-configuration-file-syntax.md doc/barman.5.d/30-configuration-file-directory.md doc/barman.5.d/45-options.md doc/barman.5.d/50-active.md doc/barman.5.d/50-archiver.md doc/barman.5.d/50-archiver_batch_size.md doc/barman.5.d/50-backup_directory.md doc/barman.5.d/50-backup_method.md doc/barman.5.d/50-backup_options.md doc/barman.5.d/50-bandwidth_limit.md doc/barman.5.d/50-barman_home.md doc/barman.5.d/50-barman_lock_directory.md doc/barman.5.d/50-basebackup_retry_sleep.md doc/barman.5.d/50-basebackup_retry_times.md doc/barman.5.d/50-basebackups_directory.md doc/barman.5.d/50-check_timeout.md doc/barman.5.d/50-compression.md doc/barman.5.d/50-conninfo.md doc/barman.5.d/50-create_slot.md doc/barman.5.d/50-custom_compression_filter.md doc/barman.5.d/50-custom_decompression_filter.md doc/barman.5.d/50-description.md doc/barman.5.d/50-errors_directory.md doc/barman.5.d/50-immediate_checkpoint.md doc/barman.5.d/50-incoming_wals_directory.md doc/barman.5.d/50-last_backup_maximum_age.md doc/barman.5.d/50-log_file.md doc/barman.5.d/50-log_level.md doc/barman.5.d/50-max_incoming_wals_queue.md doc/barman.5.d/50-minimum_redundancy.md doc/barman.5.d/50-network_compression.md doc/barman.5.d/50-parallel_jobs.md doc/barman.5.d/50-path_prefix.md doc/barman.5.d/50-post_archive_retry_script.md doc/barman.5.d/50-post_archive_script.md doc/barman.5.d/50-post_backup_retry_script.md doc/barman.5.d/50-post_backup_script.md doc/barman.5.d/50-post_delete_retry_script.md doc/barman.5.d/50-post_delete_script.md doc/barman.5.d/50-post_recovery_retry_script.md doc/barman.5.d/50-post_recovery_script.md doc/barman.5.d/50-post_wal_delete_retry_script.md doc/barman.5.d/50-post_wal_delete_script.md doc/barman.5.d/50-pre_archive_retry_script.md doc/barman.5.d/50-pre_archive_script.md doc/barman.5.d/50-pre_backup_retry_script.md doc/barman.5.d/50-pre_backup_script.md doc/barman.5.d/50-pre_delete_retry_script.md doc/barman.5.d/50-pre_delete_script.md doc/barman.5.d/50-pre_recovery_retry_script.md doc/barman.5.d/50-pre_recovery_script.md doc/barman.5.d/50-pre_wal_delete_retry_script.md doc/barman.5.d/50-pre_wal_delete_script.md doc/barman.5.d/50-primary_ssh_command.md doc/barman.5.d/50-recovery_options.md doc/barman.5.d/50-retention_policy.md doc/barman.5.d/50-retention_policy_mode.md doc/barman.5.d/50-reuse_backup.md doc/barman.5.d/50-slot_name.md doc/barman.5.d/50-ssh_command.md doc/barman.5.d/50-streaming_archiver.md doc/barman.5.d/50-streaming_archiver_batch_size.md doc/barman.5.d/50-streaming_archiver_name.md doc/barman.5.d/50-streaming_backup_name.md doc/barman.5.d/50-streaming_conninfo.md doc/barman.5.d/50-streaming_wals_directory.md doc/barman.5.d/50-tablespace_bandwidth_limit.md doc/barman.5.d/50-wal_retention_policy.md doc/barman.5.d/50-wals_directory.md doc/barman.5.d/70-hook-scripts.md doc/barman.5.d/75-example.md doc/barman.5.d/80-see-also.md doc/barman.5.d/90-authors.md doc/barman.5.d/95-resources.md doc/barman.5.d/99-copying.md doc/barman.d/passive-server.conf-template doc/barman.d/ssh-server.conf-template doc/barman.d/streaming-server.conf-template doc/images/barman-architecture-georedundancy.png doc/images/barman-architecture-scenario1.png doc/images/barman-architecture-scenario1b.png doc/images/barman-architecture-scenario2.png doc/images/barman-architecture-scenario2b.png doc/manual/.gitignore doc/manual/00-head.en.md doc/manual/01-intro.en.md doc/manual/02-before_you_start.en.md doc/manual/10-design.en.md doc/manual/15-system_requirements.en.md doc/manual/16-installation.en.md doc/manual/17-configuration.en.md doc/manual/20-server_setup.en.md doc/manual/21-preliminary_steps.en.md doc/manual/22-config_file.en.md doc/manual/23-wal_streaming.en.md doc/manual/24-wal_archiving.en.md doc/manual/25-streaming_backup.en.md doc/manual/26-rsync_backup.en.md doc/manual/27-windows-support.en.md doc/manual/41-global-commands.en.md doc/manual/42-server-commands.en.md doc/manual/43-backup-commands.en.md doc/manual/50-feature-details.en.md doc/manual/55-barman-cli.en.md doc/manual/65-troubleshooting.en.md doc/manual/66-about.en.md doc/manual/70-feature-matrix.en.md doc/manual/99-references.en.md doc/manual/Makefile scripts/barman.bash_completionbarman-2.10/barman.egg-info/dependency_links.txt0000644000015500001620000000000113571162463020056 0ustar 00000000000000 barman-2.10/barman.egg-info/requires.txt0000644000015500001620000000012613571162463016407 0ustar 00000000000000psycopg2>=2.4.2 argh>=0.21.2 python-dateutil [cloud] boto3 [completion] argcomplete barman-2.10/barman.egg-info/entry_points.txt0000644000015500001620000000041313571162463017304 0ustar 00000000000000[console_scripts] barman = barman.cli:main barman-cloud-backup = barman.clients.cloud_backup:main barman-cloud-wal-archive = barman.clients.cloud_walarchive:main barman-wal-archive = barman.clients.walarchive:main barman-wal-restore = barman.clients.walrestore:main barman-2.10/barman.egg-info/PKG-INFO0000644000015500001620000000264613571162463015115 0ustar 00000000000000Metadata-Version: 2.1 Name: barman Version: 2.10 Summary: Backup and Recovery Manager for PostgreSQL Home-page: http://www.pgbarman.org/ Author: 2ndQuadrant Limited Author-email: info@2ndquadrant.com License: GPL-3.0 Description: Barman (Backup and Recovery Manager) is an open-source administration tool for disaster recovery of PostgreSQL servers written in Python. It allows your organisation to perform remote backups of multiple servers in business critical environments to reduce risk and help DBAs during the recovery phase. Barman is distributed under GNU GPL 3 and maintained by 2ndQuadrant. Platform: Linux Platform: Mac OS X Classifier: Environment :: Console Classifier: Development Status :: 5 - Production/Stable Classifier: Topic :: System :: Archiving :: Backup Classifier: Topic :: Database Classifier: Topic :: System :: Recovery Tools Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+) Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Provides-Extra: completion Provides-Extra: cloud barman-2.10/barman.egg-info/top_level.txt0000644000015500001620000000000713571162463016537 0ustar 00000000000000barman barman-2.10/README.rst0000644000015500001620000000404113571162460012541 0ustar 00000000000000Barman, Backup and Recovery Manager for PostgreSQL ================================================== Barman (Backup and Recovery Manager) is an open-source administration tool for disaster recovery of PostgreSQL servers written in Python. It allows your organisation to perform remote backups of multiple servers in business critical environments to reduce risk and help DBAs during the recovery phase. Barman is distributed under GNU GPL 3 and maintained by 2ndQuadrant. For further information, look at the "Web resources" section below. Source content -------------- Here you can find a description of files and directory distributed with Barman: - AUTHORS : development team of Barman - NEWS : release notes - ChangeLog : log of changes - LICENSE : GNU GPL3 details - TODO : our wishlist for Barman - barman : sources in Python - doc : tutorial and man pages - scripts : auxiliary scripts - tests : unit tests Web resources ------------- - Website : http://www.pgbarman.org/ - Download : http://sourceforge.net/projects/pgbarman/files/ - Documentation : http://www.pgbarman.org/documentation/ - Man page, section 1 : http://docs.pgbarman.org/barman.1.html - Man page, section 5 : http://docs.pgbarman.org/barman.5.html - Community support : http://www.pgbarman.org/support/ - Professional support : https://www.2ndquadrant.com/ - pgespresso extension : https://github.com/2ndquadrant-it/pgespresso Licence ------- Copyright (C) 2011-2019 2ndQuadrant Limited Barman is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Barman is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Barman. If not, see http://www.gnu.org/licenses/. barman-2.10/NEWS0000644000015500001620000010343513571162460011560 0ustar 00000000000000Barman News - History of user-visible changes Copyright (C) 2011-2019 2ndQuadrant Limited Version 2.10 - 5 Dec 2019 - Pull .partial WAL files with get-wal and barman-wal-restore, allowing restore_command in a recovery scenario to fetch a partial WAL file's content from the Barman server. This feature simplifies and enhances RPO=0 recovery operations. - Store the PostgreSQL system identifier in the server directory and inside the backup information file. Improve check command to verify the consistency of the system identifier with active connections (standard and replication) and data on disk. - A new script called barman-cloud-wal-archive has been added to the barman-cli package to directly ship WAL files from PostgreSQL (using archive_command) to cloud object storage services that are compatible with AWS S3. It supports encryption and compression. - A new script called barman-cloud-backup has been added to the barman-cli package to directly ship base backups from a local PostgreSQL server to cloud object storage services that are compatible with AWS S3. It supports encryption, parallel upload, compression. - Automated creation of replication slots through the server/global option create_slot. When set to auto, Barman creates the replication slot, in case streaming_archiver is enabled and slot_name is defined. The default value is manual for back-compatibility. - Add '-w/--wait' option to backup command, making Barman wait for all required WAL files to be archived before considering the backup completed. Add also the --wait-timeout option (default 0, no timeout). - Redact passwords from Barman output, in particular from barman diagnose (InfoSec) - Improve robustness of receive-wal --reset command, by verifying that the last partial file is aligned with the current location or, if present, with replication slot's. - Documentation improvements - Bug fixes: - Wrong string matching operation when excluding tablespaces inside PGDATA (GH-245) - Minor fixes in WAL delete hook scripts (GH-240) - Fix PostgreSQL connection aliveness check (GH-239) Version 2.9 - 1 Aug 2019 - Transparently support PostgreSQL 12, by supporting the new way of managing recovery and standby settings through GUC options and signal files (recovery.signal and standby.signal) - Add --bwlimit command line option to set bandwidth limitation for backup and recover commands - Ignore WAL archive failure for check command in case the latest backup is WAITING_FOR_WALS - Add --target-lsn option to set recovery target Log Sequence Number for recover command with PostgreSQL 10 or higher - Add --spool-dir option to barman-wal-restore so that users can change the spool directory location from the default, avoiding conflicts in case of multiple PostgreSQL instances on the same server (thanks to Drazen Kacar). - Rename barman_xlog directory to barman_wal - JSON output writer to export command output as JSON objects and facilitate integration with external tools and systems (thanks to Marcin Onufry Hlybin). Experimental in this release. Bug fixes: - replication-status doesn’t show streamers with no slot (GH-222) - When checking that a connection is alive (“SELECT 1” query), preserve the status of the PostgreSQL connection (GH-149). This fixes those cases of connections that were terminated due to idle-in-transaction timeout, causing concurrent backups to fail. Version 2.8 - 17 May 2019 - Add support for reuse_backup in geo-redundancy for incremental backup copy in passive nodes - Improve performance of rsync based copy by using strptime instead of the more generic dateutil.parser (#210) - Add â€--test’ option to barman-wal-archive and barman-wal-restore to verify the connection with the Barman server - Complain if backup_options is not explicitly set, as the future default value will change from exclusive_backup to concurrent_backup when PostgreSQL 9.5 will be declared EOL by the PGDG - Display additional settings in the show-server and diagnose commands: archive_timeout, data_checksums, hot_standby, max_wal_senders, max_replication_slots and wal_compression. - Merge the barman-cli project in Barman - Bug fixes: - Fix encoding error in get-wal on Python 3 (Jeff Janes, #221) - Fix exclude_and_protect_filter (Jeff Janes, #217) - Remove spurious message when resetting WAL (Jeff Janes, #215) - Fix sync-wals error if primary has WALs older than the first backup - Support for double quotes in synchronous_standby_names setting - Minor changes: - Improve messaging of check --nagios for inactive servers - Log remote SSH command with recover command - Hide logical decoding connections in replication-status command This release officially supports Python 3 and deprecates Python 2 (which might be discontinued in future releases). PostgreSQL 9.3 and older is deprecated from this release of Barman. Support for backup from standby is now limited to PostgreSQL 9.4 or higher and to WAL shipping from the standby (please refer to the documentation for details). Version 2.7 - 21 Mar 2019 - Fix error handling during the parallel backup. Previously an unrecoverable error during the copy could have corrupted the barman internal state, requiring a manual kill of barman process with SIGTERM and a manual cleanup of the running backup in PostgreSQL. (GH#199) - Fix support of UTF-8 characters in input and output (GH#194 and GH#196) - Ignore history/backup/partial files for first sync of geo-redundancy (GH#198) - Fix network failure with geo-redundancy causing cron to break (GH#202) - Fix backup validation in PostgreSQL older than 9.2 - Various documentation fixes Version 2.6 - 4 Feb 2019 - Add support for Geographical redundancy, introducing 3 new commands: sync-info, sync-backup and sync-wals. Geo-redundancy allows a Barman server to use another Barman server as data source instead of a PostgreSQL server. - Add put-wal command that allows Barman to safely receive WAL files via PostgreSQL's archive_command using the barman-wal-archive script included in barman-cli - Add ANSI colour support to check command - Minor fixes: - Fix switch-wal on standby with an empty WAL directory - Honour archiver locking in wait_for_wal method - Fix WAL compression detection algorithm - Fix current_action in concurrent stop backup errors - Do not treat lock file busy as an error when validating a backup Version 2.5 - 23 Oct 2018 - Add support for PostgreSQL 11 - Add check-backup command to verify that WAL files required for consistency of a base backup are present in the archive. Barman now adds a new state (WAITING_FOR_WALS) after completing a base backup, and sets it to DONE once it has verified that all WAL files from start to the end of the backup exist. This command is included in the regular cron maintenance job. Barman now notifies users attempting to recover a backup that is in WAITING_FOR_WALS state. - Allow switch-xlog --archive to work on a standby (just for the archive part) - Bug fixes: - Fix decoding errors reading external commands output (issue #174) - Fix documentation regarding WAL streaming and backup from standby Version 2.4 - 25 May 2018 - Add standard and retry hook scripts for backup deletion (pre/post) - Add standard and retry hook scripts for recovery (pre/post) - Add standard and retry hook scripts for WAL deletion (pre/post) - Add --standby-mode option to barman recover to add standby_mode = on in pre-generated recovery.conf - Add --target-action option to barman recover, allowing users to add shutdown, pause or promote to the pre-generated recovery.conf file - Improve usability of point-in-time recovery with consistency checks (e.g. recovery time is after end time of backup) - Minor documentation improvements - Drop support for Python 3.3 Relevant bug fixes: - Fix remote get_file_content method (Github #151), preventing incremental recovery from happening - Unicode issues with command (Github #143 and #150) - Add --wal-method=none when pg_basebackup >= 10 (Github #133) Minor bug fixes: - Stop process manager module from ovewriting lock files content - Relax the rules for rsync output parsing - Ignore vanished files in streaming directory - Case insensitive slot names (Github #170) - Make DataTransferFailure.from_command_error() more resilient (Github #86) - Rename command() to barman_command() (Github #118) - Initialise synchronous standby names list if not set (Github #111) - Correct placeholders ordering (GitHub #138) - Force datestyle to iso for replication connections - Returns error if delete command does not remove the backup - Fix exception when calling is_power_of_two(None) - Downgraded sync standby names messages to debug (Github #89) Version 2.3 - 5 Sep 2017 - Add support to PostgreSQL 10 - Follow naming changes in PostgreSQL 10: - The switch-xlog command has been renamed to switch-wal. - In commands output, the xlog word has been changed to WAL and location has been changed to LSN when appropriate. - Add the --network-compression/--no-network-compression options to barman recover to enable or disable network compression at run-time - Add --target-immediate option to recover command, in order to exit recovery when a consistent state is reached (end of the backup, available from PostgreSQL 9.4) - Show cluster state (master or standby) with barman status command - Documentation improvements - Bug fixes: - Fix high memory usage with parallel_jobs > 1 (#116) - Better handling of errors using parallel copy (#114) - Make barman diagnose more robust with system exceptions - Let archive-wal ignore files with .tmp extension Version 2.2 - 17 Jul 2017 - Implement parallel copy for backup/recovery through the parallel_jobs global/server option to be overridden by the --jobs or -j runtime option for the backup and recover command. Parallel backup is available only for the rsync copy method. By default, it is set to 1 (for behaviour compatibility with previous versions). - Support custom WAL size for PostgreSQL 8.4 and newer. At backup time, Barman retrieves from PostgreSQL wal_segment_size and wal_block_size values and computes the necessary calculations. - Improve check command to ensure that incoming directory is empty when archiver=off, and streaming directory is empty when streaming_archiver=off (#80). - Add external_configuration to backup_options so that users can instruct Barman to ignore backup of configuration files when they are not inside PGDATA (default for Debian/Ubuntu installations). In this case, Barman does not display a warning anymore. - Add --get-wal and --no-get-wal options to barman recover - Add max_incoming_wals_queue global/server option for the check command so that a non blocking error is returned in case incoming WAL directories for both archiver and the streaming_archiver contain more files than the specified value. - Documentation improvements - File format changes: - The format of backup.info file has changed. For this reason a backup taken with Barman 2.2 cannot be read by a previous version of Barman. But, backups taken by previous versions can be read by Barman 2.2. - Minor bug fixes: - Allow replication-status to work against a standby - Close any PostgreSQL connection before starting pg_basebackup (#104, #108) - Safely handle paths containing special characters - Archive .partial files after promotion of streaming source - Recursively create directories during recovery (SF#44) - Improve xlog.db locking (#99) - Remove tablespace_map file during recover (#95) - Reconnect to PostgreSQL if connection drops (SF#82) Version 2.1 - 5 Jan 2017 - Add --archive and --archive-timeout options to switch-xlog command - Preliminary support for PostgreSQL 10 (#73) - Minor additions: - Add last archived WAL info to diagnose output - Add start time and execution time to the output of delete command - Minor bug fixes: - Return failure for get-wal command on inactive server - Make streaming_archiver_names and streaming_backup_name options global (#57) - Fix rsync failures due to files truncated during transfer (#64) - Correctly handle compressed history files (#66) - Avoid de-referencing symlinks in pg_tblspc when preparing recovery (#55) - Fix comparison of last archiving failure (#40, #58) - Avoid failing recovery if postgresql.conf is not writable (#68) - Fix output of replication-status command (#56) - Exclude files from backups like pg_basebackup (#65, #72) - Exclude directories from other Postgres versions while copying tablespaces (#74) - Make retry hook script options global Version 2.0 - 27 Sep 2016 - Support for pg_basebackup and base backups over the PostgreSQL streaming replication protocol with backup_method=postgres (PostgreSQL 9.1 or higher required) - Support for physical replication slots through the slot_name configuration option as well as the --create-slot and --drop-slot options for the receive-wal command (PostgreSQL 9.4 or higher required). When slot_name is specified and streaming_archiver is enabled, receive-wal transparently integrates with pg_receivexlog, and check makes sure that slots exist and are actively used - Support for the new backup API introduced in PostgreSQL 9.6, which transparently enables concurrent backups and backups from standby servers using the standard rsync method of backup. Concurrent backup was only possible for PostgreSQL 9.2 to 9.5 versions through the pgespresso extension. The new backup API will make pgespresso redundant in the future - If properly configured, Barman can function as a synchronous standby in terms of WAL streaming. By properly setting the streaming_archiver_name in the synchronous_standby_names priority list on the master, and enabling replication slot support, the receive-wal command can now be part of a PostgreSQL synchronous replication cluster, bringing RPO=0 (PostgreSQL 9.5.5 or higher required) - Introduce barman-wal-restore, a standard and robust script written in Python that can be used as restore_command in recovery.conf files of any standby server of a cluster. It supports remote parallel fetching of WAL files by efficiently invoking get-wal through SSH. Currently available as a separate project called barman-cli. The barman-cli package is required for remote recovery when get-wal is listed in recovery_options - Control the maximum execution time of the check command through the check_timeout global/server configuration option (30 seconds by default) - Limit the number of WAL segments that are processed by an archive-wal run, through the archiver_batch_size and streaming_archiver_batch_size global/server options which control archiving of WAL segments coming from, respectively, the standard archiver and receive-wal - Removed locking of the XLOG database during check operations - The show-backup command is now aware of timelines and properly displays which timelines can be used as recovery targets for a given base backup. Internally, Barman is now capable of parsing .history files - Improved the logic behind the retry mechanism when copy operations experience problems. This involves backup (rsync and postgres) as well as remote recovery (rsync) - Code refactoring involving remote command and physical copy interfaces - Bug fixes: - Correctly handle .history files from streaming - Fix replication-status on PostgreSQL 9.1 - Fix replication-status when sent and write locations are not available - Fix misleading message on pg_receivexlog termination Version 1.6.1 - 23 May 2016 - Add --peek option to get-wal command to discover existing WAL files from the Barman's archive - Add replication-status command for monitoring the status of any streaming replication clients connected to the PostgreSQL server. The --target option allows users to limit the request to only hot standby servers or WAL streaming clients - Add the switch-xlog command to request a switch of a WAL file to the PostgreSQL server. Through the '--force' it issues a CHECKPOINT beforehand - Add streaming_archiver_name option, which sets a proper application_name to pg_receivexlog when streaming_archiver is enabled (only for PostgreSQL 9.3 and above) - Check for _superuser_ privileges with PostgreSQL's standard connections (#30) - Check the WAL archive is never empty - Check for 'backup_label' on the master when server is down - Improve barman-wal-restore contrib script - Bug fixes: - Treat the "failed backups" check as non-fatal - Rename '-x' option for get-wal as '-z' - Add archive_mode=always support for PostgreSQL 9.5 (#32) - Properly close PostgreSQL connections when necessary - Fix receive-wal for pg_receive_xlog version 9.2 Version 1.6.0 - 29 Feb 2016 - Support for streaming replication connection through the streaming_conninfo server option - Support for the streaming_archiver option that allows Barman to receive WAL files through PostgreSQL's native streaming protocol. When set to 'on', it relies on pg_receivexlog to receive WAL data, reducing Recovery Point Objective. Currently, WAL streaming is an additional feature (standard log archiving is still required) - Implement the receive-wal command that, when streaming_archiver is on, wraps pg_receivexlog for WAL streaming. Add --stop option to stop receiving WAL files via streaming protocol. Add --reset option to reset the streaming status and restart from the current xlog in Postgres. - Automatic management (startup and stop) of receive-wal command via cron command - Support for the path_prefix configuration option - Introduction of the archiver option (currently fixed to on) which enables continuous WAL archiving for a specific server, through log shipping via PostgreSQL's archive_command - Support for streaming_wals_directory and errors_directory options - Management of WAL duplicates in archive-wal command and integration with check command - Verify if pg_receivexlog is running in check command when streaming_archiver is enabled - Verify if failed backups are present in check command - Accept compressed WAL files in incoming directory - Add support for the pigz compressor (thanks to Stefano Zacchiroli zack@upsilon.cc) - Implement pygzip and pybzip2 compressors (based on an initial idea of Christoph Moench-Tegeder christoph@2ndquadrant.de) - Creation of an implicit restore point at the end of a backup - Current size of the PostgreSQL data files in barman status - Permit archive_mode=always for PostgreSQL 9.5 servers (thanks to Christoph Moench-Tegeder christoph@2ndquadrant.de) - Complete refactoring of the code responsible for connecting to PostgreSQL - Improve messaging of cron command regarding sub-processes - Native support for Python >= 3.3 - Changes of behaviour: - Stop trashing WAL files during archive-wal (commit:e3a1d16) - Bug fixes: - Atomic WAL file archiving (#9 and #12) - Propagate "-c" option to any Barman subprocess (#19) - Fix management of backup ID during backup deletion (#22) - Improve archive-wal robustness and log messages (#24) - Improve error handling in case of missing parameters Version 1.5.1 - 16 Nov 2015 - Add support for the 'archive-wal' command which performs WAL maintenance operations on a given server - Add support for "per-server" concurrency of the 'cron' command - Improved management of xlog.db errors - Add support for mixed compression types in WAL files (SF.net#61) - Bug fixes: - Avoid retention policy checks during the recovery - Avoid 'wal_level' check on PostgreSQL version < 9.0 (#3) - Fix backup size calculation (#5) Version 1.5.0 - 28 Sep 2015 - Add support for the get-wal command which allows users to fetch any WAL file from the archive of a specific server - Add support for retry hook scripts, a special kind of hook scripts that Barman tries to run until they succeed - Add active configuration option for a server to temporarily disable the server by setting it to False - Add barman_lock_directory global option to change the location of lock files (by default: 'barman_home') - Execute the full suite of checks before starting a backup, and skip it in case one or more checks fail - Forbid to delete a running backup - Analyse include directives of a PostgreSQL server during backup and recover operations - Add check for conflicting paths in the configuration of Barman, both intra (by temporarily disabling a server) and inter-server (by refusing any command, to any server). - Add check for wal_level - Add barman-wal-restore script to be used as restore_command on a standby server, in conjunction with barman get-wal - Implement a standard and consistent policy for error management - Improved cache management of backups - Improved management of configuration in unit tests - Tutorial and man page sources have been converted to Markdown format - Add code documentation through Sphinx - Complete refactor of the code responsible for managing the backup and the recover commands - Changed internal directory structure of a backup - Introduce copy_method option (currently fixed to rsync) - Bug fixes: - Manage options without '=' in PostgreSQL configuration files - Preserve Timeline history files (Fixes: #70) - Workaround for rsync on SUSE Linux (Closes: #13 and #26) - Disables dangerous settings in postgresql.auto.conf (Closes: #68) Version 1.4.1 - 05 May 2015 * Fix for WAL archival stop working if first backup is EMPTY (Closes: #64) * Fix exception during error handling in Barman recovery (Closes: #65) * After a backup, limit cron activity to WAL archiving only (Closes: #62) * Improved robustness and error reporting of the backup delete command (Closes: #63) * Fix computation of WAL production ratio as reported in the show-backup command * Improved management of xlogdb file, which is now correctly fsynced when updated. Also, the rebuild-xlogdb command now operates on a temporary new file, which overwrites the main one when finished. * Add unit tests for dateutil module compatibility * Modified Barman version following PEP 440 rules and added support of tests in Python 3.4 Version 1.4.0 - 26 Jan 2015 * Incremental base backup implementation through the reuse_backup global/server option. Possible values are off (disabled, default), copy (preventing unmodified files from being transferred) and link (allowing for deduplication through hard links). * Store and show deduplication effects when using reuse_backup= link. * Added transparent support of pg_stat_archiver (PostgreSQL 9.4) in check, show-server and status commands. * Improved administration by invoking WAL maintenance at the end of a successful backup. * Changed the way unused WAL files are trashed, by differentiating between concurrent and exclusive backup cases. * Improved performance of WAL statistics calculation. * Treat a missing pg_ident.conf as a WARNING rather than an error. * Refactored output layer by removing remaining yield calls. * Check that rsync is in the system path. * Include history files in WAL management. * Improved robustness through more unit tests. * Fixed bug #55: Ignore fsync EINVAL errors on directories. * Fixed bug #58: retention policies delete. Version 1.3.3 - 21 Aug 2014 * Added "last_backup_max_age", a new global/server option that allows administrators to set the max age of the last backup in a catalogue, making it easier to detect any issues with periodical backup execution * Improved robustness of "barman backup" by introducing two global/ server options: "basebackup_retry_times" and "basebackup_retry_sleep". These options allow an administrator to specify, respectively, the number of attempts for a copy operation after a failure, and the number of seconds of wait before retrying * Improved the recovery process via rsync on an existing directory (incremental recovery), by splitting the previous rsync call into several ones - invoking checksum control only when necessary * Added support for PostgreSQL 8.3 * Minor changes: + Support for comma separated list values configuration options + Improved backup durability by calling fsync() on backup and WAL files during "barman backup" and "barman cron" + Improved Nagios output for "barman check --nagios" + Display compression ratio for WALs in "barman show-backup" + Correctly handled keyboard interruption (CTRL-C) while performing barman backup + Improved error messages of failures regarding the stop of a backup + Wider coverage of unit tests * Bug fixes: + Copies "recovery.conf" on the remote server during "barman recover" (#45) + Correctly detect pre/post archive hook scripts (#41) Version 1.3.2 - 15 Apr 2014 * Fixed incompatibility with PostgreSQL 8.4 (Closes #40, bug introduced in version 1.3.1) Version 1.3.1 - 14 Apr 2014 * Added support for concurrent backup of PostgreSQL 9.2 and 9.3 servers that use the "pgespresso" extension. This feature is controlled by the "backup_options" configuration option (global/ server) and activated when set to "concurrent_backup". Concurrent backup allows DBAs to perform full backup operations from a streaming replicated standby. * Added the "barman diagnose" command which prints important information about the Barman system (extremely useful for support and problem solving) * Improved error messages and exception handling interface * Fixed bug in recovery of tablespaces that are created inside the PGDATA directory (bug introduced in version 1.3.0) * Fixed minor bug of unhandled -q option, for quiet mode of commands to be used in cron jobs (bug introduced in version 1.3.0) * Minor bug fixes and code refactoring Version 1.3.0 - 3 Feb 2014 * Refactored BackupInfo class for backup metadata to use the new FieldListFile class (infofile module) * Refactored output layer to use a dedicated module, in order to facilitate integration with Nagios (NagiosOutputWriter class) * Refactored subprocess handling in order to isolate stdin/stderr/ stdout channels (command_wrappers module) * Refactored hook scripts management * Extracted logging configuration and userid enforcement from the configuration class. * Support for hook scripts to be executed before and after a WAL file is archived, through the 'pre_archive_script' and 'post_archive_script' configuration options. * Implemented immediate checkpoint capability with --immediate-checkpoint command option and 'immediate_checkpoint' configuration option * Implemented network compression for remote backup and recovery through the 'network_compression' configuration option (#19) * Implemented the 'rebuild-xlogdb' command (Closes #27 and #28) * Added deduplication of tablespaces located inside the PGDATA directory * Refactored remote recovery code to work the same way local recovery does, by performing remote directory preparation (assuming the remote user has the right permissions on the remote server) * 'barman backup' now tries and create server directories before attempting to execute a full backup (#14) * Fixed bug #22: improved documentation for tablespaces relocation * Fixed bug #31: 'barman cron' checks directory permissions for lock file * Fixed bug #32: xlog.db read access during cron activities Version 1.2.3 - 5 September 2013 * Added support for PostgreSQL 9.3 * Added support for the "--target-name" recovery option, which allows to restore to a named point previously specified with pg_create_restore_point (only for PostgreSQL 9.1 and above users) * Fixed bug #27 about flock() usage with barman.lockfile (many thanks to Damon Snyder ) * Introduced Python 3 compatibility Version 1.2.2 - 24 June 2013 * Fix python 2.6 compatibility Version 1.2.1 - 17 June 2013 * Added the "bandwidth_limit" global/server option which allows to limit the I/O bandwidth (in KBPS) for backup and recovery operations * Added the "tablespace_bandwidth_limit" global/server option which allows to limit the I/O bandwidth (in KBPS) for backup and recovery operations on a per tablespace basis * Added /etc/barman/barman.conf as default location * Bug fix: avoid triggering the minimum_redundancy check on FAILED backups (thanks to JĂ©rĂ´me Vanandruel) Version 1.2.0 - 31 Jan 2013 * Added the "retention_policy_mode" global/server option which defines the method for enforcing retention policies (currently only "auto") * Added the "minimum_redundancy" global/server option which defines the minimum number of backups to be kept for a server * Added the "retention_policy" global/server option which defines retention policies management based on redunancy (e.g. REDUNDANCY 4) or recovery window (e.g. RECOVERY WINDOW OF 3 MONTHS) * Added retention policy support to the logging infrastructure, the "check" and the "status" commands * The "check" command now integrates minimum redundancy control * Added retention policy states (valid, obsolete and potentially obsolete) to "show-backup" and "list-backup" commands * The 'all' keyword is now forbidden as server name * Added basic support for Nagios plugin output to the 'check' command through the --nagios option * Barman now requires argh => 0.21.2 and argcomplete- * Minor bug fixes Version 1.1.2 - 29 Nov 2012 * Added "configuration_files_directory" option that allows to include multiple server configuration files from a directory * Support for special backup IDs: latest, last, oldest, first * Management of multiple servers to the 'list-backup' command. 'barman list-backup all' now list backups for all the configured servers. * Added "application_name" management for PostgreSQL >= 9.0 * Fixed bug #18: ignore missing WAL files if not found during delete Version 1.1.1 - 16 Oct 2012 * Fix regressions in recover command. Version 1.1.0 - 12 Oct 2012 * Support for hook scripts to be executed before and after a 'backup' command through the 'pre_backup_script' and 'post_backup_script' configuration options. * Management of multiple servers to the 'backup' command. 'barman backup all' now iteratively backs up all the configured servers. * Fixed bug #9: "9.2 issue with pg_tablespace_location()" * Add warning in recovery when file location options have been defined in the postgresql.conf file (issue #10) * Fail fast on recover command if the destination directory contains the ':' character (Closes: #4) or if an invalid tablespace relocation rule is passed * Report an informative message when pg_start_backup() invocation fails because an exclusive backup is already running (Closes: #8) Version 1.0.0 - 6 July 2012 * Backup of multiple PostgreSQL servers, with different versions. Versions from PostgreSQL 8.4+ are supported. * Support for secure remote backup (through SSH) * Management of a catalog of backups for every server, allowing users to easily create new backups, delete old ones or restore them * Compression of WAL files that can be configured on a per server basis using compression/decompression filters, both predefined (gzip and bzip2) or custom * Support for INI configuration file with global and per-server directives. Default location for configuration files are /etc/barman.conf or ~/.barman.conf. The '-c' option allows users to specify a different one * Simple indexing of base backups and WAL segments that does not require a local database * Maintenance mode (invoked through the 'cron' command) which performs ordinary operations such as WAL archival and compression, catalog updates, etc. * Added the 'backup' command which takes a full physical base backup of the given PostgreSQL server configured in Barman * Added the 'recover' command which performs local recovery of a given backup, allowing DBAs to specify a point in time. The 'recover' command supports relocation of both the PGDATA directory and, where applicable, the tablespaces * Added the '--remote-ssh-command' option to the 'recover' command for remote recovery of a backup. Remote recovery does not currently support relocation of tablespaces * Added the 'list-server' command that lists all the active servers that have been configured in barman * Added the 'show-server' command that shows the relevant information for a given server, including all configuration options * Added the 'status' command which shows information about the current state of a server, including Postgres version, current transaction ID, archive command, etc. * Added the 'check' command which returns 0 if everything Barman needs is functioning correctly * Added the 'list-backup' command that lists all the available backups for a given server, including size of the base backup and total size of the related WAL segments * Added the 'show-backup' command that shows the relevant information for a given backup, including time of start, size, number of related WAL segments and their size, etc. * Added the 'delete' command which removes a backup from the catalog * Added the 'list-files' command which lists all the files for a single backup * RPM Package for RHEL 5/6 barman-2.10/AUTHORS0000644000015500001620000000272313571162460012127 0ustar 00000000000000Barman Core Team (in alphabetical order): * Gabriele Bartolini (architect) * Jonathan Battiato (QA/testing) * Anna Bellandi (QA/testing) * Giulio Calacoci (developer) * Francesco Canovai (QA/testing) * Leonardo Cecchi (developer) * Gianni Ciolli (QA/testing) * Niccolò Fei (QA/testing) * Marco Nenciarini (project leader) * Rubens Souza (QA/testing) Past contributors: * Carlo Ascani (developer) * Stefano Bianucci (developer) * Giuseppe Broccolo (developer) * Britt Cole (documentation reviewer) Many thanks go to our sponsors (in alphabetical order): * 4Caast - http://4caast.morfeo-project.org/ (Founding sponsor) * Adyen - http://www.adyen.com/ * Agile Business Group - http://www.agilebg.com/ * BIJ12 - http://www.bij12.nl/ * CSI Piemonte - http://www.csipiemonte.it/ (Founding sponsor) * Ecometer - http://www.ecometer.it/ * GestionaleAuto - http://www.gestionaleauto.com/ (Founding sponsor) * Jobrapido - http://www.jobrapido.com/ * Navionics - http://www.navionics.com/ (Founding sponsor) * Sovon Vogelonderzoek Nederland - https://www.sovon.nl/ * Subito.it - http://www.subito.it/ * XCon Internet Services - http://www.xcon.it/ (Founding sponsor) barman-2.10/doc/0000755000015500001620000000000013571162463011623 5ustar 00000000000000barman-2.10/doc/.gitignore0000644000015500001620000000005713571162460013612 0ustar 00000000000000barman-tutorial.en.pdf barman-tutorial.en.html barman-2.10/doc/Makefile0000644000015500001620000000240313571162460013257 0ustar 00000000000000MANPAGES=barman.1 barman.5 \ barman-wal-archive.1 barman-wal-restore.1 \ barman-cloud-backup.1 \ barman-cloud-wal-archive.1 SUBDIRS=manual # Detect the pandoc major version (1 or 2) PANDOC_VERSION = $(shell pandoc --version | awk -F '[ .]+' '/^pandoc/{print $$2; exit}') ifeq ($(PANDOC_VERSION),1) SMART = --smart NOSMART_SUFFIX = else SMART = NOSMART_SUFFIX = -smart endif all: $(MANPAGES) $(SUBDIRS) barman.1: $(sort $(wildcard barman.1.d/??-*.md)) pandoc -s -f markdown$(NOSMART_SUFFIX) -t man -o $@ $^ barman.5: $(sort $(wildcard barman.5.d/??-*.md)) pandoc -s -f markdown$(NOSMART_SUFFIX) -t man -o $@ $^ barman-wal-archive.1: barman-wal-archive.1.md pandoc -s -f markdown$(NOSMART_SUFFIX) -t man -o $@ $< barman-wal-restore.1: barman-wal-restore.1.md pandoc -s -f markdown$(NOSMART_SUFFIX) -t man -o $@ $< barman-cloud-backup.1: barman-cloud-backup.1.md pandoc -s -f markdown$(nosmart_suffix) -t man -o $@ $< barman-cloud-wal-archive.1: barman-cloud-wal-archive.1.md pandoc -s -f markdown$(nosmart_suffix) -t man -o $@ $< clean: rm -f $(MANPAGES) for dir in $(SUBDIRS); do \ $(MAKE) -C $$dir clean; \ done help: @echo "Usage:" @echo " $$ make" subdirs: $(SUBDIRS) $(SUBDIRS): $(MAKE) -C $@ .PHONY: all clean help subdirs $(SUBDIRS) barman-2.10/doc/barman-wal-archive.10000644000015500001620000000457313571162460015353 0ustar 00000000000000.\" Automatically generated by Pandoc 2.8.0.1 .\" .TH "BARMAN-WAL-ARCHIVE" "1" "December 5, 2019" "Barman User manuals" "Version 2.10" .hy .SH NAME .PP barman-wal-archive - \f[C]archive_command\f[R] based on Barman\[aq]s put-wal .SH SYNOPSIS .PP barman-wal-archive [\f[I]OPTIONS\f[R]] \f[I]BARMAN_HOST\f[R] \f[I]SERVER_NAME\f[R] \f[I]WAL_PATH\f[R] .SH DESCRIPTION .PP This script can be used in the \f[C]archive_command\f[R] of a PostgreSQL server to ship WAL files to a Barman host using the \[aq]put-wal\[aq] command (introduced in Barman 2.6). An SSH connection will be opened to the Barman host. \f[C]barman-wal-archive\f[R] allows the integration of Barman in PostgreSQL clusters for better business continuity results. .PP This script and Barman are administration tools for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. .SH POSITIONAL ARGUMENTS .TP BARMAN_HOST the host of the Barman server. .TP SERVER_NAME the server name configured in Barman from which WALs are taken. .TP WAL_PATH the value of the \[aq]%p\[aq] keyword (according to \[aq]archive_command\[aq]). .SH OPTIONS .TP -h, --help show a help message and exit .TP -V, --version show program\[aq]s version number and exit .TP -U \f[I]USER\f[R], --user \f[I]USER\f[R] the user used for the ssh connection to the Barman server. Defaults to \[aq]barman\[aq]. .TP -c \f[I]CONFIG\f[R], --config \f[I]CONFIG\f[R] configuration file on the Barman server .TP -t, --test test both the connection and the configuration of the requested PostgreSQL server in Barman for WAL retrieval. With this option, the \[aq]WAL_PATH\[aq] mandatory argument is ignored. .SH EXIT STATUS .TP 0 Success .TP Not zero Failure .SH SEE ALSO .PP \f[C]barman\f[R] (1), \f[C]barman\f[R] (5). .SH BUGS .PP Barman has been extensively tested, and is currently being used in several production environments. However, we cannot exclude the presence of bugs. .PP Any bug can be reported via the Github issue tracker. .SH RESOURCES .IP \[bu] 2 Homepage: .IP \[bu] 2 Documentation: .IP \[bu] 2 Professional support: .SH COPYING .PP Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. .PP Copyright (C) 2011-2019 2ndQuadrant Ltd - . .SH AUTHORS 2ndQuadrant . barman-2.10/doc/barman-cloud-wal-archive.1.md0000644000015500001620000000520513571162460017047 0ustar 00000000000000% BARMAN-CLOUD-WAL-ARCHIVE(1) Barman User manuals | Version 2.10 % 2ndQuadrant % December 5, 2019 # NAME barman-cloud-wal-archive - Archive PostgreSQL WAL files in the Cloud using `archive_command` # SYNOPSIS barman-cloud-wal-archive [*OPTIONS*] *DESTINATION_URL* *SERVER_NAME* *WAL_PATH* # DESCRIPTION This script can be used in the `archive_command` of a PostgreSQL server to ship WAL files to the Cloud. Currently only AWS S3 is supported. This script and Barman are administration tools for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. # POSITIONAL ARGUMENTS DESTINATION_URL : URL of the cloud destination, such as a bucket in AWS S3. For example: `s3://BUCKET_NAME/path/to/folder` (where `BUCKET_NAME` is the bucket you have created in AWS). SERVER_NAME : the name of the server as configured in Barman. WAL_PATH : the value of the '%p' keyword (according to 'archive_command'). # OPTIONS -h, --help : show a help message and exit -V, --version : show program's version number and exit -t, --test : test connectivity to the cloud destination and exit -P, --profile : profile name (e.g. INI section in AWS credentials file) -z, --gzip : gzip-compress the WAL while uploading to the cloud -j, --bzip2 : bzip2-compress the WAL while uploading to the cloud -e ENCRYPT, --encrypt ENCRYPT : enable server-side encryption with the given method for the transfer. Allowed methods: `AES256` and `aws:kms`. # REFERENCES For Boto: * https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html For AWS: * http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html * http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html. # DEPENDENCIES * boto3 # EXIT STATUS 0 : Success Not zero : Failure # SEE ALSO This script can be used in conjunction with `pre_archive_retry_script` to relay WAL files to S3, as follows: ``` pre_archive_retry_script = 'barman-cloud-wal-archive [*OPTIONS*] *DESTINATION_URL* ${BARMAN_SERVER} ${BARMAN_FILE}' ``` # BUGS Barman has been extensively tested, and is currently being used in several production environments. However, we cannot exclude the presence of bugs. Any bug can be reported via the Github issue tracker. # RESOURCES * Homepage: * Documentation: * Professional support: # COPYING Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. Copyright (C) 2011-2019 2ndQuadrant Ltd - . barman-2.10/doc/barman.conf0000644000015500001620000000617313571162460013736 0ustar 00000000000000; Barman, Backup and Recovery Manager for PostgreSQL ; http://www.pgbarman.org/ - http://www.2ndQuadrant.com/ ; ; Main configuration file [barman] ; System user barman_user = barman ; Directory of configuration files. Place your sections in separate files with .conf extension ; For example place the 'main' server section in /etc/barman.d/main.conf configuration_files_directory = /etc/barman.d ; Main directory barman_home = /var/lib/barman ; Locks directory - default: %(barman_home)s ;barman_lock_directory = /var/run/barman ; Log location log_file = /var/log/barman/barman.log ; Log level (see https://docs.python.org/3/library/logging.html#levels) log_level = INFO ; Default compression level: possible values are None (default), bzip2, gzip, pigz, pygzip or pybzip2 ;compression = gzip ; Pre/post backup hook scripts ;pre_backup_script = env | grep ^BARMAN ;pre_backup_retry_script = env | grep ^BARMAN ;post_backup_retry_script = env | grep ^BARMAN ;post_backup_script = env | grep ^BARMAN ; Pre/post archive hook scripts ;pre_archive_script = env | grep ^BARMAN ;pre_archive_retry_script = env | grep ^BARMAN ;post_archive_retry_script = env | grep ^BARMAN ;post_archive_script = env | grep ^BARMAN ; Pre/post delete scripts ;pre_delete_script = env | grep ^BARMAN ;pre_delete_retry_script = env | grep ^BARMAN ;post_delete_retry_script = env | grep ^BARMAN ;post_delete_script = env | grep ^BARMAN ; Pre/post wal delete scripts ;pre_wal_delete_script = env | grep ^BARMAN ;pre_wal_delete_retry_script = env | grep ^BARMAN ;post_wal_delete_retry_script = env | grep ^BARMAN ;post_wal_delete_script = env | grep ^BARMAN ; Global bandwidth limit in KBPS - default 0 (meaning no limit) ;bandwidth_limit = 4000 ; Number of parallel jobs for backup and recovery via rsync (default 1) ;parallel_jobs = 1 ; Immediate checkpoint for backup command - default false ;immediate_checkpoint = false ; Enable network compression for data transfers - default false ;network_compression = false ; Number of retries of data copy during base backup after an error - default 0 ;basebackup_retry_times = 0 ; Number of seconds of wait after a failed copy, before retrying - default 30 ;basebackup_retry_sleep = 30 ; Maximum execution time, in seconds, per server ; for a barman check command - default 30 ;check_timeout = 30 ; Time frame that must contain the latest backup date. ; If the latest backup is older than the time frame, barman check ; command will report an error to the user. ; If empty, the latest backup is always considered valid. ; Syntax for this option is: "i (DAYS | WEEKS | MONTHS)" where i is an ; integer > 0 which identifies the number of days | weeks | months of ; validity of the latest backup for this check. Also known as 'smelly backup'. ;last_backup_maximum_age = ; Minimum number of required backups (redundancy) ;minimum_redundancy = 1 ; Global retention policy (REDUNDANCY or RECOVERY WINDOW) ; Examples of retention policies ; Retention policy (disabled, default) ;retention_policy = ; Retention policy (based on redundancy) ;retention_policy = REDUNDANCY 2 ; Retention policy (based on recovery window) ;retention_policy = RECOVERY WINDOW OF 4 WEEKS barman-2.10/doc/manual/0000755000015500001620000000000013571162463013100 5ustar 00000000000000barman-2.10/doc/manual/.gitignore0000644000015500001620000000005313571162460015063 0ustar 00000000000000barman-manual.en.html barman-manual.en.pdf barman-2.10/doc/manual/23-wal_streaming.en.md0000644000015500001620000001234313571162460017101 0ustar 00000000000000## WAL streaming Barman can reduce the Recovery Point Objective (RPO) by allowing users to add continuous WAL streaming from a PostgreSQL server, on top of the standard `archive_command` strategy. Barman relies on [`pg_receivewal`][25], a utility that has been available from PostgreSQL 9.2 which exploits the native streaming replication protocol and continuously receives transaction logs from a PostgreSQL server (master or standby). Prior to PostgreSQL 10, `pg_receivewal` was named `pg_receivexlog`. > **IMPORTANT:** > Barman requires that `pg_receivewal` is installed on the same > server. For PostgreSQL 9.2 servers, you need `pg_receivexlog` of > version 9.2 installed alongside Barman. For PostgreSQL 9.3 and > above, it is recommended to install the latest available version of > `pg_receivewal`, as it is back compatible. Otherwise, users can > install multiple versions of `pg_receivewal`/`pg_receivexlog` on the Barman server > and properly point to the specific version for a server, using the > `path_prefix` option in the configuration file. In order to enable streaming of transaction logs, you need to: 1. setup a streaming connection as previously described 2. set the `streaming_archiver` option to `on` The `cron` command, if the aforementioned requirements are met, transparently manages log streaming through the execution of the `receive-wal` command. This is the recommended scenario. However, users can manually execute the `receive-wal` command: ``` bash barman receive-wal ``` > **NOTE:** > The `receive-wal` command is a foreground process. Transaction logs are streamed directly in the directory specified by the `streaming_wals_directory` configuration option and are then archived by the `archive-wal` command. Unless otherwise specified in the `streaming_archiver_name` parameter, and only for PostgreSQL 9.3 or above, Barman will set `application_name` of the WAL streamer process to `barman_receive_wal`, allowing you to monitor its status in the `pg_stat_replication` system view of the PostgreSQL server. ### Replication slots > **IMPORTANT:** replication slots are available since PostgreSQL 9.4 Replication slots are an automated way to ensure that the PostgreSQL server will not remove WAL files until they were received by all archivers. Barman uses this mechanism to receive the transaction logs from PostgreSQL. You can find more information about replication slots in the [PostgreSQL manual][replication-slots]. You can even base your backup architecture on streaming connection only. This scenario is useful to configure Docker-based PostgreSQL servers and even to work with PostgreSQL servers running on Windows. > **IMPORTANT:** > In this moment, the Windows support is still experimental, as it is > not yet part of our continuous integration system. ### How to configure the WAL streaming First, the PostgreSQL server must be configured to stream the transaction log files to the Barman server. To configure the streaming connection from Barman to the PostgreSQL server you need to enable the `streaming_archiver`, as already said, including this line in the server configuration file: ``` ini streaming_archiver = on ``` If you plan to use replication slots (recommended), another essential option for the setup of the streaming-based transaction log archiving is the `slot_name` option: ``` ini slot_name = barman ``` This option defines the name of the replication slot that will be used by Barman. It is mandatory if you want to use replication slots. When you configure the replication slot name, you can manually create a replication slot for Barman with this command: ``` bash barman@backup$ barman receive-wal --create-slot pg Creating physical replication slot 'barman' on server 'pg' Replication slot 'barman' created ``` Starting with Barman 2.10, you can configure Barman to automatically create the replication slot by setting: ``` ini create_slot = auto ``` ### Limitations of partial WAL files with recovery The standard behaviour of `pg_receivewal` is to write transactional information in a file with `.partial` suffix after the WAL segment name. Barman expects a partial file to be in the `streaming_wals_directory` of a server. When completed, `pg_receivewal` removes the `.partial` suffix and opens the following one, delivering the file to the `archive-wal` command of Barman for permanent storage and compression. In case of a sudden and unrecoverable failure of the master PostgreSQL server, the `.partial` file that has been streamed to Barman contains very important information that the standard archiver (through PostgreSQL's `archive_command`) has not been able to deliver to Barman. As of Barman 2.10, the `get-wal` command is able to return the content of the current `.partial` WAL file through the `--partial/-P` option. This is particularly useful in the case of recovery, both full or to a point in time. Therefore, in case you run a `recover` command with `get-wal` enabled, and without `--standby-mode`, Barman will automatically add the `-P` option to `barman-wal-restore` (which will then relay that to the remote `get-wal` command) in the `restore_command` recovery option. `get-wal` will also search in the `incoming` directory, in case a WAL file has already been shipped to Barman, but not yet archived. barman-2.10/doc/manual/Makefile0000644000015500001620000000123313571162460014534 0ustar 00000000000000DOCS = barman-manual.en.pdf barman-manual.en.html MDS = $(sort $(wildcard ??-*.en.md)) # Detect the pandoc major version (1 or 2) PANDOC_VERSION = $(shell pandoc --version | awk -F '[ .]+' '/^pandoc/{print $$2; exit}') ifeq ($(PANDOC_VERSION),1) SMART = --smart NOSMART_SUFFIX = else SMART = NOSMART_SUFFIX = -smart endif all: $(DOCS) barman-manual.en.pdf: $(MDS) ../images/*.png pandoc -o $@ -s -f markdown$(NOSMART_SUFFIX) --toc $(MDS) barman-manual.en.html: $(MDS) ../images/*.png pandoc -o $@ -s -f markdown$(NOSMART_SUFFIX) --toc -t html5 $(MDS) clean: rm -f $(DOCS) help: @echo "Usage:" @echo " $$ make" .PHONY: all clean help barman-2.10/doc/manual/50-feature-details.en.md0000644000015500001620000007421413571162460017330 0ustar 00000000000000\newpage # Features in detail In this section we present several Barman features and discuss their applicability and the configuration required to use them. This list is not exhaustive, as many scenarios can be created working on the Barman configuration. Nevertheless, it is useful to discuss common patterns. ## Backup features ### Incremental backup Barman implements **file-level incremental backup**. Incremental backup is a type of full periodic backup which only saves data changes from the latest full backup available in the catalog for a specific PostgreSQL server. It must not be confused with differential backup, which is implemented by _WAL continuous archiving_. > **NOTE:** Block level incremental backup will be available in > future versions. > **IMPORTANT:** The `reuse_backup` option can't be used with the > `postgres` backup method at this time. The main goals of incremental backups in Barman are: - Reduce the time taken for the full backup process - Reduce the disk space occupied by several periodic backups (**data deduplication**) This feature heavily relies on `rsync` and [hard links][8], which must therefore be supported by both the underlying operating system and the file system where the backup data resides. The main concept is that a subsequent base backup will share those files that have not changed since the previous backup, leading to relevant savings in disk usage. This is particularly true of VLDB contexts and of those databases containing a high percentage of _read-only historical tables_. Barman implements incremental backup through a global/server option called `reuse_backup`, that transparently manages the `barman backup` command. It accepts three values: - `off`: standard full backup (default) - `link`: incremental backup, by reusing the last backup for a server and creating a hard link of the unchanged files (for backup space and time reduction) - `copy`: incremental backup, by reusing the last backup for a server and creating a copy of the unchanged files (just for backup time reduction) The most common scenario is to set `reuse_backup` to `link`, as follows: ``` ini reuse_backup = link ``` Setting this at global level will automatically enable incremental backup for all your servers. As a final note, users can override the setting of the `reuse_backup` option through the `--reuse-backup` runtime option for the `barman backup` command. Similarly, the runtime option accepts three values: `off`, `link` and `copy`. For example, you can run a one-off incremental backup as follows: ``` bash barman backup --reuse-backup=link ``` ### Limiting bandwidth usage It is possible to limit the usage of I/O bandwidth through the `bandwidth_limit` option (global/per server), by specifying the maximum number of kilobytes per second. By default it is set to 0, meaning no limit. > **IMPORTANT:** the `bandwidth_limit` and the > `tablespace_bandwidth_limit` options are not supported with the > `postgres` backup method In case you have several tablespaces and you prefer to limit the I/O workload of your backup procedures on one or more tablespaces, you can use the `tablespace_bandwidth_limit` option (global/per server): ``` ini tablespace_bandwidth_limit = tbname:bwlimit[, tbname:bwlimit, ...] ``` The option accepts a comma separated list of pairs made up of the tablespace name and the bandwidth limit (in kilobytes per second). When backing up a server, Barman will try and locate any existing tablespace in the above option. If found, the specified bandwidth limit will be enforced. If not, the default bandwidth limit for that server will be applied. ### Network Compression It is possible to reduce the size of transferred data using compression. It can be enabled using the `network_compression` option (global/per server): > **IMPORTANT:** the `network_compression` option is not available > with the `postgres` backup method. ``` ini network_compression = true|false ``` Setting this option to `true` will enable data compression during network transfers (for both backup and recovery). By default it is set to `false`. ### Concurrent Backup and backup from a standby Normally, during backup operations, Barman uses PostgreSQL native functions `pg_start_backup` and `pg_stop_backup` for _exclusive backup_. These operations are not allowed on a read-only standby server. Barman is also capable of performing backups of PostgreSQL from 9.2 or greater database servers in a **concurrent way**, primarily through the `backup_options` configuration parameter.[^ABOUT_CONCURRENT_BACKUP] [^ABOUT_CONCURRENT_BACKUP]: Concurrent backup is a technology that has been available in PostgreSQL since version 9.2, through the _streaming replication protocol_ (for example, using a tool like `pg_basebackup`). This introduces a new architecture scenario with Barman: **backup from a standby server**, using `rsync`. > **IMPORTANT:** **Concurrent backup** requires users of PostgreSQL > 9.2, 9.3, 9.4, and 9.5 to install the `pgespresso` open source > extension on every PostgreSQL server of the cluster. For more > detailed information and the source code, please visit the > [pgespresso extension website][9]. Barman supports the new API > introduced in PostgreSQL 9.6. This removes the requirement of the > `pgespresso` extension to perform concurrent backups from this > version of PostgreSQL. By default, `backup_options` is transparently set to `exclusive_backup` for backwards compatibility reasons. Users of PostgreSQL 9.6 and later versions should set `backup_options` to `concurrent_backup`. > **IMPORTANT:** When PostgreSQL 9.5 is declared EOL by the Community, > Barman will by default set `backup_options` to `concurrent_backup`. > Support for `pgespresso` will be ceased then. When `backup_options` is set to `concurrent_backup`, Barman activates the _concurrent backup mode_ for a server and follows these two simple rules: - `ssh_command` must point to the destination Postgres server - `conninfo` must point to a database on the destination Postgres database. Using PostgreSQL 9.2, 9.3, 9.4, and 9.5, `pgespresso` must be correctly installed through `CREATE EXTENSION`. Using 9.6 or greater, concurrent backups are executed through the Postgres native API (which requires an active connection from the start to the stop of the backup). > **IMPORTANT:** In case of a concurrent backup, currently Barman > cannot determine whether the closing WAL file of a full backup has > actually been shipped - opposite of an exclusive backup > where PostgreSQL itself makes sure that the WAL file is correctly > archived. Be aware that the full backup cannot be considered > consistent until that WAL file has been received and archived by > Barman. Barman 2.5 introduces a new state, called `WAITING_FOR_WALS`, > which is managed by the `check-backup` command (part of the > ordinary maintenance job performed by the `cron` command). > From Barman 2.10, you can use the `--wait` option with `barman backup` > command. #### Current limitations on backup from standby Barman currently requires that backup data (base backups and WAL files) come from one server only. Therefore, in case of backup from a standby, you should point to the standby server: - `conninfo` - `streaming_conninfo`, if you use `postgres` as `backup_method` and/or rely on WAL streaming - `ssh_command`, if you use `rsync` as `backup_method` > **IMPORTANT:** From Barman 2.8, backup from a standby is supported > only for PostgreSQL 9.4 or higher (versions 9.4 and 9.5 require > `pgespresso`). Support for 9.2 and 9.3 is deprecated. The recommended and simplest way is to setup WAL streaming with replication slots directly from the standby, which requires PostgreSQL 9.4. This means: * configure `streaming_archiver = on`, as described in the "WAL streaming" section, including "Replication slots" * disable `archiver = on` Alternatively, from PostgreSQL 9.5 you can decide to archive from the standby only using `archive_command` with `archive_mode = always` and by disabling WAL streaming. > **NOTE:** Unfortunately, it is not currently possible to enable both WAL archiving > and streaming from the standby due to the way Barman performs WAL duplication > checks and [an undocumented behaviours in all versions of PostgreSQL](https://www.postgresql.org/message-id/20170316170513.1429.77904@wrigleys.postgresql.org). ## Archiving features ### WAL compression The `barman cron` command will compress WAL files if the `compression` option is set in the configuration file. This option allows five values: - `bzip2`: for Bzip2 compression (requires the `bzip2` utility) - `gzip`: for Gzip compression (requires the `gzip` utility) - `pybzip2`: for Bzip2 compression (uses Python's internal compression module) - `pygzip`: for Gzip compression (uses Python's internal compression module) - `pigz`: for Pigz compression (requires the `pigz` utility) - `custom`: for custom compression, which requires you to set the following options as well: - `custom_compression_filter`: a compression filter - `custom_decompression_filter`: a decompression filter > *NOTE:* All methods but `pybzip2` and `pygzip` require `barman > archive-wal` to fork a new process. ### Synchronous WAL streaming > **IMPORTANT:** This feature is available only from PostgreSQL 9.5 > and above. Barman can also reduce the Recovery Point Objective to zero, by collecting the transaction WAL files like a synchronous standby server would. To configure such a scenario, the Barman server must be configured to archive WALs via the [streaming connection](#streaming_connection), and the `receive-wal` process should figure as a synchronous standby of the PostgreSQL server. First of all, you need to retrieve the application name of the Barman `receive-wal` process with the `show-server` command: ``` bash barman@backup$ barman show-server pg|grep streaming_archiver_name streaming_archiver_name: barman_receive_wal ``` Then the application name should be added to the `postgresql.conf` file as a synchronous standby: ``` ini synchronous_standby_names = 'barman_receive_wal' ``` > **IMPORTANT:** this is only an example of configuration, to show you that > Barman is eligible to be a synchronous standby node. > We are not suggesting to use ONLY Barman. > You can read _["Synchronous Replication"][synch]_ from the PostgreSQL > documentation for further information on this topic. The PostgreSQL server needs to be restarted for the configuration to be reloaded. If the server has been configured correctly, the `replication-status` command should show the `receive_wal` process as a synchronous streaming client: ``` bash [root@backup ~]# barman replication-status pg Status of streaming clients for server 'pg': Current xlog location on master: 0/9000098 Number of streaming clients: 1 1. #1 Sync WAL streamer Application name: barman_receive_wal Sync stage : 3/3 Remote write Communication : TCP/IP IP Address : 139.59.135.32 / Port: 58262 / Host: - User name : streaming_barman Current state : streaming (sync) Replication slot: barman WAL sender PID : 2501 Started at : 2016-09-16 10:33:01.725883+00:00 Sent location : 0/9000098 (diff: 0 B) Write location : 0/9000098 (diff: 0 B) Flush location : 0/9000098 (diff: 0 B) ``` ## Catalog management features ### Minimum redundancy safety You can define the minimum number of periodic backups for a PostgreSQL server, using the global/per server configuration option called `minimum_redundancy`, by default set to 0. By setting this value to any number greater than 0, Barman makes sure that at any time you will have at least that number of backups in a server catalog. This will protect you from accidental `barman delete` operations. > **IMPORTANT:** > Make sure that your retention policy settings do not collide with > minimum redundancy requirements. Regularly check Barman's log for > messages on this topic. ### Retention policies Barman supports **retention policies** for backups. A backup retention policy is a user-defined policy that determines how long backups and related archive logs (Write Ahead Log segments) need to be retained for recovery procedures. Based on the user's request, Barman retains the periodic backups required to satisfy the current retention policy and any archived WAL files required for the complete recovery of those backups. Barman users can define a retention policy in terms of **backup redundancy** (how many periodic backups) or a **recovery window** (how long). Retention policy based on redundancy : In a redundancy based retention policy, the user determines how many periodic backups to keep. A redundancy-based retention policy is contrasted with retention policies that use a recovery window. Retention policy based on recovery window : A recovery window is one type of Barman backup retention policy, in which the DBA specifies a period of time and Barman ensures retention of backups and/or archived WAL files required for point-in-time recovery to any time during the recovery window. The interval always ends with the current time and extends back in time for the number of days specified by the user. For example, if the retention policy is set for a recovery window of seven days, and the current time is 9:30 AM on Friday, Barman retains the backups required to allow point-in-time recovery back to 9:30 AM on the previous Friday. #### Scope Retention policies can be defined for: - **PostgreSQL periodic base backups**: through the `retention_policy` configuration option - **Archive logs**, for Point-In-Time-Recovery: through the `wal_retention_policy` configuration option > **IMPORTANT:** > In a temporal dimension, archive logs must be included in the time > window of periodic backups. There are two typical use cases here: full or partial point-in-time recovery. Full point in time recovery scenario: : Base backups and archive logs share the same retention policy, allowing you to recover at any point in time from the first available backup. Partial point in time recovery scenario: : Base backup retention policy is wider than that of archive logs, for example allowing users to keep full, weekly backups of the last 6 months, but archive logs for the last 4 weeks (granting to recover at any point in time starting from the last 4 periodic weekly backups). > **IMPORTANT:** > Currently, Barman implements only the **full point in time > recovery** scenario, by constraining the `wal_retention_policy` > option to `main`. #### How they work Retention policies in Barman can be: - **automated**: enforced by `barman cron` - **manual**: Barman simply reports obsolete backups and allows you to delete them > **IMPORTANT:** > Currently Barman does not implement manual enforcement. This feature > will be available in future versions. #### Configuration and syntax Retention policies can be defined through the following configuration options: - `retention_policy`: for base backup retention - `wal_retention_policy`: for archive logs retention - `retention_policy_mode`: can only be set to `auto` (retention policies are automatically enforced by the `barman cron` command) These configuration options can be defined both at a global level and a server level, allowing users maximum flexibility on a multi-server environment. ##### Syntax for `retention_policy` The general syntax for a base backup retention policy through `retention_policy` is the following: ``` ini retention_policy = {REDUNDANCY value | RECOVERY WINDOW OF value {DAYS | WEEKS | MONTHS}} ``` Where: - syntax is case insensitive - `value` is an integer and is > 0 - in case of **redundancy retention policy**: - `value` must be greater than or equal to the server minimum redundancy level (if that value is not assigned, a warning is generated) - the first valid backup is the value-th backup in a reverse ordered time series - in case of **recovery window policy**: - the point of recoverability is: current time - window - the first valid backup is the first available backup before the point of recoverability; its value in a reverse ordered time series must be greater than or equal to the server minimum redundancy level (if it is not assigned to that value and a warning is generated) By default, `retention_policy` is empty (no retention enforced). ##### Syntax for `wal_retention_policy` Currently, the only allowed value for `wal_retention_policy` is the special value `main`, that maps the retention policy of archive logs to that of base backups. ## Hook scripts Barman allows a database administrator to run hook scripts on these two events: - before and after a backup - before and after the deletion of a backup - before and after a WAL file is archived - before and after a WAL file is deleted There are two types of hook scripts that Barman can manage: - standard hook scripts - retry hook scripts The only difference between these two types of hook scripts is that Barman executes a standard hook script only once, without checking its return code, whereas a retry hook script may be executed more than once, depending on its return code. Specifically, when executing a retry hook script, Barman checks the return code and retries indefinitely until the script returns either `SUCCESS` (with standard return code `0`), or `ABORT_CONTINUE` (return code `62`), or `ABORT_STOP` (return code `63`). Barman treats any other return code as a transient failure to be retried. Users are given more power: a hook script can control its workflow by specifying whether a failure is transient. Also, in case of a 'pre' hook script, by returning `ABORT_STOP`, users can request Barman to interrupt the main operation with a failure. Hook scripts are executed in the following order: 1. The standard 'pre' hook script (if present) 2. The retry 'pre' hook script (if present) 3. The actual event (i.e. backup operation, or WAL archiving), if retry 'pre' hook script was not aborted with `ABORT_STOP` 4. The retry 'post' hook script (if present) 5. The standard 'post' hook script (if present) The output generated by any hook script is written in the log file of Barman. > **NOTE:** > Currently, `ABORT_STOP` is ignored by retry 'post' hook scripts. In > these cases, apart from logging an additional warning, `ABORT_STOP` > will behave like `ABORT_CONTINUE`. ### Backup scripts These scripts can be configured with the following global configuration options (which can be overridden on a per server basis): - `pre_backup_script`: _hook script_ executed _before_ a base backup, only once, with no check on the exit code - `pre_backup_retry_script`: _retry hook script_ executed _before_ a base backup, repeatedly until success or abort - `post_backup_retry_script`: _retry hook script_ executed _after_ a base backup, repeatedly until success or abort - `post_backup_script`: _hook script_ executed _after_ a base backup, only once, with no check on the exit code The script definition is passed to a shell and can return any exit code. Only in case of a _retry_ script, Barman checks the return code (see the [hook script section](#hook_scripts)). The shell environment will contain the following variables: - `BARMAN_BACKUP_DIR`: backup destination directory - `BARMAN_BACKUP_ID`: ID of the backup - `BARMAN_CONFIGURATION`: configuration file used by Barman - `BARMAN_ERROR`: error message, if any (only for the `post` phase) - `BARMAN_PHASE`: phase of the script, either `pre` or `post` - `BARMAN_PREVIOUS_ID`: ID of the previous backup (if present) - `BARMAN_RETRY`: `1` if it is a retry script, `0` if not - `BARMAN_SERVER`: name of the server - `BARMAN_STATUS`: status of the backup - `BARMAN_VERSION`: version of Barman ### Backup delete scripts Version **2.4** introduces pre and post backup delete scripts. As previous scripts, bakup delete scripts can be configured within global configuration options, and it is possible to override them on a per server basis: - `pre_delete_script`: _hook script_ launched _before_ the deletion of a backup, only once, with no check on the exit code - `pre_delete_retry_script`: _retry hook script_ executed _before_ the deletion of a backup, repeatedly until success or abort - `post_delete_retry_script`: _retry hook script_ executed _after_ the deletion of a backup, repeatedly until success or abort - `post_delete_script`: _hook script_ launched _after_ the deletion of a backup, only once, with no check on the exit code The script is executed through a shell and can return any exit code. Only in case of a _retry_ script, Barman checks the return code (see the upper section). Delete scripts uses the same environmental variables of a backup script, plus: - `BARMAN_NEXT_ID`: ID of the next backup (if present) ### WAL archive scripts Similar to backup scripts, archive scripts can be configured with global configuration options (which can be overridden on a per server basis): - `pre_archive_script`: _hook script_ executed _before_ a WAL file is archived by maintenance (usually `barman cron`), only once, with no check on the exit code - `pre_archive_retry_script`: _retry hook script_ executed _before_ a WAL file is archived by maintenance (usually `barman cron`), repeatedly until it is successful or aborted - `post_archive_retry_script`: _retry hook script_ executed _after_ a WAL file is archived by maintenance, repeatedly until it is successful or aborted - `post_archive_script`: _hook script_ executed _after_ a WAL file is archived by maintenance, only once, with no check on the exit code The script is executed through a shell and can return any exit code. Only in case of a _retry_ script, Barman checks the return code (see the upper section). Archive scripts share with backup scripts some environmental variables: - `BARMAN_CONFIGURATION`: configuration file used by Barman - `BARMAN_ERROR`: error message, if any (only for the `post` phase) - `BARMAN_PHASE`: phase of the script, either `pre` or `post` - `BARMAN_SERVER`: name of the server Following variables are specific to archive scripts: - `BARMAN_SEGMENT`: name of the WAL file - `BARMAN_FILE`: full path of the WAL file - `BARMAN_SIZE`: size of the WAL file - `BARMAN_TIMESTAMP`: WAL file timestamp - `BARMAN_COMPRESSION`: type of compression used for the WAL file ### WAL delete scripts Version **2.4** introduces pre and post WAL delete scripts. Similarly to the other hook scripts, wal delete scripts can be configured with global configuration options, and is possible to override them on a per server basis: - `pre_wal_delete_script`: _hook script_ executed _before_ the deletion of a WAL file - `pre_wal_delete_retry_script`: _retry hook script_ executed _before_ the deletion of a WAL file, repeatedly until it is successful or aborted - `post_wal_delete_retry_script`: _retry hook script_ executed _after_ the deletion of a WAL file, repeatedly until it is successful or aborted - `post_wal_delete_script`: _hook script_ executed _after_ the deletion of a WAL file The script is executed through a shell and can return any exit code. Only in case of a _retry_ script, Barman checks the return code (see the upper section). WAL delete scripts use the same environmental variables as WAL archive scripts. ### Recovery scripts Version **2.4** introduces pre and post recovery scripts. As previous scripts, recovery scripts can be configured within global configuration options, and is possible to override them on a per server basis: - `pre_recovery_script`: _hook script_ launched _before_ the recovery of a backup, only once, with no check on the exit code - `pre_recovery_retry_script`: _retry hook script_ executed _before_ the recovery of a backup, repeatedly until success or abort - `post_recovery_retry_script`: _retry hook script_ executed _after_ the recovery of a backup, repeatedly until success or abort - `post_recovery_script`: _hook script_ launched _after_ the recovery of a backup, only once, with no check on the exit code The script is executed through a shell and can return any exit code. Only in case of a _retry_ script, Barman checks the return code (see the upper section). Recovery scripts uses the same environmental variables of a backup script, plus: - `BARMAN_DESTINATION_DIRECTORY`: the directory where the new instance is recovered - `BARMAN_TABLESPACES`: tablespace relocation map (JSON, if present) - `BARMAN_REMOTE_COMMAND`: secure shell command used by the recovery (if present) - `BARMAN_RECOVER_OPTIONS`: recovery additional options (JSON, if present) ## Customization ### Lock file directory Barman allows you to specify a directory for lock files through the `barman_lock_directory` global option. Lock files are used to coordinate concurrent work at global and server level (for example, cron operations, backup operations, access to the WAL archive, and so on.). By default (for backward compatibility reasons), `barman_lock_directory` is set to `barman_home`. > **TIP:** > Users are encouraged to use a directory in a volatile partition, > such as the one dedicated to run-time variable data (e.g. > `/var/run/barman`). ### Binary paths As of version 1.6.0, Barman allows users to specify one or more directories where Barman looks for executable files, using the global/server option `path_prefix`. If a `path_prefix` is provided, it must contain a list of one or more directories separated by colon. Barman will search inside these directories first, then in those specified by the `PATH` environment variable. By default the `path_prefix` option is empty. ## Integration with cluster management systems Barman has been designed for integration with standby servers (with streaming replication or traditional file based log shipping) and high availability tools like [repmgr][repmgr]. From an architectural point of view, PostgreSQL must be configured to archive WAL files directly to the Barman server. Barman, thanks to the `get-wal` framework, can also be used as a WAL hub. For this purpose, you can use the `barman-wal-restore` script, part of the `barman-cli` package, with all your standby servers. The `replication-status` command allows you to get information about any streaming client attached to the managed server, in particular hot standby servers and WAL streamers. ## Parallel jobs By default, Barman uses only one worker for file copy during both backup and recover operations. Starting from version 2.2, it is possible to customize the number of workers that will perform file copy. In this case, the files to be copied will be equally distributed among all parallel workers. It can be configured in global and server scopes, adding these in the corresponding configuration file: ``` ini parallel_jobs = n ``` where `n` is the desired number of parallel workers to be used in file copy operations. The default value is 1. In any case, users can override this value at run-time when executing `backup` or `recover` commands. For example, you can use 4 parallel workers as follows: ``` bash barman backup --jobs 4 server1 ``` Or, alternatively: ``` bash barman backup --j 4 server1 ``` Please note that this parallel jobs feature is only available for servers configured through `rsync`/SSH. For servers configured through streaming protocol, Barman will rely on `pg_basebackup` which is currently limited to only one worker. ## Geographical redundancy It is possible to set up **cascading backup architectures** with Barman, where the source of a backup server is a Barman installation rather than a PostgreSQL server. This feature allows users to transparently keep _geographically distributed_ copies of PostgreSQL backups. In Barman jargon, a backup server that is connected to a Barman installation rather than a PostgreSQL server is defined **passive node**. A passive node is configured through the `primary_ssh_command` option, available both at global (for a full replica of a primary Barman installation) and server level (for mixed scenarios, having both _direct_ and _passive_ servers). ### Sync information The `barman sync-info` command is used to collect information regarding the current status of a Barman server that is useful for synchronisation purposes. The available syntax is the following: ``` bash barman sync-info [--primary] [ []] ``` The command returns a JSON object containing: - A map with all the backups having status `DONE` for that server - A list with all the archived WAL files - The configuration for the server - The last read position (in the _xlog database file_) - the name of the last read WAL file The JSON response contains all the required information for the synchronisation between the `master` and a `passive` node. If `--primary` is specified, the command is executed on the defined primary node, rather than locally. ### Configuration Configuring a server as `passive node` is a quick operation. Simply add to the server configuration the following option: ``` ini primary_ssh_command = ssh barman@primary_barman ``` This option specifies the SSH connection parameters to the primary server, identifying the source of the backup data for the passive server. ### Node synchronisation When a node is marked as `passive` it is treated in a special way by Barman: - it is excluded from standard maintenance operations - direct operations to PostgreSQL are forbidden, including `barman backup` Synchronisation between a passive server and its primary is automatically managed by `barman cron` which will transparently invoke: 1. `barman sync-info --primary`, in order to collect synchronisation information 2. `barman sync-backup`, in order to create a local copy of every backup that is available on the primary node 3. `barman sync-wals`, in order to copy locally all the WAL files available on the primary node ### Manual synchronisation Although `barman cron` automatically manages passive/primary node synchronisation, it is possible to manually trigger synchronisation of a backup through: ``` bash barman sync-backup ``` Launching `sync-backup` barman will use the primary_ssh_command to connect to the master server, then if the backup is present on the remote machine, will begin to copy all the files using rsync. Only one single synchronisation process per backup is allowed. WAL files also can be synchronised, through: ``` bash barman sync-wals ``` barman-2.10/doc/manual/00-head.en.md0000644000015500001620000000141513571162460015137 0ustar 00000000000000% Barman Manual % 2ndQuadrant Limited % December 5, 2019 (2.10) **Barman** (Backup and Recovery Manager) is an open-source administration tool for disaster recovery of PostgreSQL servers written in Python. It allows your organisation to perform remote backups of multiple servers in business critical environments to reduce risk and help DBAs during the recovery phase. [Barman][11] is distributed under GNU GPL 3 and maintained by [2ndQuadrant][13], a platinum sponsor of the [PostgreSQL project][31]. > **IMPORTANT:** \newline > This manual assumes that you are familiar with theoretical disaster > recovery concepts, and that you have a grasp of PostgreSQL fundamentals in > terms of physical backup and disaster recovery. See section _"Before you start"_ below for details. barman-2.10/doc/manual/22-config_file.en.md0000644000015500001620000000153713571162460016513 0ustar 00000000000000## The server configuration file Create a new file, called `pg.conf`, in `/etc/barman.d` directory, with the following content: ``` ini [pg] description = "Our main PostgreSQL server" conninfo = host=pg user=barman dbname=postgres backup_method = postgres # backup_method = rsync ``` The `conninfo` option is set accordingly to the section _"Preliminary steps: PostgreSQL connection"_. The meaning of the `backup_method` option will be covered in the backup section of this guide. If you plan to use the streaming connection for WAL archiving or to create a backup of your server, you also need a `streaming_conninfo` parameter in your server configuration file: ``` ini streaming_conninfo = host=pg user=streaming_barman dbname=postgres ``` This value must be choosen accordingly as described in the section _"Preliminary steps: PostgreSQL connection"_. barman-2.10/doc/manual/17-configuration.en.md0000644000015500001620000000675413571162460017130 0ustar 00000000000000\newpage # Configuration There are two types of configuration files in Barman: - **global/general configuration** - **server configuration** The main configuration file (set to `/etc/barman.conf` by default) contains general options such as main directory, system user, log file, and so on. Server configuration files, one for each server to be backed up by Barman, are located in the `/etc/barman.d` directory and must have a `.conf` suffix. > **IMPORTANT**: For historical reasons, you can still have one single > configuration file containing both global and server options. However, > for maintenance reasons, this approach is deprecated. Configuration files in Barman follow the _INI_ format. Configuration files accept distinct types of parameters: - string - enum - integer - boolean, `on/true/1` are accepted as well are `off/false/0`. None of them requires to be quoted. > *NOTE*: some `enum` allows `off` but not `false`. ## Options scope Every configuration option has a _scope_: - global - server - global/server: server options that can be generally set at global level Global options are allowed in the _general section_, which is identified in the INI file by the `[barman]` label: ``` ini [barman] ; ... global and global/server options go here ``` Server options can only be specified in a _server section_, which is identified by a line in the configuration file, in square brackets (`[` and `]`). The server section represents the ID of that server in Barman. The following example specifies a section for the server named `pg`: ``` ini [pg] ; Configuration options for the ; server named 'pg' go here ``` There are two reserved words that cannot be used as server names in Barman: - `barman`: identifier of the global section - `all`: a handy shortcut that allows you to execute some commands on every server managed by Barman in sequence Barman implements the **convention over configuration** design paradigm, which attempts to reduce the number of options that you are required to configure without losing flexibility. Therefore, some server options can be defined at global level and overridden at server level, allowing users to specify a generic behavior and refine it for one or more servers. These options have a global/server scope. For a list of all the available configurations and their scope, please refer to [section 5 of the 'man' page][man5]. ``` bash man 5 barman ``` ## Examples of configuration The following is a basic example of main configuration file: ``` ini [barman] barman_user = barman configuration_files_directory = /etc/barman.d barman_home = /var/lib/barman log_file = /var/log/barman/barman.log log_level = INFO compression = gzip ``` The example below, on the other hand, is a server configuration file that uses streaming backup: ``` ini [streaming-pg] description = "Example of PostgreSQL Database (Streaming-Only)" conninfo = host=pg user=barman dbname=postgres streaming_conninfo = host=pg user=streaming_barman backup_method = postgres streaming_archiver = on slot_name = barman ``` The following code shows a basic example of traditional backup using `rsync`/SSH: ``` ini [ssh-pg] description = "Example of PostgreSQL Database (via Ssh)" ssh_command = ssh postgres@pg conninfo = host=pg user=barman dbname=postgres backup_method = rsync parallel_jobs = 1 reuse_backup = link archiver = on ``` For more detailed information, please refer to the distributed `barman.conf` file, as well as the `ssh-server.conf-template` and `streaming-server.conf-template` template files. barman-2.10/doc/manual/16-installation.en.md0000644000015500001620000001111513571162460016744 0ustar 00000000000000\newpage # Installation > **IMPORTANT:** > The recommended way to install Barman is by using the available > packages for your GNU/Linux distribution. ## Installation on RedHat/CentOS using RPM packages Barman can be installed on RHEL7 and RHEL6 Linux systems using RPM packages. It is required to install the Extra Packages Enterprise Linux (EPEL) repository and the [PostgreSQL Global Development Group RPM repository][yumpgdg] beforehand. Official RPM packages for Barman are distributed by 2ndQuadrant via Yum through [2ndQuadrant Public RPM repository][2ndqrpmrepo], by following the instructions you find on that website. Then, as `root` simply type: ``` bash yum install barman ``` > **NOTE: ** > We suggest that you exclude any Barman related packages from getting updated > via the PGDG repository. This can be done by adding the following line > to any PGDG repository definition that is included in the Barman server inside > any `/etc/yum.repos.d/pgdg-*.repo` file: ```ini exclude=barman* ``` > By doing this, you solely rely on > 2ndQuadrant repositories for package management of Barman software. For historical reasons, 2ndQuadrant keeps maintaining package distribution of Barman through [Sourceforge.net][3]. ## Installation on Debian/Ubuntu using packages Barman can be installed on Debian and Ubuntu Linux systems using packages. It is directly available in the official repository for Debian and Ubuntu, however, these repositories might not contain the latest available version. If you want to have the latest version of Barman, the recommended method is to install both these repositories: * [2ndQuadrant Public APT repository][2ndqdebrepo], directly maintained by Barman developers * the [PostgreSQL Community APT repository][aptpgdg], by following instructions in the [APT section of the PostgreSQL Wiki][aptpgdgwiki] > **NOTE:** > Thanks to the direct involvement of Barman developers in the > PostgreSQL Community APT repository project, you will always have access > to the most updated versions of Barman. Installing Barman is as easy. As `root` user simply type: ``` bash apt-get install barman ``` ## Installation from sources > **WARNING:** > Manual installation of Barman from sources should only be performed > by expert GNU/Linux users. Installing Barman this way requires > system administration activities such as dependencies management, > `barman` user creation, configuration of the `barman.conf` file, > cron setup for the `barman cron` command, log management, and so on. Create a system user called `barman` on the `backup` server. As `barman` user, download the sources and uncompress them. For a system-wide installation, type: ``` bash barman@backup$ ./setup.py build # run this command with root privileges or through sudo barman@backup# ./setup.py install ``` For a local installation, type: ``` bash barman@backup$ ./setup.py install --user ``` The `barman` application will be installed in your user directory ([make sure that your `PATH` environment variable is set properly][setup_user]). [Barman is also available on the Python Package Index (PyPI)][pypi] and can be installed through `pip`. # Upgrading Barman Barman follows the trunk-based development paradigm, and as such there is only one stable version, the latest. After every commit, Barman goes through thousands of automated tests for each supported PostgreSQL version and on each supported Linux distribution. Also, **every version is back compatible** with previous ones. Thefore, upgrading Barman normally requires a simple update of packages using `yum update` or `apt update`. There have been, however, the following exceptions in our development history, which required some small changes to the configuration. ## Upgrading from Barman 2.X (prior to 2.8) Before upgrading from a version of Barman 2.7 or older users of `rsync` backup method on a primary server should explicitly set `backup_options` to either `concurrent_backup` (recommended for PostgreSQL 9.6 or higher) or `exclusive_backup` (current default), otherwise Barman emits a warning every time it runs. ## Upgrading from Barman 1.X If your Barman installation is 1.X, you need to explicitly configure the archiving strategy. Before, the file based archiver, controlled by `archiver`, was enabled by default. Before you upgrade your Barman installation to the latest version, make sure you add the following line either globally or for any server that requires it: ``` ini archiver = on ``` Additionally, for a few releases, Barman will transparently set `archiver = on` with any server that has not explicitly set an archiving strategy and emit a warning. barman-2.10/doc/manual/55-barman-cli.en.md0000644000015500001620000000446713571162460016267 0ustar 00000000000000\newpage # Barman client utilities (`barman-cli`) Formerly a separate open-source project, `barman-cli` has been merged into Barman's core since version 2.8, and is distributed as an RPM/Debian package. `barman-cli` contains a set of recommended client utilities to be installed alongside the PostgreSQL server: - `barman-wal-archive`: archiving script to be used as `archive_command` as described in the "WAL archiving via `barman-wal-archive`" section; - `barman-wal-restore`: WAL restore script to be used as part of the `restore_command` recovery option on standby and recovery servers, as described in the "`get-wal`" section above; - `barman-cloud-wal-archive`: archiving script to be used as `archive_command` to directly ship WAL files to an S3 object store, bypassing the Barman server; alternatively, as a hook script for WAL archiving (`pre_archive_retry_script`); - `barman-cloud-backup`: backup script to be used to take a local backup directly on the PostgreSQL server and to ship it to an S3 object store, bypassing the Barman server. For more detailed information, please refer to the specific man pages or the `--help` option. For information on how to setup credentials for the Cloud utilities, please refer to the ["Credentials" section in Boto 3 documentation][boto3creds]. > **WARNING:** `barman-cloud-wal-archive` and `barman-cloud-backup` have been > introduced in Barman 2.10. The corresponding utilities for restore > (`barman-cloud-wal-restore` and `barman-cloud-recover`) will be included > in the next 2.11 release. For the moment, restore of WAL files and backups > requires manual intervention (using for example third-party utilities like > `aws-cli`). Cloud utilities require boto3 library installed in your system. ## Installation Barman client utilities are normally installed where PostgreSQL is installed. Our recommendation is to install the `barman-cli` package on every PostgreSQL server, being that primary or standby. Please refer to the main "Installation" section to install the repositories. In case you want to use `barman-cloud-wal-archive` as a hook script, install the package on the Barman server also. To install the package on RedHat/CentOS system, as `root` type: ``` bash yum install barman-cli ``` On Debian/Ubuntu, as `root` user type: ``` bash apt-get install barman-cli ``` barman-2.10/doc/manual/20-server_setup.en.md0000644000015500001620000000146713571162460016775 0ustar 00000000000000\newpage # Setup of a new server in Barman As mentioned in the _"Design and architecture"_ section, we will use the following conventions: - `pg` as server ID and host name where PostgreSQL is installed - `backup` as host name where Barman is located - `barman` as the user running Barman on the `backup` server (identified by the parameter `barman_user` in the configuration) - `postgres` as the user running PostgreSQL on the `pg` server > **IMPORTANT:** a server in Barman must refer to the same PostgreSQL > instance for the whole backup and recoverability history (i.e. the > same system identifier). **This means that if you perform an upgrade > of the instance (using for example `pg_upgrade`, you must not reuse > the same server definition in Barman, rather use another one as they > have nothing in common.** barman-2.10/doc/manual/24-wal_archiving.en.md0000644000015500001620000001147613571162460017071 0ustar 00000000000000## WAL archiving via `archive_command` The `archive_command` is the traditional method to archive WAL files. The value of this PostgreSQL configuration parameter must be a shell command to be executed by the PostgreSQL server to copy the WAL files to the Barman incoming directory. This can be done in two ways, both requiring a SSH connection: - via `barman-wal-archive` utility (from Barman 2.6) - via rsync/SSH (common approach before Barman 2.6) See sections below for more details. > **IMPORTANT:** PostgreSQL 9.5 introduced support for WAL file > archiving using `archive_command` from a standby. Read the > "Concurrent Backup and backup from a standby" section for more > detailed information on how Barman supports this feature. ### WAL archiving via `barman-wal-archive` From Barman 2.6, the **recommended way** to safely and reliably archive WAL files to Barman via `archive_command` is to use the `barman-wal-archive` command contained in the `barman-cli` package, distributed via 2ndQuadrant public repositories and available under GNU GPL 3 licence. `barman-cli` must be installed on each PostgreSQL server that is part of the Barman cluster. Using `barman-wal-archive` instead of rsync/SSH reduces the risk of data corruption of the shipped WAL file on the Barman server. When using rsync/SSH as `archive_command` a WAL file, there is no mechanism that guarantees that the content of the file is flushed and fsync-ed to disk on destination. For this reason, we have developed the `barman-wal-archive` utility that natively communicates with Barman's `put-wal` command (introduced in 2.6), which is responsible to receive the file, fsync its content and place it in the proper `incoming` directory for that server. Therefore, `barman-wal-archive` reduces the risk of copying a WAL file in the wrong location/directory in Barman, as the only parameter to be used in the `archive_command` is the server's ID. For more information on the `barman-wal-archive` command, type `man barman-wal-archive` on the PostgreSQL server. You can check that `barman-wal-archive` can connect to the Barman server, and that the required PostgreSQL server is configured in Barman to accept incoming WAL files with the following command: ``` bash barman-wal-archive --test backup pg DUMMY ``` Where `backup` is the host where Barman is installed, `pg` is the name of the PostgreSQL server as configured in Barman and DUMMY is a placeholder (`barman-wal-archive` requires an argument for the WAL file name, which is ignored). Edit the `postgresql.conf` file of the PostgreSQL instance on the `pg` database, activate the archive mode and set `archive_command` to use `barman-wal-archive`: ``` ini archive_mode = on wal_level = 'replica' archive_command = 'barman-wal-archive backup pg %p' ``` Then restart the PostgreSQL server. ### WAL archiving via rsync/SSH You can retrieve the incoming WALs directory using the `show-server` Barman command and looking for the `incoming_wals_directory` value: ``` bash barman@backup$ barman show-server pg |grep incoming_wals_directory incoming_wals_directory: /var/lib/barman/pg/incoming ``` Edit the `postgresql.conf` file of the PostgreSQL instance on the `pg` database and activate the archive mode: ``` ini archive_mode = on wal_level = 'replica' archive_command = 'rsync -a %p barman@backup:INCOMING_WALS_DIRECTORY/%f' ``` Make sure you change the `INCOMING_WALS_DIRECTORY` placeholder with the value returned by the `barman show-server pg` command above. Restart the PostgreSQL server. In some cases, you might want to add stricter checks to the `archive_command` process. For example, some users have suggested the following one: ``` ini archive_command = 'test $(/bin/hostname --fqdn) = HOSTNAME \ && rsync -a %p barman@backup:INCOMING_WALS_DIRECTORY/%f' ``` Where the `HOSTNAME` placeholder should be replaced with the value returned by `hostname --fqdn`. This _trick_ is a safeguard in case the server is cloned and avoids receiving WAL files from recovered PostgreSQL instances. ## Verification of WAL archiving configuration In order to test that continuous archiving is on and properly working, you need to check both the PostgreSQL server and the backup server. In particular, you need to check that WAL files are correctly collected in the destination directory. For this purpose and to facilitate the verification of the WAL archiving process, the `switch-wal` command has been developed: ``` bash barman@backup$ barman switch-wal --force --archive pg ``` The above command will force PostgreSQL to switch WAL file and trigger the archiving process in Barman. Barman will wait for one file to arrive within 30 seconds (you can change the timeout through the `--archive-timeout` option). If no WAL file is received, an error is returned. You can verify if the WAL archiving has been correctly configured using the `barman check` command. barman-2.10/doc/manual/27-windows-support.en.md0000644000015500001620000000246713571162460017463 0ustar 00000000000000## How to setup a Windows based server You can backup a PostgreSQL server running on Windows using the streaming connection for both WAL archiving and for backups. > **IMPORTANT:** This feature is still experimental because it is not > yet part of our continuous integration system. Follow every step discussed previously for a streaming connection setup. > **WARNING:**: At this moment, `pg_basebackup` interoperability from > Windows to Linux is still experimental. If you are having issues > taking a backup from a Windows server and your PostgreSQL locale is > not in English, a possible workaround for the issue is instructing > your PostgreSQL to emit messages in English. You can do this by > putting the following parameter in your `postgresql.conf` file: > > ``` ini > lc_messages = 'English' > ``` > > This has been reported to fix the issue. You can backup your server as usual. Remote recovery is not supported for Windows servers, so you must recover your cluster locally in the Barman server and then copy all the files on a Windows server or use a folder shared between the PostgreSQL server and the Barman server. Additionally, make sure that the system user chosen to run PostgreSQL has the permission needed to access the restored data. Basically, it must have full control over the PostgreSQL data directory. barman-2.10/doc/manual/42-server-commands.en.md0000644000015500001620000002124513571162460017354 0ustar 00000000000000\newpage # Server commands As we said in the previous section, server commands work directly on a PostgreSQL server or on its area in Barman, and are useful to check its status, perform maintainance operations, take backups, and manage the WAL archive. ## `archive-wal` The `archive-wal` command execute maintainance operations on WAL files for a given server. This operations include processing of the WAL files received from the streaming connection or from the `archive_command` or both. > **IMPORTANT:** > The `archive-wal` command, even if it can be directly invoked, is > designed to be started from the `cron` general command. ## `backup` The `backup` command takes a full backup (_base backup_) of a given server. It has several options that let you override the corresponding configuration parameter for the new backup. For more information, consult the manual page. You can perform a full backup for a given server with: ``` bash barman backup ``` > **TIP:** > You can use `barman backup all` to sequentially backup all your > configured servers. ## `check` You can check the connection to a given server and the configuration coherence with the `check` command: ``` bash barman check ``` > **TIP:** > You can use `barman check all` to check all your configured servers. > **IMPORTANT:** > The `check` command is probably the most critical feature that > Barman implements. We recommend to integrate it with your alerting > and monitoring infrastructure. The `--nagios` option allows you > to easily create a plugin for Nagios/Icinga. ## `get-wal` Barman allows users to request any _xlog_ file from its WAL archive through the `get-wal` command: ``` bash barman get-wal [-o OUTPUT_DIRECTORY][-j|-x] ``` If the requested WAL file is found in the server archive, the uncompressed content will be returned to `STDOUT`, unless otherwise specified. The following options are available for the `get-wal` command: - `-o` allows users to specify a destination directory where Barman will deposit the requested WAL file - `-j` will compress the output using `bzip2` algorithm - `-x` will compress the output using `gzip` algorithm - `-p SIZE` peeks from the archive up to WAL files, starting from the requested file It is possible to use `get-wal` during a recovery operation, transforming the Barman server into a _WAL hub_ for your servers. This can be automatically achieved by adding the `get-wal` value to the `recovery_options` global/server configuration option: ``` ini recovery_options = 'get-wal' ``` `recovery_options` is a global/server option that accepts a list of comma separated values. If the keyword `get-wal` is present during a recovery operation, Barman will prepare the recovery configuration by setting the `restore_command` so that `barman get-wal` is used to fetch the required WAL files. Similarly, one can use the `--get-wal` option for the `recover` command at run-time. This is an example of a `restore_command` for a local recovery: ``` ini restore_command = 'sudo -u barman barman get-wal SERVER %f > %p' ``` Please note that the `get-wal` command should always be invoked as `barman` user, and that it requires the correct permission to read the WAL files from the catalog. This is the reason why we are using `sudo -u barman` in the example. Setting `recovery_options` to `get-wal` for a remote recovery will instead generate a `restore_command` using the `barman-wal-restore` script. `barman-wal-restore` is a more resilient shell script which manages SSH connection errors. This script has many useful options such as the automatic compression and decompression of the WAL files and the *peek* feature, which allows you to retrieve the next WAL files while PostgreSQL is applying one of them. It is an excellent way to optimise the bandwidth usage between PostgreSQL and Barman. `barman-wal-restore` is available in the `barman-cli` package. This is an example of a `restore_command` for a remote recovery: ``` ini restore_command = 'barman-wal-restore -U barman backup SERVER %f %p' ``` Since it uses SSH to communicate with the Barman server, SSH key authentication is required for the `postgres` user to login as `barman` on the backup server. You can check that `barman-wal-restore` can connect to the Barman server, and that the required PostgreSQL server is configured in Barman to send WAL files with the following command: ``` bash barman-wal-restore --test backup pg DUMMY DUMMY ``` Where `backup` is the host where Barman is installed, `pg` is the name of the PostgreSQL server as configured in Barman and DUMMY is a placeholder (`barman-wal-restore` requires two argument for the WAL file name and destination directory, which are ignored). For more information on the `barman-wal-restore` command, type `man barman-wal-restore` on the PostgreSQL server. ## `list-backup` You can list the catalog of available backups for a given server with: ``` bash barman list-backup ``` > **TIP:** You can request a full list of the backups of all servers > using `all` as the server name. To have a machine-readable output you can use the `--minimal` option. ## `rebuild-xlogdb` At any time, you can regenerate the content of the WAL archive for a specific server (or every server, using the `all` shortcut). The WAL archive is contained in the `xlog.db` file and every server managed by Barman has its own copy. The `xlog.db` file can be rebuilt with the `rebuild-xlogdb` command. This will scan all the archived WAL files and regenerate the metadata for the archive. For example: ``` bash barman rebuild-xlogdb ``` ## `receive-wal` This command manages the `receive-wal` process, which uses the streaming protocol to receive WAL files from the PostgreSQL streaming connection. ### receive-wal process management If the command is run without options, a `receive-wal` process will be started. This command is based on the `pg_receivewal` PostgreSQL command. ``` bash barman receive-wal ``` > **NOTE:** > The `receive-wal` command is a foreground process. If the command is run with the `--stop` option, the currently running `receive-wal` process will be stopped. The `receive-wal` process uses a status file to track last written record of the transaction log. When the status file needs to be cleaned, the `--reset` option can be used. > **IMPORTANT:** If you are not using replication slots, you rely > on the value of `wal_keep_segments`. Be aware that under high peeks > of workload on the database, the `receive-wal` process > might fall behind and go out of sync. As a precautionary measure, > Barman currently requires that users manually execute the command with the > `--reset` option, to avoid making wrong assumptions. ### Replication slot management The `receive-wal` process is also useful to create or drop the replication slot needed by Barman for its WAL archiving procedure. With the `--create-slot` option, the replication slot named after the `slot_name` configuration option will be created on the PostgreSQL server. With the `--drop-slot`, the previous replication slot will be deleted. ## `replication-status` The `replication-status` command reports the status of any streaming client currently attached to the PostgreSQL server, including the `receive-wal` process of your Barman server (if configured). You can execute the command as follows: ``` bash barman replication-status ``` > **TIP:** You can request a full status report of the replica > for all your servers using `all` as the server name. To have a machine-readable output you can use the `--minimal` option. ## `show-server` You can show the configuration parameters for a given server with: ``` bash barman show-server ``` > **TIP:** you can request a full configuration report using `all` as > the server name. ## `status` The `status` command shows live information and status of a PostgreSQL server or of all servers if you use `all` as server name. ``` bash barman status ``` ## `switch-wal` This command makes the PostgreSQL server switch to another transaction log file (WAL), allowing the current log file to be closed, received and then archived. ``` bash barman switch-wal ``` If there has been no transaction activity since the last transaction log file switch, the switch needs to be forced using the `--force` option. The `--archive` option requests Barman to trigger WAL archiving after the xlog switch. By default, a 30 seconds timeout is enforced (this can be changed with `--archive-timeout`). If no WAL file is received, an error is returned. > **NOTE:** In Barman 2.1 and 2.2 this command was called `switch-xlog`. > It has been renamed for naming consistency with PostgreSQL 10 and higher. barman-2.10/doc/manual/15-system_requirements.en.md0000644000015500001620000000453513571162460020401 0ustar 00000000000000\newpage # System requirements - Linux/Unix - Python >= 3.4 - Python modules: - argcomplete - argh >= 0.21.2 - psycopg2 >= 2.4.2 - python-dateutil - setuptools - PostgreSQL >= 8.3 - rsync >= 3.0.4 (optional for PostgreSQL >= 9.2) > **IMPORTANT:** > Users of RedHat Enterprise Linux, CentOS and Scientific Linux are > required to install the > [Extra Packages Enterprise Linux (EPEL) repository][epel]. > **NOTE:** > Support for Python 2.6 and 2.7 is deprecated and will be discontinued in future releases. > Support for PostgreSQL < 9.4 is deprecated and will be discontinued in future releases. ## Requirements for backup The most critical requirement for a Barman server is the amount of disk space available. You are recommended to plan the required disk space based on the size of the cluster, number of WAL files generated per day, frequency of backups, and retention policies. Although the only file systems that we officially support are XFS and Ext4, we are aware of users that deploy Barman on different file systems including ZFS and NFS. ## Requirements for recovery Barman allows you to recover a PostgreSQL instance either locally (where Barman resides) or remotely (on a separate server). Remote recovery is definitely the most common way to restore a PostgreSQL server with Barman. Either way, the same [requirements for PostgreSQL's Log shipping and Point-In-Time-Recovery apply][requirements_recovery]: - identical hardware architecture - identical major version of PostgreSQL In general, it is **highly recommended** to create recovery environments that are as similar as possible, if not identical, to the original server, because they are easier to maintain. For example, we suggest that you use the same operating system, the same PostgreSQL version, the same disk layouts, and so on. Additionally, dedicated recovery environments for each PostgreSQL server, even on demand, allows you to nurture the disaster recovery culture in your team. You can be prepared for when something unexpected happens by practising recovery operations and becoming familiar with them. Based on our experience, designated recovery environments reduce the impact of stress in real failure situations, and therefore increase the effectiveness of recovery operations. Finally, it is important that time is synchronised between the servers, using NTP for example. barman-2.10/doc/manual/43-backup-commands.en.md0000644000015500001620000002260313571162460017313 0ustar 00000000000000\newpage # Backup commands Backup commands are those that works directly on backups already existing in Barman's backup catalog. > **NOTE:** > Remember a backup ID can be retrieved with `barman list-backup > ` ## Backup ID shortcuts Barman allows you to use special keywords to identify a specific backup: * `last/latest`: identifies the newest backup in the catalog * `first/oldest`: identifies the oldest backup in the catalog Using those keywords with Barman commands allows you to execute actions without knowing the exact ID of a backup for a server. For example we can issue: ``` bash barman delete oldest ``` to remove the oldest backup available in the catalog and reclaim disk space. ## `check-backup` Starting with version 2.5, you can check that all required WAL files for the consistency of a full backup have been correctly archived by `barman` with the `check-backup` command: ``` bash barman check-backup ``` > **IMPORTANT:** > This command is automatically invoked by `cron` and at the end of a > `backup` operation. This means that, under normal circumstances, > you should never need to execute it. In case one or more WAL files from the start to the end of the backup have not been archived yet, `barman` will label the backup as `WAITING_FOR_WALS`. The `cron` command will continue to check that missing WAL files are archived, then label the backup as `DONE`. In case the first required WAL file is missing at the end of the backup, such backup will be marked as `FAILED`. It is therefore important that you verify that WAL archiving (whether via streaming or `archive_command`) is properly working before executing a backup operation - especially when backing up from a standby server. Barman 2.10 introduces the `-w`/`--wait` option for the `backup` command. When set, Barman temporarily saves the state of the backup to `WAITING_FOR_WALS`, then waits for all the required WAL files to be archived before setting the state to `DONE` and proceeding with post-backup hook scripts. ## `delete` You can delete a given backup with: ``` bash barman delete ``` The `delete` command accepts any [shortcut](#shortcuts) to identify backups. ## `list-files` You can list the files (base backup and required WAL files) for a given backup with: ``` bash barman list-files [--target TARGET_TYPE] ``` With the `--target TARGET_TYPE` option, it is possible to choose the content of the list for a given backup. Possible values for `TARGET_TYPE` are: - `data`: lists the data files - `standalone`: lists the base backup files, including required WAL files - `wal`: lists all WAL files from the beginning of the base backup to the start of the following one (or until the end of the log) - `full`: same as `data` + `wal` The default value for `TARGET_TYPE` is `standalone`. > **IMPORTANT:** > The `list-files` command facilitates interaction with external > tools, and can therefore be extremely useful to integrate > Barman into your archiving procedures. ## `recover` The `recover` command is used to recover a whole server after a backup is executed using the `backup` command. This is achieved issuing a command like the following: ```bash barman@backup$ barman recover /path/to/recover/dir ``` > **IMPORTANT:** > Do not issue a `recover` command using a target data directory where > a PostgreSQL instance is running. In that case, remember to stop it > before issuing the recovery. This applies also to tablespace directories. At the end of the execution of the recovery, the selected backup is recovered locally and the destination path contains a data directory ready to be used to start a PostgreSQL instance. > **IMPORTANT:** > Running this command as user `barman`, it will become the database superuser. The specific ID of a backup can be retrieved using the [list-backup](#list-backup) command. > **IMPORTANT:** > Barman does not currently keep track of symbolic links inside PGDATA > (except for tablespaces inside pg_tblspc). We encourage > system administrators to keep track of symbolic links and to add them > to the disaster recovery plans/procedures in case they need to be restored > in their original location. The recovery command has several options that modify the command behavior. ### Remote recovery Add the `--remote-ssh-command ` option to the invocation of the recovery command. Doing this will allow Barman to execute the copy on a remote server, using the provided command to connect to the remote host. > **NOTE:** > It is advisable to use the `postgres` user to perform > the recovery on the remote host. > **IMPORTANT:** > Do not issue a `recover` command using a target data directory where > a PostgreSQL instance is running. In that case, remember to stop it > before issuing the recovery. This applies also to tablespace directories. Known limitations of the remote recovery are: * Barman requires at least 4GB of free space in the system temporary directory unless the [`get-wal`](#get-wal) command is specified in the `recovery_option` parameter in the Barman configuration. * The SSH connection between Barman and the remote host **must** use the public key exchange authentication method * The remote user **must** be able to create the directory structure of the backup in the destination directory. * There must be enough free space on the remote server to contain the base backup and the WAL files needed for recovery. ### Tablespace remapping Barman is able to automatically remap one or more tablespaces using the recover command with the --tablespace option. The option accepts a pair of values as arguments using the `NAME:DIRECTORY` format: * `NAME` is the identifier of the tablespace * `DIRECTORY` is the new destination path for the tablespace If the destination directory does not exists, Barman will try to create it (assuming you have the required permissions). ### Point in time recovery Barman wraps PostgreSQL's Point-in-Time Recovery (PITR), allowing you to specify a recovery target, either as a timestamp, as a restore label, or as a transaction ID. > **IMPORTANT:** > The earliest PITR for a given backup is the end of the base > backup itself. If you want to recover at any point in time > between the start and the end of a backup, you must use > the previous backup. From Barman 2.3 you can exit recovery > when consistency is reached by using `--target-immediate` option > (available only for PostgreSQL 9.4 and newer). The recovery target can be specified using one of four mutually exclusive options: * `--target-time TARGET_TIME`: to specify a timestamp * `--target-xid TARGET_XID`: to specify a transaction ID * `--target-lsn TARGET_LSN`: to specify a Log Sequence Number (LSN) - requires PostgreSQL 10 or higher * `--target-name TARGET_NAME`: to specify a named restore point previously created with the pg_create_restore_point(name) function[^TARGET_NAME] * `--target-immediate`: recovery ends when a consistent state is reached (that is the end of the base backup process) [^RECOVERY_TARGET_IMMEDIATE] > **IMPORTANT:** > Recovery target via _time_, _XID_ and LSN **must be** subsequent to the > end of the backup. If you want to recover to a point in time between > the start and the end of a backup, you must recover from the > previous backup in the catalogue. [^TARGET_NAME]: Only available on PostgreSQL 9.1 and above [^RECOVERY_TARGET_IMMEDIATE]: Only available on PostgreSQL 9.4 and above You can use the `--exclusive` option to specify whether to stop immediately before or immediately after the recovery target. Barman allows you to specify a target timeline for recovery, using the `target-tli` option. The notion of timeline goes beyond the scope of this document; you can find more details in the PostgreSQL documentation, as mentioned in the _"Before you start"_ section. Barman 2.4 introduces support for `--target-action` option, accepting the following values: * `shutdown`: once recovery target is reached, PostgreSQL is shut down [^TARGET_SHUTDOWN] * `pause`: once recovery target is reached, PostgreSQL is started in pause state, allowing users to inspect the instance [^TARGET_PAUSE] * `promote`: once recovery target is reached, PostgreSQL will exit recovery and is promoted as a master [^TARGET_PROMOTE] > **IMPORTANT:** > By default, no target action is defined (for back compatibility). > The `--target-action` option requires a Point In Time Recovery target > to be specified. [^TARGET_SHUTDOWN]: Only available on PostgreSQL 9.5 and above [^TARGET_PAUSE]: Only available on PostgreSQL 9.1 and above [^TARGET_PROMOTE]: Only available on PostgreSQL 9.5 and above For more detailed information on the above settings, please consult the [PostgreSQL documentation on recovery target settings][target]. Barman 2.4 also adds the `--standby-mode` option for the `recover` command which, if specified, properly configures the recovered instance as a standby by creating a `standby.signal` file (from PostgreSQL 12) or by adding `standby_mode = on` to the generated recovery configuration. Further information on _standby mode_ is available in the PostgreSQL documentation. ## `show-backup` You can retrieve all the available information for a particular backup of a given server with: ``` bash barman show-backup ``` The `show-backup` command accepts any [shortcut](#shortcuts) to identify backups. barman-2.10/doc/manual/66-about.en.md0000644000015500001620000000724513571162460015373 0ustar 00000000000000\newpage # The Barman project ## Support and sponsor opportunities Barman is free software, written and maintained by 2ndQuadrant. If you require support on using Barman, or if you need new features, please get in touch with 2ndQuadrant. You can sponsor the development of new features of Barman and PostgreSQL which will be made publicly available as open source. For further information, please visit: - [Barman website][11] - [Support section][12] - [2ndQuadrant website][13] - [Barman FAQs][14] - [2ndQuadrant blog: Barman][15] ## Contributing to Barman 2ndQuadrant has a team of software engineers, architects, database administrators, system administrators, QA engineers, developers and managers that dedicate their time and expertise to improve Barman's code. We adopt lean and agile methodologies for software development, and we believe in the _devops_ culture that allowed us to implement rigorous testing procedures through cross-functional collaboration. Every Barman commit is the contribution of multiple individuals, at different stages of the production pipeline. Even though this is our preferred way of developing Barman, we gladly accept patches from external developers, as long as: - user documentation (tutorial and man pages) is provided. - source code is properly documented and contains relevant comments. - code supplied is covered by unit tests. - no unrelated feature is compromised or broken. - source code is rebased on the current master branch. - commits and pull requests are limited to a single feature (multi-feature patches are hard to test and review). - changes to the user interface are discussed beforehand with 2ndQuadrant. We also require that any contributions provide a copyright assignment and a disclaimer of any work-for-hire ownership claims from the employer of the developer. You can use Github's pull requests system for this purpose. ## Authors In alphabetical order: - Gabriele Bartolini, (architect) - Jonathan Battiato, (QA/testing) - Giulio Calacoci, (developer) - Francesco Canovai, (QA/testing) - Leonardo Cecchi, (developer) - Gianni Ciolli, (QA/testing) - Britt Cole, (documentation) - Marco Nenciarini, (project leader) - Rubens Souza, (QA/testing) Past contributors: - Carlo Ascani - Stefano Bianucci - Giuseppe Broccolo ## Links - [check-barman][16]: a Nagios plugin for Barman, written by Holger Hamann (MIT license) - [puppet-barman][17]: Barman module for Puppet (GPL) - [Tutorial on "How To Back Up, Restore, and Migrate PostgreSQL Databases with Barman on CentOS 7"][26], by Sadequl Hussain (available on DigitalOcean Community) - [BarmanAPI][27]: RESTFul API for Barman, written by Mehmet Emin KarakaĹź (GPL) ## License and Contributions Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License 3. Copyright (C) 2011-2017 [2ndQuadrant Limited][13]. Barman has been partially funded through [4CaaSt][18], a research project funded by the European Commission's Seventh Framework programme. Contributions to Barman are welcome, and will be listed in the `AUTHORS` file. 2ndQuadrant Limited requires that any contributions provide a copyright assignment and a disclaimer of any work-for-hire ownership claims from the employer of the developer. This lets us make sure that all of the Barman distribution remains free code. Please contact info@2ndQuadrant.com for a copy of the relevant Copyright Assignment Form. barman-2.10/doc/manual/10-design.en.md0000644000015500001620000002564613571162460015524 0ustar 00000000000000\newpage # Design and architecture ## Where to install Barman One of the foundations of Barman is the ability to operate remotely from the database server, via the network. Theoretically, you could have your Barman server located in a data centre in another part of the world, thousands of miles away from your PostgreSQL server. Realistically, you do not want your Barman server to be too far from your PostgreSQL server, so that both backup and recovery times are kept under control. Even though there is no _"one size fits all"_ way to setup Barman, there are a couple of recommendations that we suggest you abide by, in particular: - Install Barman on a dedicated server - Do not share the same storage with your PostgreSQL server - Integrate Barman with your monitoring infrastructure [^nagios] - Test everything before you deploy it to production [^nagios]: Integration with Nagios/Icinga is straightforward thanks to the `barman check --nagios` command, one of the most important features of Barman and a true lifesaver. A reasonable way to start modelling your disaster recovery architecture is to: - design a couple of possibile architectures in respect to PostgreSQL and Barman, such as: 1. same data centre 2. different data centre in the same metropolitan area 3. different data centre - elaborate the pros and the cons of each hypothesis - evaluate the single points of failure (SPOF) of your system, with cost-benefit analysis - make your decision and implement the initial solution Having said this, a very common setup for Barman is to be installed in the same data centre where your PostgreSQL servers are. In this case, the single point of failure is the data centre. Fortunately, the impact of such a SPOF can be alleviated thanks to two features that Barman provides to increase the number of backup tiers: 1. **geographical redundancy** (introduced in Barman 2.6) 2. **hook scripts** With _geographical redundancy_, you can rely on a Barman instance that is located in a different data centre/availability zone to synchronise the entire content of the source Barman server. There's more: given that geo-redundancy can be configured in Barman not only at global level, but also at server level, you can create _hybrid installations_ of Barman where some servers are directly connected to the local PostgreSQL servers, and others are backing up subsets of different Barman installations (_cross-site backup_). Figure \ref{georedundancy-design} below shows two availability zones (one in Europe and one in the US), each with a primary PostgreSQL server that is backed up in a local Barman installation, and relayed on the other Barman server (defined as _passive_) for multi-tier backup via rsync/SSH. Further information on geo-redundancy is available in the specific section. ![An example of architecture with geo-redundancy\label{georedundancy-design}](../images/barman-architecture-georedundancy.png){ width=80% } Thanks to _hook scripts_ instead, backups of Barman can be exported on different media, such as _tape_ via `tar`, or locations, like an _S3 bucket_ in the Amazon cloud. Remember that no decision is forever. You can start this way and adapt over time to the solution that suits you best. However, try and keep it simple to start with. ## One Barman, many PostgreSQL servers Another relevant feature that was first introduced by Barman is support for multiple servers. Barman can store backup data coming from multiple PostgreSQL instances, even with different versions, in a centralised way. [^recver] [^recver]: The same [requirements for PostgreSQL's PITR][requirements_recovery] apply for recovery, as detailed in the section _"Requirements for recovery"_. As a result, you can model complex disaster recovery architectures, forming a "star schema", where PostgreSQL servers rotate around a central Barman server. Every architecture makes sense in its own way. Choose the one that resonates with you, and most importantly, the one you trust, based on real experimentation and testing. From this point forward, for the sake of simplicity, this guide will assume a basic architecture: - one PostgreSQL instance (with host name `pg`) - one backup server with Barman (with host name `backup`) ## Streaming backup vs rsync/SSH Traditionally, Barman has always operated remotely via SSH, taking advantage of `rsync` for physical backup operations. Version 2.0 introduces native support for PostgreSQL's streaming replication protocol for backup operations, via `pg_basebackup`. [^fmatrix] [^fmatrix]: Check in the "Feature matrix" which PostgreSQL versions support streaming replication backups with Barman. Choosing one of these two methods is a decision you will need to make. On a general basis, starting from Barman 2.0, backup over streaming replication is the recommended setup for PostgreSQL 9.4 or higher. Moreover, if you do not make use of tablespaces, backup over streaming can be used starting from PostgreSQL 9.2. > **IMPORTANT:** \newline > Because Barman transparently makes use of `pg_basebackup`, features such as incremental backup, parallel backup, deduplication, and network compression are currently not available. In this case, bandwidth limitation has some restrictions - compared to the traditional method via `rsync`. Traditional backup via `rsync`/SSH is available for all versions of PostgreSQL starting from 8.3, and it is recommended in all cases where `pg_basebackup` limitations occur (for example, a very large database that can benefit from incremental backup and deduplication). The reason why we recommend streaming backup is that, based on our experience, it is easier to setup than the traditional one. Also, streaming backup allows you to backup a PostgreSQL server on Windows[^windows], and makes life easier when working with Docker. [^windows]: Backup of a PostgreSQL server on Windows is possible, but it is still experimental because it is not yet part of our continuous integration system. See section _"How to setup a Windows based server"_ for details. ## Standard archiving, WAL streaming ... or both PostgreSQL's Point-In-Time-Recovery requires that transactional logs, also known as _xlog_ or WAL files, are stored alongside of base backups. Traditionally, Barman has supported standard WAL file shipping through PostgreSQL's `archive_command` (usually via `rsync`/SSH, now via `barman-wal-archive` from the `barman-cli` package). With this method, WAL files are archived only when PostgreSQL _switches_ to a new WAL file. To keep it simple, this normally happens every 16MB worth of data changes. Barman 1.6.0 introduces streaming of WAL files for PostgreSQL servers 9.2 or higher, as an additional method for transactional log archiving, through `pg_receivewal` (also known as `pg_receivexlog` before PostgreSQL 10). WAL streaming is able to reduce the risk of data loss, bringing RPO down to _near zero_ values. Barman 2.0 introduces support for replication slots with PostgreSQL servers 9.4 or above, therefore allowing WAL streaming-only configurations. Moreover, you can now add Barman as a synchronous WAL receiver in your PostgreSQL 9.5 (or higher) cluster, and achieve **zero data loss** (RPO=0). In some cases you have no choice and you are forced to use traditional archiving. In others, you can choose whether to use both or just WAL streaming. Unless you have strong reasons not to do it, we recommend to use both channels, for maximum reliability and robustness. ## Two typical scenarios for backups In order to make life easier for you, below we summarise the two most typical scenarios for a given PostgreSQL server in Barman. Bear in mind that this is a decision that you must make for every single server that you decide to back up with Barman. This means that you can have heterogeneous setups within the same installation. As mentioned before, we will only worry about the PostgreSQL server (`pg`) and the Barman server (`backup`). However, in real life, your architecture will most likely contain other technologies such as repmgr, pgBouncer, Nagios/Icinga, and so on. ### Scenario 1: Backup via streaming protocol If you are using PostgreSQL 9.4 or higher, and your database falls under a general use case scenario, you will likely end up deciding on a streaming backup installation - see figure \ref{scenario1-design} below. ![Streaming-only backup (Scenario 1)\label{scenario1-design}](../images/barman-architecture-scenario1.png){ width=80% } In this scenario, you will need to configure: 1. a standard connection to PostgreSQL, for management, coordination, and monitoring purposes 2. a streaming replication connection that will be used by both `pg_basebackup` (for base backup operations) and `pg_receivewal` (for WAL streaming) This setup, in Barman's terminology, is known as **streaming-only** setup, as it does not require any SSH connection for backup and archiving operations. This is particularly suitable and extremely practical for Docker environments. However, as mentioned before, you can configure standard archiving as well and implement a more robust architecture - see figure \ref{scenario1b-design} below. ![Streaming backup with WAL archiving (Scenario 1b)\label{scenario1b-design}](../images/barman-architecture-scenario1b.png){ width=80% } This alternate approach requires: - an additional SSH connection that allows the `postgres` user on the PostgreSQL server to connect as `barman` user on the Barman server - the `archive_command` in PostgreSQL be configured to ship WAL files to Barman This architecture is available also to PostgreSQL 9.2/9.3 users that do not use tablespaces. ### Scenario 2: Backup via `rsync`/SSH The _traditional_ setup of `rsync` over SSH is the only available option for: - PostgreSQL servers version 8.3, 8.4, 9.0 or 9.1 - PostgreSQL servers version 9.2 or 9.3 that are using tablespaces - incremental backup, parallel backup and deduplication - network compression during backups - finer control of bandwidth usage, including on a tablespace basis ![Scenario 2 - Backup via rsync/SSH](../images/barman-architecture-scenario2.png){ width=80% } In this scenario, you will need to configure: 1. a standard connection to PostgreSQL for management, coordination, and monitoring purposes 2. an SSH connection for base backup operations to be used by `rsync` that allows the `barman` user on the Barman server to connect as `postgres` user on the PostgreSQL server 3. an SSH connection for WAL archiving to be used by the `archive_command` in PostgreSQL and that allows the `postgres` user on the PostgreSQL server to connect as `barman` user on the Barman server Starting from PostgreSQL 9.2, you can add a streaming replication connection that is used for WAL streaming and significantly reduce RPO. This more robust implementation is depicted in figure \ref{scenario2b-design}. ![Backup via rsync/SSH with WAL streaming (Scenario 2b)\label{scenario2b-design}](../images/barman-architecture-scenario2b.png){ width=80% } barman-2.10/doc/manual/02-before_you_start.en.md0000644000015500001620000000175013571162460017615 0ustar 00000000000000\newpage # Before you start Before you start using Barman, it is fundamental that you get familiar with PostgreSQL and the concepts around physical backups, Point-In-Time-Recovery and replication, such as base backups, WAL archiving, etc. Below you can find a non exhaustive list of resources that we recommend for you to read: - _PostgreSQL documentation_: - [SQL Dump][sqldump][^pgdump] - [File System Level Backup][physicalbackup] - [Continuous Archiving and Point-in-Time Recovery (PITR)][pitr] - [Reliability and the Write-Ahead Log][wal] - _Book_: [PostgreSQL 10 Administration Cookbook][adminbook] [^pgdump]: It is important that you know the difference between logical and physical backup, therefore between `pg_dump` and a tool like Barman. Professional training on these topics is another effective way of learning these concepts. At any time of the year you can find many courses available all over the world, delivered by PostgreSQL companies such as 2ndQuadrant. barman-2.10/doc/manual/25-streaming_backup.en.md0000644000015500001620000000251413571162460017564 0ustar 00000000000000## Streaming backup Barman can backup a PostgreSQL server using the streaming connection, relying on `pg_basebackup`, a utility that has been available from PostgreSQL 9.1. > **IMPORTANT:** Barman requires that `pg_basebackup` is installed in > the same server. For PostgreSQL 9.2 servers, you need the > `pg_basebackup` of version 9.2 installed alongside with Barman. For > PostgreSQL 9.3 and above, it is recommented to install the last > available version of `pg_basebackup`, as it is back compatible. You > can even install multiple versions of `pg_basebackup` on the Barman > server and properly point to the specific version for a server, > using the `path_prefix` option in the configuration file. To successfully backup your server with the streaming connection, you need to use `postgres` as your backup method: ``` ini backup_method = postgres ``` > **IMPORTANT:** keep in mind that if the WAL archiving is not > currently configured, you will not be able to start a backup. To check if the server configuration is valid you can use the `barman check` command: ``` bash barman@backup$ barman check pg ``` To start a backup you can use the `barman backup` command: ``` bash barman@backup$ barman backup pg ``` > **IMPORTANT:** `pg_basebackup` 9.4 or higher is required for > tablespace support if you use the `postgres` backup method. barman-2.10/doc/manual/21-preliminary_steps.en.md0000644000015500001620000001747713571162460020031 0ustar 00000000000000## Preliminary steps This section contains some preliminary steps that you need to undertake before setting up your PostgreSQL server in Barman. > **IMPORTANT:** > Before you proceed, it is important that you have made your decision > in terms of WAL archiving and backup strategies, as outlined in the > _"Design and architecture"_ section. In particular, you should > decide which WAL archiving methods to use, as well as the backup > method. ### PostgreSQL connection You need to make sure that the `backup` server can connect to the PostgreSQL server on `pg` as superuser. This operation is mandatory. We recommend creating a specific user in PostgreSQL, named `barman`, as follows: ``` bash postgres@pg$ createuser -s -P barman ``` > **IMPORTANT:** The above command will prompt for a password, > which you are then advised to add to the `~barman/.pgpass` file > on the `backup` server. For further information, please refer to > ["The Password File" section in the PostgreSQL Documentation][pgpass]. This connection is required by Barman in order to coordinate its activities with the server, as well as for monitoring purposes. You can choose your favourite client authentication method among those offered by PostgreSQL. More information can be found in the ["Client Authentication" section of the PostgreSQL Documentation][pghba]. Make sure you test the following command before proceeding: ``` bash barman@backup$ psql -c 'SELECT version()' -U barman -h pg postgres ``` Write down the above information (user name, host name and database name) and keep it for later. You will need it with in the `conninfo` option for your server configuration, like in this example: ``` ini [pg] ; ... conninfo = host=pg user=barman dbname=postgres ``` > **NOTE:** Barman honours the `application_name` connection option > for PostgreSQL servers 9.0 or higher. ### PostgreSQL WAL archiving and replication Before you proceed, you need to properly configure PostgreSQL on `pg` to accept streaming replication connections from the Barman server. Please read the following sections in the PostgreSQL documentation: - [Role attributes][roles] - [The pg_hba.conf file][authpghba] - [Setting up standby servers using streaming replication][streamprot] One configuration parameter that is crucially important is the `wal_level` parameter. This parameter must be configured to ensure that all the useful information necessary for a backup to be coherent are included in the transaction log file. ``` ini wal_level = 'replica' ``` For PostgreSQL 9.4 or higher, `wal_level` can also be set to `logical`, in case logical decoding is needed. For PostgreSQL versions older than 9.6, `wal_level` must be set to `hot_standby`. Restart the PostgreSQL server for the configuration to be refreshed. ### PostgreSQL streaming connection If you plan to use WAL streaming or streaming backup, you need to setup a streaming connection. We recommend creating a specific user in PostgreSQL, named `streaming_barman`, as follows: ``` bash postgres@pg$ createuser -P --replication streaming_barman ``` > **IMPORTANT:** The above command will prompt for a password, > which you are then advised to add to the `~barman/.pgpass` file > on the `backup` server. For further information, please refer to > ["The Password File" section in the PostgreSQL Documentation][pgpass]. You can manually verify that the streaming connection works through the following command: ``` bash barman@backup$ psql -U streaming_barman -h pg \ -c "IDENTIFY_SYSTEM" \ replication=1 ``` > **IMPORTANT:** > Please make sure you are able to connect via streaming replication > before going any further. You also need to configure the `max_wal_senders` parameter in the PostgreSQL configuration file. The number of WAL senders depends on the PostgreSQL architecture you have implemented. In this example, we are setting it to `2`: ``` ini max_wal_senders = 2 ``` This option represents the maximum number of concurrent streaming connections that the server will be allowed to manage. Another important parameter is `max_replication_slots`, which represents the maximum number of replication slots [^replslot94] that the server will be allowed to manage. This parameter is needed if you are planning to use the streaming connection to receive WAL files over the streaming connection: ``` ini max_replication_slots = 2 ``` [^replslot94]: Replication slots have been introduced in PostgreSQL 9.4. See section _"WAL Streaming / Replication slots"_ for details. The values proposed for `max_replication_slots` and `max_wal_senders` must be considered as examples, and the values you will use in your actual setup must be choosen after a careful evaluation of the architecture. Please consult the PostgreSQL documentation for guidelines and clarifications. ### SSH connections SSH is a protocol and a set of tools that allows you to open a remote shell to a remote server and copy files between the server and the local system. You can find more documentation about SSH usage in the article ["SSH Essentials"][ssh_essentials] by Digital Ocean. SSH key exchange is a very common practice that is used to implement secure passwordless connections between users on different machines, and it's needed to use `rsync` for WAL archiving and for backups. > **NOTE:** > This procedure is not needed if you plan to use the streaming > connection only to archive transaction logs and backup your PostgreSQL > server. [ssh_essentials]: https://www.digitalocean.com/community/tutorials/ssh-essentials-working-with-ssh-servers-clients-and-keys #### SSH configuration of postgres user Unless you have done it before, you need to create an SSH key for the PostgreSQL user. Log in as `postgres`, in the `pg` host and type: ``` bash postgres@pg$ ssh-keygen -t rsa ``` As this key must be used to connect from hosts without providing a password, no passphrase should be entered during the key pair creation. #### SSH configuration of barman user As in the previous paragraph, you need to create an SSH key for the Barman user. Log in as `barman` in the `backup` host and type: ``` bash barman@backup$ ssh-keygen -t rsa ``` For the same reason, no passphrase should be entered. #### From PostgreSQL to Barman The SSH connection from the PostgreSQL server to the backup server is needed to correctly archive WAL files using the `archive_command` setting. To successfully connect from the PostgreSQL server to the backup server, the PostgreSQL public key has to be configured into the authorized keys of the backup server for the `barman` user. The public key to be authorized is stored inside the `postgres` user home directory in a file named `.ssh/id_rsa.pub`, and its content should be included in a file named `.ssh/authorized_keys` inside the home directory of the `barman` user in the backup server. If the `authorized_keys` file doesn't exist, create it using `600` as permissions. The following command should succeed without any output if the SSH key pair exchange has been completed successfully: ``` bash postgres@pg$ ssh barman@backup -C true ``` The value of the `archive_command` configuration parameter will be discussed in the _"WAL archiving via archive_command section"_. #### From Barman to PostgreSQL The SSH connection between the backup server and the PostgreSQL server is used for the traditional backup over rsync. Just as with the connection from the PostgreSQL server to the backup server, we should authorize the public key of the backup server in the PostgreSQL server for the `postgres` user. The content of the file `.ssh/id_rsa.pub` in the `barman` server should be put in the file named `.ssh/authorized_keys` in the PostgreSQL server. The permissions of that file should be `600`. The following command should succeed without any output if the key pair exchange has been completed successfully. ``` bash barman@backup$ ssh postgres@pg -C true ``` barman-2.10/doc/manual/26-rsync_backup.en.md0000644000015500001620000000172013571162460016730 0ustar 00000000000000## Backup with `rsync`/SSH The backup over `rsync` was the only available method before 2.0, and is currently the only backup method that supports the incremental backup feature. Please consult the _"Features in detail"_ section for more information. To take a backup using `rsync` you need to put these parameters inside the Barman server configuration file: ``` ini backup_method = rsync ssh_command = ssh postgres@pg ``` The `backup_method` option activates the `rsync` backup method, and the `ssh_command` option is needed to correctly create an SSH connection from the Barman server to the PostgreSQL server. > **IMPORTANT:** Keep in mind that if the WAL archiving is not > currently configured, you will not be able to start a backup. To check if the server configuration is valid you can use the `barman check` command: ``` bash barman@backup$ barman check pg ``` To take a backup use the `barman backup` command: ``` bash barman@backup$ barman backup pg ``` barman-2.10/doc/manual/70-feature-matrix.en.md0000644000015500001620000000402713571162460017204 0ustar 00000000000000\newpage \appendix # Feature matrix Below you will find a matrix of PostgreSQL versions and Barman features for backup and archiving: | **Version** | **Backup with rsync/SSH** | **Backup with pg_basebackup** | **Standard WAL archiving** | **WAL Streaming** | **RPO=0** | |:---------:|:---------------------:|:-------------------------:|:----------------------:|:----------------------:|:-------:| | **12** | Yes | Yes | Yes | Yes | Yes | | **11** | Yes | Yes | Yes | Yes | Yes | | **10** | Yes | Yes | Yes | Yes | Yes | | **9.6** | Yes | Yes | Yes | Yes | Yes | | **9.5** | Yes | Yes | Yes | Yes | Yes ~(d)~ | | **9.4** | Yes | Yes | Yes | Yes | Yes ~(d)~ | | **9.3** | Yes | Yes ~(c)~ | Yes | Yes ~(b)~ | No | | **9.2** | Yes | Yes ~(a)~~(c)~ | Yes | Yes ~(a)~~(b)~ | No | | _9.1_ | Yes | No | Yes | No | No | | _9.0_ | Yes | No | Yes | No | No | | _8.4_ | Yes | No | Yes | No | No | | _8.3_ | Yes | No | Yes | No | No | **NOTE:** a) `pg_basebackup` and `pg_receivexlog` 9.2 required b) WAL streaming-only not supported (standard archiving required) c) Backup of tablespaces not supported d) When using `pg_receivexlog` 9.5, minor version 9.5.5 or higher required [^commitsync] [^commitsync]: The commit ["Fix pg_receivexlog --synchronous"][49340627f9821e447f135455d942f7d5e96cae6d] is required (included in version 9.5.5) It is required by Barman that `pg_basebackup` and `pg_receivewal`/`pg_receivexlog` of the same version of the PostgreSQL server (or higher) are installed on the same server where Barman resides. The only exception is that PostgreSQL 9.2 users are required to install version 9.2 of `pg_basebackup` and `pg_receivexlog` alongside with Barman. >> **TIP:** We recommend that the last major, stable version of the PostgreSQL clients (e.g. 11) is installed on the Barman server if you plan to use backup and WAL archiving over streaming replication through `pg_basebackup` and `pg_receivewal`, for PostgreSQL 9.3 or higher servers. >> **TIP:** For "RPO=0" architectures, it is recommended to have at least one synchronous standby server. barman-2.10/doc/manual/01-intro.en.md0000644000015500001620000000765613571162460015407 0ustar 00000000000000\newpage # Introduction In a perfect world, there would be no need for a backup. However, it is important, especially in business environments, to be prepared for when the _"unexpected"_ happens. In a database scenario, the unexpected could take any of the following forms: - data corruption - system failure (including hardware failure) - human error - natural disaster In such cases, any ICT manager or DBA should be able to fix the incident and recover the database in the shortest time possible. We normally refer to this discipline as **disaster recovery**, and more broadly *business continuity*. Within business continuity, it is important to familiarise with two fundamental metrics, as defined by Wikipedia: - [**Recovery Point Objective (RPO)**][rpo]: _"maximum targeted period in which data might be lost from an IT service due to a major incident"_ - [**Recovery Time Objective (RTO)**][rto]: _"the targeted duration of time and a service level within which a business process must be restored after a disaster (or disruption) in order to avoid unacceptable consequences associated with a break in business continuity"_ In a few words, RPO represents the maximum amount of data you can afford to lose, while RTO represents the maximum down-time you can afford for your service. Understandably, we all want **RPO=0** (*"zero data loss"*) and **RTO=0** (*zero down-time*, utopia) - even if it is our grandmothers's recipe website. In reality, a careful cost analysis phase allows you to determine your business continuity requirements. Fortunately, with an open source stack composed of **Barman** and **PostgreSQL**, you can achieve RPO=0 thanks to synchronous streaming replication. RTO is more the focus of a *High Availability* solution, like [**repmgr**][repmgr]. Therefore, by integrating Barman and repmgr, you can dramatically reduce RTO to nearly zero. Based on our experience at 2ndQuadrant, we can confirm that PostgreSQL open source clusters with Barman and repmgr can easily achieve more than 99.99% uptime over a year, if properly configured and monitored. In any case, it is important for us to emphasise more on cultural aspects related to disaster recovery, rather than the actual tools. Tools without human beings are useless. Our mission with Barman is to promote a culture of disaster recovery that: - focuses on backup procedures - focuses even more on recovery procedures - relies on education and training on strong theoretical and practical concepts of PostgreSQL's crash recovery, backup, Point-In-Time-Recovery, and replication for your team members - promotes testing your backups (only a backup that is tested can be considered to be valid), either manually or automatically (be creative with Barman's hook scripts!) - fosters regular practice of recovery procedures, by all members of your devops team (yes, developers too, not just system administrators and DBAs) - solicites to regularly scheduled drills and disaster recovery simulations with the team every 3-6 months - relies on continuous monitoring of PostgreSQL and Barman, and that is able to promptly identify any anomalies Moreover, do everything you can to prepare yourself and your team for when the disaster happens (yes, *when*), because when it happens: - It is going to be a Friday evening, most likely right when you are about to leave the office. - It is going to be when you are on holiday (right in the middle of your cruise around the world) and somebody else has to deal with it. - It is certainly going to be stressful. - You will regret not being sure that the last available backup is valid. - Unless you know how long it approximately takes to recover, every second will seems like forever. Be prepared, don't be scared. In 2011, with these goals in mind, 2ndQuadrant started the development of Barman, now one of the most used backup tools for PostgreSQL. Barman is an acronym for "Backup and Recovery Manager". Currently, Barman works only on Linux and Unix operating systems. barman-2.10/doc/manual/41-global-commands.en.md0000644000015500001620000000446013571162460017305 0ustar 00000000000000\newpage # General commands Barman has many commands and, for the sake of exposition, we can organize them by scope. The scope of the **general commands** is the entire Barman server, that can backup many PostgreSQL servers. **Server commands**, instead, act only on a specified server. **Backup commands** work on a backup, which is taken from a certain server. The following list includes the general commands. ## `cron` `barman` doesn't include a long-running daemon or service file (there's nothing to `systemctl start`, `service start`, etc.). Instead, the `barman cron` subcommand is provided to perform `barman`'s background "steady-state" backup operations. You can perform maintenance operations, on both WAL files and backups, using the `cron` command: ``` bash barman cron ``` > **NOTE:** > This command should be executed in a _cron script_. Our > recommendation is to schedule `barman cron` to run every minute. If > you installed Barman using the rpm or debian package, a cron entry > running on every minute will be created for you. `barman cron` executes WAL archiving operations concurrently on a server basis, and this also enforces retention policies on those servers that have: - `retention_policy` not empty and valid; - `retention_policy_mode` set to `auto`. The `cron` command ensures that WAL streaming is started for those servers that have requested it, by transparently executing the `receive-wal` command. In order to stop the operations started by the `cron` command, comment out the cron entry and execute: ```bash barman receive-wal --stop SERVER_NAME ``` You might want to check `barman list-server` to make sure you get all of your servers. ## `diagnose` The `diagnose` command creates a JSON report useful for diagnostic and support purposes. This report contains information for all configured servers. > **IMPORTANT:** > Even if the diagnose is written in JSON and that format is thought > to be machine readable, its structure is not to be considered part > of the interface. Format can change between different Barman versions. ## `list-server` You can display the list of active servers that have been configured for your backup system with: ``` bash barman list-server ``` A machine readble output can be obtained with the `--minimal` option: ``` bash barman list-server --minimal ``` barman-2.10/doc/manual/99-references.en.md0000644000015500001620000000564213571162460016407 0ustar 00000000000000 [rpo]: https://en.wikipedia.org/wiki/Recovery_point_objective [rto]: https://en.wikipedia.org/wiki/Recovery_time_objective [repmgr]: http://www.repmgr.org/ [sqldump]: https://www.postgresql.org/docs/current/static/backup-dump.html [physicalbackup]: https://www.postgresql.org/docs/current/static/backup-file.html [pitr]: https://www.postgresql.org/docs/current/static/continuous-archiving.html [adminbook]: https://www.2ndquadrant.com/en/books/postgresql-10-administration-cookbook/ [wal]: https://www.postgresql.org/docs/current/static/wal.html [49340627f9821e447f135455d942f7d5e96cae6d]: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=49340627f9821e447f135455d942f7d5e96cae6d [requirements_recovery]: https://www.postgresql.org/docs/current/static/warm-standby.html#STANDBY-PLANNING [yumpgdg]: http://yum.postgresql.org/ [aptpgdg]: http://apt.postgresql.org/ [aptpgdgwiki]: https://wiki.postgresql.org/wiki/Apt [epel]: http://fedoraproject.org/wiki/EPEL [man5]: http://docs.pgbarman.org/barman.5.html [setup_user]: https://docs.python.org/3/install/index.html#alternate-installation-the-user-scheme [pypi]: https://pypi.python.org/pypi/barman/ [pgpass]: https://www.postgresql.org/docs/current/static/libpq-pgpass.html [pghba]: http://www.postgresql.org/docs/current/static/client-authentication.html [authpghba]: http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html [streamprot]: http://www.postgresql.org/docs/current/static/protocol-replication.html [roles]: http://www.postgresql.org/docs/current/static/role-attributes.html [replication-slots]: https://www.postgresql.org/docs/current/static/warm-standby.html#STREAMING-REPLICATION-SLOTS [synch]: http://www.postgresql.org/docs/current/static/warm-standby.html#SYNCHRONOUS-REPLICATION [target]: https://www.postgresql.org/docs/current/static/recovery-target-settings.html [2ndqrpmrepo]: https://rpm.2ndquadrant.com/ [2ndqdebrepo]: https://apt.2ndquadrant.com/ [boto3creds]: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html [3]: https://sourceforge.net/projects/pgbarman/files/ [8]: http://en.wikipedia.org/wiki/Hard_link [9]: https://github.com/2ndquadrant-it/pgespresso [11]: http://www.pgbarman.org/ [12]: http://www.pgbarman.org/support/ [13]: https://www.2ndquadrant.com/ [14]: http://www.pgbarman.org/faq/ [15]: http://blog.2ndquadrant.com/tag/barman/ [16]: https://github.com/hamann/check-barman [17]: https://github.com/2ndquadrant-it/puppet-barman [18]: http://4caast.morfeo-project.org/ [20]: http://www.postgresql.org/docs/current/static/functions-admin.html [24]: http://www.postgresql.org/docs/current/static/warm-standby.html#STREAMING-REPLICATION [25]: http://www.postgresql.org/docs/current/static/app-pgreceivewal.html [26]: https://goo.gl/218Ghl [27]: https://github.com/emin100/barmanapi [31]: http://www.postgresql.org/ barman-2.10/doc/manual/65-troubleshooting.en.md0000644000015500001620000000330513571162460017500 0ustar 00000000000000\newpage # Troubleshooting ## Diagnose a Barman installation You can gather important information about the status of all the configured servers using: ``` bash barman diagnose ``` The `diagnose` command output is a full snapshot of the barman server, providing useful information, such as global configuration, SSH version, Python version, `rsync` version, PostgreSQL clients version, as well as current configuration and status of all servers. The `diagnose` command is extremely useful for troubleshooting problems, as it gives a global view on the status of your Barman installation. ## Requesting help Although Barman is extensively documented, there are a lot of scenarios that are not covered. For any questions about Barman and disaster recovery scenarios using Barman, you can reach the dev team using the community mailing list: https://groups.google.com/group/pgbarman or the IRC channel on freenode: irc://irc.freenode.net/barman In the event you discover a bug, you can open a ticket using Github: https://github.com/2ndquadrant-it/barman/issues 2ndQuadrant provides professional support for Barman, including 24/7 service. ### Submitting a bug Barman has been extensively tested and is currently being used in several production environments. However, as any software, Barman is not bug free. If you discover a bug, please follow this procedure: - execute the `barman diagnose` command - file a bug through the Github issue tracker, by attaching the output obtained by the diagnostics command above (`barman diagnose`) > **WARNING:** > Be careful when submitting the output of the diagnose command > as it might disclose information that are potentially dangerous > from a security point of view. barman-2.10/doc/barman.50000644000015500001620000005445413571162460013162 0ustar 00000000000000.\" Automatically generated by Pandoc 2.8.0.1 .\" .TH "BARMAN" "5" "December 5, 2019" "Barman User manuals" "Version 2.10" .hy .SH NAME .PP barman - Backup and Recovery Manager for PostgreSQL .SH DESCRIPTION .PP Barman is an administration tool for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. Barman can perform remote backups of multiple servers in business critical environments and helps DBAs during the recovery phase. .SH CONFIGURATION FILE LOCATIONS .PP The system-level Barman configuration file is located at .IP .nf \f[C] /etc/barman.conf \f[R] .fi .PP or .IP .nf \f[C] /etc/barman/barman.conf \f[R] .fi .PP and is overridden on a per-user level by .IP .nf \f[C] $HOME/.barman.conf \f[R] .fi .SH CONFIGURATION FILE SYNTAX .PP The Barman configuration file is a plain \f[C]INI\f[R] file. There is a general section called \f[C][barman]\f[R] and a section \f[C][servername]\f[R] for each server you want to backup. Rows starting with \f[C];\f[R] are comments. .SH CONFIGURATION FILE DIRECTORY .PP Barman supports the inclusion of multiple configuration files, through the \f[C]configuration_files_directory\f[R] option. Included files must contain only server specifications, not global configurations. If the value of \f[C]configuration_files_directory\f[R] is a directory, Barman reads all files with \f[C].conf\f[R] extension that exist in that folder. For example, if you set it to \f[C]/etc/barman.d\f[R], you can specify your PostgreSQL servers placing each section in a separate \f[C].conf\f[R] file inside the \f[C]/etc/barman.d\f[R] folder. .SH OPTIONS .TP active When set to \f[C]true\f[R] (default), the server is in full operational state. When set to \f[C]false\f[R], the server can be used for diagnostics, but any operational command such as backup execution or WAL archiving is temporarily disabled. Setting \f[C]active=false\f[R] is a good practice when adding a new node to Barman. Server. .TP archiver This option allows you to activate log file shipping through PostgreSQL\[aq]s \f[C]archive_command\f[R] for a server. If set to \f[C]true\f[R] (default), Barman expects that continuous archiving for a server is in place and will activate checks as well as management (including compression) of WAL files that Postgres deposits in the \f[I]incoming\f[R] directory. Setting it to \f[C]false\f[R], will disable standard continuous archiving for a server. Global/Server. .TP archiver_batch_size This option allows you to activate batch processing of WAL files for the \f[C]archiver\f[R] process, by setting it to a value > 0. Otherwise, the traditional unlimited processing of the WAL queue is enabled. When batch processing is activated, the \f[C]archive-wal\f[R] process would limit itself to maximum \f[C]archiver_batch_size\f[R] WAL segments per single run. Integer. Global/Server. .TP backup_directory Directory where backup data for a server will be placed. Server. .TP backup_method Configure the method barman used for backup execution. If set to \f[C]rsync\f[R] (default), barman will execute backup using the \f[C]rsync\f[R] command. If set to \f[C]postgres\f[R] barman will use the \f[C]pg_basebackup\f[R] command to execute the backup. Global/Server. .TP backup_options This option allows you to control the way Barman interacts with PostgreSQL for backups. It is a comma-separated list of values that accepts the following options: .RS .IP \[bu] 2 \f[C]exclusive_backup\f[R] (default when \f[C]backup_method = rsync\f[R]): \f[C]barman backup\f[R] executes backup operations using the standard exclusive backup approach (technically through \f[C]pg_start_backup\f[R] and \f[C]pg_stop_backup\f[R]) .IP \[bu] 2 \f[C]concurrent_backup\f[R] (default when \f[C]backup_method = postgres\f[R]): if using PostgreSQL 9.2, 9.3, 9.4, and 9.5, Barman requires the \f[C]pgespresso\f[R] module to be installed on the PostgreSQL server and can be used to perform a backup from a standby server. Starting from PostgreSQL 9.6, Barman uses the new PostgreSQL API to perform backups from a standby server. .IP \[bu] 2 \f[C]external_configuration\f[R]: if present, any warning regarding external configuration files is suppressed during the execution of a backup. .PP Note that \f[C]exclusive_backup\f[R] and \f[C]concurrent_backup\f[R] are mutually exclusive. Global/Server. .RE .TP bandwidth_limit This option allows you to specify a maximum transfer rate in kilobytes per second. A value of zero specifies no limit (default). Global/Server. .TP barman_home Main data directory for Barman. Global. .TP barman_lock_directory Directory for locks. Default: \f[C]%(barman_home)s\f[R]. Global. .TP basebackup_retry_sleep Number of seconds of wait after a failed copy, before retrying Used during both backup and recovery operations. Positive integer, default 30. Global/Server. .TP basebackup_retry_times Number of retries of base backup copy, after an error. Used during both backup and recovery operations. Positive integer, default 0. Global/Server. .TP basebackups_directory Directory where base backups will be placed. Server. .TP check_timeout Maximum execution time, in seconds per server, for a barman check command. Set to 0 to disable the timeout. Positive integer, default 30. Global/Server. .TP compression Standard compression algorithm applied to WAL files. Possible values are: \f[C]gzip\f[R] (requires \f[C]gzip\f[R] to be installed on the system), \f[C]bzip2\f[R] (requires \f[C]bzip2\f[R]), \f[C]pigz\f[R] (requires \f[C]pigz\f[R]), \f[C]pygzip\f[R] (Python\[aq]s internal gzip compressor) and \f[C]pybzip2\f[R] (Python\[aq]s internal bzip2 compressor). Global/Server. .TP conninfo Connection string used by Barman to connect to the Postgres server. This is a libpq connection string, consult the PostgreSQL manual (https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING) for more information. Commonly used keys are: host, hostaddr, port, dbname, user, password. Server. .TP create_slot When set to \f[C]auto\f[R] and \f[C]slot_name\f[R] is defined, Barman automatically attempts to create the replication slot if not present. When set to \f[C]manual\f[R] (default), the replication slot needs to be manually created. Global/Server. .TP custom_compression_filter Customised compression algorithm applied to WAL files. Global/Server. .TP custom_decompression_filter Customised decompression algorithm applied to compressed WAL files; this must match the compression algorithm. Global/Server. .TP description A human readable description of a server. Server. .TP errors_directory Directory that contains WAL files that contain an error; usually this is related to a conflict with an existing WAL file (e.g. a WAL file that has been archived after a streamed one). .TP immediate_checkpoint This option allows you to control the way PostgreSQL handles checkpoint at the start of the backup. If set to \f[C]false\f[R] (default), the I/O workload for the checkpoint will be limited, according to the \f[C]checkpoint_completion_target\f[R] setting on the PostgreSQL server. If set to \f[C]true\f[R], an immediate checkpoint will be requested, meaning that PostgreSQL will complete the checkpoint as soon as possible. Global/Server. .TP incoming_wals_directory Directory where incoming WAL files are archived into. Requires \f[C]archiver\f[R] to be enabled. Server. .TP last_backup_maximum_age This option identifies a time frame that must contain the latest backup. If the latest backup is older than the time frame, barman check command will report an error to the user. If empty (default), latest backup is always considered valid. Syntax for this option is: \[dq]i (DAYS | WEEKS | MONTHS)\[dq] where i is a integer greater than zero, representing the number of days | weeks | months of the time frame. Global/Server. .TP log_file Location of Barman\[aq]s log file. Global. .TP log_level Level of logging (DEBUG, INFO, WARNING, ERROR, CRITICAL). Global. .TP max_incoming_wals_queue Maximum number of WAL files in the incoming queue (in both streaming and archiving pools) that are allowed before barman check returns an error (that does not block backups). Global/Server. Default: None (disabled). .TP minimum_redundancy Minimum number of backups to be retained. Default 0. Global/Server. .TP network_compression This option allows you to enable data compression for network transfers. If set to \f[C]false\f[R] (default), no compression is used. If set to \f[C]true\f[R], compression is enabled, reducing network usage. Global/Server. .TP parallel_jobs This option controls how many parallel workers will copy files during a backup or recovery command. Default 1. Global/Server. For backup purposes, it works only when \f[C]backup_method\f[R] is \f[C]rsync\f[R]. .TP path_prefix One or more absolute paths, separated by colon, where Barman looks for executable files. The paths specified in \f[C]path_prefix\f[R] are tried before the ones specified in \f[C]PATH\f[R] environment variable. Global/server. .TP post_archive_retry_script Hook script launched after a WAL file is archived by maintenance. Being this a \f[I]retry\f[R] hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. In a post archive scenario, ABORT_STOP has currently the same effects as ABORT_CONTINUE. Global/Server. .TP post_archive_script Hook script launched after a WAL file is archived by maintenance, after \[aq]post_archive_retry_script\[aq]. Global/Server. .TP post_backup_retry_script Hook script launched after a base backup. Being this a \f[I]retry\f[R] hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. In a post backup scenario, ABORT_STOP has currently the same effects as ABORT_CONTINUE. Global/Server. .TP post_backup_script Hook script launched after a base backup, after \[aq]post_backup_retry_script\[aq]. Global/Server. .TP post_delete_retry_script Hook script launched after the deletion of a backup. Being this a \f[I]retry\f[R] hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. In a post delete scenario, ABORT_STOP has currently the same effects as ABORT_CONTINUE. Global/Server. .TP post_delete_script Hook script launched after the deletion of a backup, after \[aq]post_delete_retry_script\[aq]. Global/Server. .TP post_recovery_retry_script Hook script launched after a recovery. Being this a \f[I]retry\f[R] hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. In a post recovery scenario, ABORT_STOP has currently the same effects as ABORT_CONTINUE. Global/Server. .TP post_recovery_script Hook script launched after a recovery, after \[aq]post_recovery_retry_script\[aq]. Global/Server. .TP post_wal_delete_retry_script Hook script launched after the deletion of a WAL file. Being this a \f[I]retry\f[R] hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. In a post delete scenario, ABORT_STOP has currently the same effects as ABORT_CONTINUE. Global/Server. .TP post_wal_delete_script Hook script launched after the deletion of a WAL file, after \[aq]post_wal)delete_retry_script\[aq]. Global/Server. .TP pre_archive_retry_script Hook script launched before a WAL file is archived by maintenance, after \[aq]pre_archive_script\[aq]. Being this a \f[I]retry\f[R] hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. Returning ABORT_STOP will propagate the failure at a higher level and interrupt the WAL archiving operation. Global/Server. .TP pre_archive_script Hook script launched before a WAL file is archived by maintenance. Global/Server. .TP pre_backup_retry_script Hook script launched before a base backup, after \[aq]pre_backup_script\[aq]. Being this a \f[I]retry\f[R] hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. Returning ABORT_STOP will propagate the failure at a higher level and interrupt the backup operation. Global/Server. .TP pre_backup_script Hook script launched before a base backup. Global/Server. .TP pre_delete_retry_script Hook script launched before the deletion of a backup, after \[aq]pre_delete_script\[aq]. Being this a \f[I]retry\f[R] hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. Returning ABORT_STOP will propagate the failure at a higher level and interrupt the backup deletion. Global/Server. .TP pre_delete_script Hook script launched before the deletion of a backup. Global/Server. .TP pre_recovery_retry_script Hook script launched before a recovery, after \[aq]pre_recovery_script\[aq]. Being this a \f[I]retry\f[R] hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. Returning ABORT_STOP will propagate the failure at a higher level and interrupt the recover operation. Global/Server. .TP pre_recovery_script Hook script launched before a recovery. Global/Server. .TP pre_wal_delete_retry_script Hook script launched before the deletion of a WAL file, after \[aq]pre_wal_delete_script\[aq]. Being this a \f[I]retry\f[R] hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. Returning ABORT_STOP will propagate the failure at a higher level and interrupt the WAL file deletion. Global/Server. .TP pre_wal_delete_script Hook script launched before the deletion of a WAL file. Global/Server. .TP primary_ssh_command Parameter that identifies a Barman server as \f[C]passive\f[R]. In a passive node, the source of a backup server is a Barman installation rather than a PostgreSQL server. If \f[C]primary_ssh_command\f[R] is specified, Barman uses it to establish a connection with the primary server. Empty by default, it can also be set globally. .TP recovery_options Options for recovery operations. Currently only supports \f[C]get-wal\f[R]. \f[C]get-wal\f[R] activates generation of a basic \f[C]restore_command\f[R] in the resulting recovery configuration that uses the \f[C]barman get-wal\f[R] command to fetch WAL files directly from Barman\[aq]s archive of WALs. Comma separated list of values, default empty. Global/Server. .TP retention_policy Policy for retention of periodic backups and archive logs. If left empty, retention policies are not enforced. For redundancy based retention policy use \[dq]REDUNDANCY i\[dq] (where i is an integer > 0 and defines the number of backups to retain). For recovery window retention policy use \[dq]RECOVERY WINDOW OF i DAYS\[dq] or \[dq]RECOVERY WINDOW OF i WEEKS\[dq] or \[dq]RECOVERY WINDOW OF i MONTHS\[dq] where i is a positive integer representing, specifically, the number of days, weeks or months to retain your backups. For more detailed information, refer to the official documentation. Default value is empty. Global/Server. .TP retention_policy_mode Currently only \[dq]auto\[dq] is implemented. Global/Server. .TP reuse_backup This option controls incremental backup support. Global/Server. Possible values are: .RS .IP \[bu] 2 \f[C]off\f[R]: disabled (default); .IP \[bu] 2 \f[C]copy\f[R]: reuse the last available backup for a server and create a copy of the unchanged files (reduce backup time); .IP \[bu] 2 \f[C]link\f[R]: reuse the last available backup for a server and create a hard link of the unchanged files (reduce backup time and space). Requires operating system and file system support for hard links. .RE .TP slot_name Physical replication slot to be used by the \f[C]receive-wal\f[R] command when \f[C]streaming_archiver\f[R] is set to \f[C]on\f[R]. Requires PostgreSQL >= 9.4. Global/Server. Default: None (disabled). .TP ssh_command Command used by Barman to login to the Postgres server via ssh. Server. .TP streaming_archiver This option allows you to use the PostgreSQL\[aq]s streaming protocol to receive transaction logs from a server. If set to \f[C]on\f[R], Barman expects to find \f[C]pg_receivewal\f[R] (known as \f[C]pg_receivexlog\f[R] prior to PostgreSQL 10) in the PATH (see \f[C]path_prefix\f[R] option) and that streaming connection for the server is working. This activates connection checks as well as management (including compression) of WAL files. If set to \f[C]off\f[R] (default) barman will rely only on continuous archiving for a server WAL archive operations, eventually terminating any running \f[C]pg_receivexlog\f[R] for the server. Global/Server. .TP streaming_archiver_batch_size This option allows you to activate batch processing of WAL files for the \f[C]streaming_archiver\f[R] process, by setting it to a value > 0. Otherwise, the traditional unlimited processing of the WAL queue is enabled. When batch processing is activated, the \f[C]archive-wal\f[R] process would limit itself to maximum \f[C]streaming_archiver_batch_size\f[R] WAL segments per single run. Integer. Global/Server. .TP streaming_archiver_name Identifier to be used as \f[C]application_name\f[R] by the \f[C]receive-wal\f[R] command. Only available with \f[C]pg_receivewal\f[R] (or \f[C]pg_receivexlog\f[R] >= 9.3). By default it is set to \f[C]barman_receive_wal\f[R]. Global/Server. .TP streaming_backup_name Identifier to be used as \f[C]application_name\f[R] by the \f[C]pg_basebackup\f[R] command. Only available with \f[C]pg_basebackup\f[R] >= 9.3. By default it is set to \f[C]barman_streaming_backup\f[R]. Global/Server. .TP streaming_conninfo Connection string used by Barman to connect to the Postgres server via streaming replication protocol. By default it is set to \f[C]conninfo\f[R]. Server. .TP streaming_wals_directory Directory where WAL files are streamed from the PostgreSQL server to Barman. Requires \f[C]streaming_archiver\f[R] to be enabled. Server. .TP tablespace_bandwidth_limit This option allows you to specify a maximum transfer rate in kilobytes per second, by specifying a comma separated list of tablespaces (pairs TBNAME:BWLIMIT). A value of zero specifies no limit (default). Global/Server. .TP wal_retention_policy Policy for retention of archive logs (WAL files). Currently only \[dq]MAIN\[dq] is available. Global/Server. .TP wals_directory Directory which contains WAL files. Server. .SH HOOK SCRIPTS .PP The script definition is passed to a shell and can return any exit code. .PP The shell environment will contain the following variables: .TP \f[B]\f[CB]BARMAN_CONFIGURATION\f[B]\f[R] configuration file used by barman .TP \f[B]\f[CB]BARMAN_ERROR\f[B]\f[R] error message, if any (only for the \[aq]post\[aq] phase) .TP \f[B]\f[CB]BARMAN_PHASE\f[B]\f[R] \[aq]pre\[aq] or \[aq]post\[aq] .TP \f[B]\f[CB]BARMAN_RETRY\f[B]\f[R] \f[C]1\f[R] if it is a \f[I]retry script\f[R] (from 1.5.0), \f[C]0\f[R] if not .TP \f[B]\f[CB]BARMAN_SERVER\f[B]\f[R] name of the server .PP Backup scripts specific variables: .TP \f[B]\f[CB]BARMAN_BACKUP_DIR\f[B]\f[R] backup destination directory .TP \f[B]\f[CB]BARMAN_BACKUP_ID\f[B]\f[R] ID of the backup .TP \f[B]\f[CB]BARMAN_PREVIOUS_ID\f[B]\f[R] ID of the previous backup (if present) .TP \f[B]\f[CB]BARMAN_NEXT_ID\f[B]\f[R] ID of the next backup (if present) .TP \f[B]\f[CB]BARMAN_STATUS\f[B]\f[R] status of the backup .TP \f[B]\f[CB]BARMAN_VERSION\f[B]\f[R] version of Barman .PP Archive scripts specific variables: .TP \f[B]\f[CB]BARMAN_SEGMENT\f[B]\f[R] name of the WAL file .TP \f[B]\f[CB]BARMAN_FILE\f[B]\f[R] full path of the WAL file .TP \f[B]\f[CB]BARMAN_SIZE\f[B]\f[R] size of the WAL file .TP \f[B]\f[CB]BARMAN_TIMESTAMP\f[B]\f[R] WAL file timestamp .TP \f[B]\f[CB]BARMAN_COMPRESSION\f[B]\f[R] type of compression used for the WAL file .PP Recovery scripts specific variables: .TP \f[B]\f[CB]BARMAN_DESTINATION_DIRECTORY\f[B]\f[R] the directory where the new instance is recovered .TP \f[B]\f[CB]BARMAN_TABLESPACES\f[B]\f[R] tablespace relocation map (JSON, if present) .TP \f[B]\f[CB]BARMAN_REMOTE_COMMAND\f[B]\f[R] secure shell command used by the recovery (if present) .TP \f[B]\f[CB]BARMAN_RECOVER_OPTIONS\f[B]\f[R] recovery additional options (JSON, if present) .PP Only in case of retry hook scripts, the exit code of the script is checked by Barman. Output of hook scripts is simply written in the log file. .SH EXAMPLE .PP Here is an example of configuration file: .IP .nf \f[C] [barman] ; Main directory barman_home = /var/lib/barman ; System user barman_user = barman ; Log location log_file = /var/log/barman/barman.log ; Default compression level ;compression = gzip ; Incremental backup reuse_backup = link ; \[aq]main\[aq] PostgreSQL Server configuration [main] ; Human readable description description = \[dq]Main PostgreSQL Database\[dq] ; SSH options ssh_command = ssh postgres\[at]pg ; PostgreSQL connection string conninfo = host=pg user=postgres ; PostgreSQL streaming connection string streaming_conninfo = host=pg user=postgres ; Minimum number of required backups (redundancy) minimum_redundancy = 1 ; Retention policy (based on redundancy) retention_policy = REDUNDANCY 2 \f[R] .fi .SH SEE ALSO .PP \f[C]barman\f[R] (1). .SH AUTHORS .PP In alphabetical order: .IP \[bu] 2 Gabriele Bartolini (architect) .IP \[bu] 2 Jonathan Battiato (QA/testing) .IP \[bu] 2 Giulio Calacoci (developer) .IP \[bu] 2 Francesco Canovai (QA/testing) .IP \[bu] 2 Leonardo Cecchi (developer) .IP \[bu] 2 Gianni Ciolli (QA/testing) .IP \[bu] 2 Britt Cole (documentation) .IP \[bu] 2 Marco Nenciarini (project leader) .IP \[bu] 2 Rubens Souza (QA/testing) .PP Past contributors: .IP \[bu] 2 Carlo Ascani .IP \[bu] 2 Stefano Bianucci .IP \[bu] 2 Giuseppe Broccolo .SH RESOURCES .IP \[bu] 2 Homepage: .IP \[bu] 2 Documentation: .IP \[bu] 2 Professional support: .SH COPYING .PP Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. .PP Copyright (C) 2011-2019 2ndQuadrant Limited - https://www.2ndQuadrant.com/. .SH AUTHORS 2ndQuadrant Limited . barman-2.10/doc/barman-cloud-wal-archive.10000644000015500001620000000565313571162460016457 0ustar 00000000000000.\" Automatically generated by Pandoc 2.8.0.1 .\" .TH "BARMAN-CLOUD-WAL-ARCHIVE" "1" "December 5, 2019" "Barman User manuals" "Version 2.10" .hy .SH NAME .PP barman-cloud-wal-archive - Archive PostgreSQL WAL files in the Cloud using \f[C]archive_command\f[R] .SH SYNOPSIS .PP barman-cloud-wal-archive [\f[I]OPTIONS\f[R]] \f[I]DESTINATION_URL\f[R] \f[I]SERVER_NAME\f[R] \f[I]WAL_PATH\f[R] .SH DESCRIPTION .PP This script can be used in the \f[C]archive_command\f[R] of a PostgreSQL server to ship WAL files to the Cloud. Currently only AWS S3 is supported. .PP This script and Barman are administration tools for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. .SH POSITIONAL ARGUMENTS .TP DESTINATION_URL URL of the cloud destination, such as a bucket in AWS S3. For example: \f[C]s3://BUCKET_NAME/path/to/folder\f[R] (where \f[C]BUCKET_NAME\f[R] is the bucket you have created in AWS). .TP SERVER_NAME the name of the server as configured in Barman. .TP WAL_PATH the value of the `%p' keyword (according to `archive_command'). .SH OPTIONS .TP -h, \[en]help show a help message and exit .TP -V, \[en]version show program\[cq]s version number and exit .TP -t, \[en]test test connectivity to the cloud destination and exit .TP -P, \[en]profile profile name (e.g.\ INI section in AWS credentials file) .TP -z, \[en]gzip gzip-compress the WAL while uploading to the cloud .TP -j, \[en]bzip2 bzip2-compress the WAL while uploading to the cloud .TP -e ENCRYPT, \[en]encrypt ENCRYPT enable server-side encryption with the given method for the transfer. Allowed methods: \f[C]AES256\f[R] and \f[C]aws:kms\f[R]. .SH REFERENCES .PP For Boto: .IP \[bu] 2 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html .PP For AWS: .IP \[bu] 2 http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html .IP \[bu] 2 http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html. .SH DEPENDENCIES .IP \[bu] 2 boto3 .SH EXIT STATUS .TP 0 Success .TP Not zero Failure .SH SEE ALSO .PP This script can be used in conjunction with \f[C]pre_archive_retry_script\f[R] to relay WAL files to S3, as follows: .IP .nf \f[C] pre_archive_retry_script = \[aq]barman-cloud-wal-archive [*OPTIONS*] *DESTINATION_URL* ${BARMAN_SERVER} ${BARMAN_FILE}\[aq] \f[R] .fi .SH BUGS .PP Barman has been extensively tested, and is currently being used in several production environments. However, we cannot exclude the presence of bugs. .PP Any bug can be reported via the Github issue tracker. .SH RESOURCES .IP \[bu] 2 Homepage: .IP \[bu] 2 Documentation: .IP \[bu] 2 Professional support: .SH COPYING .PP Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. .PP Copyright (C) 2011-2019 2ndQuadrant Ltd - . .SH AUTHORS 2ndQuadrant . barman-2.10/doc/barman.10000644000015500001620000004635613571162460013160 0ustar 00000000000000.\" Automatically generated by Pandoc 2.8.0.1 .\" .TH "BARMAN" "1" "December 5, 2019" "Barman User manuals" "Version 2.10" .hy .SH NAME .PP barman - Backup and Recovery Manager for PostgreSQL .SH SYNOPSIS .PP barman [\f[I]OPTIONS\f[R]] \f[I]COMMAND\f[R] .SH DESCRIPTION .PP Barman is an administration tool for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. Barman can perform remote backups of multiple servers in business critical environments and helps DBAs during the recovery phase. .SH OPTIONS .TP -h, --help Show a help message and exit. .TP -v, --version Show program version number and exit. .TP -c \f[I]CONFIG\f[R], --config \f[I]CONFIG\f[R] Use the specified configuration file. .TP --color \f[I]{never,always,auto}\f[R], --colour \f[I]{never,always,auto}\f[R] Whether to use colors in the output (default: \f[I]auto\f[R]) .TP -q, --quiet Do not output anything. Useful for cron scripts. .TP -d, --debug debug output (default: False) .TP -f {json,console}, --format {json,console} output format (default: \[aq]console\[aq]) .SH COMMANDS .PP Important: every command has a help option .TP archive-wal \f[I]SERVER_NAME\f[R] Get any incoming xlog file (both through standard \f[C]archive_command\f[R] and streaming replication, where applicable) and moves them in the WAL archive for that server. If necessary, apply compression when requested by the user. .TP backup \f[I]SERVER_NAME\f[R] Perform a backup of \f[C]SERVER_NAME\f[R] using parameters specified in the configuration file. Specify \f[C]all\f[R] as \f[C]SERVER_NAME\f[R] to perform a backup of all the configured servers. .RS .TP --immediate-checkpoint forces the initial checkpoint to be done as quickly as possible. Overrides value of the parameter \f[C]immediate_checkpoint\f[R], if present in the configuration file. .TP --no-immediate-checkpoint forces to wait for the checkpoint. Overrides value of the parameter \f[C]immediate_checkpoint\f[R], if present in the configuration file. .TP --reuse-backup [INCREMENTAL_TYPE] Overrides \f[C]reuse_backup\f[R] option behaviour. Possible values for \f[C]INCREMENTAL_TYPE\f[R] are: .RS .IP \[bu] 2 \f[I]off\f[R]: do not reuse the last available backup; .IP \[bu] 2 \f[I]copy\f[R]: reuse the last available backup for a server and create a copy of the unchanged files (reduce backup time); .IP \[bu] 2 \f[I]link\f[R]: reuse the last available backup for a server and create a hard link of the unchanged files (reduce backup time and space); .PP \f[C]link\f[R] is the default target if \f[C]--reuse-backup\f[R] is used and \f[C]INCREMENTAL_TYPE\f[R] is not explicited. .RE .TP --retry-times Number of retries of base backup copy, after an error. Used during both backup and recovery operations. Overrides value of the parameter \f[C]basebackup_retry_times\f[R], if present in the configuration file. .TP --no-retry Same as \f[C]--retry-times 0\f[R] .TP --retry-sleep Number of seconds of wait after a failed copy, before retrying. Used during both backup and recovery operations. Overrides value of the parameter \f[C]basebackup_retry_sleep\f[R], if present in the configuration file. .TP -j, --jobs Number of parallel workers to copy files during backup. Overrides value of the parameter \f[C]parallel_jobs\f[R], if present in the configuration file. .TP --bwlimit KBPS maximum transfer rate in kilobytes per second. A value of 0 means no limit. Overrides \[aq]bandwidth_limit\[aq] configuration option. Default is undefined. .TP --wait, -w wait for all required WAL files by the base backup to be archived .TP --wait-timeout the time, in seconds, spent waiting for the required WAL files to be archived before timing out .RE .TP check-backup \f[I]SERVER_NAME\f[R] \f[I]BACKUP_ID\f[R] Make sure that all the required WAL files to check the consistency of a physical backup (that is, from the beginning to the end of the full backup) are correctly archived. This command is automatically invoked by the \f[C]cron\f[R] command and at the end of every backup operation. .TP check \f[I]SERVER_NAME\f[R] Show diagnostic information about \f[C]SERVER_NAME\f[R], including: Ssh connection check, PostgreSQL version, configuration and backup directories, archiving process, streaming process, replication slots, etc. Specify \f[C]all\f[R] as \f[C]SERVER_NAME\f[R] to show diagnostic information about all the configured servers. .RS .TP --nagios Nagios plugin compatible output .RE .TP cron Perform maintenance tasks, such as enforcing retention policies or WAL files management. .RS .TP --keep-descriptors Keep the stdout and the stderr streams of the Barman subprocesses attached to this one. This is useful for Docker based installations. .RE .TP delete \f[I]SERVER_NAME\f[R] \f[I]BACKUP_ID\f[R] Delete the specified backup. Backup ID shortcuts section below for available shortcuts. .TP diagnose Collect diagnostic information about the server where barman is installed and all the configured servers, including: global configuration, SSH version, Python version, \f[C]rsync\f[R] version, as well as current configuration and status of all servers. .TP get-wal \f[I][OPTIONS]\f[R] \f[I]SERVER_NAME\f[R] \f[I]WAL_NAME\f[R] Retrieve a WAL file from the \f[C]xlog\f[R] archive of a given server. By default, the requested WAL file, if found, is returned as uncompressed content to \f[C]STDOUT\f[R]. The following options allow users to change this behaviour: .RS .TP -o \f[I]OUTPUT_DIRECTORY\f[R] destination directory where the \f[C]get-wal\f[R] will deposit the requested WAL .TP -P, --partial retrieve also partial WAL files (.partial) .TP -z output will be compressed using gzip .TP -j output will be compressed using bzip2 .TP -p \f[I]SIZE\f[R] peek from the WAL archive up to \f[I]SIZE\f[R] WAL files, starting from the requested one. \[aq]SIZE\[aq] must be an integer >= 1. When invoked with this option, get-wal returns a list of zero to \[aq]SIZE\[aq] WAL segment names, one per row. .TP -t, --test test both the connection and the configuration of the requested PostgreSQL server in Barman for WAL retrieval. With this option, the \[aq]WAL_NAME\[aq] mandatory argument is ignored. .RE .TP list-backup \f[I]SERVER_NAME\f[R] Show available backups for \f[C]SERVER_NAME\f[R]. This command is useful to retrieve a backup ID. For example: .IP .nf \f[C] servername 20111104T102647 - Fri Nov 4 10:26:48 2011 - Size: 17.0 MiB - WAL Size: 100 B \f[R] .fi .IP .nf \f[C] In this case, *20111104T102647* is the backup ID. \f[R] .fi .TP list-files \f[I][OPTIONS]\f[R] \f[I]SERVER_NAME\f[R] \f[I]BACKUP_ID\f[R] List all the files in a particular backup, identified by the server name and the backup ID. See the Backup ID shortcuts section below for available shortcuts. .RS .TP --target \f[I]TARGET_TYPE\f[R] Possible values for TARGET_TYPE are: .RS .IP \[bu] 2 \f[I]data\f[R]: lists just the data files; .IP \[bu] 2 \f[I]standalone\f[R]: lists the base backup files, including required WAL files; .IP \[bu] 2 \f[I]wal\f[R]: lists all the WAL files between the start of the base backup and the end of the log / the start of the following base backup (depending on whether the specified base backup is the most recent one available); .IP \[bu] 2 \f[I]full\f[R]: same as data + wal. .PP The default value is \f[C]standalone\f[R]. .RE .RE .TP list-server Show all the configured servers, and their descriptions. .TP put-wal \f[I][OPTIONS]\f[R] \f[I]SERVER_NAME\f[R] Receive a WAL file from a remote server and securely store it into the \f[C]SERVER_NAME\f[R] incoming directory. The WAL file is retrieved from the \f[C]STDIN\f[R], and must be encapsulated in a tar stream together with a \f[C]MD5SUMS\f[R] file to validate it. This command is meant to be invoked through SSH from a remote \f[C]barman-wal-archive\f[R] utility (part of \f[C]barman-cli\f[R] package). Do not use this command directly unless you take full responsibility of the content of files. .RS .TP -t, --test test both the connection and the configuration of the requested PostgreSQL server in Barman to make sure it is ready to receive WAL files. .RE .TP rebuild-xlogdb \f[I]SERVER_NAME\f[R] Perform a rebuild of the WAL file metadata for \f[C]SERVER_NAME\f[R] (or every server, using the \f[C]all\f[R] shortcut) guessing it from the disk content. The metadata of the WAL archive is contained in the \f[C]xlog.db\f[R] file, and every Barman server has its own copy. .TP receive-wal \f[I]SERVER_NAME\f[R] Start the stream of transaction logs for a server. The process relies on \f[C]pg_receivewal\f[R]/\f[C]pg_receivexlog\f[R] to receive WAL files from the PostgreSQL servers through the streaming protocol. .RS .TP --stop stop the receive-wal process for the server .TP --reset reset the status of receive-wal, restarting the streaming from the current WAL file of the server .TP --create-slot create the physical replication slot configured with the \f[C]slot_name\f[R] configuration parameter .TP --drop-slot drop the physical replication slot configured with the \f[C]slot_name\f[R] configuration parameter .RE .TP recover \f[I][OPTIONS]\f[R] \f[I]SERVER_NAME\f[R] \f[I]BACKUP_ID\f[R] \f[I]DESTINATION_DIRECTORY\f[R] Recover a backup in a given directory (local or remote, depending on the \f[C]--remote-ssh-command\f[R] option settings). See the Backup ID shortcuts section below for available shortcuts. .RS .TP --target-tli \f[I]TARGET_TLI\f[R] Recover the specified timeline. .TP --target-time \f[I]TARGET_TIME\f[R] Recover to the specified time. .RS .PP You can use any valid unambiguous representation (e.g: \[dq]YYYY-MM-DD HH:MM:SS.mmm\[dq]). .RE .TP --target-xid \f[I]TARGET_XID\f[R] Recover to the specified transaction ID. .TP --target-lsn \f[I]TARGET_LSN\f[R] Recover to the specified LSN (Log Sequence Number). Requires PostgreSQL 10 or above. .TP --target-name \f[I]TARGET_NAME\f[R] Recover to the named restore point previously created with the \f[C]pg_create_restore_point(name)\f[R] (for PostgreSQL 9.1 and above users). .TP --target-immediate Recover ends when a consistent state is reached (end of the base backup) .TP --exclusive Set target (time, XID or LSN) to be non inclusive. .TP --target-action \f[I]ACTION\f[R] Trigger the specified action once the recovery target is reached. Possible actions are: \f[C]pause\f[R] (PostgreSQL 9.1 and above), \f[C]shutdown\f[R] (PostgreSQL 9.5 and above) and \f[C]promote\f[R] (ditto). This option requires a target to be defined, with one of the above options. .TP --tablespace \f[I]NAME:LOCATION\f[R] Specify tablespace relocation rule. .TP --remote-ssh-command \f[I]SSH_COMMAND\f[R] This options activates remote recovery, by specifying the secure shell command to be launched on a remote host. This is the equivalent of the \[dq]ssh_command\[dq] server option in the configuration file for remote recovery. Example: \[aq]ssh postgres\[at]db2\[aq]. .TP --retry-times \f[I]RETRY_TIMES\f[R] Number of retries of data copy during base backup after an error. Overrides value of the parameter \f[C]basebackup_retry_times\f[R], if present in the configuration file. .TP --no-retry Same as \f[C]--retry-times 0\f[R] .TP --retry-sleep Number of seconds of wait after a failed copy, before retrying. Overrides value of the parameter \f[C]basebackup_retry_sleep\f[R], if present in the configuration file. .TP --bwlimit KBPS maximum transfer rate in kilobytes per second. A value of 0 means no limit. Overrides \[aq]bandwidth_limit\[aq] configuration option. Default is undefined. .TP -j , --jobs Number of parallel workers to copy files during recovery. Overrides value of the parameter \f[C]parallel_jobs\f[R], if present in the configuration file. Works only for servers configured through \f[C]rsync\f[R]/SSH. .TP --get-wal, --no-get-wal Enable/Disable usage of \f[C]get-wal\f[R] for WAL fetching during recovery. Default is based on \f[C]recovery_options\f[R] setting. .TP --network-compression, --no-network-compression Enable/Disable network compression during remote recovery. Default is based on \f[C]network_compression\f[R] configuration setting. .TP --standby-mode Specifies whether to start the PostgreSQL server as a standby. Default is undefined. .RE .TP replication-status \f[I][OPTIONS]\f[R] \f[I]SERVER_NAME\f[R] Shows live information and status of any streaming client attached to the given server (or servers). Default behaviour can be changed through the following options: .RS .TP --minimal machine readable output (default: False) .TP --target \f[I]TARGET_TYPE\f[R] Possible values for TARGET_TYPE are: .RS .IP \[bu] 2 \f[I]hot-standby\f[R]: lists only hot standby servers .IP \[bu] 2 \f[I]wal-streamer\f[R]: lists only WAL streaming clients, such as pg_receivewal .IP \[bu] 2 \f[I]all\f[R]: any streaming client (default) .RE .RE .TP show-backup \f[I]SERVER_NAME\f[R] \f[I]BACKUP_ID\f[R] Show detailed information about a particular backup, identified by the server name and the backup ID. See the Backup ID shortcuts section below for available shortcuts. For example: .IP .nf \f[C] Backup 20150828T130001: Server Name : quagmire Status : DONE PostgreSQL Version : 90402 PGDATA directory : /srv/postgresql/9.4/main/data Base backup information: Disk usage : 12.4 TiB (12.4 TiB with WALs) Incremental size : 4.9 TiB (-60.02%) Timeline : 1 Begin WAL : 0000000100000CFD000000AD End WAL : 0000000100000D0D00000008 WAL number : 3932 WAL compression ratio: 79.51% Begin time : 2015-08-28 13:00:01.633925+00:00 End time : 2015-08-29 10:27:06.522846+00:00 Begin Offset : 1575048 End Offset : 13853016 Begin XLOG : CFD/AD180888 End XLOG : D0D/8D36158 WAL information: No of files : 35039 Disk usage : 121.5 GiB WAL rate : 275.50/hour Compression ratio : 77.81% Last available : 0000000100000D95000000E7 Catalog information: Retention Policy : not enforced Previous Backup : 20150821T130001 Next Backup : - (this is the latest base backup) \f[R] .fi .TP show-server \f[I]SERVER_NAME\f[R] Show information about \f[C]SERVER_NAME\f[R], including: \f[C]conninfo\f[R], \f[C]backup_directory\f[R], \f[C]wals_directory\f[R] and many more. Specify \f[C]all\f[R] as \f[C]SERVER_NAME\f[R] to show information about all the configured servers. .TP status \f[I]SERVER_NAME\f[R] Show information about the status of a server, including: number of available backups, \f[C]archive_command\f[R], \f[C]archive_status\f[R] and many more. For example: .IP .nf \f[C] Server quagmire: Description: The Giggity database Passive node: False PostgreSQL version: 9.3.9 pgespresso extension: Not available PostgreSQL Data directory: /srv/postgresql/9.3/data PostgreSQL \[aq]archive_command\[aq] setting: rsync -a %p barman\[at]backup:/var/lib/barman/quagmire/incoming Last archived WAL: 0000000100003103000000AD Current WAL segment: 0000000100003103000000AE Retention policies: enforced (mode: auto, retention: REDUNDANCY 2, WAL retention: MAIN) No. of available backups: 2 First available backup: 20150908T003001 Last available backup: 20150909T003001 Minimum redundancy requirements: satisfied (2/1) \f[R] .fi .TP switch-wal \f[I]SERVER_NAME\f[R] Execute pg_switch_wal() on the target server (from PostgreSQL 10), or pg_switch_xlog (for PostgreSQL 8.3 to 9.6). .RS .TP --force Forces the switch by executing CHECKPOINT before pg_switch_xlog(). \f[I]IMPORTANT:\f[R] executing a CHECKPOINT might increase I/O load on a PostgreSQL server. Use this option with care. .TP --archive Wait for one xlog file to be archived. If after a defined amount of time (default: 30 seconds) no xlog file is archived, Barman will teminate with failure exit code. Available also on standby servers. .TP --archive-timeout \f[I]TIMEOUT\f[R] Specifies the amount of time in seconds (default: 30 seconds) the archiver will wait for a new xlog file to be archived before timing out. Available also on standby servers. .RE .TP switch-xlog \f[I]SERVER_NAME\f[R] Alias for switch-wal (kept for back-compatibility) .TP sync-backup \f[I]SERVER_NAME\f[R] \f[I]BACKUP_ID\f[R] Command used for the synchronisation of a passive node with its primary. Executes a copy of all the files of a \f[C]BACKUP_ID\f[R] that is present on \f[C]SERVER_NAME\f[R] node. This command is available only for passive nodes, and uses the \f[C]primary_ssh_command\f[R] option to establish a secure connection with the primary node. .TP sync-info \f[I]SERVER_NAME\f[R] [\f[I]LAST_WAL\f[R] [\f[I]LAST_POSITION\f[R]]] Collect information regarding the current status of a Barman server, to be used for synchronisation purposes. Returns a JSON output representing \f[C]SERVER_NAME\f[R], that contains: all the successfully finished backup, all the archived WAL files, the configuration, last WAL file been read from the \f[C]xlog.db\f[R] and the position in the file. .RS .TP LAST_WAL tells sync-info to skip any WAL file previous to that (incremental synchronisation) .TP LAST_POSITION hint for quickly positioning in the \f[C]xlog.db\f[R] file (incremental synchronisation) .RE .TP sync-wals \f[I]SERVER_NAME\f[R] Command used for the synchronisation of a passive node with its primary. Executes a copy of all the archived WAL files that are present on \f[C]SERVER_NAME\f[R] node. This command is available only for passive nodes, and uses the \f[C]primary_ssh_command\f[R] option to establish a secure connection with the primary node. .SH BACKUP ID SHORTCUTS .PP Rather than using the timestamp backup ID, you can use any of the following shortcuts/aliases to identity a backup for a given server: .TP first Oldest available backup for that server, in chronological order. .TP last Latest available backup for that server, in chronological order. .TP latest same ast \f[I]last\f[R]. .TP oldest same ast \f[I]first\f[R]. .SH EXIT STATUS .TP 0 Success .TP Not zero Failure .SH SEE ALSO .PP \f[C]barman\f[R] (5). .SH BUGS .PP Barman has been extensively tested, and is currently being used in several production environments. However, we cannot exclude the presence of bugs. .PP Any bug can be reported via the Sourceforge bug tracker. Along the bug submission, users can provide developers with diagnostics information obtained through the \f[C]barman diagnose\f[R] command. .SH AUTHORS .PP In alphabetical order: .IP \[bu] 2 Gabriele Bartolini (architect) .IP \[bu] 2 Jonathan Battiato (QA/testing) .IP \[bu] 2 Giulio Calacoci (developer) .IP \[bu] 2 Francesco Canovai (QA/testing) .IP \[bu] 2 Leonardo Cecchi (developer) .IP \[bu] 2 Gianni Ciolli (QA/testing) .IP \[bu] 2 Britt Cole (documentation) .IP \[bu] 2 Marco Nenciarini (project leader) .IP \[bu] 2 Rubens Souza (QA/testing) .PP Past contributors: .IP \[bu] 2 Carlo Ascani .IP \[bu] 2 Stefano Bianucci .IP \[bu] 2 Giuseppe Broccolo .SH RESOURCES .IP \[bu] 2 Homepage: .IP \[bu] 2 Documentation: .IP \[bu] 2 Professional support: .SH COPYING .PP Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. .PP Copyright (C) 2011-2019 2ndQuadrant Limited - . .SH AUTHORS 2ndQuadrant Limited . barman-2.10/doc/barman.5.d/0000755000015500001620000000000013571162463013450 5ustar 00000000000000barman-2.10/doc/barman.5.d/50-custom_compression_filter.md0000644000015500001620000000014413571162460021510 0ustar 00000000000000custom_compression_filter : Customised compression algorithm applied to WAL files. Global/Server. barman-2.10/doc/barman.5.d/50-basebackups_directory.md0000644000015500001620000000011713571162460020557 0ustar 00000000000000basebackups_directory : Directory where base backups will be placed. Server. barman-2.10/doc/barman.5.d/50-basebackup_retry_times.md0000644000015500001620000000026713571162460020744 0ustar 00000000000000basebackup_retry_times : Number of retries of base backup copy, after an error. Used during both backup and recovery operations. Positive integer, default 0. Global/Server. barman-2.10/doc/barman.5.d/50-post_archive_retry_script.md0000644000015500001620000000060413571162460021510 0ustar 00000000000000post_archive_retry_script : Hook script launched after a WAL file is archived by maintenance. Being this a _retry_ hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. In a post archive scenario, ABORT_STOP has currently the same effects as ABORT_CONTINUE. Global/Server. barman-2.10/doc/barman.5.d/50-compression.md0000644000015500001620000000051013571162460016546 0ustar 00000000000000compression : Standard compression algorithm applied to WAL files. Possible values are: `gzip` (requires `gzip` to be installed on the system), `bzip2` (requires `bzip2`), `pigz` (requires `pigz`), `pygzip` (Python's internal gzip compressor) and `pybzip2` (Python's internal bzip2 compressor). Global/Server. barman-2.10/doc/barman.5.d/50-description.md0000644000015500001620000000010213571162460016525 0ustar 00000000000000description : A human readable description of a server. Server. barman-2.10/doc/barman.5.d/50-post_backup_script.md0000644000015500001620000000016613571162460020112 0ustar 00000000000000post_backup_script : Hook script launched after a base backup, after 'post_backup_retry_script'. Global/Server. barman-2.10/doc/barman.5.d/50-log_level.md0000644000015500001620000000012013571162460016152 0ustar 00000000000000log_level : Level of logging (DEBUG, INFO, WARNING, ERROR, CRITICAL). Global. barman-2.10/doc/barman.5.d/50-backup_method.md0000644000015500001620000000041713571162460017020 0ustar 00000000000000backup_method : Configure the method barman used for backup execution. If set to `rsync` (default), barman will execute backup using the `rsync` command. If set to `postgres` barman will use the `pg_basebackup` command to execute the backup. Global/Server. barman-2.10/doc/barman.5.d/50-streaming_archiver_batch_size.md0000644000015500001620000000067113571162460022264 0ustar 00000000000000streaming_archiver_batch_size : This option allows you to activate batch processing of WAL files for the `streaming_archiver` process, by setting it to a value > 0. Otherwise, the traditional unlimited processing of the WAL queue is enabled. When batch processing is activated, the `archive-wal` process would limit itself to maximum `streaming_archiver_batch_size` WAL segments per single run. Integer. Global/Server. barman-2.10/doc/barman.5.d/50-pre_backup_retry_script.md0000644000015500001620000000062313571162460021136 0ustar 00000000000000pre_backup_retry_script : Hook script launched before a base backup, after 'pre_backup_script'. Being this a _retry_ hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. Returning ABORT_STOP will propagate the failure at a higher level and interrupt the backup operation. Global/Server. barman-2.10/doc/barman.5.d/50-primary_ssh_command.md0000644000015500001620000000054713571162460020255 0ustar 00000000000000primary_ssh_command : Parameter that identifies a Barman server as `passive`. In a passive node, the source of a backup server is a Barman installation rather than a PostgreSQL server. If `primary_ssh_command` is specified, Barman uses it to establish a connection with the primary server. Empty by default, it can also be set globally. barman-2.10/doc/barman.5.d/50-recovery_options.md0000644000015500001620000000055513571162460017627 0ustar 00000000000000recovery_options : Options for recovery operations. Currently only supports `get-wal`. `get-wal` activates generation of a basic `restore_command` in the resulting recovery configuration that uses the `barman get-wal` command to fetch WAL files directly from Barman's archive of WALs. Comma separated list of values, default empty. Global/Server. barman-2.10/doc/barman.5.d/00-header.md0000644000015500001620000000016613571162460015437 0ustar 00000000000000% BARMAN(5) Barman User manuals | Version 2.10 % 2ndQuadrant Limited % December 5, 2019 barman-2.10/doc/barman.5.d/50-incoming_wals_directory.md0000644000015500001620000000020113571162460021117 0ustar 00000000000000incoming_wals_directory : Directory where incoming WAL files are archived into. Requires `archiver` to be enabled. Server. barman-2.10/doc/barman.5.d/50-conninfo.md0000644000015500001620000000055613571162460016030 0ustar 00000000000000conninfo : Connection string used by Barman to connect to the Postgres server. This is a libpq connection string, consult the [PostgreSQL manual][conninfo] for more information. Commonly used keys are: host, hostaddr, port, dbname, user, password. Server. [conninfo]: https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING barman-2.10/doc/barman.5.d/50-pre_wal_delete_retry_script.md0000644000015500001620000000065113571162460021777 0ustar 00000000000000pre_wal_delete_retry_script : Hook script launched before the deletion of a WAL file, after 'pre_wal_delete_script'. Being this a _retry_ hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. Returning ABORT_STOP will propagate the failure at a higher level and interrupt the WAL file deletion. Global/Server. barman-2.10/doc/barman.5.d/50-streaming_archiver.md0000644000015500001620000000121313571162460020062 0ustar 00000000000000streaming_archiver : This option allows you to use the PostgreSQL's streaming protocol to receive transaction logs from a server. If set to `on`, Barman expects to find `pg_receivewal` (known as `pg_receivexlog` prior to PostgreSQL 10) in the PATH (see `path_prefix` option) and that streaming connection for the server is working. This activates connection checks as well as management (including compression) of WAL files. If set to `off` (default) barman will rely only on continuous archiving for a server WAL archive operations, eventually terminating any running `pg_receivexlog` for the server. Global/Server. barman-2.10/doc/barman.5.d/50-post_recovery_retry_script.md0000644000015500001620000000055313571162460021730 0ustar 00000000000000post_recovery_retry_script : Hook script launched after a recovery. Being this a _retry_ hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. In a post recovery scenario, ABORT_STOP has currently the same effects as ABORT_CONTINUE. Global/Server. barman-2.10/doc/barman.5.d/20-configuration-file-locations.md0000644000015500001620000000032213571162460021760 0ustar 00000000000000# CONFIGURATION FILE LOCATIONS The system-level Barman configuration file is located at /etc/barman.conf or /etc/barman/barman.conf and is overridden on a per-user level by $HOME/.barman.conf barman-2.10/doc/barman.5.d/50-wals_directory.md0000644000015500001620000000007713571162460017247 0ustar 00000000000000wals_directory : Directory which contains WAL files. Server. barman-2.10/doc/barman.5.d/50-pre_wal_delete_script.md0000644000015500001620000000014113571162460020544 0ustar 00000000000000pre_wal_delete_script : Hook script launched before the deletion of a WAL file. Global/Server. barman-2.10/doc/barman.5.d/50-post_archive_script.md0000644000015500001620000000022013571162460020255 0ustar 00000000000000post_archive_script : Hook script launched after a WAL file is archived by maintenance, after 'post_archive_retry_script'. Global/Server. barman-2.10/doc/barman.5.d/50-pre_backup_script.md0000644000015500001620000000012013571162460017701 0ustar 00000000000000pre_backup_script : Hook script launched before a base backup. Global/Server. barman-2.10/doc/barman.5.d/50-retention_policy.md0000644000015500001620000000121513571162460017576 0ustar 00000000000000retention_policy : Policy for retention of periodic backups and archive logs. If left empty, retention policies are not enforced. For redundancy based retention policy use "REDUNDANCY i" (where i is an integer > 0 and defines the number of backups to retain). For recovery window retention policy use "RECOVERY WINDOW OF i DAYS" or "RECOVERY WINDOW OF i WEEKS" or "RECOVERY WINDOW OF i MONTHS" where i is a positive integer representing, specifically, the number of days, weeks or months to retain your backups. For more detailed information, refer to the official documentation. Default value is empty. Global/Server. barman-2.10/doc/barman.5.d/50-custom_decompression_filter.md0000644000015500001620000000024213571162460022020 0ustar 00000000000000custom_decompression_filter : Customised decompression algorithm applied to compressed WAL files; this must match the compression algorithm. Global/Server. barman-2.10/doc/barman.5.d/50-wal_retention_policy.md0000644000015500001620000000020213571162460020434 0ustar 00000000000000wal_retention_policy : Policy for retention of archive logs (WAL files). Currently only "MAIN" is available. Global/Server. barman-2.10/doc/barman.5.d/50-last_backup_maximum_age.md0000644000015500001620000000072713571162460021060 0ustar 00000000000000last_backup_maximum_age : This option identifies a time frame that must contain the latest backup. If the latest backup is older than the time frame, barman check command will report an error to the user. If empty (default), latest backup is always considered valid. Syntax for this option is: "i (DAYS | WEEKS | MONTHS)" where i is a integer greater than zero, representing the number of days | weeks | months of the time frame. Global/Server. barman-2.10/doc/barman.5.d/50-log_file.md0000644000015500001620000000006413571162460015771 0ustar 00000000000000log_file : Location of Barman's log file. Global. barman-2.10/doc/barman.5.d/50-post_wal_delete_retry_script.md0000644000015500001620000000057313571162460022201 0ustar 00000000000000post_wal_delete_retry_script : Hook script launched after the deletion of a WAL file. Being this a _retry_ hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. In a post delete scenario, ABORT_STOP has currently the same effects as ABORT_CONTINUE. Global/Server. barman-2.10/doc/barman.5.d/80-see-also.md0000644000015500001620000000003213571162460015717 0ustar 00000000000000# SEE ALSO `barman` (1). barman-2.10/doc/barman.5.d/50-pre_recovery_retry_script.md0000644000015500001620000000062513571162460021531 0ustar 00000000000000pre_recovery_retry_script : Hook script launched before a recovery, after 'pre_recovery_script'. Being this a _retry_ hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. Returning ABORT_STOP will propagate the failure at a higher level and interrupt the recover operation. Global/Server. barman-2.10/doc/barman.5.d/50-post_backup_retry_script.md0000644000015500001620000000055213571162460021336 0ustar 00000000000000post_backup_retry_script : Hook script launched after a base backup. Being this a _retry_ hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. In a post backup scenario, ABORT_STOP has currently the same effects as ABORT_CONTINUE. Global/Server. barman-2.10/doc/barman.5.d/50-backup_directory.md0000644000015500001620000000012613571162460017541 0ustar 00000000000000backup_directory : Directory where backup data for a server will be placed. Server. barman-2.10/doc/barman.5.d/50-barman_lock_directory.md0000644000015500001620000000012313571162460020541 0ustar 00000000000000barman_lock_directory : Directory for locks. Default: `%(barman_home)s`. Global. barman-2.10/doc/barman.5.d/75-example.md0000644000015500001620000000137213571162460015656 0ustar 00000000000000# EXAMPLE Here is an example of configuration file: ``` [barman] ; Main directory barman_home = /var/lib/barman ; System user barman_user = barman ; Log location log_file = /var/log/barman/barman.log ; Default compression level ;compression = gzip ; Incremental backup reuse_backup = link ; 'main' PostgreSQL Server configuration [main] ; Human readable description description = "Main PostgreSQL Database" ; SSH options ssh_command = ssh postgres@pg ; PostgreSQL connection string conninfo = host=pg user=postgres ; PostgreSQL streaming connection string streaming_conninfo = host=pg user=postgres ; Minimum number of required backups (redundancy) minimum_redundancy = 1 ; Retention policy (based on redundancy) retention_policy = REDUNDANCY 2 ``` barman-2.10/doc/barman.5.d/50-streaming_archiver_name.md0000644000015500001620000000035513571162460021070 0ustar 00000000000000streaming_archiver_name : Identifier to be used as `application_name` by the `receive-wal` command. Only available with `pg_receivewal` (or `pg_receivexlog` >= 9.3). By default it is set to `barman_receive_wal`. Global/Server. barman-2.10/doc/barman.5.d/50-basebackup_retry_sleep.md0000644000015500001620000000030013571162460020717 0ustar 00000000000000basebackup_retry_sleep : Number of seconds of wait after a failed copy, before retrying Used during both backup and recovery operations. Positive integer, default 30. Global/Server. barman-2.10/doc/barman.5.d/50-check_timeout.md0000644000015500001620000000026313571162460017035 0ustar 00000000000000check_timeout : Maximum execution time, in seconds per server, for a barman check command. Set to 0 to disable the timeout. Positive integer, default 30. Global/Server. barman-2.10/doc/barman.5.d/50-streaming_backup_name.md0000644000015500001620000000033413571162460020527 0ustar 00000000000000streaming_backup_name : Identifier to be used as `application_name` by the `pg_basebackup` command. Only available with `pg_basebackup` >= 9.3. By default it is set to `barman_streaming_backup`. Global/Server. barman-2.10/doc/barman.5.d/50-tablespace_bandwidth_limit.md0000644000015500001620000000041313571162460021534 0ustar 00000000000000tablespace_bandwidth_limit : This option allows you to specify a maximum transfer rate in kilobytes per second, by specifying a comma separated list of tablespaces (pairs TBNAME:BWLIMIT). A value of zero specifies no limit (default). Global/Server. barman-2.10/doc/barman.5.d/30-configuration-file-directory.md0000644000015500001620000000103113571162460021770 0ustar 00000000000000# CONFIGURATION FILE DIRECTORY Barman supports the inclusion of multiple configuration files, through the `configuration_files_directory` option. Included files must contain only server specifications, not global configurations. If the value of `configuration_files_directory` is a directory, Barman reads all files with `.conf` extension that exist in that folder. For example, if you set it to `/etc/barman.d`, you can specify your PostgreSQL servers placing each section in a separate `.conf` file inside the `/etc/barman.d` folder. barman-2.10/doc/barman.5.d/50-post_recovery_script.md0000644000015500001620000000016713571162460020504 0ustar 00000000000000post_recovery_script : Hook script launched after a recovery, after 'post_recovery_retry_script'. Global/Server. barman-2.10/doc/barman.5.d/50-active.md0000644000015500001620000000052213571162460015463 0ustar 00000000000000active : When set to `true` (default), the server is in full operational state. When set to `false`, the server can be used for diagnostics, but any operational command such as backup execution or WAL archiving is temporarily disabled. Setting `active=false` is a good practice when adding a new node to Barman. Server. barman-2.10/doc/barman.5.d/50-errors_directory.md0000644000015500001620000000032513571162460017611 0ustar 00000000000000errors_directory : Directory that contains WAL files that contain an error; usually this is related to a conflict with an existing WAL file (e.g. a WAL file that has been archived after a streamed one). barman-2.10/doc/barman.5.d/50-pre_recovery_script.md0000644000015500001620000000011713571162460020300 0ustar 00000000000000pre_recovery_script : Hook script launched before a recovery. Global/Server. barman-2.10/doc/barman.5.d/50-path_prefix.md0000644000015500001620000000035113571162460016521 0ustar 00000000000000path_prefix : One or more absolute paths, separated by colon, where Barman looks for executable files. The paths specified in `path_prefix` are tried before the ones specified in `PATH` environment variable. Global/server. barman-2.10/doc/barman.5.d/50-post_wal_delete_script.md0000644000015500001620000000021313571162460020743 0ustar 00000000000000post_wal_delete_script : Hook script launched after the deletion of a WAL file, after 'post_wal)delete_retry_script'. Global/Server. barman-2.10/doc/barman.5.d/99-copying.md0000644000015500001620000000030713571162460015676 0ustar 00000000000000# COPYING Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. Copyright (C) 2011-2019 2ndQuadrant Limited - https://www.2ndQuadrant.com/. barman-2.10/doc/barman.5.d/50-streaming_wals_directory.md0000644000015500001620000000024313571162460021313 0ustar 00000000000000streaming_wals_directory : Directory where WAL files are streamed from the PostgreSQL server to Barman. Requires `streaming_archiver` to be enabled. Server. barman-2.10/doc/barman.5.d/50-network_compression.md0000644000015500001620000000036713571162460020331 0ustar 00000000000000network_compression : This option allows you to enable data compression for network transfers. If set to `false` (default), no compression is used. If set to `true`, compression is enabled, reducing network usage. Global/Server. barman-2.10/doc/barman.5.d/90-authors.md0000644000015500001620000000125713571162460015707 0ustar 00000000000000# AUTHORS In alphabetical order: * Gabriele Bartolini (architect) * Jonathan Battiato (QA/testing) * Giulio Calacoci (developer) * Francesco Canovai (QA/testing) * Leonardo Cecchi (developer) * Gianni Ciolli (QA/testing) * Britt Cole (documentation) * Marco Nenciarini (project leader) * Rubens Souza (QA/testing) Past contributors: * Carlo Ascani * Stefano Bianucci * Giuseppe Broccolo barman-2.10/doc/barman.5.d/50-post_delete_script.md0000644000015500001620000000020113571162460020075 0ustar 00000000000000post_delete_script : Hook script launched after the deletion of a backup, after 'post_delete_retry_script'. Global/Server. barman-2.10/doc/barman.5.d/45-options.md0000644000015500001620000000001213571162460015701 0ustar 00000000000000# OPTIONS barman-2.10/doc/barman.5.d/95-resources.md0000644000015500001620000000023013571162460016227 0ustar 00000000000000# RESOURCES * Homepage: * Documentation: * Professional support: barman-2.10/doc/barman.5.d/50-pre_delete_script.md0000644000015500001620000000013313571162460017702 0ustar 00000000000000pre_delete_script : Hook script launched before the deletion of a backup. Global/Server. barman-2.10/doc/barman.5.d/50-parallel_jobs.md0000644000015500001620000000033413571162460017022 0ustar 00000000000000parallel_jobs : This option controls how many parallel workers will copy files during a backup or recovery command. Default 1. Global/Server. For backup purposes, it works only when `backup_method` is `rsync`. barman-2.10/doc/barman.5.d/50-immediate_checkpoint.md0000644000015500001620000000071713571162460020363 0ustar 00000000000000immediate_checkpoint : This option allows you to control the way PostgreSQL handles checkpoint at the start of the backup. If set to `false` (default), the I/O workload for the checkpoint will be limited, according to the `checkpoint_completion_target` setting on the PostgreSQL server. If set to `true`, an immediate checkpoint will be requested, meaning that PostgreSQL will complete the checkpoint as soon as possible. Global/Server. barman-2.10/doc/barman.5.d/50-create_slot.md0000644000015500001620000000037213571162460016517 0ustar 00000000000000create_slot : When set to `auto` and `slot_name` is defined, Barman automatically attempts to create the replication slot if not present. When set to `manual` (default), the replication slot needs to be manually created. Global/Server. barman-2.10/doc/barman.5.d/50-barman_home.md0000644000015500001620000000007013571162460016456 0ustar 00000000000000barman_home : Main data directory for Barman. Global. barman-2.10/doc/barman.5.d/50-ssh_command.md0000644000015500001620000000013013571162460016476 0ustar 00000000000000ssh_command : Command used by Barman to login to the Postgres server via ssh. Server. barman-2.10/doc/barman.5.d/50-bandwidth_limit.md0000644000015500001620000000026013571162460017351 0ustar 00000000000000bandwidth_limit : This option allows you to specify a maximum transfer rate in kilobytes per second. A value of zero specifies no limit (default). Global/Server. barman-2.10/doc/barman.5.d/70-hook-scripts.md0000644000015500001620000000301113571162460016633 0ustar 00000000000000# HOOK SCRIPTS The script definition is passed to a shell and can return any exit code. The shell environment will contain the following variables: `BARMAN_CONFIGURATION` : configuration file used by barman `BARMAN_ERROR` : error message, if any (only for the 'post' phase) `BARMAN_PHASE` : 'pre' or 'post' `BARMAN_RETRY` : `1` if it is a _retry script_ (from 1.5.0), `0` if not `BARMAN_SERVER` : name of the server Backup scripts specific variables: `BARMAN_BACKUP_DIR` : backup destination directory `BARMAN_BACKUP_ID` : ID of the backup `BARMAN_PREVIOUS_ID` : ID of the previous backup (if present) `BARMAN_NEXT_ID` : ID of the next backup (if present) `BARMAN_STATUS` : status of the backup `BARMAN_VERSION` : version of Barman Archive scripts specific variables: `BARMAN_SEGMENT` : name of the WAL file `BARMAN_FILE` : full path of the WAL file `BARMAN_SIZE` : size of the WAL file `BARMAN_TIMESTAMP` : WAL file timestamp `BARMAN_COMPRESSION` : type of compression used for the WAL file Recovery scripts specific variables: `BARMAN_DESTINATION_DIRECTORY` : the directory where the new instance is recovered `BARMAN_TABLESPACES` : tablespace relocation map (JSON, if present) `BARMAN_REMOTE_COMMAND` : secure shell command used by the recovery (if present) `BARMAN_RECOVER_OPTIONS` : recovery additional options (JSON, if present) Only in case of retry hook scripts, the exit code of the script is checked by Barman. Output of hook scripts is simply written in the log file. barman-2.10/doc/barman.5.d/50-retention_policy_mode.md0000644000015500001620000000011713571162460020602 0ustar 00000000000000retention_policy_mode : Currently only "auto" is implemented. Global/Server. barman-2.10/doc/barman.5.d/05-name.md0000644000015500001620000000007313571162460015131 0ustar 00000000000000# NAME barman - Backup and Recovery Manager for PostgreSQL barman-2.10/doc/barman.5.d/25-configuration-file-syntax.md0000644000015500001620000000034513571162460021325 0ustar 00000000000000# CONFIGURATION FILE SYNTAX The Barman configuration file is a plain `INI` file. There is a general section called `[barman]` and a section `[servername]` for each server you want to backup. Rows starting with `;` are comments. barman-2.10/doc/barman.5.d/50-archiver_batch_size.md0000644000015500001620000000063313571162460020211 0ustar 00000000000000archiver_batch_size : This option allows you to activate batch processing of WAL files for the `archiver` process, by setting it to a value > 0. Otherwise, the traditional unlimited processing of the WAL queue is enabled. When batch processing is activated, the `archive-wal` process would limit itself to maximum `archiver_batch_size` WAL segments per single run. Integer. Global/Server. barman-2.10/doc/barman.5.d/50-post_delete_retry_script.md0000644000015500001620000000056513571162460021337 0ustar 00000000000000post_delete_retry_script : Hook script launched after the deletion of a backup. Being this a _retry_ hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. In a post delete scenario, ABORT_STOP has currently the same effects as ABORT_CONTINUE. Global/Server. barman-2.10/doc/barman.5.d/50-pre_archive_script.md0000644000015500001620000000015513571162460020065 0ustar 00000000000000pre_archive_script : Hook script launched before a WAL file is archived by maintenance. Global/Server. barman-2.10/doc/barman.5.d/50-pre_archive_retry_script.md0000644000015500001620000000067013571162460021314 0ustar 00000000000000pre_archive_retry_script : Hook script launched before a WAL file is archived by maintenance, after 'pre_archive_script'. Being this a _retry_ hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. Returning ABORT_STOP will propagate the failure at a higher level and interrupt the WAL archiving operation. Global/Server. barman-2.10/doc/barman.5.d/15-description.md0000644000015500001620000000041713571162460016537 0ustar 00000000000000# DESCRIPTION Barman is an administration tool for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. Barman can perform remote backups of multiple servers in business critical environments and helps DBAs during the recovery phase. barman-2.10/doc/barman.5.d/50-reuse_backup.md0000644000015500001620000000074713571162460016671 0ustar 00000000000000reuse_backup : This option controls incremental backup support. Global/Server. Possible values are: * `off`: disabled (default); * `copy`: reuse the last available backup for a server and create a copy of the unchanged files (reduce backup time); * `link`: reuse the last available backup for a server and create a hard link of the unchanged files (reduce backup time and space). Requires operating system and file system support for hard links. barman-2.10/doc/barman.5.d/50-pre_delete_retry_script.md0000644000015500001620000000063513571162460021136 0ustar 00000000000000pre_delete_retry_script : Hook script launched before the deletion of a backup, after 'pre_delete_script'. Being this a _retry_ hook script, Barman will retry the execution of the script until this either returns a SUCCESS (0), an ABORT_CONTINUE (62) or an ABORT_STOP (63) code. Returning ABORT_STOP will propagate the failure at a higher level and interrupt the backup deletion. Global/Server. barman-2.10/doc/barman.5.d/50-minimum_redundancy.md0000644000015500001620000000013313571162460020075 0ustar 00000000000000minimum_redundancy : Minimum number of backups to be retained. Default 0. Global/Server. barman-2.10/doc/barman.5.d/50-max_incoming_wals_queue.md0000644000015500001620000000037413571162460021117 0ustar 00000000000000max_incoming_wals_queue : Maximum number of WAL files in the incoming queue (in both streaming and archiving pools) that are allowed before barman check returns an error (that does not block backups). Global/Server. Default: None (disabled). barman-2.10/doc/barman.5.d/50-streaming_conninfo.md0000644000015500001620000000025613571162460020076 0ustar 00000000000000streaming_conninfo : Connection string used by Barman to connect to the Postgres server via streaming replication protocol. By default it is set to `conninfo`. Server. barman-2.10/doc/barman.5.d/50-archiver.md0000644000015500001620000000072013571162460016013 0ustar 00000000000000archiver : This option allows you to activate log file shipping through PostgreSQL's `archive_command` for a server. If set to `true` (default), Barman expects that continuous archiving for a server is in place and will activate checks as well as management (including compression) of WAL files that Postgres deposits in the *incoming* directory. Setting it to `false`, will disable standard continuous archiving for a server. Global/Server. barman-2.10/doc/barman.5.d/50-slot_name.md0000644000015500001620000000030713571162460016172 0ustar 00000000000000slot_name : Physical replication slot to be used by the `receive-wal` command when `streaming_archiver` is set to `on`. Requires PostgreSQL >= 9.4. Global/Server. Default: None (disabled). barman-2.10/doc/barman.5.d/50-backup_options.md0000644000015500001620000000205513571162460017233 0ustar 00000000000000backup_options : This option allows you to control the way Barman interacts with PostgreSQL for backups. It is a comma-separated list of values that accepts the following options: * `exclusive_backup` (default when `backup_method = rsync`): `barman backup` executes backup operations using the standard exclusive backup approach (technically through `pg_start_backup` and `pg_stop_backup`) * `concurrent_backup` (default when `backup_method = postgres`): if using PostgreSQL 9.2, 9.3, 9.4, and 9.5, Barman requires the `pgespresso` module to be installed on the PostgreSQL server and can be used to perform a backup from a standby server. Starting from PostgreSQL 9.6, Barman uses the new PostgreSQL API to perform backups from a standby server. * `external_configuration`: if present, any warning regarding external configuration files is suppressed during the execution of a backup. Note that `exclusive_backup` and `concurrent_backup` are mutually exclusive. Global/Server. barman-2.10/doc/images/0000755000015500001620000000000013571162463013070 5ustar 00000000000000barman-2.10/doc/images/barman-architecture-scenario1.png0000644000015500001620000053663213571162460021414 0ustar 00000000000000‰PNG  IHDRŔ‡¦Ië¸sRGB®Îé pHYsgźŇRŐiTXtXML:com.adobe.xmp 5 2 1 °ă2Ý@IDATxěťÜUţ˙Ź „"H7HHŠ”˘Řť¬®ëţÍ]uŐ5°vuířٱ`Ë"J—” HH—´„4*úźĎÁs™;ĎÜ|îS÷yź×ë:3çś9ńžyđ;źůÎ÷ěó»— € @€ @€ eöͲů0@€ @€ @€€%€ÎŤ@€ @€ @YI<+/+“‚ @€ @€ pî@€ @€ @ČJŕYyY™ @€ @€  €s@€ @€ @€@V@ĎĘËʤ @€ @€ @ś{€ @€ @€˛’xV^V&@€ @€ @ŕÜ€ @€ @€ •Ŕłň˛2)@€ @€ @@ç€ @€ @€ ¬$€ž•—•IA€ @€ @€8÷ @€ @€ d%𬼬L € @€ @€Ŕą @€ @€ @ + €gĺeeR€ @€ @€ €Î=@€ @€ @YI<+/+“‚ @€ @€ pî@€ @€ @ČJŕYyY™ @€ @€  €s@€ @€ @€@V@ĎĘËʤ @€ @€ @ś{€ @€ @€˛’xV^V&@€ @€ @ŕÜ€ @€ @€ •Ŕłň˛2)@€ @€ @@ç€ @€ @€ ¬$€ž•—•IA€ @€ @€8÷ @€ @€ d%𬼬L € @€ @€Ŕą @€ @€ @ + €gĺeeR€ @€ @€ P€ @ 0XĽv›Y¸z‹Y˛f›ŮĽăS«RiS§rYÓ¬Fů”†˝qŰĎfî›ÍÜ•›ÍŞŤ;˝6ĘĆGlęQÖ”*O@J0ł ňú-»Ě/»·3ŮżäľćŇĄ˛`VL€ @Řçw/39† %ż^fŚ[f‡|ŃqµĚ©mŞflř}0Ë<ňáěíXj?SóđҦ~•rćO'Ö3íł.©·r‹ůű;ÓÍSW†žŘ¤zysgź&ć”ÖńŻ·„Î{ßűÎĽ9r± 3{ĘXŇÜuvSÓ·g]łď>űäčkíO;Mýë>‹äźŮîHójżv‘cvŠ&ö· 1ł—˙dbË*ćýżv*šaÔ€ @€@\x€ÇĹC! vzŤűÄ'ß›YË6١vlX1ŁCVűa˘©ëdű®_­&!íă‰ËÍťk™çţÔĆŘöŻ—›»Ţú6Ň˙7OśdJď_tţ·?qŢzÓëţć×ÝżEćÜŃ5żđ‰qć–ŢŤĚÝç,¶ÇźNZaú˝4ŮlňĽżcĄ-žWůíoL3ďŽ^bţď†öÖ3đ<čgz÷ĺľ^t-0zzŰjć2Ń‹Bćć\˙¸ĺá?föZ{ݬôţVšz±Üu/Č3?Ţb¤ÉrZâ-šşu篑—#ęűGďkÍŻě%"żß{¬ţFéđ0­ĘT°űţ˙ä7cßěC€ @™!€žŽ´@ůD@–Ä2—$Ľ~牮ťZŐ­Ŕ5–…«·DŤS )^őź‰f”'€űÓ‡öŐ9˘¬yÝ‹?-Đź$Ŕi!Čç‡ĚŹô\ťŰßśfî9ŻYD$–x|Ň}Ă]qd{ü=Ăěţđű{DĆ%ď×ë_śbŢł$RO;Z0ň_W¶2ň˛ńÝžńJp~éĎmm˝Ż @€ éťĆY€ âIŕOڬ4~O\fo L3aŢŹf†ÚźÚxÇű)˛—ćyqµßőB/¸tş[úőŰ»C/$CeSŃ #ňĐŔ™6o–źyŔřĄF!G$0şEUŘľÁa¦¶ĂŰíßá-Ô¨0%JŠťü›'„Rş” ˘xÍţ$qµĚ{˙·˙¤·¨K "Aľ‹‡\é–ŢŤ¬W¶„éd’BuüŰ —ˇE&ö„t%-úđł#§·©w¨ůâcy\7řó§Ć…;ywôRÓµi%[^Ý ńšÇčśţc˝vö,RčN\â Űúą8đŠ%~óiŤĚiÇTuU<ć›Íoş8¤°®Ěż­ćőűýžßnQLy&÷Ë]1Ó]ęâÍýß× MĽŘđg÷ăŠmH…CÉÍýiĚ·Ł—1oßÜ1’ÓŃ{IŃúŻ#Çó˙kÉđí¤rî+_-Śňü~ĺúö¦{ł=×űäÖUĚ^Lű}¶çžśčýM)Ž˝âë§ËIĂtáp´_óđ2Qár”+&ƱĆH> @€ <<Ŕ“gEM@€€ůhÂrŹ[â°<śâ÷Ţ“ň¤uI 1úĹŘ›O‹Žw­zöů˝ž`Yß]’7©KřäŮLZŘS§ó:–ł’ÚiZ˝ĽqâˇÂ’ ™¶ŇţT®p#§zá+J˘a‚תď’ÂnřĹé†ŐrŽIžäGV<(4¶·kÇm˛$äąëO~aŠ]pÓź'Źu—ë[q—ĺőë’âv?Ű·ŤçŮŢÚL]¸Ń†m‘wđ„ą?z cî×U˙q/Vzç&‡›ăĽ_ÝĘe­îćů«’ gâůRçO{7–Lo{Îţäź·ňő2ă†S˘Eqĺçć~ŇůÁÔ°ÚŢ'®Lâ˙–żŘĂßÍŢkäĘÝ6•súî‡%k·™C/蚉lý/ ´¬Rşś"Ť¦±S§1|N @€Ŕ@8„ Ä#pޱ5˝ŘŰFŞČ[¶ş'×ńDףkí]ĽŃUXłi‡Ű5Ą÷/aJîţń•ßËyíáKFĺÝżv27ľ4Ĺ ˙nu¤·łaË.óúđEFáCžĽ˛Ą .äčę·AŻŢĘĺ÷„t Ö;؇;Xć?>ÔâI±śý)ĘÄ_ćö»;,I n]·‚ý©\Âů¸9?z hN7Γ]âéSWZ|˙’űÚ¸ß Łˇ´`U´Řl3˝˙lŮń«·Řçs˙…Ímüu-(ę’®g^&żŘ®~ŽđÝSńúÍÍýÖ®ßŰ;¬<^^*çúď]+-/íôbUJ—SĽ¶•&ƉĆJ9 @€ xbFÔ€ D\ĺ…ňP<ëd“b»¤Eµ „đ`ZíŚýç(öGwt6߯Řl>žř:}•™¶hŁ' î‹ĺ®đ(Ç5©äy’l:DZb]űÓÜ{˝Ôýů+<Źěd’‹wîŻěă‰+ZŮ8Ďţ:Áýj‡î×ĂĚ2[ţŁĺÍ}y÷ÚQU%۸˘yůĎíĚ1·~‰“®ĹH]jŕy6;\ŢčÓ—l2Ík–wĹfű®Ý¦O˙ŃÖ›|ň‚ő¦űÚźęűôçgj˙°ŔKUň~OÂëÜo¤s?ejü©¶Łk»âŹEU;6Şh®ď•Ó»ÝßfĄ?^ʤËÉßVŞűE•qŞó¤> @€Š śOŕĹećĚ€ üáPÔݸ9ër,ƧxŮ~OWĹaVšë‰ŢÎ[[1Âo?ł±ýmőÄá‘3×>×LňB‚(i1IĹ.Će¶…˙čµUŮ[tЉîăć¬ő< 3ňśviĘ‚ Ćď ëň“ÝÖ;"ÚúpoˇĎ^­Ş$uúŹŃŘŮkmÝĽ—gw¬µ€§kD"űţ^śr·PhĄň{=ó{¶¨błŇV•÷ůźž›hF?x|ÄĂÖ]Ţü÷,şĚ㯟K‡–ŰßśÓ©ş;Ě“mPě^ŕ…üđçéş÷~pT$ÉÝ뫎Ż^GKĺ~Ę“‰$٨îi…ŻQÚ´í—¤ď?ť›,'ŐM7ĺćo6Ý>9€ @Č;{źtó®Z† 8a3ÖkžťůI\ÎŹÔÍ[̱Ě%#]=ŕ-Ö(Đ%…‚řű;ÓŁD<µM5[üÖ¨%¦×ý#ěŻÇ=ĂlŚl”ńÇ<ĄuUóđĹ-\3v[˛Dě˙­űĂ{¨ň -Žś+OéĽP Nl—·ůu/LŠ”§ł#Źß eö†FyňÓ9VdwmiŢš[˝k?µżîwsEQˇdüö7ľµŰ‘ ŢŽÎ×—ň‚v©•&Ĺ%yŤwj|¸;4ňżě©ŻŤój×řľ¸§«©ęméÖÓ›rqÂżü¸e§őW,ňX?ĹąŽ—ZÖ®µčăcϱˇ]Ü9ďŤ]jcżĎňŹÔŻćá{ÁĚÍýäÚ.mł{˝ďu->™ôCÔ0>ť´"r/čžĐ×JérŠjÜ;Ţ˙Ár˙qQeěźű€ @€Ŕ^x€ďeÁ d1-0ůţŘ%‘^ÔĄ¦Ń"‹yť*zŢÄýĽĹ 8Óv5}ÉFsěť_š^-«yu›±Ú|·tSd=Ź®bĂ{(ŁCĂĂĚSźď)Ň‚Žç<:ĆôíYĎČóYá$Ţą8ržŘÔ"ś.ÉsÚźîzkş9Ę r^§Fá%î8«‰0n™Ůńóž¸×ďŤYâńYjĎűÇÍ{<Łýç§ł˙'Đ÷ő<Ż•«»ĂíC<ĎߪF!S>řzY”×µňtIű€×ý´goŽ\d{ń˝›z Ęs}ĺ†ížwü–(u…­8·c ׄÝjÍö· ‰źźO^aľś¶ÚzQ‹Dj–â§ÄKŁg­5Łg ŹWĹ^§ţ—łŽî˝ŢÇTó„Ţĺ¶ŽĽŁŹ»k¨éę-(:yţzëÍďN>ĘŹ»{/R”rs?ąö b{Y·:敡 íW Š~ő3íýÖ®ţaf¬çńŻ÷~O~qPJ—“Îő˙ (>|/ÎşkOĺ±RQek>äC€ @ ¸~:.î4? @ ÜprŇcĚa=năů!ósô¤…ľdŻW÷IžH~F»#ÍGö¤ĘŻqrŽó”qKďF¦FĹ=^Â:îÚ´’'4ďkÜâ“Ć/5úuňâ/KüŐBžO]ÝÚÜŕ-°éDp “Nü–÷ô¦­?[/dµ—N:ďŘV¸v"ď‚U[hďµL—SŹć•Ť^|)iÎiŽo~„}ńŕď3lż(2›y€ @€€1±ż•† @!pĐţű™ĎîębîěÓÔ„…)‘÷ö9ž÷˛bT×®´wŃLuţÜźŽ1wťÝÔK…ŽEqŻĺi}×ŮM˘Ę+”-eî» ™)çŁ*xçx±µG<ĐĂH€®î‰Ĺ۱žđýŔ…ÍÍŰ7w4żřÚ w°˝°ă×oloží{ŚQ đ`’pýä•­Ě›žx­…-ýI %~űd//îu]SĘ‹ó–Jě·Żą˛G][ĎżŔĄż®BĹL}â$#ä}=Ďó°tXąĚ˝ç53ęSI/žü4§PvnnňęzqŇÇ?|‚éÜdo¨{m=ďh]źĆGěĎö<›Óżź˘Ęç–µ1“;Ńôn»'ÄO°{Ý{ăéů•§ËI_KřĂŕ¸ö’ŮUĆÉĚŤ:€ @(nöńĽ˝~/n“fľ€ ‚"đóŻż™y+·ŘÔZ¸RâfC/ä†âzÇKZřRqË—ý¸ÍĆę®tđ6Jă#Ë™J† Äjo·:e˝çýĽŃóć.é ĆGV<(˛d°żß<“Ŕ/D׺ćŁĹ"•n>­‘'<%éc‰énŢŇş›YŢhˇĚű…‹Ňţ†·ěřŐ(NůR/dÉŞŤŰMEOLWČ“:•ËDy űĎ Űßľk·7†Í–ăšM;-‹Ú•Ęš†^8y(ďôĽ’/zbĽYă…^ůüo]Rj;¬żTňV{ăQlěE«·šš•J›–µ*˝ÄH”Ň˝źµ›×ĺk=Ćł—o6K×m5µĽ—>MĽż…ßI”Ň᤿Ĺ·—×ů!eJ…ľŚ‰×oQeoN”A€ @ 8@/NW›ąB€ţ đüóÍ^q%yFß٧I”>rćZÓűÁ‘*¶IžÚWtŻăłv«Ĺ5·x kâ…â A€ @€@Ń'ßݬčĎŹ@€ B`ŮŹŰÍ3˙›)™˝ě'šBžŐŠCýđ‡ł"e A˘‹C’G:âwq¸ŇĚ€ @(.đ/.WšyB€|–z qžřŹfĺ†=^ྡྷ¨]‰ßŹ^v´C»vT>€ @€ ˘@Ľ(\%Ć@ČŠ«ý÷w¦›Á߬ňb…˙–ه:^Śî—®kkZŐ©ŁŚ @€ @€@Q €^®c„ ä!-H8Ó ˛jĂ/¸1ő«”3őŞ”5ĺ,™‡˝Ň4 @€ @ ď €ç=cz(†fÍše>üđCł{÷îb8{¦ ˝®ľújSµjŐ˝ěA€@ľxĺ•WĚňĺËóĄ/:@a&P§NsńĹć!26@€ňx¦ůâI cÇŽfüřńĹsňĚ>_~ůĄ9ţřă}9ěB€@~hҤ‰™={v~tE(ô¦M›fZ´hQčÇÉ!@Č%ň¦YZ…@ń&°iÓ& ŕôÓO7UŞT)Ţ0}±&Pˇ±Ł‹ő Ŕä!#pÚi§™.]şX˙t Â@ŕÝwß57n4Î6/ cb € ä?đügNŹĹŔŤ7ŢČĂg1şŢL€ PX<ôĐC…e(ŚF`äČ‘V/°Đ1 @…‚€·Ô € @€ @€ }đĎľkĘŚ d;vDp«\ą˛)W®\ŽyýňË/ć§ź~2%K–4|pŽr2 %kÖ¬±˙¦íłĎ>¦nÝşF[ @€ ;ŕąăÇŮ€ G>úč#3sćLł˙ţű›żţőŻQ˝Lś8Ń 6ĚlÝşŐćzčˇć–[n‰ŞĂ ˘F`۶mćµ×^łĂîŐ«—éÔ©SQ›ă… @€@ˇ#€^č. ‚  ßú)µoßŢ”.]:eĆŚć“O>‰łl$đěłĎšÍ›7Ű©sĚ1¦[·nŮ8Mć P»vmŁß˘E‹ĚW_}e7nlXL8‰C@€ ¤H€ŕ)Ł: ä-_ýŐ|ţůç¶“%JXÜߣpŞZµŞŚüyěC ¨زe‹Ŕ%‚ďÜął¨O‡ń§@ŕŘcʵµâéÓO?MáLŞB€ @ađŁB  &D<_›7onĘ–-5ç«LyJ^uŐUQĺ@(Ę4h`?üpłvíZ3oŢ<łlŮ2S˝ző˘<%Ć@€ %€^ řé€üvďŢmFŹÉjѢEdăĆŤf×®]fűö푼ýöŰϬ^˝Ú.W©RĄHľv~˙ýwłpáB[®:ň,W-¨Y§NSŞT©¨ú:?ľŃ”TŻ|ůňfŐŞUfÎś96/™0ęó·ß~łő+V¬hŰĐ‚žsçÎ5ëÖ­ł˘}Ť5ŚĽŰ•äĺą|ůrłtéR;ć#Ź<ŇÔ«WĎ–…ýG~řáóăŹ?ÚeĘ”1‡viذˇŤ——€¬źÄćK/˝TŐ⦷ß~ŰŠíŞtÎ9çXbÝţ¤ű夓N2íÚµóg˙ąm۶5˝{÷Ž*—€ď„YÜwß}‘—9¶]|~}ąqýő×ÝßîţÓKýůűHu|n0S§NµáA~ţůg—ŮęŃýqüńÇ›}÷Ý7’Żť+V>ř "Ôű 5ŻjŐŞ™K.ąÄčĹ’?ĄsčütűÓ ÇY˙.ę%-˙Ř؇ @€â~*_—R@€@žp _Şy¨J¬M5)DĘÓO?SüV{äž{î9»Đ\¬ö%`:ń;VťDůéĆŹż]}yáľ÷Ţ{ćĺ—_Î!~«ŽDF ĺţ4räHóĺ—_F<ÔýeÚ—'ął‰'‹"Çłg϶mĹoUČ6xđŕH]í¤Ű§ÄďW_}5‡ř­6ĺíţŮgźi74éE„â0ń['hěŤ]śř°F2É=ăŃ_ýőâ·ňß[˘·<żó"Ť;ÖĹoőăâKëĄJ^$]§˙ţ÷żń;VéŚO÷ůŔMř­~Ô·ć%ćţ$ůÍ7ß ż]=}­đÚkŻEýͦ{¤ŰźĆ˘Ż:č ;,őďľBqăd @€ $OđäYQ€ň€D+żČ a oU…Ô‡©Â0(I$—ÇłßËSâÂO¸Ô¨Q#Ó˛eKëŮüý÷ßGÄ@·Ř¦<±]w޶ţĹ6卮©&…OQx‘ĆŤ[ŻđŻżţ:"Ú)®Ż’ĆWż~}jeҤI‘.´ßŁGŹČܦOź)S(—cŽ9Ɔ·PhŚAE<~%rËs7,i<ňĚUąb K¨–@ď’ĽŚO;í4whŇíS×@|]’'ďeyŃŞwý\ą+FţĐ!ú @s•W˙”)Sl\dŐ׸öEžëÁ”IƧ15iŇÄŢ b#áW!q”ÄE×­cÇŽć„N°÷ą^ ¨J:ŻuëÖ9Ľ’ma‚˙(d‡ľĐ=殹Ÿ¤—úűĆÚwĺénu˝ôsIbnŘ ­Tǧ{Ç&Iácôe†<ËÎD·»żôu^Ş)쎒®Ą[C@Ó]t‘ýűÔË˝pr “ţ>uďąóŇą'ÓíO}ęß$ýť+Ä‹’ćˇ{€@€ ¤Nůdä؉á.µ‹Ż šŹ^ ¤“ôrHBŻ®Kz‰äľĐ5źčŻjĂIčvIŢâzˇÂő"I/j‚)7÷@:ýůű÷˙¨Uú·Í˙µ‹ż.ű€ @€@lŕ±ŮP@ůHŔ…&p]úĹ——hëĽhUĎ…ž#ѱ|ůň‘đţsüu%…Uy2űÁEë‚Çĺü)ŘźÂÂř“~‰ż™ĺî±ň˙;|ˇäÚŠâú×ßš—u_J¨®DđqăĆŮźţ˝÷˝^T荚ss¤Óź›¶ţ%~ëëŚ>Ř_…}@€ @ ŕI@˘  ä= çr¬ ńFâŹý-ďKż÷µ˙< Ź.ůĎqyÚESYAěËk]á‚I¶„2”`w,ń?•”NźNTU?ę/¬ĎX×Ö/nę|ż7żŽĂ’óä+Ëm^&ÇĆ!·ăKć|y܇ĄC=4"€ÇZL2ěĽTň’ůJe|ÁżU˙ß±\Á—:î<}= Fú;ňi sőbEá{ôÓ¬W^yĄ˝wss¤ÓźÁż“ŕż‘ţşěC€ @± €ÇfC  ä# 7´â_§šüžŔň•°çCŕÚs‚Žýç¸rmýa;üů±?wîÜ(ń[aK䩪Çň,– —ŚžĘŘÓíSŢő.é(´MĐk5îĆŐ÷ź«<‰•ÁűÂŐuŰŕ9.?Ű`Ű=žtćä_Ňť/!U =şś§ËŰú˙vÂĘýyÉü Ą2>‰ĺňĚv/FbŤ%(Zű˙ĆţEaYtkáQ… ¶Ł/,ô7ĄalR˝RíĎĎ/řo`˘ż˙ąěC€ @{ €ďeÁ   Đä_3Ůa)®˛?)^ppńŔŤ7ZQÖŐS\ěšś€¸`Á‚ČĹ©oßľQŢíŠSśé”nźň,ö§ůóç-^éOĂRđúÉł]1šó;9î…e<ą™ż_čvíČËŮďMě÷–§ş+ »Ż2ý˘%•ńé‹Ý˙ ]˘äŹîć–Żë¨/üńékÖ¬YSsRh”#FD ͛7Ď6™î=nţyř˙ ”W{É’%ýĹěC€ @I@OŐ @ o ˝„ýâO˛=×­[7jaÁŻľúĘ.nçB ČstđŕÁRµŰ¤I“d›/°zkÖ¬‰ô í"/ŃXB`ä¤4vŇíS×@BĄ‹O>hĐ ëeŻ…fBaUś¸–î }îÚ«®^`¸Řčş~ŻĽňJdŃF‰ˇ×^{m°™Ś–ńä&D‰ •·ł{$†_ýu#‰Á.ůcŻX±Â†IqˇLtÝ–xqč3™Rźţ^ÝŞ´ßżŔ¨ň¦Oź˘î;…JĂ—_~ŮŢ*ÔB™§ź~ş­§Ż(şuëf–/_nY)ÓÝséŢş×ÓéĎčŹ˙¸ż_úë±@€ Ä'€źĄ€ O$8i:‰PJéxšĘcřŘcŹ5C‡µmČ»ôé§ź¶^Äňž”€·jŐ*[¦˙4lŘІ‰dŇyU;Źlq‘(ˇYyS§NŤ áŕ_$27ÓI·OyK\t"«Â HÔKy;ďâXc;ůä“Í€l±Ä̧žzĘ^?…ľ1c†‘żK:tp»y¶-¨ńřC÷|˙ý÷Ö;YŢČŠ+ťJŇýđú믅ÍѢ‘K—.ŤúŰŇ"”GuT¤I‰áîoOáIžyćű7"opyŽ»đ#‘rą“ęřşvíjct;qX÷ŠDtÍMžáß}÷]ä“'Ż^˝ěĹSuśÇąţn”§ůę…ŤÄ~}­ŕ’ţ-r)ť{ 7ýą~Ýuб„| @€ đô¸q äfÍšEđt˝š%€/Z´Čţ4D ¦ăÇŹĎ1Z Ľ§śrJŽü”áBq´hŃÂLž<9">Ę‹Ý%Ő‘¸éÂ;(ôB¬Řçîśd¶ąéłGŹFäş.ąE%dK ź0a‚+ŠÚĘ›W‚Ż„LĄü1âńëŻ(!¸sçÎţ¬Śí;îj° ĆSż~}łnÝ:;'Ĺ´Ö× ĘKUw÷†îwŹ8Pz)¤ż˙|;věhe·©„o‰Ĺ.i ±<ř]ťT¶©ŽO/Räą=pŕ@{ź«/…Ô †ŐŃśäŐ]µjŐČpÎ:ë,óÜsĎE^ÄŚ;ÖčLz‘vüńÇG˛Ó˝ŇíOëďeőęŐ‘1čßF @€ }Ó;Ťł @™' qωqPť—JOő®ĽňJ#VžťÁ¤ö%îöë×/ćÁs ú¸FŤVôsˇ\Üxäm}ŃEEĽ\•/]Ĺ2ÎmĘMź 9ˇkĐłgOS˝zu»Xˇ$$|_qĹ9ĽY×éüóĎ7}úô1eË–Í1 yÖJ˝ŕ‚ "÷JŽJÎ(ń´oß>#_'čoJ 7cł+ě‡ÂÇÔ©S'Š–ĽĚ/żür»¸Şű[T]żK.ąÄ´jŐ*Ş~nRźúÓ9×]wťőčë_÷ÍĄ—^jşwďU,𫯾:.WĹśżęŞ«r,ľšÎ=›ţjĆyŰ+ü‰ß#=jR@€ @ ěă}zú{ÂZT€R" ĄňF“ŐĄK—”ÎĄ2Š;—^z)ÓúěłĎŽŠď›*š–­ÄtyF+Ü~Q‹b’W¨Ľxőb@²ńÂĽšO&ú”©áSĺłĎ>‹ ůľűî‹Ä\Ždz;ţë§óuí$ĐĘ‹Ľ RAŚGŢüşŢş]ŢɉŇÝwß râ‰'F<ĺő· Źú*UŞXA;Q;Î Y}V¨P!cÜ35>ŤË–-öď{ýúővNşG’ů»P}}˘źî'‰ĚzI(Övş÷@Şý}ňÉ'fâĉöwÜqöeR˘ëE9 “6yN&ä@€Š#B ǫΜ!b káÂźHň/p—ę°ĺY\ąreűKőÜÂX_ŕŠýťź)Ő>%˛N™2%2DĹ.V¬u—$†Ďś9ÓZ/o·ŕ`$óŹťÂvý b+NiÓ¦MfĺĘ•Qż-[¶'Ě€ @ đ€(†@<*T0˝{÷ŽŞ˘‡ĐeË–EĺąK.ąÄí˛… @€ @€ňx¦ůě'ŕo¶]şt1 B‚ @€ň†ŔúőëÍ«Żľjż PŹ?ţ¸ůż˙ű?łaÆĽéV!@(ôŔ ý%b€…ť@Ďž=MĺĘ•3YˇřŕÓ°aC+zźqĆÖţ“-x衇š^˝zY!;™n%Č>ýôÓ¦~ýúF_´5jÔȨ˝ľ}űÚ…Ŕec~řá¶ÍwŢyÇüüóĎÉ4k~ýőW#ѲA¦lٲ¦m۶6L…lÓvíÚYq]})–s˛m&ęřŁŹ>˛ rń˙䢗.…ŮŐW_}µ+Ý|đÁ9lßAĺ¨Öv^Řě9:ÎâŚ+VGy$Ą>řŕfŐŞU)ťCe@€Š.đ˘{í˘FľsçN#ď˙O^ÚĎ?˙Ľ9ńÄÍÔ©SŁęëŕ§ź~2˙ýďMłfÍĚ_|‘Ł<ˇ©Îť;›ŃŁGŰ~‚ĺłgĎ6ť:u2~řˇ}PńŹEűňĘćKäÖ—zi@‚ @ůA@˘±ćÍ›—Ł»Ť7šÁŰ÷r’—VŻ^m…ín¸ÁĚź?ߊÖaő%f«Í /ĽĐśzę©fÇŽaŐ"y‹/¶6ĺ˝÷ŢkǨđaIžćŠĺ,Żuőź›4iŇ$;>}é˙I<}ňÉ'­3‡k?̮޵k—+Ýn۶-Ę—í+[<ÂÚδÍě3ŰŹőâ%Ńő 2Đu'8 € âA<‹Żł|ąţúëÎpÍš5öáćăŹ?ŽY÷ąçž3 ă‘čF0ZdfÁ‚1ŰĘÖ‚óÎ;Ď”*U*Çô.ąä’´?5ÎŃ€ @ ‰zW]u•‰%*»S%„Ë\âaXÚ˛e‹őOĆIÂľĽ™%‚‡‰żŞ7qâDÓ˘E‹ČWţscíK¤îÝ»·ŮĽys¬*qó%¸‡ óZÇEóďŇĄKÜóóş0“6{^ʵ0¶?nܸ´†5věŘ´Îă$@€Šđ˘wÍ’ńłĎ>óá#Ř>o˝ĺ–[B˝'6lŘ`ŚQťd’<ˇžLŐ¬ŞSˇBsÚi§ĺ“â“ @€@~P¸şdm6‰ä·Ţz«‘7l0)t]X’%KÚ°%Ў,9, 6ĚĆó+»é¦›Ň˛çĚ™c…! ëĎ ýa!˙äŕˇ$ť2ełô< Ş˙°k›ĚXÖ­[—L5ę@€ Ŕłŕ"&š‚bußsĎ=fÔ¨QvqĹç{`Ńç ˙ú׿r4§Q @ČO­Zµ˛1¶e˙˝öÚkF_ŞpŔ9† ďj…Ě ¦_|1eN8áŁú M˘ĹĐ·nÝjäńf˙)äH0 8ĐL0!mű•W^±‚»D÷7ŢxĂ®7¬¨Ż}Ťč?G±Ă%pkĽÁôŔ¤%¨ŰÉäqnmöLŽĄ(µUľ|ů´†›îyiuĆI€ (Ú;ťç9=üŚ?>*4Gź>}l¬nĹiTĚFŇ‚0˙ď˙ý?łďľ{ŢŤČ›ű©§žňW±űzĐ‘—·b2ş¤řßZ©k×®ć‡~pŮĹj«xë•+W6Š™©Ä‹ & @€@Đ"’ľ]h6­á˘/Ň^~ůĺPŃ÷á‡6×]w]¤ľÂă…yË)˘bĹŠ‘9IP?ţřămx‰Öţ$Ot…bqI6çwÜá#[-Ęţé§źšjŐŞEň.ľřbŁ/ë´Đş?IĐV¸‹=zřłcî«˙‘#Gć(WLó»îş+G~AfäÖf/ȱtßb§ô©&ťG‚ @ xŔ<‹ŻsٲeÍűďżyńOU #ťţůţ,»ŻŘŠ~ńZOÁé…^ż]yÝşuÍÝwßí‹ÝVžő]t‘ť÷Adô˛@€ň‹€ĺ„Ú„ĺ LĽ.\É–Đ,{Î˙ű÷ż˙m5j©ăvneůňĺî0˛Ý´iSd_;ZÄ2lŤ'žx"Jüv'ťtŇI¦J•*î0˛Ő—‡É$}ýřć›oć¨zÁ„~ńŁb>fdÂfĎÇáş®Î=÷ܔǴĎ>űŘ…bS>‘ @(’đ/’—-ąAwčĐÁÔ©S'fĺkŻ˝6ôÁ@@Ő«W·çů†\Cň‹uíĘĺő,/ň0áÜŐÉć­ć˙ŘcŹŮECË”)“ÍSen€ 2'ź|r¨ ě†)-”L˛ůśŔ}ä‘GÚđ)Á:îx۶mFˇó¦Oźn^ýuĎ•ĹÚƲ)O?ýôĐSdoŽ=Ú…t ü‰Ň‡~hfÎś™ŁÚ±ÇkĂÁHü,L)6{ašO~ŹĄiÓ¦F‹ÎżB7Ůëî~ŹWŹ2@€˛xv\ÇĐY4hĐ 4ßesĚ1¦D‰9 Č;GaL”ÂVűűŔtÍäŘjq$Ĺ˝ţöŰos”‡Ś&MšÖ­[Ö$@€ źţ$^jذah±í°$o-j9tčP3uęT+z§łč`M)‡‹xqă9r„ŤŐĺ…‰ß*[˛d‰ůĺ—_ŚlŐ”2ał¦ůÄX´čŚ3’zţPč“˙üç?1Lú„ @ €Ą€ŔçG·‰Śi…ë¨Zµjގ,^Ľ8’ö0Ô¸qăHy¬‰äĹ9Ý{ď˝F `’ @€@~8ě°Ăâv§ő[Âŕ0›OáFŢNqľyäóŐW_™tÄo (LOĆ›;îdR,T¨–ţóź)ž•÷Ő3ałçý( wĄK—¶_ (ĚcĽ¤@Š ŻP…$@€Šđ,ľÖţĹ„bMÓ-vé/WB—ä%LňO”‚‹k&Şźmĺúü¸°}^›mŚ™ @9 „‰ŰţZ˛ă=ôP–Ý/W®\TžÖŃ"”a¸«(g }5Ř­[7—së÷WĐ"šůťüńĐXäů=™°Ůýí×}K}„ ćúëŻ7mÚ´±á µíׯź™4i’y÷Ýw ! ‹ëÂĽ!@ 8H¬dg:E|îK—.Ť;}ŇşbĹŠujÖ¬ɓ׏>yő§dB›$ęŰßű€ @™!ŕ_Ě<¬E9)„yq+|ťKóćÍ3z™ż}űv—e·Ľĺ ŢĄK+.*䛄ó›oľŮ ><Şnđ@qĹ)Ż×‹i۶­™8qbT·»ví27Ýt“ůüóĎŁňss°nÝ:ł{÷î´›Hd7'cł§Ýyž¨ë® € 8ŕŽDnż˙ţű¸ł’±ýóĎ?ç¨ă ‹˝¨ó6nÜhb}¶şcÇ㣒Ł2 @€ň„Ŕüůóă¶»lŮ2óŰożĺ¨ă·˙ľřâ Ł….ý©B… 6JË–-ýŮvË–-9ň‚a6Ą14–°/uţ¬Yłr,‚Y©R%–%Ř~đXˇ0ŢyçÓ˝{w#ov4hŔĺá–Â<ÓwîÜVŐćiśąI™°ŮsÓ?çB€ l'@”,ľÂăĆŤ‹ëŤňňË/‡ÎŢ˙$đ°ôꫯ†eŰ<-*|hŠY™‚(zÔ }&¬‡B÷[ąrĄŮ°a-“ € „xď˝÷¬˝V¦Ľ7ß|3´Čo˙}ýő×9ę(„Dř­Šß}÷]ŽúÁŚ0\ŕÓ§OVµÇ çőT:uęő{˙ý÷Cëű3%zżőÖ[Fë y–N^ŕňKa!bÂĽćÝąłgĎv»im3ał§Ő1'嚀ěr˝ŃW«V­Š˛ÝuĎč+ l÷\c¦@€@® €çaám@±úŃ"@/ĽđBŽÁkQLyÖ¸Ôľ}űĐEbnżýv3fĚW-˛UŢ>9f'5zÔSňZęŃŁGäÁďÄO4wß}·6lŮşu+†tjX© @(6~üńGóŻý+tľéž}öŮeGu”©^˝z$Ę”)‘}·S±bE·µŐKűdđ&Mš„zzßrË-ˇéňŇ^ż~}T_:čСCŽĽ`FÇŽ# }¶jŐĘ\tŃEÁ*vQÎG}4Gľ2äíLŠ-¶Á¤Ľ'ź|2ťŇq&lö”:¤rĆč%ĘčŃŁmĚń^˝zElw… şňĘ+Í—_~iżśÍMśŚ –† @Ĺ!P˛üâßwß}F Â\{íµFźs*îăřńăÍ…^jÄ˙ýďŹ""1\qBşÚ9餓ěgĄ2đ´’şĽW^ýő¸^çQŤs` ĄDďO?ýÔ,Y˛Ä¬YłĆ(ĚŚ<źÜ'ĘňţţěłĎŚ<˛?üpsúé§[/¬FŤ±÷ @QîĽóNëy*qą|ůň¶L"uź>}BăßqÇQ^҇vXŽ…"ß~űmóç?˙9މçťw^¨ÇąłaÜ ZčńüóĎ7jÇźFŚa4^9W¸±ę ¸xŔ_ÍîËK]âvŞIÎĚ1·zČ\rÉ%QâżÚ–XLúBO§ÂŞč IyýJżí¶Űr° ž›Ěqnmödú NćhŤ$=űče‘óü–··şÖG/G“_¶{Ďž=MăĆŤíý«g3 @ůK<yç{o2Âţň—żŘ‡Š5jX#L|Xҧ©W\qEŽ˘[o˝Őz‹˝^ćD˘­~¤Ô Č“[13-Zd=GFŽi?›ÔUđˇQ­‹· ěý÷ßßĆ_×u”ˇ-cZžJ2´Ă>ńM}dś@€@Q' Y kő…Y¬˛˙ôĺ™?É#|„ ţ,űţňË/7gź}¶µEľůćóÔSOYŰ%ŞâzÁL÷Ţ{ŻQ“`Ů#Ź)ÖKŠĹ‹':•r@€˛Ŕ?ţńÓ®]»„3”ý'›íŚ3ÎČQW‹HŢxăŤ9ňĂ2*ďŤ7ŢČQ$q…u &-–®+ň°N6ɱB¶jnľt+S¦Śą˙ţűC»Ôźr2đ'ĹJzĆűËÝţGaż†T‹tS&mötÇŔyá$j+νîs9­\ýőÖŢ–sQĐă;Ľ…=ąŞ+g• ذ9ŠKß·o_3oŢĽ÷^Ľv( @ =É[žéµĎYH@ /żü˛ KÖÂ@úś3_žÝňĘ‘ÇbHÖ®]ŰÎN!9$ŚË#Yâ®B­lÚ´)ÇĚ‹sĽ;Ďň0ŇB–úÓźĚ!C¬ç‡q•Ą“dHë\yŹL›6Í ŕz€’7ąó*I§]Î @ čP¨Ĺ'ľęŞ«l¨’ŕL$<·hц_Ó"۱R˙ţý­w¸ľ KZ8ý­·Ţ2O<ń„Ѣéň&÷'yĚ^pÁţ,»ŻzŠÉ-[ČżđzŽŠ^†b‚«}­•Ë– ;/VžBýÉž &ŮŻO?ýtT¶8i~˛ŰdŰ“ěl :WóĎMĘ´Íž›±pť}-±Z/‹t­ĺ€’®í®–ĺń-Ű}ćĚ™öË}i Xôú AˇŠH€ ä }<í÷ĽišVó“€ĺĹčAI†[PŕŐJé2ěŠC’¬ĎwSĆł]Ň–2Ş\ÂxčR?÷bAźĺŞÍdΕ±,Ź)y+ÉóJˇmËRvnTĂĆJ @€@r “͞܋G-ŮŮą»~Ô¨QćńÇ7K–,±Ž,ÉßÎnw¶¶^îčĽdĽĹe»ËˇHĎOŠ‘/Ű]!uô2(řeEń¸Ě€ yŃß*fľ}Z,âä‰ĺĽóÎ3wŢygčěô©jP¨•1¨…ŹŠC’Č-Ż-*úí·ßZăYź:™Äb!Ń[ôÇwśő,’ř­Ď„ĺ˝k+[ęGźPĘ“J»<ĎĄeË–¦YłfQÝű€ @(Ž$TËvW|ú©S§Ú…ęS S(ÇýäÉ­$ĎńĄK—Úv1•í®ŻF—-[fá|đÁö -üzĚ1Ç`»'H9 @ ŕI@*ÎUôy§D×ŕ"FňlnÚ´©‘ać>Ď[±b…Ń‚AŠL§śrŠődćgÓ±<ľµŕÓčŃŁ­`­8ľ•źŚř­đ%ňÔÖÂUzYpČ!‡XŻmĺ˝{÷¶×A"ř×_m˝SâyٍL?…_ŃK …ĂŃ'ËŠQ)Ď-Ř$Źp @€Š#y|ëůĺĂ?4_~ůĄŤń-'‰ßÉŘîZIöşśVŞWŻnżŔ<řŕ-J…ďqˇTd»ë ŮŕB«~ćęOŢâ /©0’ µ#Ot…’í^ĄJęĐű€ $OjĂiHÜ &rúĹKwÝu—éŮłgĽ*E˛LĆ«z… r°pF¸¬ŇOŢáÓ§O·żŮłg[/sDZ’ÎWůĆŤ­8ݰ,Š?©…Pűôé! ů€ @YC@¶»Ľ¬ő…¦<ľźyćëŔ"9‘(-ľeżKŘ–í®ŻaĂB<:Ű]˘wÍš5íO_d*ĚŠBٍŮć®^°ňť7¸„yŮű e¨>/żür+„pŔĂ〠‡x8í! Đ6_|±ůä“ObkA^sď˝÷^ÓŻ_ż`Q‘?–‘,ŹoΊ8kÖ¬×H˛“sqçÎť­7¶<±ĺÍ4†*—w˝ző졉'š‘#GÚ؉úÖą ‹ňŃGYĂ˙˝÷Ţ37ÜpŃgšňTÁ<AĘ!@€Š"Ĺäž1c†yúé§Í´iÓ¬M,ˇ9h{Çš›ĽĽk×®m{d7Ë‘%YŰ]^ܵjŐ˛(µÇŤgĂśÄęËĺklĚUĘ”)ćłĎ>ł"x«V­L§Nť°Ý(¶€ Ŕ**Ĺú$N‚¨?)&]¦’Dp‰¦ň\xá…Ě A¬·sĐű»|ůňvń ŞĚ39†LÍ%7íČ»[ź$ęE€¦”.ĘOĆx–'^ ČŰ[#ňţ#˙ ďa‚·Ě*—÷‰ÂˇčH-¶#1}Á‚6ÔÉoĹúDIžë Ý"ŹĹl× Ž#Ź<Ň\}őŐ¶-˙xµE9 @€@rňÚfOnŧ–l^…‘í>tčP#;YĎ3rIĆv—Ý­/0ç[‹\~řáÖiD¶¸łŮÝÖQ ¶ëlwy+lŠžd»+ŠâkLńľćT»*×OcţůçíśúšS¶»Dů<ĐuĎ€ ŕ!PŠbÖK/˝”/Ă–őČ#ŹŘź:T¬<…)]ş´vý±ďňe@ů؉›« Oy}kÁËdcĘđ Ţ•*U˛†jµjŐŚ>_L7©M Ő2¤ĺą­řŢ2ćµhŽâ~Ëř–WK¬$/vĹ”/1\×±k×®Ö€Ö‹ Ňţ8ä±Ú!€ @ 9ůeł'7šě®%…7‘ç·<ľeżŻYłĆ†0 ŠÔAÎΖý.Ń[Ţ۲Ý帒čÜ`[îŘ ár†‘‹ěv‰ßÂ5VŮňńlwµ#A_çHÔ—-ߥKëŁ6šŰÝŃf @&°Ź÷?đߣł8‚‚$8Đz\H0–1­?ťdţ|děJL–§vóćÍíB6ÁöÝqĽöâ•é|•KČ^Ľx±őĐ—ľvíZ×tܭƨźŚńSO=ŐśvÚiöóN}ęI‚ @€@Q" !Y¶ű§ź~j=żµĄ‹óťČ¦Öň˘nҤ‰ißľ˝őüÖq0ĽH<ű\íÄ++ÓŘäŮ­/KµĐýđáĂmÜo=s$J˛Ýő|ˇp•ňRżä’KĚI'ťdŽ8âăNÔĺ€ l&°ź·Há˝Ů™$Ű]?9Ă}ôŃćśsÎ1gśq†©^˝z2§S€ •Ŕłň˛2©T(Vŕ÷ßoú÷ďocĘ‹Dź¦+P^={ö´±ł%„‡}.éĆĎ0VťXĺ±ň“iWçę'CZ^$Ë—/7Ë–-ł^"ú´2QŰęC†´S°eË–¦cÇŽćÜsϵ‹í¸7¶€ @Č ręPśoŮîr\‘]+{6YŰ]áŞP·ľ”TČٸ±R";9^yĽ2őŻ\^ÝúéŮD‹x®^˝:˛Đ}˛sŐĽŢE^íÁµľOĄJ•ëb“@YK€ŕY{i™X<26%ë3ÁˇC‡š!C†qăĆYŻoyFÇűÄеëŹ(ŻďZŢÂ3Š×§đ ÎóÂŐMe›îąî°žß?üđ ý‘ȆUç˛Ó+V¬hżÖlŐŞ•©]»¶µ_ŰŮŃé ҝˏ×f˘sťí.ű]ă—ý®}ý´hf˘yËv—ť/çýdżoܸŃI‹ŢŇ0ŢŐˇ €˛‰Ŕ˛éj2—„$|»XKĽŘ °FôĽyól~Ő‰W«Lů2śő`ˇ‡‰±cÇZÚőo+Ł^2 7nlxŕÓşuk+® ţxíP@€ y/ŻX±Âz|Ëv_»v­ýň0–]<_¶şľx”íŢľ}{SˇB…`•¸Ď‰úÉ«ňxíŞLĎ/Îv—°íĽşsL.!ű\?y˝×Ż_ßüóź˙´á`äí€Ĺ! d𬺜L&Ś€ D ĽŠ¨ď{ĺĘ•fÓ¦MÖŁ$ěś`žůdŁĹ%ŕĘxvâ·żŤD†iĽň°˛°<ţýxuă•©Ťxĺţ2}B)ŻÄß}÷ť] @€@ń {S‹4~đÁćŐW_5 w˘ÖÉÚîÎć<ĺ”S¬Í©…ęcŮî"šČŽŤUĚ'sµâťŻ,Ѹݹb)Ń[Ď?ăĆŤ3S¦L±lă}ÉéĆ-Žň$—Wyť:uĚÍ7ßlştéb…u÷"ÁŐe @(jŔ‹ÚcĽ1 ȰÓ'ďľű® ۡ¸Š'#0ŮXx סXxľµRĽ„đ°âc Ÿ锇ť–Öv˘zńĘeÁcő'Ń[&ň¨—1-®ň O&9CZ^੠.CúŘcʵćÉśO@€ ě#°{÷nëí˝páBóÎ;ďŘXßË–-łv§Ę’Ir´XŰ®];k»—)SĆzC‡Ůł±ÚKT7^ążĚż«/—ź¨nĽň°˛`žžÖÄyvË«^żd’UäÄR«V-sôŃGŰĐçž{®µÝqbI† u @ 0 JaĽ*Ś)%2ĺá-/e…;=z´ő‘Á—Śń¬OűÜgЍ°'Šůťě'A3ĄÁ'¨ď“ĂĽę7¬OĹS”!¬XŢľ]¬Áőë×›ť;wĆ}Á |9s¦­«sőÓK…YŃçŞÓ nŠ!@€@– «/6%ČĘv— / ĹúޞĂMßy|+ä‡Âö5hĐŔţdS:;ÖmÝ9n›WöłÚŹŐgAô­çĹ>—3Ź’ž‰dłëůHěăq–ăBĎȱHu卯 rdQŚq=¤â äćĎ€ Pđ/HúôťkWe”I\íßżż]0G†šŚŰd \Ę2ĺápę©§Ĺ» 3čⵯLŚU+ßAITîęą­żľß•»mĽ2Ő‰WîĘä ®‡­6ŻĎTőB†´+w}·z0Đ'”Ňc°_ż~Ö–·Ž® € @ { Čv—Ý¨Ż ďşë.»ĐĄÄV ´‰ěHQ‘°«Ż ëŐ«±ÝťČë§«­XůÉś«:‰ÎOT«źxçĹ+K4&w®řjÁË!C†XöÂĺ âĘýăňďËv—ŁŠlőŢ˝{›«®şĘ˛ŻPˇ¶»ű€ Pč €úKÄcýöŰo›W^yĹzŽHO&ľťÚ“1'ď‰ŢŠO­ŐÎeP;OäXĆ`¬|˙cŐ‰•ďÎŤWV–çÚ năŐŤW¦vÂĘ•'ďńÖg«ZřrÔ¨QöS˰úÁńčX/ň&QH”ž={Úëň4Oä=Öy€ @…ź€l÷AY' }I¬í®™ÉNěÖ­›ý‚°M›6Ű]¶c<ű3/Ę4žTŰŤW_íS¬ú±ňÝů±Ęťí.!|ѢEfđŕÁÖvO6T¤lw÷Ąěe—]fzőęeťZÜó“ëź- @ 0@/ŚW…1Ĺ%0oŢ<ŁřŢ2 ĺů˝|ůň”bęÓ˝şuëÚXÚ×B/2čÂR,ŇŐ +ËsőýŰDő╇•…ĺůűsű‰ęĹ+–éXńÁőIĄâë3ÖYłf™Í›7'µp‘ĽľĺARąreŁřë}űöµź˛ę“VŚiwĹŘB€ ˘K@_ *ÜÉ /Ľ`íDËq%™P…šµPoÖ¬™ißľ}$‡ňÂRĐVMT'™ú®ŤdęĆŞ––çúňoŐű˙ěť üWU™˙O*.ě(Č"˛«Č" .ĺ–™YYN›3Í´75““˙Ę©fÚś¬ĆŇ2'M3+MM›\IŔŤMöEPdßQAÜš˙}źźĎ—çw¸÷Ü{żż|ÎëőĺÜ{žíÜĎ÷ňű>÷ąĎyNŚŇ8'‰Hʡ໓ȲfÍ_îDŰM;&al4:dČ÷áŘűîÔa7ß= 13 CŔh.X đćňMŘ<˘HÝ:˛ž~úiżIÎÔ©S}еó,ßZ{%›1˛l’zľó˛F˘K!fe0‡hŠhť†ŇěbłľŻOOÝ8Á|(kÂf;8ŐĂ©N <Öŕ…Ź‡ ĘŞŤżuëÖŠ#Ť“mÍ0 CŔ0 C`ßC?ŹRyÔřž;w®_-HéŤ"eó¸ZüK’"Ř ž}zř°‚“@k}ůŐiţłFşľěhťrłÝPv±ÉóńÝ)OHRĘÚµk}yšŘłű;věđőÁ_~ůeç…u‚ŕě«dpů†­7 CŔhNXxsú6l.©PÓ›Ŕ*ôüǸiÓ¦yÇ‹ĺzyÎ!N5˝q– zł95ż9OkyúęBo*Y}ťĚLô\ô±ćĺ8Fˢó°łaĂ7iŇ$˙˛‡=yË+™ośç‘#GúşÝşuócV<üfěÜ0 CŔ0 ć‰nü÷Ő«W{ŽäVlXÍó-ńůH•:ßlšžV盫ĎÓ—GĎÓ‘'źEĎ—o,Ź.|Ňk~},téc4xŇčµIZą˙ţű}†>Ď]|‡E|w‚缨7nś˙®ŮW‰ŔzÖęZ™§ő†€!`†@c#`đĆFÜě•Fŕ‡?üˇ¦Î1ĂÂqŇŇś·P1Î3ĺ5X2É®ĺ Ş8cФĹtĹhČÇč1Zží<٢tř¸Ö<~™O]ŻIěŕ0'“äŃGu«V­ňAÚNÖ1/,xqÄî#ůĎ Ď{Ţăťë,7 CŔ0 CŔh°Iú˝÷ŢënżývżĘź0/*3'xĘ1ě3pŕ@ď˙…ĹâoŠLŘWKĎ“ĂNOָ̭,=Ź_ôĆć”GÓtěńŚE /.đß)ŤRô{ß}Ě1nâĉއ'áH?sé9۱!`†€!ĐŘXĽ±7{… K„ZŇlp9oŢ<_RĺvEť°öíŰű ÷¨QŁ|ś@8µľiˇCžÇ&X„7‹'mŹ?‹ž6ž6–6‡<ľ=Ť–6ÖvyY˙NIBö\â;Ąl ĺNňţ9/0(Y#ľ;/1¨Î÷kÍ0 CŔhJě—¨)Ń7۵Ŕ±cCE˛ p¸X.9yňd0-˛deR+§‡‹Í.YB Šc]k2ꤨéD fŮn(›bOz=ц° ö|8ĂŘ$Nť@śęĽ|çd P#ąž={ú‡(–Á˛Ľ’ďÚš!`†€!`†@Ó!°k×.ďŻáł±?ľűúőë˝O_$řM–°ř‹ pÇ{¬#‘%¶Lš+4„?+şé›Ęvš]®•ńúĽf2ąů´nÝÚűÝĽŘŕEţ;ľ{¬>84Ů×ß˝W˛ď{ü ÇŢK–®ď$;6 CŔhl,Ľ±7{™°ěîąçžsW\q…ß(GšúsEË#q®(—Ă…ó,-Ď1ŚŃ‚ĆĽŞŐŰP˛±ůÔŽd”PË}ѢEî±ÇóGEěbźĚľ_˛ŔąG¨ {±!s¶Ţ0 CŔ0 C ţ ŔŤ_÷˝ď}ĎŻňĂż+ă»3#Ţří^xˇ/'Ţ<˙0‹ž5®Ż>‹'k\dëBŹÉĆhŘ΢3žĎ’-rMČ’NřSO=ĺ}w2Á‹ĽŘ@?ľ{×®]}9Ęď˙ű>1‰ňˬ7 CŔ0 €7Ęf#ŠYßS¦LńŻüéOňµç(‘QÔ&»Í'Lŕ—Ű‘±€ĂÖ Ô“ČrÓĆÓĆ´.9Îă‹Ńc4ô×…^T6ŹO®S÷1™4c|Ż©1Hś—,‘-ŇČH‘,ˇłÎ:Ëýýß˙˝ß4SĘŰŃa<†€!`†€!`Ő#€ÇŠÍ›nşÉÝsĎ=>;1‚ĄE™ŔlJÎ9çxßťs>±Ä†4ż[áxx›OŢ,ž¬qm/ĆS-M_3:ňŕz>Z6ϢaĚnľ_VeNź>ÝďíCiĂ"Ťďßť˛(řî|ç§ťvZ榦EtŹ!`†€!P ^•´jMƨ+d,X°ŔÝyçťîÁtÓ¦MóY$ż‹dŕîßżżŻőMť9Žq¦%řŤCX6Ă@d¤çĺXú¬ëşôY|iă"#}OlLäč˶PV΋čޢváĂ&-;ĽŔŕĄß;Îu윇+–Sr˙lٲĹQ/ž{:ďč.:—"×g<†€!`†€!`5ŕ‡Íź?ßÝwß}rlvąlŮ2ż˘Z‘FĆ7ÓSë›ßť)ľ\Yż{ZFŽőxlNÂ/}Ś7¤‰Śô!=ď\äč˶PVÎŃ“§OxóřdNđńÝŕ»rČ!ŢgJâ“ó‰=·á׳Ęż}çÎť~_§•+WzťmÚ´ńĄnĐom˙@ ë9ŽńćřÉB˝č˙Ź,y7 所ŐožßË~=+%ęÉQâçů†n(U+ĄsąŰ¶mëß#GŽôÁOś˛˘M~Ô˛~¤czD6Ť'¦/”‹ń†ş›B6´©çTd–†ăĚ]˛9Ť‡'jIâ(g9Óčáâĺ ŮG˝’ełÜOŃYfÉ}Ŕ”5CŔ0 CŔ0 ş#€_†ďE)ŚI“&ą[nąĹ-_ľÜ'$důkÚ* řďř~'žx˘ß§§w˛źKMüJíOjYÇ"—EĎÓĘçńk;ŐĘÖU.”gNEćĘ…2|$±/{üŔO ۬čŤÝ ¬eŹ'|w^śGž˝}:věčë;;nţčűC뙇ăáąćmŚă¬{ĽČxČÓó5†€!PżX ”úĹÓ´ĺ @€sÎś9îꫯö›\Rţ˘hƨ>ţřă}ýg–ĐqÄ©™±×jiŘŹÉćŃc˛1Z]ôćÉćŃłć•5Ž>iyţ;ÇĂË4’ŘÇĺ}ď{_eĹž–Oó 5ťăOŚVŮŢ­.6ódóčYóĘGź´<ž4úÂ… } ’šđÝcAp±COÖ7÷«x?˙ůĎ»ńăÇű$ÍcÇÍ}„Çáy8{M‡ž‡üő}°Ăsě1¦Ç‹×÷Ůýó?˙ł#»Ho†š§Ă膀!`†€!`Îűcřë7ŢxŁ{ä‘GÜš5k|xź üpRžî˘‹.r}úôńĂřódÓÄ÷ó'Á?ŐŇŞŃłĄ§•ÇŁÇhysÎŁ՝ǧŻUŽc2BcuŮÝŰ·o÷~űŇĄKÝŠ+üsžčÉęI`ˇ´ epđÝ˙áţÁgł˘ÓZóB@ľoé™Çröi/BB}…BÓcőq¬آOƤg\ŽĂ^—çZżč¶Ţ0š7oŢßĎ>?;ś"2züq‡CÄf—Ô Äy.ňC‡SD“ě^śgJfőM°3«ĄéMK“ůÂó4KăM~݇|áąć ŹCŢđ<ä×ç!ox®yĂcÍ«ŹCľ¬s-ŁŹq¸?V­ZĺŘ`‡še¶”ĚŃ|izqRp¦YNyć™gú¬’şŃŁG[VI`6f†€!`†€B? ßťĚŢąsçúr”ą dE‘ ęńÝńŐŮ ~Č!ţC śŕw¬iOÇd …ĽáyL>Ť7m,MGČž§ÉČXČž _Zň†çi22¦yő±Đóz-ŁŹ‘ăŢŔwçE >;Ď}Yé+ľűرc5âńŰůpĎč cŢüŚŢ0Čw­{}ŚUý=CÓ™U(#ăŤÝË=E/ÇĚAÎĄ×cip‘•ľ±ŻĂě†@y¬xyĚL˘ľ bnذÁ=üđĂî¶ŰnóŮ8Ďio„C•˛Q"5áŘ$‡&?žˇLě\~ĘĘŠ\]íęą™¶[ÖvSȆ6őő™ż–ÇÁ »źĄ˛Ô¤Ţ$Ž1őąp°´“Ąmqo‘ENŔśŐ'śp‚;őÔS]çÎť+™Gćc|ŇĘĉ+,Eü_aÖ~!cŐĘ–‘˲-ăyó¨Ż9çŮŃóá¸Z»ˇ\¨ěŕÉÂ0”ÇW'Y‰ěíľ}űúLVq˛q=Ď…±{ŕ9Yăk×®őň¬<ŕ°{÷î>Îsµ¦A@ľéĺ9žs>rÎ ł»ďľ»ň= Ř뫚kČăđžĹ–Ś…=÷ň‡>ô!ż’…yň‡çT9ű†ś»é6 úAŔ2ŔëGÓ °dÉ7sćL÷Ýď~×gŕř”iÔ„ŁÖ÷%—\â—Oę·®ˇ~|b-FŹŃĐŁÇh1Ů<ąl­®ôĽąĹč Aăzh8Í”Đáaě…^đ/Vj(ńqTx™Bůś/}éKŽÚŕÔ,łajÜ‚Q CŔ0 CŔŘ÷ řHĆ÷WľňżZ“`¸·Š\%č†ę.ĽđBźxËřŽůŚb+ĆŁ!źEĎ/b3¦·.´<Ůń ź ~Ćgď^Ľzćă{”ďšżá1ç<§ńM›6­ž­7­:^’LĹý(±zţ_ȇr¬{b˙†@łDŔŕÍňkŮ7'ĹţM›6ąëŻżŢďŹ#˝eË–ÂĺđÂI6Čá­+AËÖ­[W~půá•ó°ŹŃc4ôÄč1ZŮ<=e®'ĎnŚ^dYľ;Ó“őŰ+)Y(ľ»öŻŇüşĎ,ž¬q-źĹ“5.˛1z-mLté>ŹŻ.ôĆ’Ĺßaž=ąî4>|w^¤đŚČË6Ę”Śp‘ËęI`aĎ'î/Vă»÷ďßßĆ%™%kăőß©|Ż:ř-ŮüŚÉřI'ťäKWv87sćĚńNó˘E‹|đ›:ß”¬ŕG1ŻQĎ›Z'ɡfsX+P~|ótA×?>eäęS]Y¶őüŕKkY˛iĽˇľ˘˛ˇşJ6Í–ľ–"vąOř´ćľB'™%Ľdˇć`¬á¨±3=ey^|ńE˙’fäČ‘ţ­>ĄVp°­†€!`†€!đv@ßťŚ\üőG}Ôűî+W®ô‰,ÜŠá@ą‹V­Zů}z(SH–$%+ÚµkW+âŰU“ńËʡŁZY‘“yäŮůENúî3‚ß”ęáoăú% tą~»'›ÁhS0"X<Ž‘âđ#@@‘:m>ř w É‘:ÍqéNjňfźŇşV –×?&úGůÁŃüYÇZOs–•yrmr,×Tćz‘ŃňM![Äf8G}~OŔ{'ŁRc]ăźţyÔ&;ś,“,{8+dťpâD/X°Ŕg,a«GŹŢ‘ĆQ—·ű‚·ő†€!`†€!`ěŕ#‰ďŽĎÎćôżůÍo*ľ{–ĄŻ?¬}űö>—Ť ńÝńźÂ¦}9ŽCÝáy(/çZcEĺŕmlŮĐs •™3üZOs”Őó“ëKFĂ·fzV÷®Hj}“ŔÂ&÷řäűlwůĺ—űĚ’nÝş7CŔ0 CŔ0ö)&ôĆwöŮgýę8Xyľ™\$ 6§żŕ‚ |0’@8­|O=k\ćŁÇhyóŢe›ęšĘb/‡K@IDAT?% Ůۇ`řŇĄKĺëŚöřî|H :ďĽó|" /`Hd±VżHŕ[ţ>HOPă‰Ůg‰%C/»iźĎźvÝůn×ćçÜwÜáN=őT˙ĽČß>yv¤×Aqą/ůtfxěůÎť Ý÷ţ¸(“ĺ°t˝ŽlĺŽíÖÖýă;Źq'×1“×ĺXşö%÷µŰćşűź^›*8°G{÷Ő‹şóF•J—Á-/˝ę®ş}ľ»ĺŃçSŰÖÂ]ůľAî“g÷s$÷LŘ6îŘíŽýÔ˝•á‹Fíţ糣+çvĐ0Řë҆ÁużŐĘuľo˝őV7kÖ,GɓիWG3o5ü@đÖţä“Ov={öôőÉâĹ‘‘ŹnyN•ćĺXˇ˛šoŚŇŕŹ5­;”Ő4t”Ąµęn*»ĚCl7ôµĦdÎůçźďW gÓîSqŢŇđc^8ld…˙őŻőeTŽ9ć÷Ţ÷ľ×o¸CÍpqnŇämĚ0 CŔ0 ćŽţ%'îľűn_vbҤI>ř˝k׮™›”7aĺÝ)§śâ÷PÁw'\šř|rú~2ëEG(+ă"ه4‘ÉęµîPVÓ/KϲÉxLwŚ–'łYDVŰnČëe.$ ś~úéîÄOô÷ĺăŹ?îďÓ¬lpdV|ň"‡€ëź˙üg÷ˇ}Č?[ňB†ŚpkuC@ľ{éĂŕ7ĎOŚIđ[‚âułÚü¤ąN®MĎ…ŚńěÉ8ç`@Vü˙‘^d˛ú„ÝófŃw˝ú†[ôÂ˙ą{Ú îŇq˝Ýu˙xR{ŁŤßůä îĘ[çTěÍúá»\«Cöťâ´Ą[Ü9ßú«{ăÍ=+*óÖÁÂUŰ݇~ř¸űŇ»Źw_˙ŕěĎ˙4}Ťűě 3Üö$ű;«˝”d•_ńëŮî·SV¸_}îdźňĘ˙1Ćą'¬5<űÎÝÚđX…ü‘'PHPqŢĽyŢéX¸pˇ{á…üţĎ›¦†·ˇąq ©ą=lpI–-űôPĘB˛óthť1˙®Ś­3ď¸)l2§]č u˝y¶Ęnězłlâ§ó"_›">8ţ<ľ;ĺQ,f5h›7oöϦȑT…ďN" {JĄ•äÉŇeăŮđÝ…ź0řÍs”gkŰ÷(\+ݸW%ř-÷6}ě˙€–Żöř¶)Ď»ŃÇá>rzźjUÔ‹ůuŰ^©čÚ—‚¶;v˝î>qíSµ‚ß-“ŕý¨cŹpx€›˝|›Űüâîʵý×=‹Ý€íÜĹ'×^a˛rÓN÷O×Ow/ďŢSş ůă»·uÝ;¶t‹_xѭظgEúÜŰÜÇ~ň¤›ô­3;µ=+Ćě Ń°ČNŁA˝ďâ?NĺNČ”˝ůć›˝ĂÁůĂ»:śgŢňě>óĚ3ÝřńăSŠňĂę”q±Ňe\ř¤‡]óëcä„WthzŚ&üY}žlşžS–==®u‡˛š†L=×úłŽEw(+ăZNóäѵÇšźc­‹Ú‚|¨)?{ölż9+µľyy:0Z/Ž4r–˙ň—żtO?ý´»âŠ+|F9Îą5CŔ0 CŔ0öđyŘü›…wŢy§»é¦›|É ĆcEą>|w2iI*Ŕw§ «í´ĎŻřdYă˘/¤Ë¸ô˘‡óĐ· e5ŻČ OH“qá‹őy˛ečeě2'­;”Ő4xcô¬iݡ¬¦ˇŁ,]ě¦éŃcÜg}úôńVSbsňäÉß=´+ząŹ)éłvíZwăŤ7zż˙’K.q^xˇ_m,|ÖW‡€ŕ./xîçqzţ–Hđ›^ř«łÖ<Ą¸f®-lÜż\/tţV‚ńş´[ľpŠŇ»¦¤Ô›ű?7ëą­îĎ3׸»žzˇ˘ö?ďXŘäđĘdöÁç¬s/lŢY™ů÷?:Ě}|b×" ^Kűýă+ݧ~>Ă˝ţFÍ ¸ëţ˛¬Vś€˙?^W;ř}nR*ĺgźéÚ·ÚłƲ¤ĚĘ“,ňeI]pAđ«ď^ä®xď@1e}!`đ&~_0Ës6d“śo}ë[>8H gZ‘ĆŹäś{îąţŤó›R…ř?E}w.fÄnÔ¨Qľ<ľ»dÔj? >ńÉÂqMăXÓE†qiicBÓ˛ŚĄń OH“qŃĄé1üečZoŮP®Ś,Ľ4­ŁĚśëS]b[Ď'´ÁyZŮţýű»~ýúů{ßťU ĽČÉjŘâĂ*N_(ËĂ˝ţĹ/~1KÄĆ ¸JĎߎéůřĺ™IÄCßßÁo®M÷©\?cÄ9亥g\îgŽ‹¶®u=;Ő쇆LźÎ­ÝűĆôp;vľî&Í_ďŐ¬O2Ż·'ç:Đ č]¸Á-\µĂvżö¦Ď\lÄ8~Đ‘Ń%Ë׿ěHĂô”óčŇá0żyă…Ł»»¶I ki»^}Ó-ßđ˛[łe— ůž2-dQłń#uËu{:ɨžőÜ–$ü’Żg~ö‰Ý<ߌe[Üć¤~6­Űá-Ý^5˙U›w%óßîÇiq ›0¸ł{- D˙nÁĘíîçőv *ç<żÍ=˝|«żî¶-[¸a}wĂűžč=ĚëŃ˙Ŕ+ »ź<«źśVúKNéé˝ÎÝńÄ*?Fŕz÷ëoşC“ůĐ~ůđłî‰%›ü1˙śRwwëÇTÎĺŕnm’Śď‰nä—ďŻdĚ˙ŕîĹîÝŁŽö™âÂg}ă#`đĆÇĽŮ[ä8nj±4¤ž2™±Ô L{ švAR+ŚĘť•˲6Y2Ęč ýź¦q®éšĆ14“cÍŹĽnÂËXȧiyôPVŰH;ŽéŽŃĐ•GOł'cy˛š^“¦ˇ/¤‹Ť°/"'<ˇNťĐÓĆ„®{ś6VĄgé.»ÎoذÁ˝ř⋾v ćŐÇ8:8ŇŹ=öżĆ‹.şČµk×NłŘ±!`†€!`Í 6dCÁßüć7Ţw'“†Ä•"Ť@7ţ:› Rę„Ň'Śeůîčź,ôß4Ml ŹČčń´1ˇ‡˝ćťÂŁiŚĹč!Mtdő1Ý1úňčY6‹ČjÝá5işBz}Ř u†69×<ú8´O’VNv÷a‡ćKpR÷;«e%'«>ą_?ţńŹű’(uÍĘͲ·?ŹëďGŽ%đ-=xëŕ7ߍđîOŘpŤ\÷°Ü×rĚ}4ž5u á×ăŐďwx%Žüsë_ň^ŃĹFŠ—_;ÍMNŕşýń©šłľ]۸›“úÓaŕ8™˘ßňú–U˛ťµü·ĚvßřŔ • 1Áăw}s’fńÇg~ăßSŢŔ3íő¤ľög~1ÓÝ>u…?—Ř0ňGźîȲţëüšůpľáÓŁ<ËCI ţź˙g–?>˛ÝˇnęwÎňőşź[÷’7°sĺ:^zĺ ÷•¤ľöo&?/ę+=Ř_őÁî ç÷ŻŚqŔ‹iűÓ^&@˙×÷ pg ÝS¦— ĽŔ'ÍŰóĽĂ}í’A˘rŻžźz×±gÔtÁ €ď…TăÔţßÚ¸¶ÍZ3C€?ň8ÉÔ Ä`sŢĽSë»Č›]ţŘđc@ÉŢŢS+ŕ·®vÉ ő)?<ҧŮf¬!ěż]l ¦Mq˝y¶qXČáá§ç¤eË–^Śűś±¬ďž˙ Ô_µj•_>Ě 9Ń‚¸ő†€!`†€!ĐŔŹ!9ß}É’%~szüw|÷˘A)|wWŘKĄwď$Ănđ`ﻇAťđzł|¨Żšó¦đ+ß.6ő÷‘uÍMőÝr/sßRş˙ťůQ"…D|wV7@OkřîÔg*^QśşŕÖĘ#~˙śó‘ěg°–cbEâĺgŃôrm<r/Ňë—üí”ĆxC<+NO6mÔ­Cë+§k·ľâĆ_ů#žŐOüú#ŚuăYa»:©oýß~¦rěÜťožíŽlw{O’µ\¦}đżwłĂöj’Iýů_Îň:CZxÎz‚řé4'ÁoMăÍ˙sg]őß TŹË1÷ę7~;Ď­KđůŢGN”á$ÓĽCĺZćżţ°Pě>:©Ý-í¸ŁÚ:>ií™55%M ŤčwD&źČ~x|ďJś±Ĺ«wÉú&BŔŕM|s3‹ĂAćČóĎ?ďK?Ü~űí>SG#üL›;N2 ™śwŢyľV ™#ŇŠčŢĐ e5=FC_HşG|ZošlŚŁi[YÇZ>śł¦ĺÍ+”Ͳ'ă˘;MNhi6zš¬čOëENhZ>F?Źú$€MÖ7÷4=÷2x”EÁ‰f(V5Ŕ«ç :pľYůđ»ßýÎ}ík_k§[Ö CŔ0 CŔ(‹€ ~Să›Zß˙b/řµ ‚7řďĎ9ç7tčP4Ô<ˇ¤iú¸&<ˇN}!]Ću/2ôš_Ă/|"«é1šđÇz-Żő"ŁiśÇč! ţXÓşCYMCG=ŹŮZ–îpő) € ŕUôŕɇŔ®Ë9ßÁaéů[mkr}¶ůpÎýÎßN †s,×Nźö˙ˇZ\(/2uńĆŠx‹¨U&ĺŰXP+ř}ÎđŁÜÇöňĄHîź˝Öýňˇg˝,ç+~=Ç=ždT'ÓwŻľţ7÷˝?.¬č˝t\o÷/ď7p¤öřÇ˙ű)·vë.]˙óđs>~üŃmÝţu¬{$É€ľţţĄŮ›??&)r ë—dšÓ¦,ÚX+řMY’w ;* ·qS™ß«2*eę`SÔź¬ű‡·9¤˛ä/\V+ř}r˙Nîcú¸M/ľę~ý×ĺN‚Ôd·żsx7wú Î^óiII•6IVöKŻÔÔu6y9 罎líĆ$zĆôďčNOřş±' .Ó·çŐć–˝TÉá űĂŰěZÚ˘˛aćâŐ{č!Żť7oś›­ţPăP-ň‹_üÂgŚŕ<,ÓN:é$_ëűÄOôAđ0k$ü1 lÄhyôşČĘőéąČXžÝę(:ŻP.ÔËyČŁuÇhˇ¬–+C·.˛eäË\O¨Ybś_6Ń™3gŽŻČ9/cĆŽë ŕŕśSއú‚lxąiÓ¦Z8Ł ‡Źş¬‚ŔÉłf†€!`†@s@€€ţ ţÎ 7Üŕ_öřĆw)ÚzöěéWj^|ńĹ©ľ;zŞő˙Ş•Ëł)×ú‹2łęu4GŮpN\žwH×´đzµl(§i19hŇDGhşĐ8ŽŃˇqĎŠďÎ d‚ŕdră«S‹ľWŻ^ľçś˛>Ôúćer’ŇD˙ţú׿şK/˝THÖW‰ęß3FĎądI3¶ż5®‘×HlC^rÝ|$řÍq]łżú—Ą®ó‡z“=0ÝSK7»yIýiÝNJ2ŽLĘnĐ–&uµ«JŚ\dißüů“+ěgíâ:%eDľsÇ?Fmí?<±ŇQrd~RO[6y„xňq]꤆·˙[˛Q#eJh'A÷ż%ßm‡Vű˛ ¶×Î6?cH—$Ŕ»'¤xÍ=KĽ˙P"„Í=OKęÓľôîă}V9é"íŕt?ľ|¸c“ÉvI ťĆˇß˝sQEü¤cŽp÷ýôĘ9×Ç}úO•r'żť˛˛ď‘dyß”`tÉ÷KôÔţ­\‘¶ůÜ6ĺyŻ‹Zâ_ĽŕxwÁČŁ*ş—&ZţŤ/ç­¦łĆe,­ďžŘ]ňVć·lŠ™ĆgcŤŔž»µq왕f„Á=‰[nąĹÉ”Ĺi ^¤učĐÁol)uľ©×&›\†ňáŹbžcĘëó¬¦!SÄ.2!ź¶'ÇZwČŻiEíŠŢĽ>¦[ÓÂ9ˇWÓ9OăaM ĺ8ʵ<Ů,:Ž/n–.]ęW2Pş„ŚďöíŰ»ăŹ?ŢŤ9ŇľągYÉfNcĆŚń5.É'Ăç[7®‹˙ dVˇßš!`†€!`M‰e!ČpýůĎîë|ăËłÉeŃÄ‚8ľńÝ©±Ü˝{w_o9-xúw\·řai´."O(«iyt‘Ő22–f?ƧiEí¦ŮH‹éŽŃĐ•GOł'cy˛šâ¦ič éb#ěóäbt|l’PđßńÝń»Ů3jČ!Ţw§Ś ľ<ţ;ľ;«8»téâ†îľüĺ/ű`ąžsćĺ˙Gx°Vŕ(ßżô< ńá\†%@\ťĄć-ŵq?ń÷‘ 8=côiq5ڇ÷|‘«Ľë©˘l‡&Lţřň6bÔÁŘ/^P»Ţ5ŚźNęO_ó§Ĺ•`đÔE›|Ľ• XĂ÷Ą_=íĆo:9: †ř´^îďNď ©t#\›XJđ[Ć®¸x űźG–'›[îyy%´°§Ž÷ĄăzŐ^ąi§Ű±kO¤OśŃ·ť By őÇďť±:ŮÄrxĄ†÷'tqO~ď,÷ăűžq˙;kŤŰöň]Zk^öŁÇÝ—/P©óM@_·×“R,Ešü‚·}ň"ÁZÓ"`đ¦ĹżI¬ó‡›%d‹/ö™#löGIŃĺKüŃg“j{ă<­Xôbc?úHQ}Eřb6‘—łú¶_Än‘ůWĂÓm—Ĺg„űvÇŽ~©$/q(]‚M-zîŃŢI=ËăŽ;ÎuíÚµÖF¬8Ó|Ř1ž{:­áč/;Ż4]6f†€!`†@5ŕ‡ŕ»$Ägĺ&ľ;Aľ"/éńsHTˇT!~ű 'śŕ‰řAőŐ˛üʆöˇ˛ěĘu5„ý¦°)דe»!®3ϦĐËŘć~ĹgSz’W‚s_ó‡{”LoVlöďßßߣ”@?ťc>ť;wö>˝Ř×=sAW‘˙ZÎŽkżKÎÁ’žqcśsˇďoʵÉőɵÓsO &áu3žő˙4ä-rÎć’W}đwl·š2#Č. [{´“ÓJßć°’ÚÖ­śd“ÁLCĎ íÝ‚$+śF0ú¤d ĺFÎ?é(_»F-lĎüC0Y§űwß{Nd’Ý©ejmď@ťŁdIŘ–ŻąÖЧ>Óo¸©ÉX—F­ojĄ÷éĽg?ę{˙ě“'%™í#ÜÓĎmóe[¦%÷O=ł9Ůłv@üż’ZéăéĆ'ź~]ŘúÉý^ŁŮşbĺLtÉ—ľoeÚËü¬o|,Ţř7™EţX,ÜĽyłűĺ/ékăx,äu^ă˝Ô Ľč˘‹ü˛I–ĄĄµPźţŃĐŇÓôËÖ›&«éˇ^MK“ôÂKŹ9ž2şódEgV/ňy6‘Ďâ Çłléń˘vCÝ"—6­?íXËjyqDX"IćČÜąsݲeË| 2DČ7nśAsÔQGyg9MlŚëŕ˙LÖf;1Yن€!`†€!PWđwň˘˙׿ţµ{řá‡ÝôéÓ}€/ô·ŇláGáIťoüöŃŁG§±ú1­Sű`zFMă<¤3–Őňd5=Ô«ičéi6‘OĘO(ÓىľXŻĺËŘEgL6fSˆ65Ťă=Ť†LVÓótđá~&Q…űyćĚ™~%˛Ô¬ÇwçŢěŃŁ‡O\‘ŤëEGŃřîôÖę†@řÝ ¦:ĚŁBŢşYnŇ\×*â ÓË=-×-}µ3˙@R»»Űá‡UÄ©UÝ# ÷M‚®'öŢűEĺ†í{V.·:ä ×âŔ=rV”$zÓĚŤo•/ˇŚĘoż|Şűü 3ݤůë5»?ŢúŇ«îćIËĺC®ůÄ0GY‘"msR[·.íkJşč1ŽŰ%×V¤‘âön۞놖2 ů9§vwZ; ůmŃďp˙NŕüńĹ›“ 4ç:Édç{˝˙éµ>~H‹uż—o¨ Â?»®v0^lĽôĘÉfź3Ý·>4$±ý¦cCQi|źÖš €7-ţŤj}Ö¬YŢŮřŮĎ~ćkř–˛"éŰ·ŻŁĆ7›\âHóÇ_;9úÖ8v4Ťs-—Go*Yćíp®Ě—Vt^iň1Ů24ćęů¬qdh!ť1‘ éz<¤…r!˝.˛˘›{g™Ě'˛ XţK–6!d4‘2a„˝2ľ‘ݦĄaSŤ“1 CŔ0 C  Ë—/w3fĚpßůÎw*ľ;A™˘ŤŚÚńăÇ»sĎ=×g×R^BűbˇŹ#´¬q±[†.:[6´WfÎČęyW+Ę…z9yÄn8ž'+rđŃ´|ŚoH×ň!Më…ŹV„Gę|SzŐ řňv@'÷ËOŹv#˙őţJťt6#•v\÷¶•8ŮčsWlwCzµ˛Űőę›îâďOńŮä3žÝâ7Ö¬“c»µŐ§vÜěýż¤ &a&Ţ€ Ľ˙ţűpj~S+°hY˛%(%A`±_ż~>Ł–Zlađ;vá?eš–o*Y™/s)2‡úš3v‹ŘÓó“ă2˛zľeäŕm,Yś,˛FdÉ$ĺNČ ˇqŹRć„Ëy;věX«Ü‰g˛ CŔ0 CŔhćŕ÷Qëß}ţüůµ6¨ÇĘkřeřE©ńŤOY ‚ßřőEZ]|;ôků2~lCČ2ć }Öő×לŃ_ćšµÝĆ’ m–±ĘĆ®•ű•gNüwß|¶mŰćW$óúűäXÎĺo˝ŚË±ôŤ?ۆµČuɵqÍrLOl9oŘYŐh×ĺPy|ń&żIĄ¶M˝l]~ă·J¨<“˝%[›ÚâW\4Ŕ^N‚ĂŹ.ŘŕëcOOJ‚Đvżö¦ŁŢřűOí©U§–čę’Ł%čţřâŤ>űšĚii3źÝętöşŚíŹéZ;úČv‡şs†w+$>5Áč±E=oËäeÁűNéQkOQBýdNŮ(´sű=öł‡vs™US*†ěóĽnš›ňźgV2đ·ľüjrý5űé­Jđç#í¶‡¸KNí!§Ö7o"ŕĂ,ÁAĘťôfłśgžyĆĺŹwl878ĘÔ dA˛ľ»uëćĎ‘Kű:D˘?ŤWhôˇ\SˆóŐóá86˙4٨;”/*[­śŘĺe\úŘ<´lŚOtéYd¸gÉ!cdÆ •{™úÝĽ{'uľŮĐ©W˛´—Ě^ĐX3 CŔ0 C`_B€`!Áď•+Wş›nşÉ-X°ŔočGöaž…ĎDąB|wŠgź}¶/'A`‘–&Ż}´§4~á ĺbĽ"#}SČŠMée.Ň3hY×Ęeń‰>é«•Cľ.˛iň2'éó®Aěçń‰>Ý#‹ďN-nžEŮ”’—9$±pʶjŐĘűîŁFŤňŕd›ď®l>Ç|˙Yľc)Ň|f\3áúřdecI°©?«Ĺ4MH6sl}h Gö7íŰż_ŕFÓ1Ůd±¦ĽČÉŤ_»mn2˙=‰‡çźÔÝóŢ:y…űÉ}Kü15­ţ$‰ó$ĺWZ'›cž7â(źQ=ák{:˙´8hO»2řÖĺ=“vÖĐ®î×]îO)ňą¤Č$Ą@:&Á_˛Í?őóéÂZUO6÷á­qšilň‰M ˛sÝüçŁIÝóšěóIÉ’Gľ9ŃóRJFŕÔżâ×sÜ÷?r˘kyČž˝Ŕ˙V‚ĄŕŠŕđ¤LŠ4˛ĆďxrUEŮáýÉ“‰žaî¨Cćw˙7Nwżţ[łe—ůţ_“ 5ŰFĘżl~i·ĎŻ%śđ‚ˇ×‘­‚Q;-Ŕž»µŚ”ńî\{íµîÁôµŮ$§ŚcrŇI'ą±cÇúŔb(+N‘Ňe<­Ď“ŐôPݦˇ;‹ŽĂ[T^šÖ‘'[#‘ţožlQşžŹXҲ1zHÓrčĘŁ§ńČÂ^ëÎÓ[„ŽcµeËÇf­,ćá'™M-‡ ćîŘĐ©uëÖ{}ÇáÜěÜ0 CŔ0 ćŠŔÔ©SÝťwŢénąĺ–Â\ʵ=Ëćßď}ď{˝˙N Q7íź1ú`š7<ΓŐôPݦĄŮŐôşČ†şµŢ^_xž'[†®Ż)”K›—ć©‹lšîđ:őąŘŐ6ˇË¸đˇ4$Ó›ű™ý¦đăY}@ [VŹ1µiÓĆßl3ëő÷Ě÷I“Çr.}3»„:O‡ë$řMăĺşĺś^㤏ˇ5dë””?{Ţqî;w,đfć®ŘćĆ~őAwΰnެîGć­wóWÖlr ĂŮ'vóĺ=8Óżcçëú?wɦşOž}Ś#ó™ í-Ź>_CLţĺ˙?›pJ#sZ·+oťë'%@>dwNj~˙Ű{ş?<ľĘ˝ňZM©®Ű§®pż{lĄŁž÷ćk2ٵ|5Çßąl¨űd’yMŁV÷+H˛ŔŹr”Lą3 Në¬ëO˝ëŘŠ ŽoOć˛iGÍ>ĐHR­±|;li˙®ŚÝć"Ëçůmn]˛çčc;&Yč]Ýe§őqg]őHE$V^ĄÂ”rpóçOvż™ÜŐ]uű<·ń­Śna#pýí¤ěĘÇ'ö•ˇJJ¨źsÍ9îżîYś”jyŢ®+Ä·:đ÷‘Óű¸+Ţ;ŔQc<­Q*]Wývľűu’I®KÍǶ‡şĎśs¬{(Ů`”íĽ¸ćOK,.5Q˙Žä?îžÂ@M4 3[|u” Ö7oŮŮ!~É’%ŢéŔÉk· ’ĺM@ńťď|§*˛IŘňn“=FÓvŇřŇĆňd„޲y6enҧń§ŤĹř…F_­lµry6őÜäXŰŇÇ8<řń@óĐ.cŇă8°ˇć˛eË\»vídŘzCŔ0 CŔ0J#€Bi7‚řî?ýéOÝĽyóü ˙"ľ;~ ľ;AD|w‹Ôú&ó;Üŕ2Íç 'śĹ“5Ęsň†çˇLŚŁĄŮŇşR6ĎNĚvŚ»¦<ąşČŃťuÍZßťgQ’WV­Zĺ}÷­[·zž{ß]6©?ćcęÍwgn\pÇOkŘI 7n\ŮĆ"H¶łÔö~ýő×ý¦ĄĽăĂĘr>|çÔxçűçůí _ř‚Żő>ô˛›\‡^##š?iÚuç»]›źsW^yĄŁT÷2+Ž)3EĎýĹ ^6JĎs©ÄVř;ţ=nč«~퍿ąĄIÝkjRłq%ÁíţIÉ ]ź;ml|ɦ«6ďôcvn—Ô±NJˇ 8ş­;´Eí2ZZţͤtĘ–$űy[’ÍÝ" Ý©ee#HÍÇńß’ß˝L¤őţ‡{*5ĽżxÁńîŞ Réţő7÷\7&ÝޱQćAî±—ĄôĄWŢpÔ)_™”,Y·m—ë”»)yŇ·Kk×®eÍ‹ä,Y=ľëŐ7ě_ô8nŘľŰcѧs×˙¨¶ľ6ůî×ßtţánC¨żď˙ťVJ·¶cÇő€e€×ŽM˘…v§Vŕ]wÝĺ”´S’7)z˝’@"µůă®ЎţëŁÇhčéZoxÜvcşc4ćEÇá-s˝Zwš\¨?äz8®őrLÓ<"Žs®iŐĐ‘Éj˘š9O>ů¤_6ąiÓ&??JňPň„ZßcĆŚńYŕŐd|ëkÍš‹Ť†€!`†€!Đ,˘ĽŰ5×\ă}w|y|”˘~ VÂ]vŮenřđá>ř˘ç«őŹ%tM“1á i2.|!]ĆÓúnŽł=8٨’ZÖ|Ę4äÔřÖuľ‹ČSo›ěč0Cúúű—ąŐoŐżfÍŻ^<°V ýŃ+ÁoěôHçuiß&Á~>e[›ĂrC’úĺ|ęŇČÄšl°É'­ń"áö/źę^J6,-XOÓecuGŔŕuǰŃ5ś4i’űŮĎ~ćV¬XáłHx[´ń¶ňśsÎńoĹ©ĂÖˇC‡ZÁoôs#:ůŁŻ›¦ÇhČ”Ąk;á±¶ęŽŃŕ-Jç[F6śSYxŇZŢ|‘ŃMăś–Ĺ“5^#•-—FOł+|ôdp?S+púôénűöšz`Ľ]§V AoîOV%đÖ=ś›ÖçŮşôˇĽť†€!`†€!PŕďÜ{ď˝î¦›nrěkÂJ7Ę˝•iřî”)¤d!«Ó¤Ô‰ÖúIÚÇŃ4=ŽĽ¦q^–ŽLV‹éŽŃĐW†^vÎZwY٬k-;gřŶžŹčZžŢPVˉ®<ˇ§ÉŠz2)OHŔ{ĆŚ~ŻƸńÝÉř>öŘcýŠMße3acöc4=G;6 ¦A`Őć]î§˙űLĹř˘U;Ü»Gu÷™Őó’Ť:ż›”N‘vđAşw'uşßŤŚô­¬ôSsř®-Ţľ…sŕźe^dČ’92mÚ47ţ|ď€ŕtidÓâ0SŤRdSZ‚ŚÚ<‡Bś"±“Ç/|ôEeC>­ă26áő•ŻV›4-źgSóÖH×ţ7O^sk]eäD‡Č—•9ô•ey~Ď?˙Ľ/ŮĂ Ë |łŚ—{“‡f7Ť/mLć•××—,vbóç!v‹Č/:8Ö2ú8´žk=ĐšJ–ű™‡>–ă@Kťo–üîŮł§0`€˙Aҭ̵7„}Ói†€!`ű/řřč˛GľÎ/~ń żź>}‘FYBĘťđ¦vňűß˙~ď»ëlÚ¦ňíż¶]ÄŻŇ>lYYŤW}ɢłČĽĹ¶ŘÍ“>‘?mLčy}µ˛ŐĘ1źPßťű™zĎ«WŻö X›7oö™ßřîÝ»w÷/iN9ĺźýť¶2!ď:óčy¸çÉ˝1ĽˇÉG´Ćř…g_ěÓ®+Ľöđş ‡˙‡BžýůĽg§VîĎ_;Í}í¶ąî/łÖą7“żaë›ÔčľáSŁJ—] őŘą!P ݵF”Áy^Ľx±űŃŹ~äë}ă|ŕ¤ýAN›–Ô üČG>âw‰ç }Z ő…¸cô [1zŚ–&›6wk¨9çéž𔹑‘ů‡˛2žŐkůPVÓŹŃc´<Ůł‹Ý”ía÷5Ą{pžÉ9í´ÓÜÉ'źěwŚŻĆyŻąI‹Ń„ÇzCŔ0 CŔ0ꊾ:/ůŻľúj÷ŔřúČľ‹ú"ż;uęäđÝI `ŁË´ę‹ů`"/őš.CŔhXútní~óĹSÜĆdÓÇI ”u[_IJ!9wl·¶înm\ŰĂŠo0ٰ35íoG,ŢLżuś 6·Ľí¶Ű|Ť5JDPo­Ś3@­@Ęťŕ<łŤ‹Ĺ őȸŔŁÇhČÇč1Zžlť±¬»&M ç„>Mç\ó”ˇĹdµNřbzˇÇZžlŚŁał =뚸w—,Yâ7ĘˇÔ ;‡äf'ę’íÍ^}Ö çâ'téCşť†€!`†€!P˛dńÝ~řa÷ŘcŹąµk×ú˙Śő5đŮ)u2qâDď»ă‰ęq™_ŚŁ!ŁÇhy˛itƲZěšb4ôĄ‡×SFŢP>Ď.2i-O.FŹŃÄVŚGÓ˛®‡ű–€7›\’ńŤ/Oŕ{Đ A>ë›ršřî”*Ô+Ä~VÚÓ|1šđá^ë C é`Ě mş eC  €§€Ň”Cş×¬Yă&Ožě?sćĚńKĚ(Qä_jâ”ŕ@ăđ†ľlF­vŚŔŁmÁ­1dCb[úşĚu‘/*^CąPF®·.s.bWŰŃsÉBcwx˛ ¨ą|ůr_'™L6ĘáAŹěoîѢ™#1›zžiÇu‘MÓgc†€!`†€!đöF€Őš» |Sç›něqÂ*·"~ *ÔőĆoďÓ§ŹŁd!ľŃŰÍwç.*‚—ÜmÚ-#[­\šÝĽů†¶D‡ôyňÂGŻu•‘"ź'K ›ZßÔřfĹ&eOXÁŔ*b|÷ţýű{żťŇ'Ôů˝b'«Ďł›%Çx]dczŤf†€!đöBŔŕÍäű懝¬X‚„3gÎt×]wťw<ŠÖ Äů K„@"µÔ dÓK–Q† [!µ3ˇŹCţđ:/ůńÝ)w"+6‹úîřOřîď{ßűÜńÇďŕ$˛„-濤ů`Z^ÓC=š†LŚŁĺɆô˘vC›č)* /-Ôˇĺ5MʧÉ1&‘Ëëłěiąú¶)şc¶Ę&¶cvˇ7¶měŐ÷wË}Ě}Ë!Y#Ô ¤v ÷)oJňđ€‡#Mćă1\0·f†€!`†@5ŕóPňdöěŮŽěsÂĆőE‚ßń‡řČ&ő”†+Óbţz‡z»Ř”ďˇ)®·íúün rSľ‡ČřîÜÇÜ×\;/hđ×y¶Ä‡§>}\%óŐ}}ÎOëµcCŔ0ęóľý¨[ôÂŻöťĂşąß}ůÔú6aúš)弮fzűâ´p”Őr1zňčbKř¤Ç™ŘÚ–>ukÇdŽlܸŃßËO=ő”ĎA7/hz%ŮŢăÇŹ÷ď6mÚržežy˝žGoŚŁĄé˛1CŔ0 CŔ0@`Æ îÁt·ß~»ßě2oŁK|"ü,˛Ľ‡î.ĽđBźŔ‚/¶Đ?_MřBşŚëřĘřvČkÝŐŘ ç çZ/cyş5=”ťY}–¬ŮPwČŇE.­Ď’Íytá“^ós¬ç¨Źá׼šĆ1ľ;%NXuů‚»ňÖ9fýđ]®Ő!ú¬ň6>°» ‰ľ|2dň“ź8‚†Ű¶móĺ#bSÁ‘ˇV ›[J­@‚á8¸âähç@ĆD§¦1ŁĂ =”]1ŮPw¨Ł¨l(ęĺ<äÉŇť5ŽZŚŁĄÉ2–5Żp™™NÔ \˝zµ_µ@ÝKß-Z´đK%ąO)uBŕ»m۶®ěŇ^±#}ÖĽŠĐódE‡ő†€!`†€!`Ä qeńâĹîĎţł[¶l™ßă$ËĎŔ÷!HýdVÂQň„’pCżJź‡ú4ŤąĹčBC†céł®)¦;FC_=ËfY­[®Iôic!]řŇú¸÷ĘÓ’ŕóŞmq`}¨4űoä/Š·ďyűŽňúëŻgÎ@× <ńÄÝŔ} 1K !ś†ĐŮ m7„Ml4•Ýćj»ˇqNĂ[Űä% u/7mÚäłF¸‡9f%ŮM|Ž;î8˙ÁćĹM¬iÝ1ľú¦5•ÝúľÓg†€!`Ťľ;%#ŘŻ‡ZÉĂłü ^ţwěŘŃ˝ńÝ٧‡zʱ–Ą+&ىO'}oCŮͲÇx}Ű[±km(›ŘŽŮ…Ţض±Çśčąo ~oŢĽŮ'­pď˛Ń%>=›®’¬ÂŞbüwVsďf]OC^8ĹZ–í¬ń.ŁÍ 俪›ľl‹[°j»{fÍ‹®mË®GÇVş.íłK!÷č náŞţłűµ7Ý€íÜŔŁŰąńŽL-÷±aűn7?±#팺¸W_˙›»óÉU‰ýî€w8×·Kwá¨î®CëÚ›BÖEVěŃďŘőş›şhŁ[°2)Ă”dhęŃŢ ď{¸Üł˝;ř ěU'EqÚőę›nů†—Ýš-»´Y_ď»eRĄo—Öî°tK¬_zĄ&wd»CÝđÖ‡×â礱1– ü-1ü§éküśWl|Ů1ďn‡ć& îâFôŰ{ž"g}1,^ §zăzůĺ—}˝µoĽ15{„ ůH­Ŕ‹.şČőJj)㤔ůˇPVÓc4.<¤k0Ňô¤Ť‰Ś¦ĄéÖô]ѧ{‘M“šđ‡ŁViˇ{T[÷ÇŻŚsGwl)C•ľ NsžßćŢőÍIY98óŹřĂIß:ĂÜ˙ĺ¦§Ł›`6ĆLpv2˙O]?˝27™?ýüaźűďţe¬ëÔ6žl¨ĺě¸6ŻŤGźÝ{ď˝îńÇ÷ÁÄ´z‘Á»řĂŢ!ˇ´„Ô` ť“P^Óc4.RÓµ\Hă#FŚđ™N8Ďrźb?«…ץůb4řŞĄçÉé9ر!`†€!`I“&ą)S¦řěď´•›$ŕ»úÓźö~S…@cš_”擟Ňd\ć˘é1üytx´>ÎĄĺÉjz¨CÓĐW†^­l(Ú éáśŕž >ZČS­¬ČŐh­­7F_ÓĂůŕ»/Z´ČŻ8^¸pˇ/UČËV&ŕ·Ź=ÚŻJhŐŞ•żOĹ~5}h;ÔQzžlhËÎ } ‚ş§\ń€Űöňk©Ó~íŤ7ÝŤ?ënq€űîeC+äĐfµçÖ˝ä&~ýwÇWĆşqŽĚbs—ü`ę^ÁowězÍ}ö3}°µg§V©ňeeďH˛Ě?ńß{‚ďˇŇĄIF6Aę;ŻçłŘ…^-N"_MßTo~ńU÷«sëUíňpţłžŰę.úî÷×$е_Ś„ĽvžŽ€ŔÓq©÷Q~ÄY†v×]wů€b="©ŘłgOd ť›Đ颣H“Ő4tĹěÂ+técöcş5-M—¦§Í+Ënžś¦‡v5­ŚMxód5˝>톶ËčfN<Ü‘ń˝aĂď@“=ÂʲIz'›[Ž;ÖߣԳ¤Ć%ziyĚŁH ç§eb4řňčZWx,˛Ň‡t;7 CŔ0 ·7lúýŔ¸©S§fnXřá‡{˙Őň+m@IDATšˇoú!˝ ş1YMCg̮Б ůŇćÓَ+ŹžfOĆňd5=ĽMC_Ha_DNxBť2.:CşŚgőZ>”Ő4ä5Ď•¬T`ź)‚Ţ”*¤Tĺ y¶$Ű›zßô˛G/ięŇôB=1ĽyôPźśW+'ňÖÍoý~~­ŕ÷Cş¸sGĺvě|Ýýřľ%ÚuYęţéťÇ8 D;ÉÖÁďs†ĺ>8¶—/ëq˙ěµî—=ë/ńŐ×ßtWüzŽ{ü;g%‡ÓŻz~R†äĽ“ŽrçŹčîv'ü×ţďR·l틞ůĺÝŻ»űf¬qź>çŘTá2˛;“ )˙ß­s+z(ŻÂśO=ţHwĎôÜÝÓV'ĄXŢô™á_Ľq–{đŞ ޲8t[÷‡ë™·Á]˙ŇŠž›??&)%r ë—dÇ給Âřç,«ż[z»ő‹Éj˛cŹpŻ$e]~p×"w}B§Í[±Í—ÍÓżcŢĄ= €§€ŇCÔa۲e‹ß@ŕbV#ČłM˝6i‚‹86|Ęü臎RhŻŚ®P6ëĽ)lĘ\š«í†Ŕ™kŽ]oµ6‘“:ßż)uB˝@–PR+`7Î3Ë&;wîěhÁ?쫝C¨§šó¦´]Í|MĆ0 CŔ0šř[·nő+ŕđ‰˛>>É썂ďÎęMü4>e|’o‡í2ş˛ćޱYö:B±ó,ű q­2Ź,›Bo ŰŐÚDŽ{ŹgLž/٨ßť›$§°/ʬÚěŰ·ŻŻő-×™ÖW;Ź4]eÇšŇvŮąż!P–ŻŮý§ ęěîLĘHÔň~ß÷§Ę©›˛pŁ/‡˛tíKî·SWTĆ/u´»ůó'WÎĎÚĹuJęYçŽ~laRďűO¬t—śŇłÂŁž˙& ˛J;Ą'7âË‘S·,É$Ďjedo|čąZeOnüĚÉnâ ť˝ęsGts];ć~tď>méf_Ă»OçÖ®ZśÎÚŐQł\7^0´N‚Ęy­)1~zůÖĘô¨K>v@'×âŔ|=÷żô÷LňrâŤ7“âďI[˝…˛5÷`”ü'˙.(©ĐŘÓ °ČĆ—yCźő#Źă/oĺÇŤçëâHÓpd´ś>ť9MKźŃžŃ<Ů2ô2v™čĺd\fŇc˛"“Őkݡ^MCľ,=Ë&ă1Ý1ZžlĚfYlsťĽ|áĹ YNdđĐŤLośg6Ę:t¨ŻqÎ7oiô[áÉ:}ÍŻŹë"«őر!`†€!`ěżŕQŽlZę'gůřöđQfbüřńŽŚpŽiřóȉ¬ôĐB_JÓ ÇZžlz»ĚIëe5 Ţ=¤Ák˘;MNhČçŃłxŇlk˝ˇ\Śo=ÍžŚĺÉ ]¬¦M›ć}wüwh”;!řM-z6bĄÜ‰Îűwo»×pűVWŕɫ۽č2PFöą$ă]ÚŠŤ;Ý—Ý!§•^˙M|n}ÍuV‹SEiM‰ńEŁ{¸{’r0ŇVl|Ůý,)Çďű¤cŽpďO˛ů?6±Ź;đ€Śş6"l}&Ď„¦~ Ôfců¬Úß·qXŽ8âźľrĺJ˙&ź›ťĚśę¶µk×ΗEavÚŃŇ4Ňf^†7”ײĐňliy-˱–ŐÇZF޵,cyüu•CľZ›Y˛Eőĺ“kÔ}5˛Ľ„áÁŽ—-¬:ŕe ŮMśsŹńŇĄWŻ^>ë»{÷î®eË–UgŽýŢô5ÉqŮ4Ţ´1Ńm˝!`†€!`Yŕ+=űěłľ\ٵřî”,dĂđuëÖy˙Šdü*‚á”E!HŽO˘}¶<Ą o8?- -Ď––ײËĽ‹čвu±[F6´YYąVŤGÖu‡vłř´.9®Fý¬JŔW§Ě %wđßY˝I†7÷á€*ľ;c˛Aě–éË\ŹÖ[V.Ť?mL۰cC`_F`ő–]µ¦ßőđĂjťgťlŘţJ…Ôę|yŚĘ€: Ć¶´ŤA)§'Ű»ÚVFvťÚÔ‘˙ŰRĆ#Ë6őČiŐ┥·ČxSb|á¨îîż>6Ü}ówóýF¤zľŕ6=)Ăç7“źw÷\9޵­Ă÷§użÝŽ-ŢHß8oŮYpç“N:É/WcĂAśnć|prpvxOP‡ćCń%Qp ř+Ź»Äj0ŃWYt„ň˘—ľă#ňExµnŽ«•9tÔĹ.ňşĺéŇv‘Ëă׺CYîAęzłK<vO?ý´/ÍĂ8nÖČZ˘äI·nÝ´ŞĚă2óŃJŞ‘«FFŰ”cŃ#˝Ś[o†€!`†ľ8µżŮÄ>« 6Ěo2ŽőĚ3Ďxź@8Yąč ‘€ľ»^ÍY­ďÎ\Bß®Ś/S­l(bRd˘ŁŻÖ/r2VF^Ë–‘[Z^ƤŹé ĺbĽ˘OúP–{‹ÄüwWćÍ›çWnň˘…}zx>ěŮł§3fŚ÷Ýą·ňZ™ůh]ŐČU#ŁmęăúÔĄőÚ±!ĐXtlsH-Së¶ľâút©ť^‹á­“^Gîáa“J6—$¶ő*ŕ¬eBľĆ:ď~DK·ć­ ?ĺ<>sÎŢŮíz.ťŰ×”«'­«ě±Ć«)0ľüĚľîŇq˝ÜsÖą?Ď\ă&'őßuPžëˇVřżß>? –+{yĆź °÷˙ĄAŔ&‹›>­ź0a‚ĎáíţŕÁÝĂ?ěë†üfGo˛ÂyłŹ“C°śemÚ‘FŻ8ˇă$ăđ”ˇiťÓ´|L/Ľš®eĂqhyM솲2.ň1zچ|ŚŁĺɦŃËj qMĚźűŹŚ‘3fř«V­ň›çtčĐÁg~S»rôčŃ>ν•ŐB,Ňřňxbô-ÍV8–%ź5ĘŰą!`†€!`Ľ˝Ŕg ‹›ŕcV;v¬O^ÁżÂGÇw'+wĹŠ>É€:>%ĺ। -4ńőÄ7‘s±%ăš7ŤV–®őÖUVć“ŐË5ĺŮD>‹'‡WôrL y„ž5^#•-—E—ń´^l -f;FC^Ó9&Ë{ٲeţł|ůr çŮń裏ö{Fń\HéÂďę•yę^ŰŐărŁÇh"ëcň1ZL§Ń ć@ě~6)ůˇÇ¨˝ýî˙ś\)@ňń‰}Ńc“Ýş=ľx“cĂGÝVnÚY+sšşŢMÝ›[Ҷď|Ý×µ.2'Ť üEq*˘;‹§©0~%©Ůţôs{6ÁÓżŁ##śöĚšÝÝIi”ďßµ(ÉžŻ‰%>2o}Ö%ŘxϨľČüpłKwěljÎ Îň9çśăf˛HČŇ%[—Íd—ŔÄ١, oüĂúnˇí”Ĺh\oŚŁĹdËĘĹp×׳©uýĆ”›2m;¤ OV“Ő4äCÝĐÉá̢E‹Üüůó}ś-d|SzgÄ~é$fd(…:e^ˇn—ľ.ôřîmÚ´qgťu–#+śŔ÷Ě™3ÁJ˛t§L™âăÂńŰéC+ôS´/Ł1Ź,z8.s¦—ňÝp~ˇeÉĘx؇rĐCý!ŹĐłĆµ Í#rĐő8çšV–Ę"kÚv(«ičHŁ“ńýŇK/ůg?2ľIÚµk—żo¨ńMąÂáÇ»Nť:ůR'YÁďPw8çşĐódC[áyž|=Ôgç†Ŕľ€Ŕ°>‡űżMr_}÷bÇĆ—Ôţ¦ÝţŘJ§7ŽěudÍ&NčâZÚ‘™Lűö︑Çttí[Ő”2ˇ´Č×n››üfí©Ý}ţI5AT/ĐD˙śĐł}Ĺň˘v¸{¦Żvďąg^šľĆ}éWł*:ˇŻűńĺĂýwT[ż)čŚg·¸‡’ĚpZ‹ňWůxFűg/ňď‚˝Dl ZäŹ\žä}eĺĐS­¬ČÉ\b¶CŢ"2ÂöZ6Y‚ËËîęS’EBŕ›—,lŇD©ĆXB™V+06ďĐvÚůľ.źvM6f†€!`ű?e|Ôú¦Ç§˘§.3+ďđŐŮlś$[ŠSnŽŐśÂĄeŮÓľĽY|˘GúP®!eÓlÉ<ĘŘŃWôZCąşŘ]y:dŽš?O&äĺ<ÔďÎ}Â}C9Lî!žITᙏ(žűŘ„•{-­•Ĺ-ÔQůşČ2ŹşĘ‡×bç†@sB€€&ŕ»§˝ŕ§Evôř+v§îěf,ŰâžX˛©2ÝÁIđxbř¦uj{űl˛9ćwîXŕĎç®ŘćĆ~őAwΰnîĐtdĎ_ąÝÓřç컹±:UΛę€`îŤ?ç3™ůżý÷?ťć~—ůGŰŃ=–d±OšżŢ˝ţFMfsçö‡ykµ8!Ű2( sĺ­sÝŕ^íÝNíé¤Ä |ak*Ś Îó˘€ď”vŰ”®U2F&řÁI°{öňmnŇĽ •éžÔďʱ”CŔŕĺđŞ3w™tę·ôfGoh–¶á$ŻYłĆ—Ca)&+’e–-Z´đŽM$śnś)±'}‘ '¬ŚŚčY9/Ş#”C>&«ů9ÖĽúXć‘Ők=y6CŤ!›f#m,śŮÝd,‘ůMéśYłfąőë×űL^¬ôîÝŰgްЀş”Ej†6äĽ Ţ"#}šlÚđ‡}Ţ,ŮşčuÚą!`†€!`ě_ŕ'őđ§đĹ J’h@€_ߍ@&>;{űÜÄW'Éćăřî$±Ŕ'¶¤/‚¦ö Ëȡ[Ër^FľŚ¬ćņ>/c·Z9l4–lhŰşĄaĚţűîÝ»ý=B)Vý’ůÍł ÁnJžśzę©ŢwOKZŃ6bÇiöcüš–&›6¦eÂă˛ü"_­śČ[_ ´ű7 Ď‹iŢ·¸äĄŹÍľŹ–˙Ú%|đwó‹»ýđĽ$đÉG7jg˙âSŁ’ż[{F?wîqî±EÝÔäC[•”<ąţe{Ţ:ęŰĄŤűîß ÝkĽ)iq€»ţźFąsľůW÷Ęko¸W“M.©oÍG·ö­v7~f´k×rĎćśŐâtú ÎîŔä÷řÍ·Ę˙ቕŽĎ©I ňXśů4Ć×~ň$wĆ×ńřĽöĆ›î§˙űŚ˙hŚ8îÔîP.ÖŞCŔŕŐáÖ¨R8Ól|I¦Hź>}Ľ#DɤI“|FŮ˝7)eY˝8I4ţă,č?ʡó iČ=kZ]óN/"ËxO8.:˛úŘĽb4ôizhWÓŕ­ ˝¬,ö˛ZÚĽp–ÉyňÉ'}ö7K&y°ęÚµ«;ăŚ3|ťoĚňZ8OÍŁÁWWş¶×EwžlhËÎ CŔ0 CŔ(Š~”l,Ţ;I:ŔGź>}ş{ě±ÇĽĎN ü÷ż˙˝÷Ů{%{ű°˙ ľ;>żřuôâłH/s9×ô ţ2t­·Śl('óŚőYóĘ]šÚŐ4á×MvçÎťŢwźúŃŹúŇBň}IŹ^¬¶ CËš!`†€!`Ľ=Ŕ‡"€Mé¸,äŢ{ďőÉ1DĺCf/>ęă»ăĎă§üĆGë•ĂÉň%ń…–e7k<&ăFtˇgŮÍĎŇ™Ç/rôExłx˛Ć‹čĎ“ŤŃCZx.ö'ĐŤďN™K^ŚÄ‚ďÎ}ĐŻ_?źńMąV3žŐb6˛dĎ’™üí–ž=|ř?ĘócÖsvÚeŻßľŰQ{ůú—]ŻÎ­Ü°Ţ‡;¸yíµ¤lČҵ/yŮÝÉ&ŠŽnçúwo۬ßi×°q×ű˘[ąée×»sk70™÷mIc­5V NÔÖŢňŇ«nŰËÉoí¸Ł;µô}-Ĺ‘“¦Â{aE’Ý˙ÂćťI&ű;\÷#ZůŤR{tl™­‘Š ý+ZDÚxţ ň‡•O·nÝü^sľ „ó#„cMÉ ~”¨!NÖo—.ÉĆ *«D&žçx`O·<~Í[­l5rˇ ó`®ŚW;ç2rŘÓs¨‹¬Ěť>lÚ†¦QW’ďť%µ,±•‡5JçP'8Wd‘d-™,;g±_­śČÓW«ŁZ9mł.:ô5ر!`†€!`!řn|(Ť‚?NŹOŽďÎ*N6:ÄŹcoü8\Hš_RŠř,ˇŻXDFĎYäËȉŚÖ“Oă/*«ůäXôĹl oŘW++r˘/f;äE†:ßěëÄţ<řîľyvc…&ľ{ŻäeÉ+ÜŮB1{2§X_ů¦’ĺzęb;†‡ŃâčűOŽĄäŞśÇ5ě{T®Kâ'Ň3Vß×ŰĄýˇŽĎ„¤x™FmčA=ÚůOą¦ć%«˝&łýČRS©'‚Ç{ě•2ç™› ă>]Zű€wů›DĎC¨ÓyI0“Ŕ¦d§â4SúB6Lˇd %Qŕź7•üXé&Ä«q(DVôŐQ­vŠĘ źô"«ç¨Źĺ˛z­ž¦–ĄĆ7oćyż|ůr˙EOĆo§©(™#d‘đŔ~÷Yך6^ćzµ|š\Ú–‘ă˘|Âöu•őŮą!`†€!`Ő"€/†O.{üŕ—ł·›ĺL`2. ~ăËáÓ‰˙†/ŠoŁ}ҲľŽ–ĺ:ĘČW+ĘĺŮŐüë9ęăĽďAëÉłęjYćNf-™´|ç<łÍ1ĂűîňR„U§śrŠO`"Î}Pm+Uh#M6m¬\Č“w^ÄNžŁ×á˙đ+ú%]ýXmZ¸V}˝r,ýţzÝÍ}›…!Đ0T˙‹Ú0ó1­%ŕŹ/Nj÷J2ŘX‡lj âDoذÁ=ýôÓľîŕĉýƇĚÓšü1Zšóˇybô-MLݦ!ęÖô&¶˛z-ęŽŃŕŤŃc´<Ů^“čfąŽó”)SÜ’%K|ÖAqVL0ÁgŚüń•e´čŐ-Ô«irśĹ“5.rôEx4ż>Γ­–ž'§ç`dž€!`†€!`Ô7M‚㣑á»mŰ6ÇŢ>řî¬ŕ#™aER ŔčđáĂ}ICVtf5ń …ú:ečZ6O{ÂŁĺdB“óGčá¸đgő"'t-ŁÁŁÇhy˛!]ĎIÓ|ól†ďN˛Ů˙¬ŢĹwç~Ş«î,ů¬ń˝g`# ‰÷cÚ‡żgY÷jCΧ1t§]o8Öó0†€!PXĽţ°lrM8Ó=zôp”˝ŔQ¦ 4Ë)q¦qş~S‹Ą—’Q’6ůđÇ,t@4=FCwHOł'cZošlŚىţXŻĺĂ9kZŢĽBŮMhZw(Ňp”yÉA†Ů#k×®őę»wďîżwjH’ů-µĘňl‡ôĐţ˙gďM óşŽ;Ďâ €űľ€›D‘â"Qűf-–dÇÎÄŽ{2±}ć¤í“¤“™t&“ô2™śd&Ý鎓LNŽăžNN¦gÚ±ăŘNśNb[VdmÔJ‰’Hq)’")îHp€ŕÔď~,đňé-ß TOzĽ÷ÝşU÷ľ˙{řľ˙«Ż^ÝXž'Ł_‘<¶•¬éÖ*OŽçÇŽ€#ŕ8Ž€#ŕ &¤¶°µ{HYČšApĽ-[¶„T(p>"Ă—/_¸{SSSx›3oÎ1o¤_’?Ĺň;?Ă#‰A|ž†KÜćuGŔZ¸|h]Ź~™ Ěä'¤ ýĘ+Ż„a^µă•JHŘŠ+‚Ó”Č"J ÜyÜi2#HI™µŰ É­_ZY¤Ë«7¶Á°ޱ˝¸NźX'Ofö(ËŮb»ôÇÁMŻĹ’âfíÚµ@ÓŮX°`AXĺ8F䓬tKÎ?©ź'Ď“%í¤çéçɰU$OĎÚL×Jk÷ŇpGŔpk‰ÜĎśˇ¬ßCîN°)3Ţ|óÍŔăçÍ›d·ÜrKw7‡LÖ|“Ľ2ć=±,n7[±ś¶´>Ö7.‹ôbyŇf,+g̸?őŘ^\ÇVÜ7OVθô±-¶Kť5zř!·p_ýőŔÝyžN°ĘťwŢXŕń´%míĽ2yÉľYň¬ö¤~ŢqžŤ<6‹äYăV«—eĎŰóŕž´űŇę”|ć°[—ľô%Y˝zuČqOž{~ü‰wţ&¸~”VçŘöü™Ô&µĎH›orîsěR’–Ďadq˙¸nłÂ®oŽ€#p} ŕđëă:U5K>Ľ‰.`ˇRŁěر#ĽN ‰&áąçž i2 Ú˙řÇ…’hđxK~ '‰‡ÉłÚÍVžyňje6~–~V»éQő©UŹĺuGŔpGŔp®đ8Râ ť6mZŕ~{4ťá«Żľ¸;~ăĆŤa}¸;éS€°-ć´Ąń!ë“”Y»ŮJĘi·>y˛4}ÓC–ÔŤeŐČ“öl|Ę<Űy˛"ݤ<žuňşŻYł&ü€AĘB¸;Ţ8Őn»í¶ŔÝy>3göl‹mY[\Ö"ĎÓÍ“Ůřy}ňdč´Üćče˙"Ŕ߉íXĆżŔ±9ŤÍ!LŠŐyúA[ěüÄ>”<ĎRÇ1n;Îń¤3Ľg^˛fółů2v~t˛ť7l*łťČovţ>Ń3]J6ôŮ +CŁ˙ă8Cw€éËSűäř@ćĂ›pľXl‡}ýúő˛uëÖđj%e{{{“;ś~ôG·Ü-Ů7Irňäy˛˘ń‹tË•Ó/ž3őd[r.±íX—~±Śăů‡lU»ý2‹"Mn:Ú!jüâÉ‚Šöë'ú¶™=;ŽËä—e,«Ą>c¦Ť=Pç Fň´“Ű›W&‰Ô'í !"ú/^˘żÉÉ5bČ9… ţĚńsěX\ě8Ž€#ŕ8Ž@ĹŔ?áîđ<˘qĚŔÝÍqc©Qp¸ŇG„»ĂőÉN[ŹŤ'3*kě3ëś“ůô÷ŘŘcçÚś8q"Ľµ‰ç7|žg+¶„»ŐOŕ ×ʶţžŹŮ-§¬±kÜr0ń>Wŕď%ů7Ěgmř,0ËĹ|ćÄ;×™çZJłEÉ3-:´Óßú12őţŘ’ó66%cÇóäoG8mVR§ťţ¦۰óa®ńXq˝?ÎĂm8Ž@˙#ŕđţÇtHZ´/>Љ!?8D Ç7Żč±"9QĆęwß}7ĽšGJ˘ĹyEĎľđĘ=ąä€Ťoú±ś‰HŔ>O_ŻÄŽÓ‡8‹f>őÔSAĆkz÷ßpľ=ΗFÖ†Íx‹żÄbYÜN˙XĆqžřŕa˝žxËäÜłŽ“ó´~Yí&§,§OÜßęĺčő)’ŰXie‘n­ň´1˝­<âż!48fŹż8‹mK:±éËç‹9żé‹ăŰśßô78×Ů®µý­™ÝZK;+™żťóă’ů±SljďćŹű®é›}+kť·ë;ŽŔŔ"pĺÓk`Çqë×öÄúäÉ“›×+YTçąçž ůÁ‰Z~úé§…|w,ĚxăŤ7g9(öÁŹ«sÚf× eÖ÷‰ĺq;}cÇyňÖ=6lŇFi»µ‡ţŹ#ŕ 9Ü>ä.ÉĐâ|đá ‘fĺy˘H Ň”AV<çŐ?^»$Ď äŹ×1ŃŤIÇńËâö´ú`é2—xěJćëb_ŔÁŤ X¤…F!Ô8ľ‰Âá•I~HŕGđă‹´h«t>±˝Zt±S‹ţ`éÖ:ď?Ż;Ž€#ŕ8Ž€#0€w˛h=QÉ8háđ¤Ú»xÁZ3,š w'_5o}ÚÚ>čO‹90çiíĺśó`é2·xěJćëbG|ÜŘ ^3~47ßp÷©S§†|ěÎÝÓďŚJŻAŇJ­úI{~\ü öÔŮÍYŚdvLťHé¸2ü8żÍé;ŔŃa7'8őÜO<żř|řŰMî8ľÓśßöwnç‡6łmőĐč˙8ŽŔDŔŕCň˛ ťIńĺ9&*™ôäŞćK 2HDÉ‘#GB.<ľŕ ŮÓ¦M Nsű˘)÷Lě $î_ΗaRŻc uů˘'ź:Ń"¤’!zäÔ©S đĘ$ô¤=á•T0ŽçSÉyŘůXY­nµz6.e­6jŃŻF×t¬ŚĎĹ뎀#ŕ8Ž€#ŕ\OŔ%Ů Ş€»ăô&ę›6R€±yóćŔGÉUMoqâŘíînXĺńŞďŇ?ŻŻŮłr uáî<ÓŔÝ-Ý ?ĂŐůaaŢĽy!]!›CĚćWÉąe5zŐčÄcZ˝?ěTkŁ=Ó±ŇÎĂËţE€ż50¶ż9JvsţĆŁĹ}łăÜćď’ťż-ěŮ1Ąmv-­´öjK›Źé۱͟’ąYiuüÔ)mŹŹíÜ)Ůůć8×îżľ®× Ě–/1ŰV]ŐśŐÍ_{íµ@ qoذ!DC!Ň=ôPlć‹-ţ2Ă{ĽĹň¸=­^¤Ë“vc¶+‘W˘kvÉď˝iÓ&ٸqcŔ‡/z^OÇźř‰źE‹…ďřyň<™Ů/*łldµ›˝"9ý˛údµ—k»Hßěxé8Ž€#ŕ8ŽŔ‡x+Üť79qÔ’Ňpýúő!pĺÍ7ß 8x_}őŐîG%zś-ćOŘ*âÁy¸éĆňx\lĆ2Ž+‘W˘kvɡNĎ /ĽŇ’î'W«>˙|ć3ź Îođ´Íôě8­,ę“'Ď“ĄŤ•lËÓĎ“a'O^­¬Č®Í?Ďľőńrŕ°ż!sh›ă—‘í9źşőŁNţfpxӇҜŢ\Wę”VGçZmć°fľÔ)™ŻÍ™¶¸;ÁiçŘúS˛ŮqŚÁµ:Çp*GŔŕ•cö‘Öŕ‹W%~řaY±bEHíA~đÝ»w‡apúRGF”Î^#Óg„&ţ’ëqźr€ŽuͶéŲ4»ĺĘ“v±•ĄË—Dyóp㛕âI3věŘ-Â+“DÜŤĂ—hšm›ż•E}ňäy2łźWéçÉódŚY‹ĽÝĽóu™#ŕ8Ž€#ŕ8Ś+á Áą}ď˝÷†üŐ¶¶á¤4|饗BŠ>ŇÂŰÉž\ŰÇđ0ţkĄµŰXvśWĆşI˝X†ŤZäĺęńmÜ}Ë–-»ĂßÁ`ńâĹ!Ý yÓI[wO›WhŚţIމB5Ož'KÚI;.ŇĎ“çÉ«y-şiçém‡€ýÚ5ăŘľ6*2ű{@n}pxÓźAěř¶pôhg3űVšíţ.í|ěl®VŇn;óŽáś#ýě\­ĄŮµůrśl3™—Ž€#04přи×Í,řPçKÁrUC!ޤô W„‘’Í5d§ąĺCf_ti_ÖFiýbęi›é™,Öµ¶Ľ2ÖŻT—ţ8˙-G:+ÄůĂř!˝rĺJ™>}zx±/Ѭq˛Úóćo˛rułúeµ›ýĽ˛]ěÖ˘_®nąýňÎÓeŽ€#ŕ8Ž€#ŕ\/Ŕ݉'(eîÜąÁÎş4puh'Ą!iűŽ?.íííÁŽĂ×Öö±ó„CĹ|ŮÚă¶´>YÜ+ÖĂVV?'YĆú•ęŇźořşĄ;áüi‡ŻóVk«F~ó†+Ď9ĆÝ“s°ăJÇ7=ĘJtÓú¦µĹöóęµčV:÷ä<*»ŇţÉńü¸2âż/ÓÄńk[ĺmaJ>o’ÎoűűAÇ6»ž”V7Y•śťG\·ůŇFÝŽ™;;í̙Ҏ)­/ó3]JßGŕú@ŔŕCč:e}řĹUćÄk•iśŰD4łČή]»B$8dšW!–|’ą9čŘ`ĄĐçáPΗfRżć§Ç—8?°0NovÎť¨o Đ­Jž‰aŃâŘ+wě,ŚŞŃŻF'müZě †n-c¦ťż·9Ž€#ŕ8Ž€#pŚ$ĎHňơ‚óÂC4řm·Ý4öîÝx:Îpśŕě8á·¬SĂÚ>8ÎÍTíą¤a’Ä-ÍvRŻł“Ą‹ ÎŹüč<»€éaČóÍł üťŔe‘Ë–––ŕôŞdl›C\VŞ_i˙x¬´z-öŞŐ­FŻť´óő¶ÚHţý`ŤĎţvp'7»n”ôˇÄ@Éç‡ó,LÝ6‹·ă*ă9[ťsdç8.c‡7ívL?Óµ:r6J«Ô9¸]GŔ¨w€×Žá€[ż$ŇĚ[Ćć‹lٲeÁÉŤăwíÚµňĆoç7a%QŕDśÜsĎ=Ál_vnöĄaÇvžÉsKĘ­_ZY¤kň4›&3»qźXĆC «WŻyľÉśëcŹ=˘Fxx Ť ;±-ło˛ř8­žĄk}‹äÖ/YéĺÉód6N^źjeŘÎÓµ±‹Ęţ°Q4†ËGŔpGŕŁ@Żyä`!‚CŠ7 Ô ĺ ÜťŰYđ‘ťČp7~ľ˙ţűCÝRĆ矏Ź9źäů%ĺyç\¤Ë“vccdÉIWwňÉ'üüůóaέ°ňŔO:¸»ŮLÚŠĎ!O–6ŹX·y˛|\íŘŐę•;vŘŹÇJÖ‹ě'űűq˙ ŔßCěçďź@0>Opd#çÚŘçuvs„3‹¸nłčëiÇŚG=kgŢȬ¤Îů˛™śşÉ©űć8×îżľ®Węlóľ4řŕľă@ŚŮ|đAąńĆC*[hÇ"Ł)ď»ďľ°Qă¤Pał/HěÄsNž[,3˝` Ś˛t“íivă>ÝÝÝ!gâşuëdëÖ­!R†Hw"ây]’MÄä™/ĚäyÄÓÍ“ĄÍ%Ö-GžěÔŘEvË™wžŤ±żwśŮläĹ12vúĹÎn»żL׎űgv•[±ó1M;f~iuÚl·s°~Ř0™ŮóŇp†6îBׇ/„¬/…řvMůS±ůC¤É#ÍŻĂD\@>q†C>!š,¸Ă—‰9ËíWärżLb\lěLJâ~Čé·ĺé"#µ |É!†ČoČ3 D‹Ěź??DĎT’+0oĚ´sŰŇtÓÚb«—ŰĎú'ËZôB×lZ™śŻÉ­ź—Ž€#ŕ8Ž€#ŕ”Ü"‹_Ä<ł[ŐÇć§ĺmFx-Üť’6R˘ÎĐśáD}ň¦'.–śąsľĺśsÜÇĆÎ:wëkýěţÖ–ĄkÎoůśĂćÍ›ĂóÎą±cdžs¸ăŽ;Bžsř»9·ňěćɲćaíişimÖ?.ËíëÄőZôű[·{•ôŤĎ×ëý‹@ňďÎţVř[BĆε˛ă8Śv»ŽV2»¸nłMk3Y5e<ď¸n¶¬ŤŇęȬnívľÖžěcöĽtˇŹ€;Ŕ‡ţ5 3,úB?+9Ą"»f«Rűf—/@H2QѬ˛Nnp^­$š„čiň ’{Č "¨y ŃĆÂ;ÇÖf%ó˛1˛ć”[ż´2¶‹<Ö%W Žűçź>8ŔYđ’/BΉE„X$´'<4`ÝX?9^–,«Ýô‹äÖ/­,Ň-’c3ŻOµ2›kž~ŃŘf#­,ÇnQź4»Ţć8Ž€#ŕ8Ž@Eü"É=ól%eE¶­Ąc`ŻoŐ·YÄîÎN5ŽdʬíCJ”;ďĽ3pwsxˇo6¶â9$çË蟔ӖµĺéâüĆi˙ěłĎ†’78ŮxC•ť”.¤|ÁoέĽ±łdYíńśËé÷ŹëEşµČkŃe޵ęÇ癬¤íäX~\ü˝q]ěďŽzü·cÇ”ě¶%Ź­}(”v.Ě%Y·sK“ŮÜckóŇp†6îB×'ţ˛¨tZĺčÖň!]d?Ď6şĽ&ÉbŹ<ň,_ľ\Čź˝oßľŕPćµJň ľüňËÁˇĚb;D„[48ú쌏×Á+9Ç"yĆD|37´˝ú‰“›W%W®\)«V­ çDtL<×4»ÉąĹ}ňdô+’Ƕ’ő"ÝjĺEzĺĚ»ČF‘‘ś8µÇŹrc¬Bŕ i ‰¤†·ďÚµK6lظű]wÝŢú¬ŻŻӉǍÇëtŚűq\$§OÖ†.éNŕíĚŹu3ťhv¸űŠ+„ŚĽˇJş“äx±íäÜĘ•Ń/O7¶“V/Ň­E^‹n9çUd?í|­­H·HnvĽ8ňţ^b™]++ăŃ–Ö÷č:sŤç×;ď8)čąş}GŔč_ÜŢżx5˘:¶ü|Cń·ś/24ŻBŞgÎśľ\:::B$ K!ŽS|Ďž=!/_sssčĎůö÷9gŮă<ŔűěŮł!Ő óá•ĎöööĎ'>;Q/ä?$rĢ^äâç-óőŞE1.crÍcěŞrEGŔpGŔřH"×%‚Ŕ °q4áP$ŹW˙ćůŤcŢ~„ĂŹáđ¤4$Ĺ!NgŢıLÎ7‹kWsţy¶8đŽą;é YôҜ߯0wň~ó|aŽújćR‹N޵Ř-Gw°Ć¬qËÁÄűTŹ@ü7I=ľÎv÷©~¤k«™śsňřÚÎĆGsţFŔŕýŤhŤöâ/3e‘Ȥ !ß^µD:ͶŤAy->ŕh^©„8‰ńÜsĎ…#8š_ýő@Şyő’óµ×ÍÉĚ9Ř<­´sH'Ď×äÉvôickvRł¬]»68ÁqÎC”‰~ąçž{«ž8đÓěŘ\Ěf|ś¬çéçÉ’vŇŽóôódŘ*’§ŤgmEşŐČMÇJ+YÖ*OÚócGŔpGŔpŠHă¬qłqăĆŕt…»b\¶Č^,OłË©żM¶÷ç1ofr¤!µá+ŻĽśŢDiMZDČ© ·µ}p„s6G+mnÉăäůĆň¤ ´áx‡»ł>Ď,ÖÉ1Ţp÷ĄK—†9Ľbó±ń“eÚĺö)G7i+>ÎÓĎ“aŁHŹ“¬éV#/ұ9ő+’›/řo•Ů$ŹăöuÍ›[Yň¬öZíš>eÖYí¦[$çzŃÇJÓËł’>EăǶĽî8Ž€#ŕ8Ž@–Ç0ŽcK_°`AH hĽ5¶‘䦱¬¨^Äc޵Ű5îÎÜ9¸;Ńßożý¶ŔÝáÎ,oůÁY‡`žWbÇżń9ć”ĆëâąĆăARFÔ7Üť śß¤=aŃzĂ›çŇ.ÂÝIĹ6ža›ËÚ­Ě“W++˛ťg·Hů@ëçŮO^+›Ż•yşĺĚ˝HßĆńrh"ßCs†>+GŔř°"ŕđ!teů2ŹżĐíË6'ŽpłĽzóÚăüÓv*± k‹Kł·•S/˛‹ŤJlcŹţśËĽy󂣢 ™†@Áśü}­ęřçÁaٲeŘĎfŘP‡”ÇăÇóŤŰMŹňüůóa,ËcČŹ j"ľ âĚĘđĽ:i)hĐKnńXIÇyňźÍ! Ë|¤ 9BFÔŤ’‘őš›ľ~´ŚÝ ĂG–.­«Á8ďZć뺎€#ŕ8MÜ>„Ż»‘ +mŞF"&XéśŇg%ńk†Ö?Y&í%ĺ•’ŇXżZŰ豳0ŤĺÄń˝zőęđj#ůÁqPoÚ´IXi’Kt6ŽsΙ9óĄÍßĘxNôÁ‘ÎB9ç—_~98Á!ŇŕH®@HóÇ>ö±őm6âs´zl×Úâ2Ož'‹mdŐ‹ôóäy˛¬ńâö<ý<6˛äYíń¸yúE˛räɱüŘpGŔpJ0>ce¬ g‡˛°}’»çńMl¤Ů‹méÇ}“őZmăhľĺ–[‡&˙7ÜÇ4Üýµ×^“íŰ·Ç4ëúR§x’»3'Î!>›Üç·qwÖč9zôhxyK“¨ďO|âÁŃž÷,d6“ŘqžŹäŘČŇÚbťd=«V»éÉ­ź—Ž€#ŕ8Ž@9¸Ľ”†XČ!„2)$˘g1Îŕ82:&‘•śB9dc l››p†‰M^?Ңŕü†đ˛h&çůÖ[oÉC=$­éAÔ6ĚÝćĎiłąb2Žă›ä ;KÁ—·ß~{°E¤ąéĹŘ™í¸-Y/ę“'ŻVĆjŃ-Ňϓ獛§‡Ě¶ë4{imčfµ›ÝräE}Ě–—Ž€#ŕ8Ž€#ŕT‹Üݸ*‘ŇD2Ă7áďđ^s Wcż.s­JĆ(˛ żfă<ČN |ű˝÷Ţ“'ź|2<٬[·.đnŇ–ŔÝIOÂ:;†úŚĂicŁŽícÇŽ…`śé¤Z! ś>ä!‡»“oĽUźßt蟢s¨V^¤ÇŠúäÉcYw‡ţxŇvD.ś9!#†]ŇúÉ2qá Ň4aŠŚin‘QŤMúölť ăŮGŁľůOAä_ąTšH 6/őöçwçąÓrNŞÚO–ă‡÷É©÷Ţ—K#ꤡi˘Ś7YFŞS=mKŢKń<­Z[ia6Ö-µĚҵÎErëçĄ#ŕ8Ž€##ŕđŤë¤é0’ 1dÇNd3‘ĚDHÄŽđ¬ÓJ’—¬~iíEÄŁZŰf—¤B! ŻN’G|‚8‰~lj}ňäɰČ$UŢ!Ó666Ŕ…ť×0Ń€CĘÉnDŁ@ÖŮYž(ČłŮĎÝć·Y=OFź"ąŮI+‹tk•§ŤimµŘ.ҵ1(Óú¦µ™Nž,Ëžézé8Ž€#ŕ8ŽŔµD^ ż„żĂ?Ůŕ§8ÂI‘Bj¸;qöĽ-ŤŁćő7YwŞŐ.ö±Ł^ÎŰ©DgĂ˝q†“ś”pxśäą9n‹Ü3Ol€  kmذ!üX@°í8Ľáű«V­ Üť+8żÓćźwÎy2›‹aWiY«mÓç|/ś>.gŽî—a»dúŚŮ2eÉŇ2E×&jâG“‘2ś7a‡—ކ­džŁEĆ´Ś— Ó.ĘĚ‹7ŞCü‚:ĂOJۡýrx˙.9ľgŁ ÓNŤfČ(Ť DZn›ÍĎŽ­ĚjGž'+Gncxé8Ž€#ŕT‹€;Ŕ«Enô EäŔ†…DÓ×"¨C’ŚHC°ŮÉŁÍnýL˙z( -8§-÷9Q3arxCxÉ5HÎÂŤăśs†DóŁ}qóJ&„ÚČąĺ $Ż8ç×złsĽ–ăĆśăr­sük‰łŹĺ8Ž€#ŕ8~Ęĺ5đRxqrôŕîě8Ááí´±[´xšSw(#jXŔĂŮqL„bĎ#,6'ç L"ąář­—ß䄇ŰČč wÇyNp¸9Ž|ҤI!xĂóZábç8ăqOś?qHÎŰ/ šĘdńŇe2eöi?QFh”7Žo˝™jž÷×°ŕD×çĹz}aL“Śź<]ć,^ˇQáú¬µg‡ěŰ˝]ÎÝ+Ť“fI}Ó„%Ţ5éGŔp® Ü~]\¦«'“gmgJÚp“cbID‰EF ·­ŔĹ}M§Ü˛?măÄf.ś ůÁÉó‡üő×_áďż˙ľěŃüŕD‡ßyçť!G8+ÓÓ h_łfMxm’6˘N.\(<đ@ Ňň¬-ď<ňdŘ+’gŤYŽn‘í"ůµŰćceÖřµČ‹tłĆôvGŔpGŔpµpNř śťcJx;»ĺ§ΖŇ#ÉÇ‹řN˛ąçUd;ĺÚ¶çśŕäýĆi}üřqy饗/'8.O:B¸=‘â”8´q~łć~đŔݱAp oz˛FNp°É۲Î%«ÝlÉ­_ZY¤[®üü©cröđÓ0Z–ßqŻLk˝AFkŞÇşXeţ==äJ?˘ěyĽĐyAx>”(ÄsEcu3FCŔöGÔiîpÝGé¦Ě97­»¶ÉűŰ7K۱ŇyňjeĺŚ[Ô‡ëÉřVŇß¶Ľyő©E·Č¶É˝tGŔpG ?€±ăÔ…»é —·w§ťt}öö#,yÁÉyq#ĆŻv«Ô¶ťçŔNjÖŰ!—7éMH‰ňüóχőw8†§“ó^Ďâ™8şďż˙ţŕ@'ĺ‰EƧÍ?knYí±ŤĽ>y2lô—Ľ§«SNľ˙®Śčé%+ďY‹–Şă{lřŽç×I'łsç.Ů k%˝»ý]ýá`żÓő’Îś9«oĽ^ž‹Ýšď›· $<˙Ť¨)cŐ ÎłÔ´iSôyhˇÜ´ä&YzóámŘř>6l¸ÔŤnńş75Ź—™ ËűŰ6Ę{ďjöSz=§Ě‘áuŮézňp©Vfçž§o}ĽtGŔp’¸<‰Č óežö…žÖ–ś¦˝2©µ¨ úŘ1ݞ€$ÄĆ~ýG§Śý˘ąUk?Ď®Éx0X´hQ qD•c…1Oś8"Č51$ĺ ‹d>üđĂÁ)éăÁ#ą™Ýd;Çy˛räi6­­VŰEú6NZY¤[«ÜĆ4;VŇ×­_\ćÉód±Ť¬z­úYv˝ÝpGŔp>:Ŕ'Ň8EZ[x8ýbŢN`Žp6Ňţ±Ö \ç1‘»đřjąµŤ_4·ZěgٶvŘĽ…9uęTY±b…¬]»6pwҤěÚµKľ÷˝ď…p¸;\ť3ďşë.™vż,şaŃU÷‹aŽÓÔ(ŤMădęśů˛sÓ›rh÷&3mľŚnžĐ7ÍĽóΓőȩԪźcÚEŽ€#ŕ8Üţ!ąĐUH3ä€=®sŠiňcSŇŇmŃŕÔł¶ZHp–ÍţjgnD†đÚ$e^%j„¨÷=š…‡śß,˘i9Óśßý5§¤ťÁ"k1.crMclp¬q“×ÜŹGŔpGŔ(BŔ8¶qvř¸9Ă‘Áى··<‘Ăaq‚Ç‘şiăí4Ů`·ńü#~o‡ł“…ŔRźŔÝ9WŇ肳śŕťkµ]K>‰ĂúÄŢm2ěÂYő±GeĆüĹš‹;}AĎ˝{÷Ę÷˙ńňôSOËŽ;BšGî‘^Ý/u_PŚÓ»Gaę•ăĎŹ+ę×P/źżk¶Ě›=^şôMÚŽ®‹rú\Źlß}J^ŘzXNé5hk;-{÷ŐŤ˙_ţß©r§ľaűéźü”Ü{ß˝á:öő r‘O,5%Ę»ÖJ÷ůvŤź{Ő"™ÖżśňZâ]Î|ĽŹ#ŕ8ŽŔ‡w€®-d—ݢG(!Ňě´[ť( rcŹ7N‚óx `(‡ÔTKұŤS}ŕDŕä&ß÷¶mŰBjśâDŤ´jş”ŋŸkŃüňäy˛xڬzž~ž {Eň¬1ËŃ-˛]$¨±k·śóΛ·ËGŔpGŔčoŕ°ěIîŽc“ ü‡ĽŘđwśĆD‚äÂíĺđ-ćU͆măî8óI‡ÂÚ>¤=yńĹC*CžQ8żVĺî,VĎ9Ç[Ńüňäy˛xڬzž~ž {I9)ONĽ·Y&O/7?ú)i™8U†ëŹÉíý÷÷É·ţę[ňÄžĐhďýéM@SOÉéÝŰ%ÉôÖË1\ą,ěE¸ÔŹ& §7ÉŇăeÔč:fˇ]őžŇ}fËHٱ˙°?Ý)ó§7Č®Łçälű09ßy^ěŰ/Ď<óśÜ¶ęVůľđ3ňČ#ŹôEŕÓçK"Á,»Mĺś$ŰßzENî}GZf-Ňů3Ć•-yÎW$ĺŐjŐ/oďĺ8Ž€#đQAŕ߲•3‚çŮź_ňqT·‘k‹ţ6’Í+tuANmśáČ®őVtŢE$}sîóPŔ«•Dˬ_ż><$,Y˛$ĽŇѶ‰˘sĚšSV{‘˝X^d#KžŐn¶‹äôËę“Őn¶ótă>iőţ°ťgŁZ™ťSž~Úůx›#ŕ8Ž€#ŕ8 Đź"ŽÇ6ś~küťG8Áííía="Á‹„ÄVoEç]wÇ)-şľN |ťëď»ďľŕü6[EcćÉódĺ`S¤ź'O“uť?#męün]¸H–Üőćún ×;ž ?üő·ľ-őŤoĘn}«•g›^ŤŽď˝xA†÷tIF Çť]r~—t9©ÓúűWL—ĹsÇKoOŻFÔ×ţHJrő€KcýHiU/Ë–O”ź¸wžüĂ »äGoî—‘=#ä‚.¸Ů¦Žögź{.¤¨ą˙űĺË?˙eýÁâ6Ś„­NÓ˘Lź·PĆ45Ë;oľ(‡öż+M3ĘúR^đ´óF1«˝dµôoQź"ylË뎀#ŕ8Ž€!ŕpCb—?.B˘" ŚćĐÍš:Îl#Ďô,Ř1uH5%¶p†›Máć@Ż„`AÍšOµíEs`Üxl^$ý z,†ŮÚÚҤŐĚŁh±Í´ľim±N^˝]ěÖ˘_®®őł˛ÖqkŐŹç-ßGŔpGŔ¸VŔKáŇĽˇhNj"źiË 61˝ŰR·pJ8iBŕîضtÔm+—a{ ¶rĆ·±ÁčvÄä\H[ŘŞÜ'8˛rlĄťCązYý˛ÚÓĆJ¶ĺé^8wZNîŮ"7ŢĽBÝr·ŚŇ….“Ű[o­“?ţŁ?–5Ż®‘ 8˝».¨#»C†iŠśŢĂ5{%®ďŇŞ­—ŃđÔŰC¦Ol”Ç?.Ś’ ÝŇÝĄ ®ŞĂ›yqÉŮOźÓóçtť¤ö‘˛ďĐi9ÖŢ!ÚE1gAÖNąÔÓ)]=Łä„Ţ·?üá!°čóź˙Ľüó/ýś´Śk S>|dČ ľěŢÇeŘšgĺŔÁŇ4}ľ:Á’§Txś‡Yˇ˛wpGŔpĘ@ŕ S*ŁłwxŇľü!8˝‰Ň&ʂхěŘžśťµ!˘Äľ‘gŽ-˛ŤCÝň‚Sg\ÓMÚN;N›{Zż¬¶JĆʲÁvîÜrăqnóćÍ“Yłf……2łt¬˝ŇůWÚßĆI+k±5şµŚiç_«ŤZôkѵů{é8Ž€#ŕ8Ž@§ŕ­D‚JŚ»‡^ĺ¦Ćw­Ś´6süâ07ű”vŚ-Ţâ¤á´łqĚ^îf¶Ëí÷łąĆmŐÔáëśËĆŤC0ÎŚ3ź4iRVYv«™5:iăWc§ëěi9µg“Üt˲pŮRßpuzžŃţňë)˙÷×ţł>|XźŮú>/Ă4â[¸őÚŞó['ă;vz3?»®Žk]űI#żëG—ç»dűŢ“rë “ĄaL˝ŢO"í§:äĄÍ¤íl—ś:Rv>-ç.\”:µOz”áĂÉ®›F›÷ęş{ęeŻ®±ôµ?ýO˛aĂŰň˙ę7déÍKéÁŔ2¶eśÜtŰý2lÝ+š>e—ŚŃHpr™'·j03µčš /GŔp>Ú¸ü:¸ţŔOúÓÁé É%‚Ä^dśÖ8¬ł6Îr‘Č1$ ŇiuČ4¶Y‡;Ż$ĆŃŕF¬˛Ć¬v;'ź<‚ÇŹÜzë­!ú;ëa ©k6¬,’[ż´˛H7Ož'c¬Zäµč¦ťg˛-Ď~ž¬śóĘëÓ¶“çâÇŽ€#ŕ8Ž€#ŕTŠom~ň“ź ÜÝx;ÜG/|9>‹['ą;ÇpY \áŘZ°»_sCmŽł˝ĄĄĄĎ!ÎĽłĆ¨ôśú»ĚŰx őСCa›nş)¬ŰS-wÇHl»’y—Ł—Ő'«ÝĆďŃÜÚÇwo”Ą+n—EËďşŃW;ż FúĘüŠ|çŰß•ŽÎéŐ…-Ą«Cßú¬¦ąĽÍń=LťÔ¶Ůµ -Ö¬ż…ś<Ó%ßyn‡ĚźÚ,»·Ëţcçd×Áv™=ąI.ęłß{ęđ~÷ŕéŕĽîU‡řŮNÍ9Ż%ů˝1Cţp~R®ck<¸:Áu>=rNťęO?ý¬—ü_˙›-Źâ±ËS&ͧČâ[ďQeu‚ďß%Młn9ÁópÉ“a¸H~yp/GŔp˛pxY0]›N|ÉÇ_ôFjť:NnČ2„§wě 'Oś˝fëĹ3§ť8»©‘¶1ß"1°ID ‹eĹ’ED“cÄÇYgî8ńÓ~qN›c‘ŕü>rřüćżýMyęé§5Ő‰:ś/śýGF’D]ŇüüŢz°Ů5ăĐüŢ}m*W_¶ě<Đ.»ŐÉ}‘{TŹ7jřÖý§‚îĹ‹!ľ[FŞc]šŹv ăPo;eďđŕˇá=—ş5˝]zzÇČ;ďl“ßů­ß–'ŽËľřz»ÍşçŤšÖĄ§ç9|`—´Ě^¤‚ľ‘‡¶j•cĂ7GŔpG ‰€;Ŕ“ ác#6CH4N^ҡ°=!ŽĺY§Žtúš]J#iŰ!ŇÔÍźćPΧ’v»ëkçÓź_-ö±[‹~µşŐęYóćzbŰ0Šű[ťű{Šh%[:xđ ]ęÔ)áÇlđĐĆÖĉeňäÉÂŰ đř6Đ3ľCi;çp7úa“q‚»ŰŘń+©§ť+mýÉÝ™Oµó¬V/9&|ůŘ®MŇÚÚ*KîxHX<2ŢöďŰ'żô/~Y^ý MA˘?n\ĐÜîäúÖëŤs[!é»/ łĐd¸ĆKm—k}m¸ą‡_č=QĘ>BÇ© vŐÇ­đ°ë?D‡÷đ|`ÔwŤY"ÂGjĄwĘ{Î*¦ĺ}}ëŕw÷ßKűévůĄ_úĄ0Gć×2yş¦CąOş_~VNŮ+MÓć]žW~Q Ţů–]ę8Ž€#ŕ”přľ˛ÄRDi‘%Ô‰ú0Mű’uą˛Ńn2ĆHid´AŘ(qvB¦y]“HĆfO۲ćl}m\;îŻ27®Wb?K/«=¶]NꏞNÔN[[›°€'é[HCC›]ĂG3ą)‰Žá(old8Ż÷袠,.„6\ȸŘŕşâ¸Ć‰Ťóš>۶m ý™—ÝÜ_ěܶĹ÷!XĽ-0eĘY´h‘¬\ąRnĽńĆĐfý­Ě›·őÉ*kŃĹf­úYóňvGŔpGŔřč"Ĺ/ŕ[ps8ÜÎxĽqwÚácôł=FŃÚĚľ!CNťž‡„ëÁËH‰‚}Ƥ_r3›Év;NÓ1Y-eѸĺŘNł‘Ö–f«Ü~iş´•«úĐ{2®q”,ąëăp~=rD~ů—ţ'Y«Îď‘zŤş;O©cú’¦<ąÚům×€ËÇä¸TÚěú\Ö*ł¶Ri’R8mÍáÜkz_¨“{¤Fxb~éŇŤđĆ!Ţ+Ý!Jü˛1‚¸ŐA®ćCß‹=ç5Gř%9sJä«ň§I^'żđ‹?dnă&M—E+ď”·_~N:ŰŹÉč–ÉeăڤüS.Ţ)ŞŢä8Ž€#ŕÜ~ťŢ,dŮ"; ą]vś–䤍=m ł‡°y¶v“A¦Ož<ŁDüâ঻ěÁP˙”C^Śä•a®°‹ŤgeR!«=Ů/í¸H·HŽ“›Ö­[íÄ9Í XŁk5Śm-”8ľqRăgĎÖÖVY¸pˇĚś9łďZ“gýúőňĆočkŠď„ĽŠÜŘćÁ‹ÍćÇ5sJěŰ5çGúr1öqă(瞣Ż=dť8q",ÖĂ9=zT8 [¶lŃ«Qú˙űoţ–Ľ¶f­Ô©ş»Cťß#ôQ§4ngĽd ×4”W×ő(ô+ő‰Ž.ű¬/Ăf˝I‡˘·~pĹů˘:ĂŻ8Â’9\ş¤Ď:"»tşD٬ű0˝…zz:4;¸Čéŕ˙ŞĚž=K>ńÉOh‹Î]s·L™5O-»E6Ż{MFŚj”‘ş'·˘kY$OÚócGŔpG w€çˇsŤeYd/ŹT1€ĐB¦qHB˘9¦„ř˝kyÓlŃá†(S‡LSš–:v­ {D*ă… Ź?ţHŃ·ÚÍÎ)KżŰŘ,˛ź5nąşEöÁďĺ—_–'ź|28ľíX‹śĆÉń‰`“ű1ŢŠ0«V^¤ĎÁ뎀#ŕ8Ž€#ŕT‚<#‹kńUřü_»ĂĄŕÜp=¸}ŕĺÉ Űč26ýŤ»sl|žŇ¸<Ď,” ÷#´[4ßäâă, ¬O-¶ÍFŃÖ/­,Ň­Vž§×{Q‡vo•e·Ý#“§Í ĎQ67®ËýÁĘ“?zRęF*×Ďs~ë#OU`Xň‰—\ŮzxĹ~ąö‹°ĆáX§ÝŰ«®ě^}öSGü5Śí‘ę'UĘpmż@4¸ţŹîyR¦đ;ĘE]SźĄMĽůÚWż&Ó¦M“•·¬ öIő2sÁb9ŐvTöčsË¸Ů‹Żš[vy˛`Ü˙qGŔpŞ@ŔŕU€v­UĘ!vČ0%bKÔ/RM;;Ťy6˛LÚ Öp#ÔČŮ!ëV·E|ź­hÎiă_k\ăńŠć÷M«—«ż}űvůú׿śÂ<ŚđňřăŹÇđŇĄK•8N•±cĆę˘7W/Îő:śUç9kśŐŘ"‚üµ×^ 5D{sĚ5ŔaÎu~řá‡ĺłźýlHE2}úôÍm÷׻̝kĚ=‚“ťH!ć<Ů[á^RňŰyˇ[:»5ŠĽ§ôŔ9˛^F×ÉřQuř’ňäŃG ŽtćřÄOČ÷ż˙ýpÎ;wî”;ďĽS>÷ąĎÉś9sÂý†g9mĺbž´U­^ŇŽ;Ž€#ŕ8Ž€#…@߀‡ŮnoÖÁĹN`·÷†ŹeqgxcYI?xeŕŹ—áĆŮáyÔ±io‘2^Ń|é“5dµ•3ď´ąU«g¶ŠôOŢ#S¦N–y7Ż’á—źŹL÷»ßţ¶|ărkwwžÖ´'ş.“†U㜎#ż/«¬ä”6—·j_k»úş +o+uÄvKĂp9Ű©k˙čś—Ô NÎďašó{¤NbέKď#ý?8ĚĂO2xεB:"Á7oŮ*_űÚ×ä÷żň}SxrBcó8i˝q…´ésË…öă2ŞeRySËčc×3ş{ł#ŕ8Ž€#pîż Žë˙ňk;g3"m‘Ŕ&3gwLd©ŰŽ.uČ;]sCś!×sąô±ŰéŰĹVnŐž,˝¬öäśËí—ÔăÝŐ«WbČB’DS˙ęŻţŞ|ń‹_ ÖüŔ`řvkXEűésr¶«'äۦDtLýHi?Z¦M/=ä`ď±ÇÓ‹şĐŃŮćřsĎ='6léF~ů—Yîľűîđă÷AŹ^łŁ'Ďj”ö9éÔkwIó˙ WŰ j{BsŁLś4.¤:áÚrťmŢOś‘¬Ů*/oÜ­ä¸K:Ô Ţ¦J‘!ŁëëdlC˝LRł¦´Č ł&ËÍó¦ÉÜ©ÓC$ů}÷Ý'_úŇ—ä÷˙÷CÔű3Ď<˘Ä?˙ůĎË]wÝŐwß„ŁjĹ;2ŐW­ĹfźŻ8Ž€#ŕ8Ž€#ĐOŔ™ Z0Žn|înÎp‹Źy:Ă۱ń8mĂÝŤďĂŮ‘ŃN¶ ^áíCú0¦Ů •~ţÇć—e6K^i{Ň~–~˛_Úq-ş]çĄóřAąý'ţ™ÔŹľ:őÇÖ-›ĺŹ˙řOä‚ręžîó2âRWH’ćü×W'§—´ĎáŤăűň˙}Ď[Č٬Ľ|D·h#~ű[˝®nůńĺł‚ó{íÎcr¨­C†©Ó[ß+č‹×§Ą÷Čuułć%hĎŚ@:”‹ťŇŮQ'ŻĽĽFľů—ß_űő_ ÷9ĆÇMž&­‹—ʦuoH}Ó8µťî~ČÂ;«ýgâ-Ž€#ŕ8Ž@>éß@ů:.‚9°ÂDzČ/g˘J ŔDůB´‘áŤO ]¦eô©Çd:8SŐăѧ.cIB~đ¬(sÇćiÇÉ’ńúcłůŤ—5Vž^ž {±üŮgź•?üĂ? wÜq‡üŢďýžÜ{ď˝'˘ŮĽ÷°lzď°lŮ}XŢ?zJÍĄW`/*ľĽŠ¶ŤŁ4źŢř&™7mĽîÔÁ<.8ś'iĘ”űtQL"«ń1D‡Oť:5\ßKJ<·î>"ŻżłWÖlŰ'‡Źť–3J¸ą®ĆžGŞ|ěčz™Ř2VĚ +ćO“Ą­Se®Žs{ęř±ňđ- e÷á“ňʦÝrć|—ľYú±$éł!d§’ŕKďě ‘"-cGËÍ­Óĺ‘U ä®›ćČÍ7ß,ţç.ßůÎwä«_ýŞ ţgög!šý‘G ‘đIĚ8Nn1¦•Č’}ýŘpGŔpÁD ć4Ôáľđ=vx4|›@v¸»ńl¸vrC×çp}úw‡§łÁý¬NyFsP N‹q÷´ç‚x¬xÎq»Őű‹żcŻh,3­ĚŇÍj7`tát›th´rďĹn]´˛QF7O”ú1Í긽býă2¶}úĐNŤ|ľI&Îj ×Áú]Đţř+$öŇčď. ó?_zÎŇÉČo°äiH -áÝÔ­­ôśD›µÓÓ6Üݤ*aŁ(i†ĂĐ+čŞ`´ÂŚ;Ręt±ÎzyáťC˛çč9Ás >GpÚä%®9Pb'¸6†@śŕ#49xO·¦kÔ·T˙áď˙An]µJzřÁ0Xýč™ŢşHŽěß#m'ËÉłJ“ĐcĚú˝â8Ž€#ŕ î `«1 Č#ŐJ˘: ÁDxXމ(ř"7yŇ>Çć§)L–Ě×5%Q%űöí ăa×"K*Ĺ#ł•śŻµ÷GY4~–<­ťE.˙äOţ$äb˙©źú)ůÓ?ýÓ­~oůń›;ä{/l’w—łôú—ę0%’UŰ łČŢÝwL^Ú ×EĐ u=qlŁĚ›>AVÝ0C>¶bˇĚšÜrF^TĆ‹3ý›Ď®—7·í—Óç:=¸j Ça›’őîžarNťâGNť‘-{ËŹ^{GZšä¦9“ĺ±U7Č}Ëu›™“äűŮŹÉ‹KçĘwźÓśŢď ÷j ë0hýźc§}Űéó˛ză{ÁńľxÎůĚýKĺńŰn‘ŕË–-“ßůťß yĐżůÍo†{ń“źüdźĽ4««˙MĂ•YíWkçő‡Ťü\ę8Ž€#ŕ8Fŕy<˘®Šü›ŕ8łáďSąÍÇN 61]Üč07ř92;¦Ť:ý°Çâĺ¶¶Ź­ůRÍőĘĂÂćPŤÝrtŠĆΓ#ëľĐ)§öl•Ń#/Éě9ó5r»AN·—c·Ë M˙WßĐ,Ťă'ËČĆ©«×!ŕż—·ŘvwÇ9é9{Jć-ýďôÔY—PţăűoňĚó«UWĆ]çÔˇb¨űLqŤŕę”X·2đ÷¸íňĐLárOuv—îEÚę놫í:unës ćQzovw÷JG—¦ÇÔt',r٬ĎőzŻčűŇ2¦^îąaŠ»“çÔAŻ­5ř%µňëqýđŇŮK ”6ň›€>s`~¸ţ`p±ű‚Ľżożüő_K×%Z)ăĆŹÓ"cšÇËĚů7ĘńµŻHoĎT]Dł6DŚwŔ˙qGŔpĘ@ ¶oź2đ.‡€‘Č8ľqxł!Ă ń%˛„Í"GčĎf%:ô·ŇěŇ};¦nö°Eň͸ěf˝k˝ŮŻő¸'uQśßäí&⛨空@ĚM+ňµxUž[·3ĽrhąýJĐ—Ą)]…+3.9ĹK4’zN#±ĎvtĘžCm˛ăŔ1YŞiGp€whꔿ]˝AľĄÎďc'Ď‡Č Ü(éđ/6ݶÎřl\lź<Ý!Żnz_ťçä¦W¶ČOŢ}“|ňöĺSw-Îđżzf]iîÝšç2©Ž#K öz×Č}`x{çAŮyđ¸8Ö.?óŕŠ©ÎŹżő[ż%O=ő”üÍßüMx ÷ˇ‡ eH ˙ Öµ®aĘ®ę8Ž€#ŕ8Ž@@cÜťăĎ´ăÇyŤcśv¸9śŰúXăűpqăďȰď´Ń‡gÚŮŕě8×±Ë~-6›S|Śksč9°`eŰîŤ2oŢYxë˝2flłĎóŹbŁ©ŰŹ’ăß—{Ţ•¶»ôˇ©N4źőč}ëUߨŤ·vÍý=oŃbMý1•‹×':qě¨üĹ_üéVçsw©O¸†Ľe[şĆś»uG+k8şő í%łđn.5Ä-“Ć6ČÔqŁd˛±ŚWGvĂ(}öS;Ź~ĆŃ V!H¦»§Wťş /k´wł®ă3R&€ĺ’ň÷ úçĘyĺ…-G´7÷‘äZö꽦ś¸ö©W§ú}× űú’ÁáÚ›T(çGČkß”ýčGň…/~Aő5%§ţ`0eĆ\™Ű©HĄV®X˝l‹9Şťs]ň_ź|Kö>%˙âÓwČ şPćüÁ„űĺé§źÖH‘żÖó'¤‡ádËÂ4Ë[ż´˛ČvšŽ·9Ž€#ŕ8Ž€#P E|#ćÄivq@w§„·ă7îN‘â”±-ęčg·’ů łcăóăT'`ăôéÓ»ó\@T826łoeÚ|‹Ú˛đČjŻÖžéĺŮŤegʉúĽ˛řö¤AóT_ŮFHcs‹¶5ÉÔą ĺF•ź;u\NÔ´‚űwɱ=oKŹrńQcÇIø)şŘetź9!sz,äőľbGäożű]ٶm»ň[MEŁđúşŇ˘—O˝&lüŰsąNc)NśkPÚ/é8ľ›ędŢ”1ş7ˤ& 8Ňű€rtç5ţë«6}¦ÓË9JÇnÖE/ĂsDóĺ %śÜú?A3­SšdűÁv9tRóëŘęŐJNpuhkTxŹ:Ăq¦ł1gú&ĺâĹ.i;Ţ&?üţaM˘)S§„> M-2M#돼ůşŚV¬†ńRÁ_Ż ÔĽ«#ŕ8Ž€#Ї€;Ŕű üJ­_ěEúFX!˛ä˙ĆŃŮĄäőG˘?Řé‡ĂÚŻ!“<¦ť6szC˘9Ć&Dścö'NG8ŻkNš¤ŃZÚ\ŠćĚÖ—zĄ[‘ýZäEş;věŃôűő_˙uY˛d‰´«ú˙úîKňö»‡#(e‰đVz^ô‡hÖéĂÍgďY&ŹÜşP:»şĺ›?^'ß~f˝ŇO"1Ş·Ť}›d»C¶ľóĚ۲ëŔ ůąÇo“•‹fĘ˙řč-aÍď<żANťéHq‚cĺ˛u‚÷¨CţÇoľ«ůÍ;ĺůěý2ÁůÝßý]!Jţµ×^“'žxBfÍš%sçÎ-)¦ü›‡yž SEň”áĽÉpGŔpLjĺEúp`úPÚÚ>ĆÝq‚ĂÁIi<Ďn'€-8zĚÝŃŦ9Ě‘µµµő­4Yך»[4xŃś ›ŐnŘçů!kś¬v/Ož%ë<}\®ĽMÓśŚ13W•,ćȢôőšşŁ~ĘLi™<]ćÝ|›ś?Ű.§ŹŇüÖ»ĺĐű»ĺÔÉc2uĆ?ućU´?Şo<ţťž×0ýCŁżžŕčľ< hAŰÁ­Ýĺ’6úYI®—GšÔń}Ól]x~z“4é:>á-Q|ŃĘ·CĆwĹ0sĂ–Š;5 »ăF}ëŤđ^8µI´iŽrťYĂ >L#ÁŹčň^ućc„g’aę”ÇůŢ«ąÍ/tž—­ďĽ#¬ôů/|>LĄnÔh™8c¶47m–®óşŐŘ ˇ=ëš Ě“e˙ÇpGŔ¨w€WÖµčZî}5Ä2igµE|ŰëŽYBô™öäb;č1ľ9ż©CśŮJÄmX ®WH´•D™ż^^ٸWFÖá^”–®Umčß4wŠüě#ËCżç×ď’o>ó–®Ď®Îď{®Ęnšcu+é}uË^9ˇéQľüÉŰ5çř<ůg[ň ţÍóCôą-ŕóAĽ2©¸*a&µJÝČ5ęרőĺËĺW~ĺWäСC˛aĂٸqcř‘„¨Łx+︿Ջôő1[^:Ž€#ŕ8Ž€#D \Q)_eś¤mx3ÜÜ"Ăáß–üÜąskÂŰáŘńxč±cĎśß”¶Ń×d´w'@Ž/Ă 7G¸é¦•Éy§ő‰ç—&O¶٬E~IóaŹfˇËrřłö>LŁ—5‚ąiü$Ű2A¦ÍżI–vuĘÉŁ‡B~đuĄ·í~üä?ÉŽ;ăąÔÝ©ŞĄnĆc·•Ň“AéîÍq©÷BÉIľtvł¦(™×˝x˛űůňHć©¶łJ5ÜqAKŐpđ¦Ńš+>ŃŹÓkUřţ˛űŘŮ0ŹĐG˙Ńěńę/=k0·€;ç Źt—Č®ňÍ~ňd›<÷ěóňéźütxöc1Î;ßŰŐçO ką–iöĽÍpGŔbďŁăôˇD &YstCn!ÍČ!żć‡$›Ž‘5Jt!Ô8Ë­Î12#ŰF”±G„9+ÎCŇqCÚi7Ű×#ŘĚ=ąó éęŐ«ĂéüÂ/üBHďq¸íڦ ٢$ÄJ”(nµçK¤ĹQőň9u@Ol#űŹź–˙úÔŇyAsr+ö±"®¶ßy˙üů÷×Č3oí¦ĆQňąű—knđ›d”& „śçmÁ†~ęĽřö{ň˝7ÉÉ3ťň裏ĘŇĄKĂýłiÓ¦đęmž “%1·v/GŔpGŔř°!`Ľ‡ó2îgÇáÍ÷6îOrwôŚź‡‡żĂ׍ĂSÚNĆ„»ĂŮáîěĆݱw=o†'%é8澤Ď$•nĂŔOqŐ8VÓ¤, ÓgśÍ‹k~˙ű?ĐĽŰęîąÄPőŔÖ#ĘŢÖ^âÜWśßuZ¤;ydů yŕ¦iҢü;8żáݶۀe–çuťžQ:ď1Łp€Gţ˛˝±:ŢĂ˧颓âšăë|Á‹…1™ëHőÜŰś–yă\.®o(lÝşUÖŻ[ß7ŁúŃŤ?C†]Ôu¨zş­>ˇWGŔpFŔŕ đ@™ŹI[Z˝Ňq!ŔĽZÉë“Dw4i®;śâgśą]ęk6#ĐF’Í GĄ`Ó5%}Ńă•ÍLJhpŇ_@¬c’^éܓ知oýŠäôKŰL?Kë¬[·.DĚ˙ü±Ç ˘gŢÚ)‡Žť©95 Ć —7Ěť(,ź'ç;»ĺŻn‘ťűÚBÎďxQgř]‡ŰäšnĺĺM{dҸFůéű—ę\ZubéŘĹóyăgÖí]OHsK‹¬Zµ*ÜwĽ!Ŕ$l•ŕŰŹu“ívl¶íŘKGŔpGŔpăYe%ccnŤă;ćîäě†SłŃŰ8Âc;üî­ 7^o<[ŘÜżHŹ—çŮ€yT»%qHł÷ąŮl8Möż»I:Ξ¶¦ŞĘ*Źp´mŰşY6nجĎ@ę8îę؆Ú/µj–¦%Â×îŐCŻŽ~MŇŮ#8ą‰O»ŚPzr…Żhť Ź.ź©‹cÖ‡śßL‹T(¤˙NjËçJŮ—ż\ ^T÷‰c'äŐW^˝ÜCĺšB¦eŇĺü-Ňu®˝ŻťJ­×ú*c~ŕ8Ž€#ठŕđP«)ţâĦ†‰$m%ŹÓLÓ˛E4I‹:%q„Sâ ‡řâÇa ±Ž7#Éćŕ†HCăÝ5mÖRN~đ}űöÉ‘#GBĂä<í8Ż’:úyćfź2mË“›,Mďí·ßͤ?Y°`ľté«•˙´v›’^ىiZ嵥!}|ŐbŁy˙öŞ3ú‰×·+©„<×nżśYeľ}˙1ůöłëĺíeţډň“÷,•%s§ęý‘ŽelwâЦ©TöŐ@tůuQLî7rN’~ÇRęÄ:VĎÂÝÚ)Ó¶"yšŽ·9Ž€#ŕ8Ž€#…@Ě-˛řG–n˛=i+yśěĂÝáëđvăîp)‚ ŕVÔăůÁËáăćüNrwŽŤŻ[l`G8A p6ăŮÉůĆăĹs-ŞÇvŇúÉѱ>yú±lĚř©rF…ÜřĘSrňČŐŻ<<¶×_|~µ¦TśÔ!Śç98¶•®';ŽeÚb6Ď"“ §6Ëăę€7FŁľ1śNsă! ë¤1éěiiĐç5ÎÚt,Ĺś3i¬<şb†LÇ,úĽ¨ýC>p-ó>L\˙ ¦4L‡ęĄn}cଦ7Ü$ÇŹźča´FOÔęÝę·ëD™¶ÉÓtĽÍpGŔČBŔs€g!3ڳȀMÍ"츒˛Č6$—¨HŻíDz@ -?¸ÉKÄçJ:‹4a “aŹvśç´Q7ÂŚ#ś|p˛ój%"ϸµť‘×ŮO„HŹ.ľÓ¦)PşÔÎâ¨\s^±ĺ>ŕ>áÁ«Ü-ďzĺɰ_$/wŢĎpGŔp>ÚqŠćîđmv8QÚplř;<ۢąyăÓř9W‹v8ąńsJxvŕbđZúpnĆßiŁ%Üť(tĆäŮ` ¶"l‹äąóŇs7çF9~pŹĽôĂď¨vŞL›ŁéLfΕ–ńSd¸ž5[O÷yuÍë$ÎÖčéîţ;,oĄ#eřTtçů˝hZ“<˛bşĚÖ,gNw*Oî ˛X·âşúš{őZvööČ´1QÎéţç’id>©ąA^6MžÝtXťd!OU®9żµ Ü6̱ăěďîî’÷ß_vĽű®rý»C—‘zŹ´Lś,—vl ÷÷Yr+ş–Eň¤=?vGŔp@ şosÇî#„ĆfÄ6[uRÍ96g%ýŤČ ĂIa·öШ˙Á¦¤/©Pذeşn䕝Jú†Ëü§\»<ĂĽW®\¬żw脜ďčÖs+áYćčFô÷H ĹXŞ‘ÖS'4ËńösšO{×ĺ~µŮţŔ` 8âąÄ/oŢ#ó¦Oź}x…<°bľlŰwTžzcG6\ű’.ŔŁŻćę˝Á×Ú¦Ŕş\Ľ ňŽ€#ŕ8Ž€#ŕ|D€G·¶:p,ř5qÚMFß$G7FiýŚ›ÓFJl±q;ÍÍ}s«düuŁdÜě…ŇÝy^Îś=%ÇŢ~SäŤW¤qLŁĚPgřäYóĄeĘtÝ  µ+fĺl‡ěWçďÎEÝ«ůż-gv •’Ăü1‡E¸5eŹ&ýž=iŚbdť46Ź—‘ş¨¨\ęG§ŤčmŽ€#ŕ8Ž@ż#ŕđ~‡´:FĐ¬Ś­@ŚŇ¶´ľqż,˝¸OVŰfËęďDuéAd¶ĺţŁ$ß ‹gŮ5"măÓN{c6;¦„P)'ú—{Řť0aB_ÄŠŮËšsQ»ťOVż"y–í±.pŇĹ€× 7ÜÔöi—n=÷šű®Ö­N‰đ˛35’¤W¶é‚”;’ű;ý©u¬"}nÍSg;äŮu;eѬIrßÍ­r˙˛˛u÷QŮ{䔞oŃĽ¸ĎJNvOÄX损×/O†Í"y޸.sGŔpGŔHrŠ<ľšěk6¬ĚÓµ>Yel;DzÓ%ČŔްăMN86ŰhBÝpvsdSŇn%uŰáîĆß `aÇ ¬Ăł¶ěŮ kÎEíń9Ąő-’§éX[š.‹aÖ7ꛨş7NžňXw©3|—ľŮąuĂ:uÚŠLť9[f´Ţ “fĚ•¦‰SÔ\6×Ýľe‹ľĄŮ¦a}ţŃ}X!/.ESŹS/×/tyŢ›é[şí±8˝®v.ŞkúŚŃşěĂÎěK૮˘ĽYxsrK|lÉtů§őű¤SßâĚ:}rž“JćĽ>íÜą3Ü/ĄgÂáҨ÷I“ć?§?6Ô_v€§]ŹxREň¸Ż×GŔp4j÷ĆĄYő¶Š€P˛YY±…"˘PÉX\H dRK Ů% BMd NkväFщ_ť´v#Îń´é ÉfŢF¦yesܸqPCÖŮ*™·ŮĎÂ"«Ýô(óú¤ÉČ“.<‡‘íČ©łąvB§rţŃű¤E‰îĘůS5uHŹlÜuX:t›úúľ>XŽąţč3B#8v8&/lŘśŕ«Í;–Ě–'ÚYÎ~,°‡- ×›{ÂyĄám}ódô)’›/GŔpGŔ(jxi–ír¸JąăÁ«Řŕ嬳b,l×fCF6lăȆ»›Cś6ăí”Ȭ/2ăî´łP&yÇáě8ĂáđÖ7T*ř' ‹¬v3]$§_Vźd;ŃĘ ă&‡ý’ž{WçY9Ů~B˝ú˘F7w*ן(3çă o•ńÓfJ]"šůÝmŰt­›ő}„«ůʢ‘ĄăRÄ7^d…2lF?°dš´4Ö‡HpMVęqĺ_žťĆOlÔçuÜŹ)ômÓN}»2÷ŃiŚVÇzÓčŇç.ąb¶ŻĆ:=öź ŽîĹ3š5\óëŮ{TŁŔSÎJĚĽGŤ +ČóŔÄ}ĂýÄn÷†Í5oë“VV«—fËŰGŔpGŔH"äI“ě_ëqrĽ¤˝äřv ż2§6:kŔąŤ»Ç,ćîćÇ;ăó `Ľ[ÔigÇ&Ďô5xŃścąŮÁnĽĹ}âörëµč]=źúŤ×˝iZ«\ěş ťgÚdŰ;ďČů—ž‘{?ő3Ňşx…¦;ą”˛{÷ž¤÷RŹşS”ř&ÔäUyżo™;AćMmęs~_Ő!qŔĽş».Şă}„âεޮA¦O/s&/–ĎÝű«˛¬őţĚľ.¨ ÷ŐQýç?ú7˛ćť¦*Îź¶LľôčďĘ}K?ŁňÔOČ ×~îü?˙ô›ňŁ7˙ż>˙Vl°qT“|ů±'ź˝ç_ŞżOÝ«·“gËçţĂŚľĆ‡–˙ŚüöçżÓwě•AŔŕkżZ­őËŁ??¸m.d#Äś,D&dĚ1}ŤhsĚ< Ĺč%b¶ŃŽÜvŽŤL“f…(’J6l›ýJôč[­žŤĂ|Ůp~sţlDcÔşéé‡ç0iť2^FŐ×ɱSçd˙±öLŇYëxĺę÷†č‘KúËçIymŰ^Yľ`šÜ8s’Ü0{˛ĽěTş˝>őúÚe“FłŹ9<¤Śáޱ·¸'*ŮŞ˝fµÜ'•ĚĎű:Ž€#ŕ8ŽŔGj9I:ýÁám>đo6ř;váíěđVăÜ´w·NŽ}ŘhǦ͍’9}‘a×Ć JeţN5zŻVŻZÝő٤q´°÷tžÓt‘,(yĹYŇ« @:rDÍ돤?Ń” %iéßŇ|•ďę!-zęő]§‘ŐK‹Ąfvůۉăg5ÍHťt]¸(Ýš.%šB¦"Ö'jÚ”łúiꦸ¦ŤŁFHŁF‹_P»u„¦—¦ĘŃuĂĺÖůĺ@ŰyéRÇ»‰‚˝pBZÓ“ęŐĹ6 f:ˇđyóçń˝źęF7ę/'ă§NęJc-×úŠŻŐ‚@| âşŮ´6+­Ýʬv“Tiź[f?>fNń1}’mIąŮ©´Änť]çe÷áÍaaÓ÷ä«~Nţí˙őJ‡é÷ţĎoüŽüçţFźÝoţ«íúFIe~š>ĺA¨lŢűŠüÚ_<¨ßUŮź=ďŢ$żýÍź–/>ô›ňóŹ˙ÇÔYľ¸ůďäŹţîçĺlG†ŻCµÎ_8#˙é˙«<µîň;ęŘž5©”76ßq=îăőţEŔŕý‹ç‡ĘZŢ!— ÜԤѡŤÂK$ D}Ú‘›ÜśÝiä|‰-“vś7ë[NYd§y¬źçŔ2Ę™dAŇŤĚŃp2p€o?ŻŘ’/‡ňó}0×Ü},4S!.>s„›Ź®Ó|ŹŤŁd´FrCÖ÷m—]OČ‹g˲yÓdí;űätGgpÜǶ±Q§đIÍc‚#ü€ľÉąć‰ô·ÓX×ęyň<úErĂKGŔpGŔp®'˛8ŽńS¸·­íw‡«ĂÁŕđ¤4Lrws~Łg;<Ôę±]Úě¸?0Ë:ł]‹Ľ]ź˛W)ęţÝŘ Üq^×j?uŮą­ÁA‘‹ŘüĂd 1~‡_6gĽLĐ4#¤)wëUţö él¸>ŮZĄóŐ>—»47Ś ŕpňxăŤŐđ<ˇó™>ľQ>uë,9yľKfMP~®;(i}Ú¸Y0˝Y¶ĽRev.6uňé˝ÂĽíiąÖëô„Kú€„ś¨ůţş6†—€]'+…zňŘFĎj7ů`–|^Ů×iłgx“'Ëd˙¤ĽżŹ˙é­ż”›[ď•OÝţ ýmş"{]ęĐ4¶é•·ę/Ďuž’ßűöô;ęŠó{t}Ł,ť{Ź.P\'ŰĽ©k›ë;Źo=˙űB4řĂ+>ß×FĺđÉÝň•żýçŇqál_;ëĽÍ›şT¦Ś›~´8Ô¶»O¶ăŔzůwßţYůł˙ůu}›¦ôCtźĐ+×w€_sČłL~y${^ëÚäřiÇ̢ 9Ćn9Ŕ!ĎDyC¦OčkoÖnQŃś‹E’X;Ôů±(ęF¤ă/PćR.y¸&m&Ď1Ož%ł/LćmçV:OŻâ¨éÉ-cÔˇ~IŽj^ńSgĎCwe|sŁÜ4{’,š3Uä-š×OPB|ŕŘIyăݲa×Ĺ‘,®|ŃW1|pră„_2oş<¸r¦:™ňŤ:–9ß:uŠăÜž­ó:a¬śÚ§é_ăňZełFŹŰ(uĘ÷îÝş&Mšąeanýóäy2Ó÷ŇpGŔpr€[äń‹rąjąăőG?ćkśű˙gď:«¨˛öôŢ{ „Ţ{U°€ŠŠ®eĹŢË®şî®úŰu-»Öµ®…Ųö‚)˘ŇC' %!! é˝óźďNîäľ—y%ď%!Ŕ\}Ěť[ν÷ĚËĽ3ßśűI{‚#lvâ+‹9p#Ę`ĎKÇąŃ_Úč8GraűăyőŇS\ťł”ˇ–ŮĘŰÓ«˝:ČłUo«\ÎÁQ˝l§€Ë=™/\E ëjkض­MŹŔkD5Á9ŕHO«e`z^9{SzP?•ý@kÂýX­“C˝ň ¬75ŚÖŔ¶Ő1†î<Ă×14Ô—|Ů™©žŠW‹şh.‹ĺ?VXéő;ŘxĐŕ„Ę8TNőŤ­ ˝XţA^CúUU­`ć Ŕß9/¦’ńöŃ(#ŤęĘ51’c–ą§yäŇäs®,ł>˘Ťu™·«óÂ\pnÝçÖídwç˙đĺźR˙„ŃBL3ďŮ™ý;­Úń%ý”ö‰.úťĄu\źĚ1Yłë;ŽË–ĄĎüöŮ/Ňąnŕű·^¶lÓ{ôÔ§W3•¶{˙ÓUĎ[ŕěűäÇWZ€ßS‡śG÷^řúµĆ3Č>Ľ‹î˙ďŢ ż[ČţŢŹŹÓ•§?¤ŹefŽŽLüččÝĄQ­o¸ÖBlÝ€ťé§Ţä­ĺ:{.$Č #XÄ Ćőh‹:|P&ĎŃyůAÎŰ›äşĺ±=ý]éůčţs$xÓ46j7O_/®ĹnüÓF8Ř ÝŤě1‘[TN}âÂ鼩CéôŃ©h!”őŮVOWŐ7Đ’uôÜg+©¤˘–oňmŰ83)Č­Ďçń.>eņŮíćË4->ĽmŇ(51PŽţ!ľTÎNóy‹(¸ÂĂĂĹ—Q{e®^/Čt§Ż˝9™u¦L 05`jŔÔŔ‰­G6†#űÖÝţŽ´/Ç—±{zË2Ś @ —´íUPőh+mw9WŘîŇĆw4~GÖËń]‘ŮžľÖmV‰Ý–ě ¤¦FěŚĺŹ–Ś4YÚnQ8´–×ŇŹŰňhËţćŘĄ „úy ¨Vq2ŹçöÖA2kµ ™( Ď'Úu%aßžü¬á×Ă›Ľ|ăśjňĺg˙v„%1­KT°%„űS&÷=Ú<‡h(8(`vË$ľcü XĎ»†›ĘË)2Ę6.ű¨Gëk Ö™ůŽ×ô­ęÜřVŰ Ź6˛ŹZ'g'ëäyWĺýMއsÜŻd’÷.9gÔËőĘv(Sço-SĘjĎ128žbĂRô.ń©tÚČ?2ĹĆLZźľT”•âó  e7f.§ĚCiě}Ľ•wÔĎĺö^“zš]Š’ś˘t¦0ý–rŠ2¨˘ş„©‘ŘąŤ7Nö đ ŃçSŰPĹ#3xz¶^† čB|˝ŢŁůx1­‘’v\'€ü,ă™Ď|âŔł ČŽ¬ŐTĘüŮHQ!‰Ô/^ţóKöó}$M”{{úŇŘ~3ŮˇŻŽ–2(ťyh Í{5ď8)ęĺ?{r6ĆÁÚ1ßIăŘ)p<ď2O”Mô#ÚĘ’ ¸ąĺą<ž>ęrZÍúřqË˙DQzî&~ąWĂ;ÖýÄůWk^Ą´}żČćtŇĐóé‘Ë?ăsK|%‰ąŰ_aŹďů˙¬{Ě/\ń8ëőBJŽŞ÷73]ŻË_ę®ß±h@ŢŔĺŃŐ)á揌cü@Ŕ–?"¬y„Ł^ÖÉńăOr śË:Ě yëäÎ|Ýé‹yŘ돀?XwII ŕšçG${ms/ë%´ďśőŕĹ[ŘŰžŕ§1č={Ę`A#A0ŚóŠ*ř‡Łň +ČŹŰ MGx(ť5ˇ?5˛ńůŻO~a>Şú6”$ÎLăçLJófަđ ţ-ˇ_ŇöҶýůTZQ#VčÇ`|_š6˘/{­4ó55^3JSbĂĹZňós)77Wh‡:´“ ĺ°ÝaÇ«ą”­ęIöQË·U.Ű9Ş—íěŰ#m1gű -ţS“ÍXŽ˝$ăčHđ#UĆ”#żí* íŮĄ4 žAť„`ÁÎ*nőض'ŘŞăŞŢŘęuÇ·LÍě\S]UOAÁŢěŢ ‚kŞme;Ë#eŕĽOlĂ,·¬R΄·»Ő3d71pWÍŽ0‘QŃzkgu®w03ťŞ\őšŕ{-ĎeŽyµŰhGĹ—ün4ýűżĐgżľ¨{;«^^t']wć“:HĽçŕşăőij‘żő•)âřę­kőy56Ő ~ě%Z´GŔČ?ź˙-Ýü>mH_&ęNg˙ľKŢůµ»ż§çľĽYäĂbčŤŰ7ŇťŻO§…é˘ltßSőuTוÓK‹î Ĺëßuę?¸űĄÓîU‹Ĺ‹YPÁ/Ś^& ţŠÓ`°~–lʱęu|}ú˝ż…×Ě|ŚĎ-ďý˛ů §Ţ)n˘ Ô+2–™¸TĐQ:šřQRĽŃ°ňjTçL™Łţťuc¶ž›0ř¸7±}ž%đ"^Á†ćŠm•!!!ş±ŚöŇ2‡ˇŤyKcŰz¬öś;ŇOGŐ‡…qJ^/xĐóňň(!!Ax;wÄ<řöńňśŢ˝cÂ4Đ»¸’~ÚśA+Óö1ťÇooë)4Ŕ—iH°•hî´atÍYăhâŕ^tʨľôŐŞmäÍ4%íI×2˝ĘÔaÉěďKË6¤Ó׿í`Ű‹÷Ц*6”Ú˛—¶däRrl(ť4,Ex©7đvHŁźË© ß–ť-‚`B?Ŕáe„äÎőp§o{ôb¶55`jŔÔ€©S¦ŽŽ ë÷ĐŽňŻiDČĹâ•tT&áČŢp4)Gý»ÚvÇx°ÝjK۱}đ?8ę±[6ćŽsiŻĂv—ʆ»›é§łëíÍ_ŽŤ#`níßÖĐ‘#Űý€ #ľ¤šÎe°Ż×gŇ®ś2Jey ÓŤ„z‹ńl9™¨rô<ŹŃä ä•p@ËŠňjE®\ź.Ă(ďĎ36Ä_ÄŞá@śHX—–´\Ä#2xöŔ÷¤¦ŠÇkŮ5 {ťšŹQGłĚe ¨:ßs|×ů„żuäĺßý˘‚[)»v­ËcuÇŽŃ^)Ög„ř;–÷<ő9Ë{4t!óą–íě-­¦`żpý´°ü ÝđŇX*®@°]ăđřćO¤\őŤbY¦÷WčéÝ(9` Ť ›OĂBć’gm«˛«rŰŰĎűž­joĽÎ”mk\kŰ]ÚčpdýŽŘ>Ňž‡mۦĜ±Ý1¶-ť`ÍR–ŃéÄQ=d:ÓĆٱĹ3J‹ăŽÚ1q|ůŮćŰĐĽXF ŐZ-Ű;&=z°mŻüôŁ§Đ‘'ÓŠÔ2‡vÚR毠”č@Ä@xd°Źh»Ú:ŢO¨ju 뾦»2kŮÖçëĂ‚ĽEđÎěšJŠî<¶ŔoćűĆł LÚ5f°ś×^ÓP'^®ŕůÉ:ązť¬ĺç®k×ŔÖëHř{­i*u}nÚłŞˇš<µ—:X#ópÄß%ŽřŰG‚~lÝĎÜYčL6ďýIáéáĹ4)Éúů[K°ż§ žM3G_ÁÎr~´zç7ş$ĎđčţĎ›yž=ŮŁą–,D—sć+éňSďw1÷řŁ^J‡ËrÄşľ^óšŔSb‡Ň“óżaoô%Âk\v†w9¨O’"ű‹˘M™?Z€ßľÁ4™çŐ;jmÚ»Bx~XѨHY걤˛€J2Z˝ÚC"řEˇ]~ńŰËŕ÷°ä©Ěĺ}=c#ôÝş·č@ÁN!ęó__˘ÉÎeâ|LęéäďÄřD…8Ď>ĽG÷8Ź Oˇ)'Ó°”“h,·G0Kë˝âç6™âĘYf} öŹ$?ź@ť3|ż €[«¨ËĎMĽËUîހΝqv4s[s“ĺ fnĂFÂę 13ÝFΦy˝?ˇ˙KéËč Ź z‰Ă{űOî6ótĆÖčN¶;'ç€ GŘĺŇvE 0i»Ł@¸ ‰Ž]ôŹ3:6šŠ­~¶ĘŰČ`@ wžkŘ®dʼn&>ľţČÁŢQĐ ö´žĺfh »¸ąç»Ď '†Ć#ě ^Nű ިW„żđŹ őa°t"-ňąm~I-ĺ1źxonĐľ8D-Ó×§j7Ăc!hfŕ1»ü9ŕ[ĄţýĐú1Ą ńŢL٬‹‚nˇ/€÷ŤđçÂF¸ŢÁ*ăôµ±ęgž:ŻčXęYćqÄó9Žř[WĎ‘?Ţ’\#Žx>ĹýNbX«\3î•jŢ=|˛ę9¦ýPt=ÉÖýżRFîf Q{Mäyhđž'–lüŻ^ni€ŃÚ]…h€YÂ{űÝĄ‰6ŕę^ľůÇuơÍ´'Ř  Ď>óOHĐ”ŕÜ‹D6iN&ŕđ.fĘ5Ťp&Ó Ň‹>řéz:?öhž‘.;ĺďěU~;v&yyzÓ]çż.ž‰|CE—ććFZ°ěa˝;tň⍿čçŕ żŕ‰xĆC4ÚXGŹ K:úŰ»çđ˝G{±!;*ŢÇŕö>ZĽa(8–ţ8ýŻtňĐ dľżíßYÖ[fícLßźŻyŽC†™Ž®Lüčęż[Ť.oܶ&% a[őΔăFOĄ! Łŕ7 iÍ’öDţŔ`\{c[ĎçÖeęÜěŐ©íěĺUj}0ďŘŘXě®_ż^‰ Ó>V±qĚƢ«©xáo€é̶ÎăiÁ=Łä‡u»…ľ¦Ićm6ĹôŃOiĚčðp.‰ŁkĎx¢Ɋ´˙Ń+ßÜĄ—-Ľ{·ÝŔ6zC3Ó-4ĐÄF;ĽpDâ{jwN Ő6UĐÚ˘7Ĺ'ʧŤ »’?W5Š”®Đź#[Çž mo~R.úË]š°qaĂËŘ>Ňv‡MŹv¨—`ÚŮKR>Ú ŹŹ˝ąŞííɵU§ö—c©e¶úˇÜ^»žě$ű»‘ŘÂňîîëďGĽ#˘ hED= pf8ŃJ3; ’´6˘ţaÝBnnŹp€ć{ *)«¨šâĂühpb{†rKnWÎ+W§RKĘëé¤!Qúś”śÎ2vĎÓä1Ĺ„­»±wz5żaz• ć‡çń‘Ô¦X»_@€Ř+{‹ u“—†•ÖT×Č*q´§o‹†ćI§kßm™¬Áo –mާ#ÖĐŘňňţ†#’z±wďrF'?Ą}b·™·—/Ý5÷u˝ 1Ş×`-˙ĄęőČüaꟀ´áMÜĎŰr·Ĺó_ÝB«¶IcúÍ`|*ťÉ´łĆ]k!ËŮxËOj ~Ë2€ë‹Öľ.xµe™­#xĽĎ3ߢ:Żd?UňÎY™fOĽQfĹ1Đ/Ś=Ö˙Ŕ/Šó_¶}NősßĐ9ĽÇő?“Ţş3Ťţ·ňúuÇW6mÝÝ×Óď]ČžńgžďÇ…,ĽČTSc“ćĚ©–ĺŐűYĎĎLGW&~tőo1:ţ8Ô?wn¤Ş‹AZN\‘íH&D;+Wnť”Ű*eÉŽ-•ŕ ”?8ŽŚhŁ5Z—9šż»őęx˝ziŰf222¨’9Ď‚8hCĚ/#oíGSmď\ľ5ňwž00ÁĹm¤ďZ¨?ý9Ť>[ąUXÚ"";ÎĄ• Nű0ŐżĄ…˝ÝŽÝÔ50/;Aŕ‡7¶Wz*¤…0~!?çUÍxS´Ôs™úS 9ţ>Ţ4˘oňľôó’ TXX( Ф¤$ ÜťëáNßv¨Ĺlz k ¦ľ‚î~k¦!ř-—…ŕ5ĽMî ŢňçnŞŞ-ĄÇ>üŁříëíOCzOć‡Y/ÚťłžJ+[_L˝żâIÁýÔ—ęCŹŻ°Ł2GrÜ­7S–9- /#µŐU@Äđ0$DôôňáŘ61ăîÁ °řĹĆ?ŞaÜ2pxprĐ ZŘíŚA[ÔÁ‡Đ ‚*©ˇ¸P?ęĎÁ2K*ëŮé…A;ľ^0Óٱ[Ćjׇ€¬zv|‰ ôiő2—BxÎő GO·–í{vbâ95ňZ´ÄŢÂäɤžĘ1ź""#d/jćg™şš*jŔsÓżHjL ,ę •ŚŁëˇ45ł č[ęGŔH*č 粬†íV"°nŕ8JLB‚ŕ8—´Ä)¤ľ\˝WŰZüŔ¤qtý™˙ ^L#"“ęIŚń°Ô:ůűS,s[gÖv¤Ë>˝˘2.1ś2Ą‰.ň¸z×·âĐŤLrľŕ=ÄZ¬Íóňę" p:9¦m_Đ‚o[¶´)Ś+@YbťTMĎ|zŤ¸©–Á^&p}2ťK|DŞ,ĽÝ÷^řŽđlß}pmĘ\AŰüĆ^÷«ř~WŞ·CĎcŕNÝ÷4Aó‚k-Ż{vˇ¦W‹'ĄYz)č.Ítt5`ŕGW˙vG—7Q[ŤÜąąv–lgĺĘv¸‰čCŔ8čPđcSRR"ĽÄeqÇÁ3‡v´ŕß¶nŰžsx|4"°$¤ľlh%Î^,S&€dŐuŤ‚şdXJ,…‡ďYďčyŇ^V]KuőŤ‚âŕ»Q đő1ám^Á!Đźzí`§Ä3Ď1ř°Ľ„—|ii© ŚILL×ß‘ÎíŐ»Zg´łěřÖŔ÷ëßáťÚ ¬ôěń×Ň öŠ€qřoÍ“AJ`ţ¸ĺCöo˘]ŃĚš]ßQľbÝ>űEć«»_"yëâ–mzŹžúôj}[â§«žw{\]řqů×uËu]RÄL¦L śŘ0ÁˇŘA{*–ŠŹŻ HąÁđ«¨3(RěŮ!‹jáĽ=©łd·G.ÚÂví ŔpéČŰ ´ÝQűŢťdk^¶ĘŐ±śiٶ—ygúµŘ]S®Ĺăa˝%1(Ő'™ť<đK–RŃFµb8¸h\ŕGŕÎh·Óâ!.Ű ŽÄĺđĘF[„sQŕyĄµô†ó‹ú1 Žc+(-z;÷?l pfÚţĘ`îń“s, čŕ¶ 8¦Ă/|±S”×ÚŔ»Üđ7/w$/~¶ĂÎŘĐPŤÂeMŤ TÍ/Nšąţ«gâq€ŕř^©ÉH×j˝™ď H˝ă(?IÝ8JđĎ첼sfsô¤›ŕ…|A#ApUý¸sź9zóú'č‹w6řľ#űń‹­±ząĚ•’YŢ `ń<ˇWp&Čż5hfqEž¨ŤĘăW|EĎ~~=sz/U›‹|YU}űűĹĘźćĽJg1­3 ±yÔ§žęůß=o/Đv®ę„ľÖT&Fňę™»Ű(őä—o’&ŠęAő’¶o%˝ţý˝´‹i1‘p}A[ Ü‹ź5ŔűťS”)ę2‡¸QŞ®+§˛nośő {ş×ń®}~9Ú’řzšéčjŔA;şs2G?5coR€ËQü°â¦u’Đ‘zЧ3“3ňáÍ ŕíđ>¬O,Ż~.&¶#aNÂĹl{‚jÂkĽ¸ĽFxoG1îÍF*ŚZg¨Ľç—ł‡j-˙8űSLX np·®ć{yŕ:zš”Z6ÄĄh±ŐŃşśĚF0ó"ę¦M›DĚ“N:‰ÂĂĂ ç㌾[ç`ćL 8§l‰“iLęit÷Ü7Ĺé”i4‘yó.ţGoń}EᆌenŃ{r6Čá(*$Îź|›~.3Ř–¨î˙Eéą›Ř몆 ˛f™A‡­‚Ć€.Ĺ×+@Ç@“_˛ź2ó4oÂc™ÇĽˇ©Ž–2°žyh ŻoÜH9ß,^¨;Ě‘ŇSăFĐ€Äq"§—‡ŹŢÎ:0đXĎfŹ˘áÍÍŔŰÄ:mĚ\Î÷›QÜ+zđü€—ČÚÝß #űL[.aX"Ő5TÓÎěµ´Ťů›Řżß¸~g:őź̧WĹF&RxP,ďŠiő.Űş˙öHÓ Îöú€çÇ^Ö ¶;âˇ!*$‘˝ď'ŃČ>§¨"ŰäᲓ·sâĹH|x˙a"úŮ‘µšJ[ }Čę?şM_g p}áu˛…yčśCzMF¶­ţíŐż”Źí<ď˝ěń(öü‚‡« gQDPĽlćÔ1“ů#«j5ÝŁCthËÂCAş|ĺăúźÁż –ߥŐ;‰ß2ÔăÚôŽڬHkv}#ľď8éź0šo ;ëöüŔŰůKÄwt8)2 N¤I0˙=Ń5` —zŃ(RţĂ)˙ˇ…"E®ÝÝŁ´ÇäQآ-ö9lv€EŇ[¶<čQ¬MwçŕjĚó•s‡5ďŞ\ŮĎÓ7ĘŠó9V?(¦~jżţČ4„Ąđžeđ–yČ~ęQ8ą°˝v¬?Í ţáBńż–Ç3ÖŹĽ6ĆąE­ &䲒Š: cp?Ž$čF„a®µsüď*­®T+UěHłzĎa 嵄ł'¸5ŠFÍŹs1˛ÍKá%{Š—$˝z÷ĎxrĚFţ®”—Ó‘žŢ—Ë#ţĆ%řŤżýŽü{ę.zDZ65I`ÜO  śŰű»VűÚËź7ń&¶w'ŮkbQŃG?Ż©«d›·Ň±HŮ9Çv¬LŕĂ~ćš%ln§ź·~Jżď^,l{•¦žá GÍĎIđÚv”¬m3ŚŇşßá˛ÖE†ç¸7X'đi«éOs^ˇ`ű6¬ś×‚eé0ŁúÓąăoPE‰{ž îżä}š˙Ż!ş“ ‚‘ĘÔ;f°€çePzîF‹g€Ú†*úë;ł‡űެ5›UM˝ů9ČLGW&~tőďÖčŽ~hś7Ť&ŃY˛mÉ•F4€nĽMĹŹ >ŕ„‡0ę]1˘1žŃFeެëqŽ9X—«}Ô<‚`ß±c‡đrž=›ŁÇ„‰ ‘ĺ5µ‚ÂDmďl^ض°w9Á7¤ĹÖŐ ěü {·”)IĽX·áA~ü–ŘCxš8Ýźegĺ—0XUJ#Să©WL(o^ĚGn#¨'Ź×2M}VĐťŻ·—ččGË—üL{÷î::t¨xa 7ngĆŢu±W‡aŐ·s*fócDŮ…­oíÇöźi1ë¨$DĘ·˙r‹ EŁvžÔ5´ň[Č˙8xę¬Ó§=Ŕ ë,˝Ć'ę;^ꦗÉĚ­ŻLŮWo]KÇ‹¨ëĎ}ył( Ў7nßHwľ>]ßf8š·đI|ÝžĹô4o´ö¤@g}úęĹmŚ]xF€KÁgŚxďŔO8ď”ű/ď~1ů8ôä–Â[Îůżď‹Ő/‹´YřăăěˇFoŢľ‰é•|ÄśĺvM)ăÔÓ=ľ%YöÂ×·Ů ‚‰µÉí•WžţÂ3ćí%´ů{ÇËŹÇ®üĘB.ä76Ő‹-•’CPŽůćâżŃźĎMÚľLź>ňŹtËíMxč¸ëÍÓ¨¸"ߢkż„QôčĽ/:L˙~¸,›˙črÚWZŚ…‚wĎç˝,Ś˙6 ¬ ~Ýń%ýß{č×/.<…^ľéWŃ Qo.ţ»Ţăóűó(Ś_¨éţ…sôľ—Nű ]ÖSz5äâ;ŹtßĹ `˙ĺęWôzdđ=»‰˝jćLşŐ˘Ü<9ö4_·ť¶•}.Ľ®:zöĂC.¤-eé/TŚä«)©A§ Š”a!s;”"Ĺz\G6DZd»cm°Ů%e!Ŕ08˛ŔvǧşşÚÂë×Z¶Îˇ##=•©2lŐËryTű¨y{őöę ĂË?Šçń˝Ťy‚™öC¦ľ €ÇDEPYE ź÷âú:†Á5P¶ąf+óżüŚ$ĽŔDŠV«ŃşŃĘÄw2Ä©”nĆýA[˛>łvł÷vjt S$R ďFo `C˛EâţÍě(ł7żBp‰÷dOsPˇěĘ-Ł)ýŁ-šĘŕöüżHbm<Żžüý ¤AĘfOžÚ=‚zB %ěw5€§ě ŔÜ‹źGäłN¸âÉ˙¶c‘h ďó'?ľ’޸mî_ÎŢóňŮ*Żä?ó,”by}$Źy™~nfŽŽZˇŹÎř樊äÍS)YWo˘ňFm-Ož»*ý;Z¶”‡9Éí”ř…×7Śi”ˇMgÎYÎAęG=Ęqq´ŐN-ÇŰŕ|őjí^Ó1áT–ÍŰpÚľĐT‡3Î ű†Ř˘ä|ßt5“ѸąZ ŰĄš Kl“ô‡7¤µŕČ„ŃěDâeS^Q%Č/Ąń“h`ŻŠc.ńĚÜ"6nĄŢ*ÉV5<Ë˝ŮÓÄÇ‘Z…7˛ëIjB÷Ťćşž´bĹ *(( g:®±šT}Şĺ2ďN˝Łľr óxüjŕśń×éŔÇĽ)dBtwĽYeÝÍŻL¤ §Ü)ĽoUŻ xĂŞ±˛O{ŹřŽ?ńŃ<VűŇĺQć#·•˛ vŃ­ŻL¦§®ţž‡ëÍŢ_ń˝˝ä˙ôsë Śä·dĆvËó&j@Ľu›ĹŢŐ9Ő:\|ôĂKPn ~ŁÝŹ[>"x®XUeŘĘĂë;#w‹aő†Śĺôúwađ÷ßő÷˙wŽxˇ`QČ'bůĎ/nhęZ·stŹxĽś(«*lÓ4=gÝřň8ZđçX]Ő?Ŕďk^a3ĐçŻ×Ľ&^>ÜrÎómćŁě:ř»řîČâ°Ŕhz–=ÂŚ·ąŞ}Ű›˙č—rôă{öÂW·1?%]*‚>µW˛Ůľ»hŕł×ÓţŞßŽútęˇôŠeâó…G0Ť˝H€áˇ4ÔáÜpݵ¶)¤Íč°łAkYM\¶…Éveމ~°Őń- lwěŢÄ}BÖ­Ă™2GsvTŹ1¤í.Źę¸öúŰ« µŢËź=ŔePUY)…F Ö ŕčř$6díŮ—Cü˛±‘˝âYe<'XđŠ‘ ü=¸ ŕÚ× uřĆâ ýĂeü?d°™ĺ*tOZ˝h€">-Żj uűŠĽ® ähęĂ`x?{^ omĚSËAäą ŕý˝‡űp3!äyLłRĎTڤv=𷀞ç5™<˝9öP\ ÖĘŚßżŠ’"*ç$=x‡'{yâą©‘©Sđť±ő=TőŤńĚÔą€ľĺŔ7έ=żŻŕX[}íĹ ľ—ęúŔ9ľłřţ"A?¶ľż˘Aţ]ž~>‚ط—>@C9®t®ijn ×ľ»GĚO{ňĐą" ČŹV>+ňűG= vÜ ÷w$ďT˝éĺ ˛›îęJ¶ "cí·ëŢ-@š•›Î~–ťŁ…·ůSź\­ôn;ů9ŁĽşXt†cĆ” ;Ö}×N;LŃĎXŻÜ˛V´Ĺ.K €ăYěĺEwŇmLI‰Ý´2ˇ˙[?ÜŻëĺŘÉH¦sÇ_O?nţP—ł/o=üÁĹjK8P<ńĆ_čćOdçKO÷yě dŹţ/%¶1ą˝owŐ“ß^[łÎX&n¬—˘7ig’+7rG˛mÉ”?¨Ç ^%0¤áa‚äH®­őŘęg«ÜZŽś—u{ësµźä߸q# @oźřÚyŕ°ľµ˝3y«ŕ÷†çFm=ŘmĚORŘ@®oиĂAQâĹ´sW_“_ó˛š:ĘČ)ä›y HŠbú€ÚźÇŰY_.‘jdŻ®m Řđ ţf–·’&é-čS˛˛˛hÆ ‚"fĚ1"2Ľ4”ćm˛öôŤĆöęíŐµČ,8î50˙ô‡m®ô2P ĄÄ:Al k©ČŠ‹jމ”ÍĽqŇ[´#x‹Ü°”“ÓĺV˝–®bü'9çúô%ôŮŻ/Ębz貏ů…–żʢ¶dJ* ¨$ăG˝m&˘Ć_=ăţmhźéđńć˝…=Y>gžw™ŕĺ­ŕ›2´żÁĂ8™çÔ›mÚ»BxÇXŃŃHYÎá5đ;5~„ w)®ĚŁ5»ľĺ˛"!Q?üůişá¬§u‘®ę˙­%÷[€ßă™–DÓ)}¸ňi˝îÓU/ĐSîT&ú J;÷\¦¨Ńv3@/Ř) Rš»ťÍČÝ,îĆ÷?S\7'Ú¨|§®xśÎse§€ďnOŢŕ”jšJE»ˇ!s(Ř+Ţ©>íiTTźI{Ę—(ÎŮ~=Ľ„¸g?g»ty;gě[v¶˝Éş*ýäx8bÇ&Ŕpů˘ĚąFmŚĘ0[ĺ¶Ö&ŰËŁ=j#y¶ę=üş,/ÎŁ(މ©ŮżŢľ4iÂxZôĂĎaŕŁZóÇ|#CühtżD đĄďżţ•˛łł…‘;bÄ ÖŤ­ÖYv~N^SyěüÍş»r‹3…ç´üNŕt~P-€k€5ŚLë€-‡Š÷>‹7,ę‡ÂŮłőäˇsDLÇ–;€¤j?ŕL Ż µyP[Üuţëě đ Őń¶Fą5\úˇÎŻ=eđ€Ŕ+¸©s™ßNňgĂ3\¦ż]´@Ę34y*“Ëie Ż:€K[)6<™žżá'ťçK_ߡ7Űo=vĹ—|®ÝĄ@óSÚ'˘Ţ8 ŇŰ;“ńđđd™_±Żyłś<ôB6 „W9úăĄDqĹ!H…7‰L¸ţŹ\ţóž.Š.;ĺďôҢŰ-tٶ˝G¬2‚‡!íĎßĆžßău€ůËŐ˙¦«f<ĚžŮ~‚żÜý“2ňžýRż)±ĂÄwRÖodđÖŘkä©~…Í˝Ěi(@Uë”?JoÓŃčţ1¦‚‘ş‡ü羼Ix«#ŻŁEżż!¶íâÜLÇ®¦FŢA}¦wč¶•Nköż!AG‚AI10ř,>źťË6Ť¶ë§¬ľĚQWĂzůűaXَ®´}Ű1-æęšń·‹$ʆ:¸PżE;%㥠k/%ôÂ@ڦt?y %ÄĽMű0%6óg7Ő˛ç3 iŤř—“ęÎŘQŮŔv·Ô?‰˘ˇ˛a<|?4ś»s^Âę\ĄĺE{oM\V{>§śW*)‘w¦öŹf/I’k]Žđom˝|Ébµa[DpWj¶f»sëAu Ž70 Ž5ďÉ;ACi„ âyH΢ľ¶† óR#żĚîÁzę‰A8I`UŔeő(ݵ<Şufľc5K=ăúČk¤ć%~Ä“/şv);vGQ<Ŕę\縟á}`ÍČăďNŢ礞şrşŔ­GćObXżŞ‡śKBd*ÝzîóňT€ĹÓ‡˙A·Żá(ņ̌×ęőjć˛Sţfá‡ÍňYf9{CăJŔ»ĺî ޤg?»N·gˇ ~Ăá¶Ľ;ô’3G_!€k8í Á©čŁĂšG»:wxĽ_<í˝s{źĹţňÖÂŮv%€ý_ţ©îU/Ű ćÍß™¦ďŮĎŻÓW4ĘĘ4»ëşoÁyü,řIŞ)×äăÝ2&MĂű&Prl(ÁđýöŰo)//ŹRSS©Oź>bˬÍÉs…=}Łź­zYŽŁLFe˛Î<žŘŘČÁ.±eÍÚs aG¤qěÉúÖťitćŘů‚óÚ–ĚÝ×xłßZrź­&N•_wć“ě!;źďˇz{xUË„:ăx Ąš@ Ł‚.ŇëT(+ţqD˙ "=‚*" ăwë߆¨”ç¶Ň€„1:řŤ6©q#-šÔWź đ2@MUµí¤’"űëŕ·”…`źj’\(Ű•ý»^Ź|€EĹüÓ/ôF.f°%T‚ß‘3”fŤkźáźŰiŢUýďÉŮ(Xĺ/:ů.ζŢýˇďg=Í<Ü˙źXAŽxo®EpËű.yO÷$’˛;ú ŞÖşź=áF‹aňCŹ™L Xkŕ÷{ű/¦f˛Fę,[Ćů Łs⟥űçĐüäE44řü¶lyěť©¶ŽQŢŐÉRË ç*0äęXÖýä8FĺÖeFç˛?ŽÖIÖY—ËsGőhçE‡˛÷3—µ¶«IöMî7€&Ž!lwOöoq’Öe}6"‰ŢsCp‚‹3žłřŹ+ĺüĺQrzcY-­ZŽ8·ü0<-J:׳üĚürú!-‡~ÜšOYĹ5ÔČÂr_As×óuäsČĺi '~=Zđjε&ĚĄşž˝eůCĚ2Oo?ę“Ň›&Nš¨7<»ź*JŠ© /źšz2čŢ*‚+2đŚ‚„Ľ\źŢąĄ\=7óť§©x#©Ŕ·‡ůzď(ę:­_Čď©zěĽ+ŇV2¨;ţuírá,áÉ»)¬îĂŕą~óöŤmvëýőďŇŐ3Ń­űážĚŰsďĽTS°¤Ý‚]€¶x®_»őwvä™Ëŕyo¦Pá`}§3Ę3"ĆŤäÖFOvÖq%Á©čŢ?ĽÍóŚiÓŔőźĎ•ÁëĎÚĶP˙ţ_2xWčM6my8ÎĚžxŁhg+Č=¨bŢ˝‡đÜ$_‚XO$40Š®çg±}NUđŠ˙đgÄ˝ÁÝÔLGKžGk`sܶ7϶5Z‰ JŘjc«˛íĄî&ŰŃ|±WćlK®*ËV[ĺRŻÖő oApG˝k×®†\/„™FŰöđM·„2laĐâ˙?_ ňĺ7ŞMŮťę°áčTâˇBü}ůmm3ÓÔó¶ĂFCÖž,ĽŐ noHϡ {‰`–' K¦ÝY‡Ů{’Ť}®ŻeďŕŢ÷cN-OŞbA_oOš9&•˘Bé—źWŔ µµµ4räH›’¬ői=7WëťąÖÖc™çÇ·äľłěADz4ň±âó'ß"xë:rőŕ÷ľ÷ÂwřA¸‰v\GŘîOkĐ;Č@‘rĽ÷W8U]¶iä Ţ32‘Ú4Ĺj<đ'—©˝ú—şěź‘*łâŘ“·¨_|r«wŚEĄr˛ąĹ»HUŐ–Ël§Ťtß7n¸ŘF+ąÓsx‡‚™L ¨p~xFĐČĐ?2Ç÷•”ŕ7FíęR÷y˙0 ÚFőöĘěÉEżî(»3ćěŚL[ml•K˝Ű«·W‡ţÖő^~ATĚÁ?‹sł)>u_ÍF÷dYgťEß/[EĄ|Ýz"f#ď‚D=ľ?Š8ç5Đ™ŤjţŐ8zsĎrśo‰z)®?Ę`źk28ĎŐą 2mźý IÂ9Ăťmî-¨ ě˘*Š óŁÄáý­Í ˛‘ÓŽlÖó®$ž „č hfÎđ:ÚÁ„8vJPp M™2…“ő–őuµT”—Í`9?‡xř3 뀅Ig'Ř`ÖzŐ;sßy{őj[3ďľ kő#Żʤç·ŹÇë‚ő‚â»đÁš±3kUuĽŁť ÖWŔ˛5¸lÝĆ™sÜg®8í˙8&Ę˝„ť‚űx7a=­ o„Ąňs«ň@ˇ8ďÔ´ űówP~éá ŕT(čŹF颓îâ8FwPYuˇŕâŔ­Ć3BŘ® ‘đĚ{SKGx7a~Kžv%PúlĄńq.ő 3Ç\%‚J‚¶\ܸ?ôa§%Ř×|굕ŕ ~çśW„ăěH<–çř>ńo(1˛ź…ó-9x¸kîtËąĎ Ý#¸(čSbô‡˝ťĚĎ|ŕ&ż`ęôŔÂą˘î‰+żfq¸SŹ+‹Ä‰ůO—iŔŔ»LŐîäč‡ĹCŘýŮŮ–ĐYóv$WÎíµµUo«\•-óÖGô=z4-[¶Ś6oŢL………Ľ0ś=§c)-łőĆoÝĎÖ9 ÚŽŢîďăÍ?PĽeżĽšoîÚ ÔVYîĹ*ŁÂ‚8oä¸*Şă-]ňć+Ű8s„§_nÉ8DC’c>Śi]~޲WÜŘ® /p¬ŢęŢĚߎmśIQü’9Ă1Ź~řAĽŠbń!C(00PÚ}CŁţζŃ'dfŽ{ Ô6TŃcň×0H´„ČŕwrPDxOwV‚!8(i˘ř` ‡7_˙ţ^Ág‡2|źWďüĆe|{ÖIĄ?ü&:e/Ősôv™>dj7˙MžęG€Éŕ" ŢŮÉ•ß9{^*Öó-ă4jB4{Łd/ŤQ{ë2\/ţeť@GM5ő­ÁX]ŃAi–*NPÜX¸xň&ŕŮŁî.pQ”ÍnĆA~z‡ €«ú±)Ȭ8a4` ü¶EqŇŠqd—¸rO;–çmKFĺFeFk7jgŤ?K*@IDATT¦öµUo«\ík+ß“_lz†ÓÁŚ›Ňź^j8ÚŹ;iŤ>–¬ZĎžŃţÔPSĆ /W°K€˛v”9jůćGże˘ˇěĹíZzw–@8J‘$ł $YˇÖ(á„g$Ć«ůyN2sŔ{Ă!K“™˘•híĎĎ!ŕ&·ÖĽŐ‹Ęë…w{¦6ńdîóŢI˝hć™–»Ějůů%‡ibę{x2ř đ€kTP‚жţ.¬Ç“2˙ép @ĎR×2đy\#€Ţ8Ę<ÎŹÇ$Ŕýžß9Ö/׋6R/ň(׏s[ß_٦3ް)űĆŤźöČ@Š@Ičl_Äă€‹Źš>űőćżÎEç%•źlĘDŔe±aɲʥŁ'żlĂ.I|Ú›ü}‚ ޶ĽĽť•OüţĽĂŁ„ ľAąŘ™vłŃŘfY[ x[ťś%¸Y»“ŽĆŤŢťůş»^gÇŔ _Đ Ě:űŢOźznuV„Ţs¨ C·‘„kĚ–ŁŢÂvĆĎĎ›ßĆP-Óą…ĄĚ+ŘĚouĺ›XŰý¬k` zĺ×műŇ$–F1§÷Dößľ/ŹfT‰yE "Ä{r˝’G…ř‹+W®¤ŇŇRš5kĹÇÇ·űŤąőśťwŐµv4łľűi`ç=oźA#S˙„Ńt˙Ąp`ɲ¨CŽ –=¤ŔLŚęO玿ÁB.q§ą˙’÷iţż†čžŐűňÚŻ‚[˝-d ˘ˇ÷Ňł`KަţąµŇ '`hTÁoP“śÁ|ŁúžBđ°~cń_»7b‡Y µę·iĎDŠ+ňůž™Ő&ŕéžś bä«ú±ň°‡‡KBD?‹1ś9źüTć_‘ö±h.đw–>Čś’/Xt×=őRKŰsx€t&•°Ž¬SżÉČmý{•ú±ngžźx0żAq26l>Ť ˝Ś=Űn“>ÖµÔöͱbżwÄZÝąŢÎŽďOٶӀâ" ŤĆw/Qpx ]xáy´vËv*Żd;ž=4›ëŮV¶ä‡ť  Z}ʼnƭÍUÂűĎl@¶ÁŤ(ŰpNć… ś˘ ęůŘš´I® e=Ay‚.śmpÔ‰1aËĂT)2ˇľšźI Ęk´˘žěýHÓO=E8şČvŤ őTźCy‡8ž‰Wîđ pěÄĂjđű çď¦ĚKć±ó5`¤sY†ŁÂ% ŚŁ,ëüŮuíbŤĽ_B]+<ŔŐď©ŃŚ §cĺŢj4wĘŕIţÉ/Ďé"öňsĚ´a<«ÓŮ~[°ěa˝¶ĄŚw¤§x¤ĂcÜLG_&~ôŻ>ů㢴3ă¨w˝wÖĽ!×H¶Q™µŞµ±Uo]/ç^˝zŃÎť;ińâĹtîąłŮ<ŠBüxűO sMÂÜsśD+n[é|‚m“ŕٶ4jŰĘQĘ!;üŽ ÄčPĘ/®¤}‡JŰ6lG Öôś"Zżű ęMă%ŃćŚ\úa¸XyrrI0’Ř MŚ Ą‰ÜĆŹiPľřâ Ú·oĆA4jÔ( 1ĽFÖÓ±Ö«łőŽúAŽ3m¬Ç3ĎŹ <ýŮ5ŕ÷Ü)·ŃMłžĺҶ´ î®X©ŮűłspňmKëĹA˛$µH¸ dWçm \Aި.ˇ)ĎsJÔ†ŚĄz»čĐ$zé¦UĚůJÄu˝a'dÚ¬;¶„ô/*?$oákĐ[eÚ™˝Flc”ç®70çüYcݶčľ1Ó2˘Ď#ąŞkĘ RđŇŞşű?3ôű 8Ď›xłĹśp‚`©“žC»sÖ3/ů^QŹ ťgŹ»–·É¶räűůYôÍg_őÚĎŰCťMéąŰ4Ĺw·^á7đ6*:! ~żŕÁůÝJq2ź)NFwş>ܵ!ő?QmwGz1ş°ŽúŘ«·Wg4–u™ěďáăGÍ=|(;=Ť‚#NeďćÖGíigžM'-ú–ľ]ľ†Ľ}¨®ŞžŽôdKťí{ÎŔ”…Ď8Đ=€BŚ% Űň˛8·'¸HÁ‘D› Z@šL­@µ,‘G9g6×9µ°K‘|D9F˙ó Ŕú„p?q.e`â=řť&ŔďŇš¦5ń&/¶qRűőŁąśoAŐX[ĹŢß™{¨îĎźő˘}·µ@ &żëňr~úXJĆ^ťŇĚĚşˇčŘč‘€ń‘ŕ7<ĄŹÇk‚ő5i´'rÍrť8Ę2ĐźH]Éﱪ?¦»Îť|×üťmrÄ:~ß˝đ±NżoźýR»Ű[Ë1ĎM ´W-ż ííf¶ď, Č›§­Ł;ăÚ’)Ë;S6Ćp5ÉůŮ:¶W®­&Uľ‘Lgę­űy{{ëŢđ|®bă/&4„=˘c¨ [ťNšů[YÝŔ<Áu‚%60űęÚZ˝#‹Ňöć1˝I(MŇ›b#‚„·7€ylĄ¬cOpŇÝ/†÷‰ŁÝ»wÓO?ýDĹĹĹ4bÄńboŃm%gô-ŰŘ’áęµ¶%Ď,?~4đóÖOč·‹ôÍžp]Í||u ŐTU[jń©®+×Ű­K˙žřxžţß›3I ćŕ†//ş“wqTYtmjn ·~¸źi„Zi/%Ž·hŁž¨íÔr{ůÔř‘z5xWnűT?Gfĺ¶Ďč‚Çcőô„´/»8â?ď@ đĽŮ[öý¬×wj7 NNĚŇG÷łź_ĎÁŔ DŮţ‚íôÔ'Wëőîdľ]÷Ž›Đz­áŮĽ#kŤ.»"‚âĹą«úČÁ>Őű ŕągş™–l\("ÖĂC ¸Ëzy<‰ýŕĹĐ g=%‹ř÷§‰^üú6ýkN÷µ»ż×ë›ęé]Ţ álZąís‚ç»LŕĚýbőËňT‡%Oµ87ON< üţ0ërt&]‘üÝ?(—΋±KŔo©mi‹Ř;ʶí=Ú“)ëÚ+Sm/eŐvíÍÉł.kŻLŁöŞLwęÝé‹9¨É?&‰önßLUĺ­ń$P/đ+ŻśG±ěŇ“ÁÁa+ ŚY“\žË#ž´u2'8ްŻů µăF Ă řZ¶í­ęĹ0/Ú@€oüĆř,;9ńţGs ô¤č`Ž'„B=iŔ|Fnż,f0ś·úGD„ŃśóĎŁ[wŇ51@Z”w˛™ţ¤™)đ»„_sß ?;PÄ|‘Ôß.ś«ëŔą™şFňzŕ(_™W=Ł»f6];Š\/Žr­ň;*żŹ‘ŞŁ®ťa÷-6,…žżţ'š:dŽřű6š!8¶_¸a%ĽŢ¨Ú,35Đ©°Ť>uę°¦pW5 o°öú[ öÚŞuÎČF{Wĺ«cudŢŮyË1Őöj^Ö«Gwë!kěرôůçźÓŢ˝{iĎžt>b$˙(ô¦ź6íS‡r‡ˇXTYEą‡ËŮ›;„†¦ÄŃ/[Řé§!ľ4yx {{ÖÓ&öÔÎ/Ş@µťŽ«z2­Éž‡iŐÖ}ĚwIc$Ňř=‰ `ăö1GyxpMÔ‹·ůŇ›˙ţ”׿‡üüüDPśđđ¶Ű€:BßęäUyj^mcćOL ¬ŢőŤĹÂż^ű:ác”ćłű4Ź`Yşń=˝ŮY€Ĺ(Ȣޠ% 3AôÝş·é·ť‹¨/sÖEÇ ZĐm xŠL#gŚş\ž2đ ç‘yĺŰ»€öĚQó8 ş1WµE>9—ŤÍŻ×Ľ&čJđ7ńř˙.§ĄŢَ˝§Ľť×Ą/iő>çuŹí7CHďKh™Čcž­|†d^Ě‹7ĽËónĄ«hRVëńŹ…óů3˘e›?ŕ—!Úvn\·Ą›ŢÁK+-9ÂÝYĎö«éęç‡ =ÖÖW‰ďCCc˝.ň˛Sţ®ç]Ő?ľ›Ř^úóVíE<¨oxi¬¸®ŰÓöý˘Ź‘?‚Ćő;C?7Ęś<ôB–<…¶ţ*Ş7ówćÇ-Ň©#.çÖ€4¶şnç1C˘D ×ĽvěŔ÷óoďžCxy„ďů6SĄ¤AŔĐS†_l4MłěŃ@aý*oȡż Ü×í)NŮ îŘÖŽdăëŕŽüÎú:©óVóŽĆsÔÖQ=ä;ÓĆhÎôóö¦’¦´çF2á /đ‰ÓgŇEłˇWßĺ—Ë €×đ=ż‘_~{ hŘípxÁ‘Ő<Áu:ľ'âYq1ëŘ+T$Ř•©%WóuĆ‘Áen«%ôĐÄiçš Y+›É#Ćp8.ŽđL?B˝#E,"ťţD>BĹUu´;—9Í˝ýČ/Ŕź&M™Ět/hõü[[YFY{vPe=KőađźÁn$ĐźhďµyÇjËZ0޵-"ĚCi@ýŽ«y üĘ#ęäG–uŃ»l¬ 6­\'F`¸ †)'r3içŹÎű‚źyň„“č÷ŔŢ+j ř¸GÇÔł©w4`ŕîhĎěŰ. ¸óĂŕŞá.°Ü»]‹li¬Ž7hĐ Š‹‹Łśśúůçź™úc4 ë›Ŕ€•Żî, ¬Ţ˛ĘZÚ™ťO©‰‘4uXoúěç-Âđ4’źaxzŹ$@jXoŮ'<9´°3®¬Lëł<âëvdđ;‰NŐ—ąŔ{‹ —QˇTVĹQŢË«xť±4Ž˝ĎłłłčŰoż@>%%…ŕßIŐuGČ3eśŘşU—.ÇĽěcúË[gčS7p0ٰűáË?Ą@ż0˝€3ĽĄŕy‹´|ó‡â3"ešÓ8¨<ţvŃşăőiŕťÄŞí_‰Ź>gýB™öâ=XËŚŃóč›uo ď´{í»żčÍq4NŢ /úšú CŠ˝“‹ÍgĚĹÎNvõşű‚7éŮĎ®ÓApÜg$ř=˛Ď4ި)F˝“"Ű4C`Î~i‘ux7}óű›męá9Żk™ÜŃ˙5g<&<ôĺü3r73Źöf)ZAkó÷‹Š‹ “›ĎůÝüď‰:€ôÚw÷ĐäAç’/ď €Çúů“oĄ/~Ó<µˇ·u{–čR’c‹ Fq”äwj÷Áő„Źš|Ľüüy§ć«ö3óÇ—"˝űSdD˙ăkQÝh5a_ąkżwĄ::b˝Ú|{P`\ Ą§m¤ÄľC(,š_P·ě^ňôő§y×^K›·î źO#_ż`Ş­,¦&đ°Í ´'é†!/Ap Ó0ľ[(QšůXÇ®Ú^Ś{˛S ô,ŞĹ]k@:cäü[Ě+9î<Ă«¨ŽAhŔŰ’ŠŮÁÓ»Ą;f!ęp„Wz żőŹ ¶hŹ a€0·éOę{ź?SźôMĄk®»šÂ'pçÜOöeP3ťŤ#FŇ 2÷7ŻI|WX w„Xó5 ŻŽ2/EIŔGSÖOG±N¦)˛öţVרęÇZOj»1 Ľ±ý,džz0×Ü˝4 ýâtŻ9ť°ł‘7PytU˛ż˝Ł«˛ŃĎž\Ô+ÉŢ\ĺm­ĹQ˝ÚĎź ÂŃŁ5ĘďľűŽęęj)‰·?öďMÍ5˝=©¶ľ‰˝®÷ł‡f%ÇFĐôQý„ ¨mÁ{ÖřA‚*eŰţ|Ú“[( ĺ6m](€÷ĆüZłý”TŇČÔxşŕä!Ô7>‚˛ Jřďďć;˙í·ß(33“ ‹‰'’µ÷·#}:Şw4}ô7JîĘ­n*˘]ß҆’wi{ů—TÖ E˝6Ë,ë>(ŞČŐyŚ»rVŞß˙Ks,ßÄžĆ/€<<Ěhg•<Ř?’®g €§î¤L‹±ŕ®ť”ĆŇCKĘŮw:˝}gšĘ)Ëŕ!~×Ü7(Đ7D‰clx˛đň¸ůěęĺx`X¸ü1ýĽ#3®‚)íťĂé#/Ł×nýť˝§çr„úŢ|ßô"č妳źë•íëiăZÚî?Ż[Ć:ž&d˶ŢĚ˙ŽÝŹ\ţ™  Îý# ë[wlKĺ8ęqhďÉb­*—·ZoťČ´<§Ž¸D/ĎăÂ[Ż÷íł_¤9“nnó==sě|±ĺŐ‡ůaťIđ\˙ÓśW(!2Ő˘yŻčôĘ-kh4ż2“©Ł­iGČŁ«ó‘ýí]•Ť~öä˘îXIöć*×hk-˛Ţž G}ŐKŮ^ě~„ďóé›V1@Řşłýú ˘Űo˝‘ú$Fó}Ţŕ1ŢÄĎÍ %päkĆyírY¦Ňb®l`wđZ¦Diâß]Đ”öčËź8Ţzę8š3.‰ćŚO˘ó&$ŃąŁ{Ѩ”0ňőęÁc˘äB¦6 ĚôĆ8,čL‘A>ě Ë21€Žúr^žż´ŹŽ‹¦«ŻžOăÇ[R·U•QƶMTŐěĹÔ/ľş×wO~ŽŽßuÁŢÚKńbŤňÄęhŻÎŞ©yꆤžĺQß8G^ž >Ö)ůÍĺzqD’G©›ăqýćšL ŹŕRę/Ůń¸ÄP˙ţý©ľŢŇ’ł  ˙ţ÷ż„Łł©3€cM¶:ßçź^PmřúúŇ=÷Ü#ŔVŻHöľîöęőuTřÁ¤°°0Zşt) 9Š˝·Óč‰÷W°×´ş;•`Śóş¸âtš6Şíç`”÷˝űíÜw<ٕޑhד=*Ć15Éł7ťÍ§Íôđ;Khů¦ ĎÓ©±śi˝O|8ÝxîD:}L?6b‰Çj˘ĄëÓ™'ĽžfŚíOąĚ÷÷裏ŇG}D§žz*]zéĄ-ÄŰÓą˝:un¶ÚŮ*G_µîđáĂôç?˙™Ş««U±"ŹďUdd$Ą§§‹€ť˛Ááş]ô}ŢßhGů×lük†¬K JgĹ=IÉţ&7­Ô‰yl«đŠçeСâ}„­a1"B:xń|CŰvPJŔ…\V]HĺŐĹ<Ť @k ¨+Ý łŘž¸/o*ŮÇă÷Ą>Đ0„é*lĄJö|Ţupďň(¤!˝'18śb«éqUŢĚ[`{2PˇĄ#tŢ#‘B˙8˙ăô{éş3˙ŃR×ţ<ćAGâçH©q#í^KwőŹ—?¸ŢřîŇ÷ô"x±Ň ܲďd>ý2ěáp™÷űđî"ÍNşţ¬ĐĄÓî}˛ďŢňýâG1ĄV/‡rĚdžţągĺ×î ű® >ӻݤËĘʨó+,,´°Ô‰.X°€bbbÔ"»yŐ^µŰĐ…ĘcQ¶ś3(ň`ż#]ËŇxfB t$ŐfĘ?öęő•blɰU¬oj¨ŁŇĚÍ4yĆąÔkŔpüĘş#M ôŃ[ŻĐă˙|… 9>OS} 5Ô–óýź9±fsš“ö/ŘB`_k%8‘5Z;Ô!zBO¶ý{đqHB(ME~ló÷`ŹkOv‡xcĆeśĂ^ŰË·ćp| \Ů"€o 'îěGçŤK¤0GnQXC‹¶”0/¸Ý|ó ôç{î˛ŘáY[]A»6®¦MkWSC@ ýäůA.'~·ś‰ďO 8¨Ťv‰Z_ŹoĽ‘`Ă%ôÇóÖÉ'źlTm–ŮŃŔlčŔ/ň8żŔ±¶¶VäëęęDľ¦¦†đÁ3Ô¦ÄۨÎ7׎äcŻŞ˙(†Ć‰ď$ľ—ř_đńń!///ýPPB«¶íŁA˝Ł)1*„r Ë„=89†|ůł|ůrAýđęÔ©â%€őV2 0śýÎB·h«ęë±>ď5ZË€§÷‡Y—Q}s[Ŕm÷U­˘W3N¦s⟥“"˙lÝÝ<75 4ŕĎŰ€áámíĺíŚzzöôdŔ]q ˇ»äč!N­ËQŁ$ćŤÄÇL¦Žu 8˛SśµşZGcŢŽĆ´§WűşÚOť‹”@—~1˝hëšLOÁxą¬Áż=xWŃů—Íî?_ů/ŐuŘŁ»¶‚ŹL… ô'üĽ¬Ń @8\z0ý‰ŞąP¦ äM=›©suź<$š·<)(ćü}°Ě"çčĄu”Ŕý¦±wř· 'mVđ ŮXĆőóěIcűFPß \&\›{Đľ˘júa{Ő˛3̬™ĽCę–›,€ë¦ĆĘĎÚGé[7QčÜŘÖďŮb»ĂăI|ßąL,kău›©{i@~źŐ#ňň\zwŻYwĚlÄ:ů{)×*×-ĎĄxÇŚfJ15`j +4`ŕ]ˇe'Ç7UëćGĂ–7vëąČóŁ1'9¶ŃQťo{~Ő~Frť)sFĽX&MšDß|ó ĺŽ;î ¨° ćÍN˘ŻWí[˙ś &đć Üš™OŻ~˝šîĽđ$•š@Ź_w˝±čwúŤéHęęŮâ…°Á;•_Öňůš]¨´˘š<<5׹±śk—_–%96ś.š>śBýi<{ž‡úŇşµkč믿¦C‡ŃŮgźÍ‘á#(//OxSaWDAAđ(@ů¨QŁ(11QĽMWż_¶ôk«Üެ]éŁĘËŞ^C︷€6¨Ĺmňx@Y”{xFŃčĐymęÍS¦şŻňKĐ'ż<§OpoŢV¦‹ąPxL§çn"v” T6 ę0“©S'®Śl ŐŽé*ÍÍCűhĚIß(ŻÎygć¨ö1’騬+űű…ĆRiYműm9Ťť1‡Ľ}[_¦ú„Đü[î Ň’búĎßĐşf¸ˇ¦śź 8$Ć‚ś0ĽßÁ{řć śqhNĚŁÍy ä> ,ŹęIŢěTćKl‹kŕ2Úy1xx¤±®ůÓ/&Ň˛Š…#Ž `“ŰaH‰ ˘´l‰ Nâ_¦6ř>1A4y@´«ąENCăÚr°Š~ŢSÎńŽĐĚÓOˇÇźz’ŘEMUĄ#gĂĘaŽ*žqÄśĹřlűół¦ÓÖg•EĚĄeNŞ\™wt=d;óŘyŔ5źÎĺčK–k”ÇŁ?#sŞţôć©‚Úe“ťCO\ąH­6ó¦ÚhŔŔۨäÄ)ŔŤÜ^ę.†°őÍŰş˝znŻŻ˝:Čp§}űöíKÉÉÉĎç?üfĚAc˘dXJ,mNĎeΰV#Pťłqľ'ÓŤŃđ>ńb^ŕbĂÓ†'ÓiŁS©®ůŰTöć¨ďžĽ}qú>ÇŕôćŚC”•_Ć\}Ěgë$ŕn<~k)ľF>Ěco“ęşzö8o @?Ú˝{7íÚµKpˇÁ¨-))`7xŇŕé đ¤¤$A}˛}űvÚ»w/}ú駢Ţŕhg/ą{=ěÉ6ŞË¨\FyµŰ„Öě˙ĺ´ö®i*ĄuĹď0ĘźZ Íś©SÝZŕ5ţúźčŐďîˇŐ;qp±¶ÁťŔŐţ÷‹˛wÜ„n˝sr¦L pd˙¸jż;’ Mv–l{c»Z‡ůÚëë¨Ţťľ-Snߏ¶oXK~Á”2x4óu·>‚‡DĆŃAé zmÁ'TRÎÔ#A P—S}C-ďŢô ó&÷¦IĂioV =óéf*Żm ©ýchö¤d fš“ŞŞzZą9‡2-‰s~űř@>ž+Ś,Ö#ě Î|Ĺ,7Č—ź¸}Ç  ÍXďĂžá§‹âüD!<ĚKjhőŢJÚś]Áń„Ľé‚óϦţď˙(ĘŠżş˘Śölůť22v1řÍüřڦă™ß1›–Çů]’^ápđA‚Ţń‘ő˘°Ą\ćÍŁ©U+ŇţGŻ|s—ľü…wďfşÓ@ýÜĚ05`_­żľöŰ™µGQŽ 0GSł6 µďŠzGkęč9;ĎŢš;Ş/‚f€;33“V¬`În>¦ôéKs¦Ą4¦ťóG+boŹşçâi4n`’đ´~ć™gŹŕ%—\"¨DŕAŤń‚™·ďÂiĂŮËšhďˇ"ZđĂzúá÷=LĄâľ'8f žđúžćXö$ g°99*ý„ č…^ŔvQQ‘ ‚ĽřĆ'66–ś×z۶mtË-·‚…îÜą“RSSW¸čÔŽÜąVކŮS±D41z”°×÷·Â3?b™˝&fť›z9Eú¤ş)Ĺěnj Uń©ôčĽ/AB3Ą‰@ĄđšëĹ<ÔřřjÁŮZ{ąŽĐŔsׯ/o!+6<ą#D¶‘ŕśË iSnt˝ŞŤŘuýL:~ÄŽ˛G:ÚvwĄŽÖŐ‘óu4–­µ¸ÚO•çŞ [ý<ýČ/¶m^µŚÁo/ęŐo({‚·:z†EŃMwßG˝z'Óżßx—većO@(5rpĚĆÚJ*ç`•ě±]V]Çvv3°í=ep,ED°%δ‡Lm2–˝µë¶ĺ Źq üVW¤ĺŮäfpY–k<ßx>€Ó hƇ0íɤQäĎóőI-ÎĚ(¨ˇ5ű*épEĹłý~ŐUóčšëŻ#˙x;BŐ唾y íÚş™}™óś×Úź z´Đť´`ß–[ć#ľ;Ü #żCrĄćŃ5 ŕű,żÓęy•öDÖą6J÷葉yőłWËďĚďpM}ۤ­ÁFń,n&S¦ś×€ €;Ż«c¶ĄőMÚh!F7jgúA–Q_Ł1şc™łk´5÷öö?餓x~~>˝˙ţűôŕŇä!˝)5)‚öd:đgc'@7Ď™H“' Đűé§ź¦çžÓřjáYž’’BÆ هzH«ë(=»˘Ăý)5!‚®>k.­˘ßwäńl­Ěąr8FîCçNLÉ1á”u¸Ś¶dä’źŹ錣^É}(…=ߥW¬nx’0ţ (Y`tłă8őďßź’““iýúő"š8‚dĄöę»#e”40ç°¬¨>“–ć?ě°ťŮŔu $úŤ3p×Őgö´Ł Ű/ÖN łŞ#50¤×äŽg(«‰)ÄĚ{˛ˇjŽZˇwOD;jÓč–;˛{ŚlpG}°PŁ~ÝR“rf}Ý,Š\•aÔϨĚb°–ďŔ0ćĎn M+— ¤ľ-čPĽüiÎĽk©wr ˝ţĆ›´â·MTÉuOoúj]íĚ*Ą‡+¨˘¦‘BĽ„ý Ń"&Ű×=ŮŁ»˛®‘wb6Q-ŰţÁ F”eR˛őܦ‰˝ľK+멎Uzđ Ţ`_Ű'‚'… Ú“ľsËëhăţ*J?\Ăň˝hüŘQtë­7ŃĚYgK©ú±Š=ż3ÓÖŃŽ-©Î;„zxűÂěçů·ŇťooŮëđ=ěÉč yÁ ‚1JÎęبŻYÖ~ ¨ŕvű{?=Ěď]÷ż–˙şn9Ó1i±ąŔn&SŽ4ŕ&üĺHĽYß ŕ&kďFŰ]ŤU{sĆú]™·#™Îʵ§S[cŘ*WŻĄŁ6¶ęáů .ppc/X°€ŕ±ťÚŻ?Í›1†ůď265 u,™ÇűÝČ şiö$:sÜ@Ŕ÷‹/ľ(›°çu•——Ó#¨\ZYC˙”Fď|żŽ†őŤŁ».<™’˘CąÚ˛7—Pňxl|ş’`¨ÂSd8Ý™|Wöazó›5´bó^ňad˝OB8ŕ±Â+<ÄźxśŠęZ*ި˘ŠŞ:ęźĹA:“)”ëŕů˝uëV• Ľ×­éOléSÎŰŐzôsÔWŽáŃŁŐSG–9sô÷Ś ‘ˇ;ÓÔl㢂Ľx‹­™L 05ŕ„š©ž&GŢěDKłIWh Ü»%úŤéЎ:e Gv„«6V§LVęČöquŢ!מNíÉ·W‡Ą»S隷˘ZìěďĹ»›iĂŠĹÔÜŘD˝ú%OoŐ-©±F™Ý×ń\~gGż]Ľ żMx6ë»?íČZMĄ„ ˛úĹŹ6ęn–u3 x7» ö¦ăčÇ^ ödŤşÎš·#ąFkµ×Ç^dąS/űz°»óôéÓiůňĺtĂä‘GG÷Ň!˝żoźˇ8 Vpl_ręHö¶$ř´Ń8ŚFń‰ŚŚ úÝwß-XľWnŮKď,fŻj6ŚwěϧĄÓ€žŔ xh ”T±×‡‘¦—Áö÷ń¦č°áńť•_L9EěĄ~„Ř5ămÝ›'vĘÄ8 K§řě)Cčäá)ĚîĹŔw=őÔS‚ú$,,Śdz¦J‘:ł5węő53Ň»żQ±Ă˛ÔŔShNüż¶305`jŔÔ@çkŢĆć=ąóőlŽ iŔ‘˝aÚîŽődO‡öę ŮťzG}µ™Űţ×Vß°ŞeŰ}ă/K¨ľ¦ŠúŽϜܖž‹Q‰}čş;˙B§LˇŹ?ú–­\KyůEÔŕăË R#޵ôĂ–|¶ďDŹ  Ă%LQ’~XĂ\ť^H1ĽëóHq5Żż™iJoń‡ăKEy-U×ÔSMC#EůŃ”(ŠňˇŇę&Z·ż’öTSNI=5pź`š˛ż¬łĄOYoM KŔßćëß˙…>űőEÝYť˙Ë‹î¤ëÎ|’ÎçŔěH{n ;^ź¦6ů[_™"ŽŻŢş–&Žg@ů{zîKí%xP ˝qűFşóőét°0]´Ý÷T_·g1=ýé5”*r€^Ńéé«  Z–áŘĚ`ô?ý,{ŘpŢŢ^ľ4ď”űčňSďW»Ńď]H•5Ą˘ě–sţEy Ô±úeýE٧ ˙°˙gď<í¨Ş˝żHą)7˝÷Ü„ô$ÁĐH•®>iŇ„§"¨¨OńC}Ęł<ËSQš˘`‘ň° ŹNč-$tH#Ţ{Ořöo߬“}'3łĎ™ąçŢs“˝“ą{Ď^{­˝öćĚYgÍš5ňëË_6ď0keu~Ď8×Ýňáý>!_9ýfëđ×ţź˙íó‰/ÁdmşîOýMóľ*ůíWďň˝0nČQrͧî­#ů[·m–Ýu±<0ĺ:ť­}˙×ĺK˝Aśú'yiúC¶ďč±gÉ7ţíOuĆ…ťĘD 8Ŕ+č¸č>*EżôË­f} ­s}a’gíĄňbô 8PŽ>úhN”ÓN;M&x śěxE˝§´qkÁ@lfţŕp9Ë8Ŕ7¬_gÓ¨üä'?‘îÝ»ËСCeäČ‘6Ý y·ÇŽk^FąE¦Lź+×ýíiٰq«ylQěKnZąD‚T™Ç [’{d‡1Şs•T^^°ŮŇD{óf÷¦noňŤ·k˝ĂĐ6óĐßşe él"ׇ™4/ í'G·meㆠňĐĘŹücyć™gě9ÔQGÉ A¬¬8lăúŠŐ9/sŚępr¦ÇćGu8ĄXø€@@ šŘj_4†¬sg…¬1tÎŞk”/ĎÚ‹—50w«Ýdł1Î_~ćqٰn­Śp´n[mlaÇܢJö=čHľď89ééÇŤíźL~öE™gŢçĂ“’[LůCo­‘ćo­0)O6›\Ű&É ±˝ßžżBšfnF÷±/·\m˘˝['6I;¸ÉŚŰlR›˙bš&j±˝ĚY±Ež±V¬Ţ"k7n3/Çl!=L@ÍÄ Č©?M?âHi]Ý> żIç˛UV/["oĽř„Ě|çMůŔD®îŐ¬eÁy­ŽoÖ‹žsŤ­ö§‡ůmc~iI;ó+•ę€@Ą!đ§Gż'™ü“DµČő}í߯0żˇ{Ęűś™8.ŤŔgç{9·ŕvÇ>2í6ůîmgą]uÚď-~K.»î`ůá…˙’Á˝ö-ĐĐű·|ł°mđâŢ›Ť“ą}Ű.ręÄř§íîéű~ť(/đß˝í“ÖQu~3ö‘i‘Ţ&űâăľeőîő=cţ´Řq/ÍxXnĽď«rĹ©uÖţßďOł7˘L›·n’źÜs©tć%żˇ49‚ĽÉ˛d…}Bšq‘,µxJÖůłň«ň}s$ÉĘĘçĘseĐĆQ|ě±ÇĘSO=eŁŔż˙ýďŰHđ}MŠ’?q˘üĎťOČşŤĆÝab4N3P.ű¨ąĂkîş>ţřăň›ßüF.ąäë<5j”}áĺVcŮňä"ă@îŤ9ň›űź—…Kךü‚DQ4“±Cű'ú‹/ĐaËS0`qÔ·4Ń Ćž•‰#ű›/Ąö2×äß`đD}W·niĺŞ6Ź µ—nťŰ™|[mŽď7ßxCîĽóNąĺ–[dŢĽyҦMÁůÍŤŽ;6ęńJ¤ŻyD{xűăĺí5÷' ŮĄżk«Á&ýÉżíŇ:* ćFĚűď×>NČ‹YIÁ“µlÝq~+?O2¸?đ´?Ô€@iŢ‹GSşté"<íJ@`w@ŔµăÖÓ¶{ÚÜ ˇ·oŽ8Ľ´//2\~·­ňÓębÇWµë$›şŐČÓ“•‹Čľ‡#ť»÷Ş“śyZUw‰Çś,r„ĽýĘyü±Çä©g^éłŢ“«Ö‡öăŕ6v˝‰(ĺe–[dĘĽŤ˛băbég˘Ăů9AŽííće”&&ĆFŤŻ1ŽîµĆ ľaóvĺHLséŘľťŚŮO&š ścŹ;Fö?AZµn»ÔM×Éâ93嵟”EKVČíűšß--,nuěócß1ôń»ÁőXÇ·ůá`Jô#8[´ß» [¶n”[ţNa5ÇŹű”‰ţ†ôč4ŔĂ=oťŔKVÍłź§ż={u€ę5Fľţ?äĹéبqeţöŮwŘÔ'ýMJŽhY±v±¬ńHˇ»cuWóŰ˝…I ˛V®˙ç— ýD^wŔ§L*ĂĺńWď´N^^¶ů?÷|F®ýĚS…±Mýsˇ]Ós”śüˇKeIýAÚ•_ýă‹ć¦›ąłf ç$8/—'ĄÉˇŁO3Îîr÷ÓםÖ[ľ×çRÇů]ÝÚ< ctŘ}¤Ľ<ëQů˝8’ަ ,4*ŇÎśŠ^ĘĎxĘb”CfC žGď4ެ4ÖśĆëŁsěp´}ôŁ•_˙ú×ňŔŘúsźűśśd^&ą~ó&ůý˙˝lrJm4QÚ{ÉŘ!}ä+gfî2¶–çźŢFL_zéĄröŮg›Ç ·Ëjóă˘Ĺ+M^°ŐňęĚňŚq~ż1g‘q†›(Ž–Dz·Q{Č%'(5˝:Ű—On5ů˙Ě"r>Áb˘»[·®˝ŚŘе­Ôtog^ĚÓÜb„Ó‚©l5/Ř™kśŚ804Qß˙űż˙+3f̰ó÷ěŮSŽ;î89â#ťŹyđöźl¤ÓűýZ~1cĽ¬Ů˛‹K>±4ß«JÎđgóĂŁeâ@h|îąçyíµ×l !Rĺ)ożý¶}ą­Ę¸ě˛Ë¤Oź>ş»Ç׏™íŹc÷—î˝ű%-Ó˛l‘u«WȬצXgüó˘Ífťűš MgRëŘVű8ÉńťŔžĂ›: Ó4ZTvŘT3L­“>„Ü×}»µjîSsśô·mz :Zš´¤iߦ‹Í=˝|íB;N˙8üxiSµëJoiž$ąňŁ7ZgsuëN¶ű/“T'íÉŐźĽ­_űQ§™'µűĘmŹ˙·űÚś§eľÉO®ůł‰ ×ňő3o•a}ÇŰÝ1f SL$őä×î¶ű3ćOŐa»Ô˝şÔČĎ.}̬­6Ç8yĎŻýŰ…qă‡#ל÷żfżöz˛Ć8É{寖ľzýró"ŕұş{a|1ŤćĆrÍy÷ĘČţ˛Ă'Ť9ÝĽx±Ť*§cý¦5˛|Íă$ďmé¤yŃÂuě;çÜ% 9Úvť}äU&:˙ň:tęĘG 8Ŕ+˙ĹjčűâĎb —Cf¬ňőÜéÓ»Řé|rňŇ]=xtńĂţ°}ń#‘ŕ?řÁ NńO~ř9°§Ľôö\éұZŽÜw°É×ÝZfÍš%_˙ú×mÔ8‘ŇDsĚ5Nď??ř’yyĹóĺ´FÖmŘDŢ•Ťa[%];µ1/Ń,g±ŻyYCű’Éćć-îxnńď4]íŠo·19ŔyyQ´8¶§NťjÓ˛´kg˘˝wĽsѢE2ţ|ëdÄľjŐ*ë 'ę{ź}ö±ŃđÇßĹ™QźxÇ­Č'?ާcË~réŕGĺ–wO‘Ą›jřqăŞÍ‹/Ďx‡ôoSű%7&ô5>8ľŮ(tÍ=ßřZíľÔŢ 3ág¦důŽj Č4µ5nܸŃ^żÁ–'*ąđ˝ÇMcľCî»ď>{ą’ő ş˘ř쎬×ĹrÉŤę_ßű®Ţn»”y||yéişä•­ü}ű÷—µć%ńÓŢť%Ë–ß%ŁfĽ%#Ć"Ýú4ąÁ[™Čjb¸ÝŇLşö ł{˛l\łRÍ_ćľ÷žĚź;Wć-\ +—­”Ők×Č&óDéÖí۬3˝•±×««ŰI—Î]¤gď^2`@é?°Ć´űIŰÝ vi“îdÓ†ő˛ŕÝwäíi/ČŇĄËe»‰&mf^v‰˝_úŢáÄNr|łfÎs=×mmx·żILE”xRQĚ’čˇ? ĐhSŐ®Žš?»÷sňäë˙+ăŚăgřńă/&\\gLÖň7îü:ěĽđRKź®ŤóűXݵőI~Zn7NrýĽő}ŢQß´©PýAÝĎ'ąĚÉçMTôÓoţ˝ g‹‰ O*ĂűŽ+8ż3Äy)'ű8ő]'Ĺđ~ă pčë6®*ŮN„Ľ:ż‘Aáeź¤UŃ -ŐN$ľ–ńCŽ)8żµŹ›DŁkÄ»ö‡şňđĘ?F»Ť†zÍş 5–˛đçť;Ëśđ¤Í‹ř“źü¤uhă&útíÚµrĆgČÝÍcH˝-?Îĺ—M„Ç5×\#DöîÝۦO9ᄤw×&j|´ ěÓEřšő› ĎvórÉVŇ·{G7¬Ż ë×˝6íČ›oĘâĹ‹e’y‰Ť Ô@ą¬Ë*đUcşmU•¬^˝Zîż˙~ąńĆc׌!LÄ'ß›7(Oś(űďż˝;Ó0/(žŁŃŁŐHůâ°iňÔŇkĺĹż“Ĺß.HëزŻIyňI9˘ÇWĄşyiw¦ BBŁAŔŮ÷ŹüĂÎĹy‰<”€@@ r4hô5‘ФÍzá…düřńŇß8ŽB Ę@}ÚSĄÚđĚ]źó—‚PcĚ;lŘëHž1÷=Y9ĺU™3{¦ŚŘg?4zśtéŮGZ´4‘ÖĽ»'¦´nßIgŰǡn—í›·Čě­Gđ'˛™ Ŕ! ĽŘ˛ÝD|oÚ¸A–Î{WfżńŠI7[¶4o'{uěküSµ/¬´Îoó“Âc6é7˙ŘŻ“ÓÜěSjű­§o·-ŰÍoŰo˝ŕéżźj9Â߀@ÓE`@÷ćE”űň`ăD}ć­ÚŤU‘ŞäĐŃ•Óý‚ÔôťkˇăvD-»BôĹô-X>[ŽţF•K¶m÷:8wé;učŻô!Ľü›®eÎâ7ëDł×°ŤŢîÔ®îof"Đݢ‘âÚÇő˘Ô2°Ç¨]X:<ĺnŃ5Ż^żĚĽaUTÓs×c@D~ĎNcó«CŁ"đ :,|čô‡ZÖȨź+'NDŮ>™:OŮĘŰXuŇÚ’úUO]ÇĹŐŕÄŹwry˙ň—ż´?꯸â yřá‡ĺĚ3Ď”ššYż~˝}Aäď~÷;yçťw¬'ö·ľő-ŮbrţqÄ&ĺHµyüh”ŤŞć1q záŕŰ´i“Ě5Ń O>ů¤üęWż˛gŕ¦yÝßDk´mS%mL ”µ&ĘdÍš56Ç>î‹­Zµ˛Nî~ýúÉŢ{ď-D{ăĨ2Žó¸’†i-NV\_}ČhąW[9˘űŘmý¶e˛nëiÓĽ“´kŃ+nĘĐW<űěłöĆ Şí·ß~Ňľ}ňăĹŞĎąýµŻ}­0ś'!B ęĂ;Lnżýv+𡇒 .¸ ţ„I `S¸vEŘ•§JVŮ>ąĚ•Uvśž Ő—´®¤~WŻbƸăµ] źoLü‡7)Ścgţ‚Ų~ŮVYúĚó2ăÍ×eđđQ2`řéŢg ÉőÝĘ:˛wŤ W µ6ą´ÍŘf&EI©…<â[·l’Ťë×É’ąďĘśŻÉ˘÷çɆfFžqL5oŢŇ:ë­;{‡ă{/óôiíď ţîú‚K]ł:ËĚšő×yż)IçˇňŰAáO@ ‰#@ţę˙2é8~|÷%&§÷»¬fŐşeňĎç#Lů˝|ń´ëĺ#ă/ÜeL±«»í2”ÜŢZřlm3Ox¤•Í&gą–ŰLj›î˙şîjśÉĽ‡xąKŇu"m^rx[V™Hp·tíĐŰÝ-´«[§?9S…@p€WÔᨫŚďË>ˇ_ghО}:ł6Ćë¦ëvë4yi4d¤ŃÓhQ^Ö#GŽň™Ţzë­ÖÉ}÷Ýw 9+$*G2/‡$eŽđ7M4÷…^(|°ŕ3fŚu*węÔÉ8ź[ČJ“Ç÷+ŻĽbęäÇáLÄ\}ŚÝvĆ^Ýş•,_>ß:Ŕ»wď.ÇsŚŐ‡yp„ăg-Ôîń‰ę‘†[VšÎ‘ÄOMy}uŰć]…-”¦ź«É“';vlˇ˝`Á›bA;  mŰÖ} i#Ţ}÷]b_ČÇKůxZt?Z™Uną…ąçĚ™#K–,1Ź/µź ^ĽÉSĄć _¶l™•|>kÜ`âĆŘ«Żľ*¤â%śÜxBŹ´ĎµĽťxÁŕ#¤k×®¶OóCŁc©úąëNjsŁ<Čí VÜs®yIeĹŠöú~<}ÂŤđGď(Ţ® đ"O;5ÇŠë×,®«i|oRPqn0Oá€+µŢtt牶rŤ\ĎŢ3ŹÁ/\¸Đ>ńÓşukéÜął˝ńXęMÖŤ· 8Đ\ď—Î;hC‡Ý‡·ŢÚ™#’sŞGŹ1˝îrNqnńąá»Ťă®śł|çEËčŃŁíwŮćÍ›eúôéö QŕQ”Â~c" çv’i×â$íoŞ˛Ńß§{±kL““F+F‡4ţ4Z}ÉĆ9ĚőÔėȲĄËdŶ*Y·r›,~iŞĽőÚ+ć;¸Żô:Bş÷3×Ç®=ě÷d3Ő˝—}˝uG+Ś%Ő¬í“&…節ć=D+—,EsgÉĽY3dąů=±µeµ4oßËĚWU›*Ë8Č ‚Ůáń¶s©óŰ:¸wĚŽ\=ßăß8ż•® łŻ}i§ŃTV¨•Ś@ĎÎ5ňŁ‹wżn_:ůüŰ÷ËŰó^¬ăŚ&2śô( 9ĘFgYOł˝v}r¤§yŮć’Us­¸ýO’3ýRŞhu?k˘Ô]ç7©IŽ;ŕ<Ůď#…ë›î˙Z8ŔS•­"/#uK’S_1tdžvĺ#ü łňußă5ô}ů«‘¨¦*Ű·VßşŇči4߼Гřq  6̦@ůż˙ű?űh7Î+ QŽ!ŽśD{Ź7Î:µďĽóNëä % Qp–89ppĐ&r'Näłą×®ŮMĺÚŐ˘[{“gĽŞßDĺ@IDATmë–2ĂĚĹ|8Üp^±ž´5×JHƤ^•‘T'á]˛“ć ýM^ŔĘŤ% ź‹ššŰćÎ`n@i!ŐС‡Ş»¶ćĆ/rŐÂÍ(°8˙ô§?i·D_‚ÉÓwÜqG'ya°iđrÜóÎ;O¸‘UL!9× k^Ś{Ë-·"ŰUNËO|â»ČĹĎZI±ädžvÚi6§żľ¬–›<™RźÓĽ‘§dĐ=Z¸ ŔuňČ#ʬC‚ŹMO?ýt,©pxo\ś¬wÝu×.2×ćóĎ?=ÝÉjŤĚInlÎ/n&D 7řţ8ĺ”S Î…čwźďÎ%Îi-ÇĽý¬¸ç´«®şĘŢ„ĐqÔüăí i~řá_Ú>#ȧpN1Od¸…ců‘Ź|ĦĘrűů.ăű':eÚ´i! Š PhW<i¶ ĘŰ}×CčĂ Ž¤1Iý»ÎߓƟFKÓ)~¦ÚŢ&'8ŃÜěýŔĽP}Íö˝Ě Ú>ď-’ŮsçI‡¶­¤{ŹžŇĂäďÚłŻ´39˝ŰVwfć:Od¸Ť¦6üĆLç„Ú9Žn mŇŁHó¶m7ůk·ČĆu«eÍňĄ˛Ěä_¸Ŕ¤`YľB¶ěŐR¶WUKłŽý¤Ą‘kŻŮĆń]pd[ŃF¶•OÄ·ť¬p8ŹíX·#âep|CKĂ/ŽׇĽPM 9‹ßňMSŞZ´–Oő-»mŘĽF^šţÍżýúśg,}ó–ŤBĘ‘cö?×î×Çźţ݇ /·¤¬YżBujQb_š±3Z˝G§ţrígž¬“Ë{ŃŠ9EÉÉ;(ż#]V-Ű N˙e«ŘÓf=n®•͵°uńÍ÷ź5/ͬ$R †FE#ŕtxřbŹűrĎc WĐňD•$ Ë9yÜ1+u>Ž1Qr˙öo˙&'žxb!B§Ńm8„Ô}ŕZăg΋/ľhťi8ĽqvălŃóE#˙ČąŤCíŤ7ްç_Ç:®T]Ďš«Z4—vŐ­Ąµ1Öq~łˇ/Šr–úŔ»śúŮ•Ź€ľřMq¦ąç,OSüío+8čJŤ:ŔŐů?Ń«D^ű ‘Ů×_˝MK”4–hŰ›nşIľôĄ/ĄF@Çń“î§HPŽ"¬Ż»î:ąňĘ+ëD:ă¤tע|üĐĹÁ_Î.8°yˇˇFëÜÔDŁ/OƸŃ÷Üđăe»IڎĂóˇí|-|O<ńD›˝vâg˝DkáF‡¦ŰĐ>·ćz{Ă 7X'87/˘Ą!×óűżř…Ť ŽęÁ>Çôąçžłçß1ľň׿ţµŽó›ĎŔ¤I“|l%ÓIĎĺ>5ˇ8–|9Żq »çž·ŻżţşśtŇI.9´ Š@šÝ™ÇÎjĐEěa“5¦YĚÜŘŇ÷,ďΞ#«VŻ´Îĺ˝öj!Ćý"›?ŘËĽ0s»,™łXfĽ;WZ™_ňmŰ´–í;Hç®ÝĄşcgi]Ý^ŞĚÓ™U-[˘ĂŤË[>زÍ:q6mŘ(›Ö­5öÂrYeßë׬“Mć;y[ł*㍫i×Ű8Ó[ Ö<úňrgu|ŰsÚúşůłÓń­§t=ďmmîµÔBžo3&ĺSYˇě®üëĹßÉ_&˙Ř.ŹĎÖ_ľ6Gşuč'mŞÚŰÜßÝLŽýĎür§ۢąůl&” ›ÖZľrl÷>;ź|ť˝č5™üÚť2iĚé…±“_»K~n"ϵ\~ʵrř>gČěEŻk—™ł]ç7ył§Í~Ľ@/kĂ\CĘ]&?AţůÂÍvšyËfÚt5ź9ńÇŇ©ş‡ŤÚ˙á_/,· A~™đ2[ b㌠WŻ<†FS’Ť®iúfĄąX¦µ“äÇősLp¨á„‰Ł3_”D{ž|ňÉrôŃGŰ4 <ŇO¤Î$ś.8ży|śEŤLĹa`ešď 5ěw†i†[›ŞŇĄ]iŐ˛ąŤ¦enHîIşëTyé*'Z—Kntž°ßtŕ!…–¨ă’Ď©4ÔINŞśqD¤Rř|ńŇZ-ä/ćZJJśy>ä#ÂŮÎŤ+^č§˝•+WÚTĄ¦uĐvÖC.rŇWŕÔ~ęGyÄFŐ˘)=tNöY7éH ŤČot)Wá5× Ň]đÄď#nćQĐ—45Dk!ÚW 7ö¸ČÍAnüóź˙,Ü´ŕfź:Ŕqü˛n-p€Ťç¦ i_ţň—żŘČiÎ RE©śărß}÷)›Má/7L87ŘÍ ‡{ď˝W.˝ôŇÂXm4Ô™Ç?éC´€é¨QŁl8*í©§ž˛©łxb(©đit´đ˛bž„(GÁůMúôĺűŠĎ›űůâ渻é[ÜĎ,ŽŇ}‘’&”€ŔώaŤĹ|çÄaᓝU.s•C¶Of=Ť‡M´/Ť?ŤV Ńątß•‹-]3h Ě›ŰÂ~GY´hs›üÁ›Ť!ľµYµlnŢLÖÇöňĺMę™Ňb/Ň“l nßuiÂ]¬xţ~`Ś˙íŰ ŁI‰đMťŇŇÔU˛Wó:#łą‘Ĺ÷6ľ:˝í9 Nk(;~ÖDwiź«Ún›'x‰üíŮlş>[˙uű9ňŕđ?ʇŃÎ/L đbË.&ýŃřˇÇXľľ]ö–—ä!Ű&-Č_&˙HxÉćK3’ű_şĹDD/*Lµí]źÔ,›@ăücľ-MýłlÚRk[?0ĺňŕË4/(í&+×.i+*&!ŕIČTP1_úICÚ2|rłČÔůS¶ę@ť¦G9h:w’ě¤~ĺóéĄă´â‡żţřŹ“ŹĂŽc ‡ ¶kłćĆ5[Ö‚ťÚÚ8ŔŰ›Ç0ÉŁ ÇQě©•§›;&‰žÔ_ ŻŽ)F†Ž őîŤ3u˛˛Ň¸(gŇ}¨śĎ aśĘŇKŕŐâć׾¸šhb-8űH1˘…Z®3§`©pd‘Gü˘‹.*ü€$j——ßâ §<óĚ36?¤I%˘…}ҧh$ű&ŤŃ—–ĆŻ4Ő˝űô–KZČšŐĆ n Žhăk˛. đÂľWç´ĄŠMuhú­cmíĎxú¶›üßVéWµÖĐŐÁdŹ“ŮqÔµüzś 5Úěp|Łó©<ö“JßÎQ;J×Ç“F‹ú•ŠŔ×θE÷ÚGîüY»±îot&ňú“‡U>vČĺu–Сm7ąä#?”ß?üY·q×´‡u§ě ď7An˝ňMąŢD?ţę]»Ś»÷rŐ™ż—îűhD_ů±›äú\YGç^]j䲓~fü]äň&ŮńŘĄxř«kA@=5ôşQOâĹ=ölŇ{?ůÝß’wć˝$KWĎ—15‡ČA#N”Ć_$—]H——‡Ň4đ¦qśĽZć5ęBâ]HČ‹mž%ŐÇÜ[um5/»Ůj˘![ a ÔZşt-q~wl×Ú¦1Ŕ©F¤^Ô^şÔâ~Śd‘x ŕFő˛u¦ŃÇNRaŕ¦ŕ×â:Ŕ‹ŤţV^"±_zé%áĹŠ8-5=‰ŇóÔüĐ$…D´®ph8”É‘­QáôĹńq€4!Qç#ă룠/éV˘g·[¬vűH‘ÁK;I{AnßÍćŕ&…:´qŽ“j…ŤŁGŹ–C9¤अëŰŐW_­»…Ú˝>ÇáÔPktuE9np¸…ď€Ă;ĚíŠm­[¸TŚĂĺ)µí[ĺĺf/TÖüđŃőqĚĐKťţŃĎ´Ę u@ ŇpŻ!Yt ¶{R’řňqłV¶¸ňŰ/Ľ×műţđĺťżßâ?îaK+5=ÇČžS{`»IëŇ̤Ş-ćĹÄkw¦|éŇ®îď—4™Ö¸xăâ_gv ‡4Ă© 4}Y\Vť}r¸bĺűäůč:_´öńĄŃÓhŃyâöÓř]ĆŻć/Ţ`^|cóxžppďd^€ŮŢĽxgÝş•…ş8qśąóGuOŁEÇF÷}Ľ>:ňŠť7ěď>¸ŃÁ¬Š4Bqç¶:ŔqŔ±qŢ«Ł“6ůż‹-üh奏Qgr `_|[¬¬¸qäHćGr´đ·UuĽó޸’„MÜŘRűppĆéKj· ŻRsź:ZpríÁ!-\˙Î=÷\ąçž{썇(ť'WH±SýÔSOµáŚqťŞ\3|Žöčy…چZc4:éx˘S)…s•—‡aR┫$EŁăÄW¸{¨ä ×'44eŽŇBhH¸>¤Ů\ă+­¤é‹®ytöÉ.EľO–Źž†»Ź7‰žÔź6W”–&#‰ĆwY·n]Í;ŞdőŞŐµ) Mg—Ż˝Śmݧ›:­í÷¬ńG!W#ÇŃgŻOÖ:ČMŽoĂĽ—É^ëľÚŐń]Ë·Ă9ÎΞÚ&;&ÝIO—ć„qG±ú©ňÚéÔI¸8CB3 Đ$ EČČţ˛[) hfňöwn×ËnĄđĹŤµr†ěú2÷¸±ôµkÓŮä?6‰Ľ[ôßőÔĎeÉŞÚ§eą^^pĚÖą!1eĆĂöć.¶Wçm†şÂđ ?@®zĹ|ů«äňÓöÉ.—\tË*^źŢĐ“Ć$ő#×W|ĽYé>>ôňŤ‰ŁcăÇa°yó&c î%­ŞČwë[i<˝…1ş;™`¶kS%ďĎ_nťzDăĚŔWâôrÇĄŃÓhČČKwőíݨsPťhŃU×ÔÔŘó™č_ QŕîµjĐ A6t”/i˙ŹücÁůÍg‘´¤U!×7)Šľő­o%±ŐŹ#—Ď«#ŚnJ öůŚŮí–8Ç1ô¨cŐĺÉŰ&ź)ňŁďyóćŐ­şyď:żIĎÁˉp'2ZŇ:qÁX:yÂ9–Ěă:µq`“…tŚgÓős¬ŁiEę(ivÜ—4*­ˇÖŁÝ-8ďŁQŕ.=­MjpÔúĘčç&MŽkŤÎN-z3†>ŽOHhŃs@÷©ő…˛´Łç}ˇ*ź}˘zFŻÝÚźV#»’äęZâôvűh»űĘGťÔďŽIjűxóĐóđúÖĺĘćf/6×hnţŮčkáĆůĚ8u.SC+8©ÍĆčů@mŰ;~0ž¦AŢö«™I<ôńÍU7Úw]:G-ĄöŻKwűC; ”"ň˙úÄ˙¦™µđU9|źÓM„ü`™>˙eąőˇ˙,ĐZšô'“Ć|Ľ°•Ť@p€Wöń)Y»bŚ…8#Łä‰ę‘Á§s}ę뛋e%ŤIę/Š<üyy1–‰ćÄ1±iÓfóňŚ*óKóöwkÚqđTµhnŕ­Ąmë*ëÔ#MŽomÎčŁ84ŐÉÉ‹=q:rťĐBŽpűŇ-í(C=cĆŚBĵŠ'µ[ôĹ’ŚŐÂ.˝ôŇ:ääŹ+`˘‘Ĭ›<ÝlD#sňäÉ…›`HŽ-‘óĽÜ’ÂM’‘#GƉ÷ö5ÄŁÎnžRpűX˙oűŰÂősĎ=˙t<‰@´ü´iÓäî»ď¶Ýŕtß}÷ /ŐBôµ[ŔŢM%”t#ÂĺѶëčÖ>nÚ¸őŃ(q>O®=ú™V9ˇ4%|öH}ÚÂőKCę뛋ő$ŤIę/<üĺâĹžçűzÝÚu˛aă»Îݶs‡·é4‘ŮěÔ:ŔíądĽÝÖAŮĐjýŕµtxŮTžÖv|vĽ9âŰ*ăüA&ĄĚtŚÖŽĐ ő‚ŔÇţĽyIé& Ľ60çů·ď¶hÁů}ů)×&¦Ś‰ŽűŤŹ@ö·ŕ5ľî»ť|‘ëVi‹S˝’ęJÓ·}˘k*…×ëĘqű‹i+o1căĆ(?u\!ś(A8sZ¶lfówgđ /uoeśçD€·n٢ŕÇůŤ#BŤŘ8=˘}>˝ŁăÝý,Ľ.OVű!ŤMs€»NnśÄęLĆ‘JŽđbˢE‹ęü¨‹>%ATr}”{ď˝·NT3Nl÷e—8u5ZX_ęÉĽ¤ş E:Šq`Ţu×®/Ä©]¤qÓ[§ŰŐ·oßľ…Čj0ÔÂÓ&nú®iź¸BÎuRϰÝpĂ §?2FŤ%'ťtR6•ۧOźB?sGŹyŐż˙ýď¶(]™bŤŕä^wąiă^ßHď¶ .´[Ôˇ¬şň˘OÎíqăĆŐyąë+ŻĽR8÷«çňą7‡Şřᇕä­ÁŃÍ«Źc[_‚ŞĚ555Ú´µž§ÚýLk¨ €kW4Ä|ĄÎáę×.U^ĄŚŹ®%«^®śReäáe®RůÝńÖ®oWmo>â ç; ąÉóm_~iÚ6݉IgB*hl6*ÜÔŘţ…¶Ů'°…qn„vŹö1ž¶Żčśî8w Úď“ĺňĐ% ”^ťÉĎ.yL}š˝¶ĆÍׯŰPůůĄ“ĺ¤/‰#‡ľ E`g¸W…*¸§Şĺű‚÷ i¸•C¶O&údŐŮ'Ű'~źŚ$Ľ||>:rÓĆdĄ©ľIüŃ~ŚZŃÇŮGTgĎNÝĄ[ű¶©şéŃÓłşMKéÜŢäúŢ^ű¨:‡5ĆI<:w”ź}ß$zRżÎáŁë¸PďąđC‘´#ęhM‹V%µŽP˘T]Gí#LÎşQ°işŃ¸Ś#Ż2łČÄqŠŇ-nt«Űďk˝ü˝ď}ϦVA6/Űt#iŹ9患Ž:J¦Nťjˇ¦ŘÇą—–˘ŔXŹ "}ń‹_i7Đ÷Í7߬ŁďNîi0Ô(pŽÂGß”)SęD«»×Aٱ¨ ®·Ţz«tĐA…'8ȵđ]BjĘ„ äąçžłQőČ»ăŽ;,>´Îv°Ő*\[Ń%®4Ä9OÇŚ#ŻľZű" "×ő«_Yť8ĎÝ›ĽGwZžR¸ůć› Ăţţ÷żËç?˙yë áZďŢĚÉąC­iÜ1Im°ĺ€;şÁď~&y˘!złÉ}b'PTź¤ąB@ Ü¸×ž¸ą|öjŹö•KvšÜręËş|ňÓtS\’joz^ôMâOęOZŁu‚›ë.7.7mÜdż?·ă 6ľiÜÓŕ«›•‰>ăě®u#kĘF×ę˝ŕ·ťµ<8˝‹MwRgÎrWtl©kŹ“ú€@}"Чëůîą÷Ř—„Î\đŠ,]=Ď\C›É€î#ěVÝşî{‹ęsî «|xů°-«dꎀA‘µ”KvcÉ-ľµäˇçáe­qüÉ8§‰ôd0xôčÜÎDQ–~ž żG‡jéŃ©ťÍ‘‹Ç:ŃĄIŹ˘Çé=.icŇhIkŽĘOÚ÷ÉNâ ýM}÷Ý·ŕwťq+"Ďt4M}ĄśÝ8qšRćÎťk#’UF÷îÝ­ÓYó‘gq@óÇY®8˛Ł…ů]G")P>ö±ŹŮTúA> :7ąµŃ‡ČáráĆqŚ3S_6ęÎ3zôhˇ­}DăM­7ţőŻ)Éţ Ç ®ÖCť(onV°nułMďQ°ŁĂ]ŁŁąQrĆgČM7Ýdĺq#áŤ7ް›ËÇK?ń‰OÄľLµˇÖ>ÜÜŕ\ÖăÇy=oą>źyć™/w qmrˇó”€Fg˙ěłĎĘÁlŹ74R›óFĎmdq’Ł;)-Ť;ź7Žť?ĄăÔ!B?jĎ蓌COŽA(¦€€Ďޞ륬©˛Ë!Ó]“+ßm»cJm§ÉIŁ1OzŢbćNĂk%NkRnÝşĄđ=©ÎĺŢn;ÇwmÄ7G8sZ;ßÚVöŐń]ę .U62ŇJ±ă\Yx\ţĐĹ"ŔKBÇ-ţ%ˇĹĘ ăĄqpŹť•/sw‹Tť®Žqí PŃ«‚«·;8©ß“Ôn,^ôńÍŤsŚ(Aś8€ZWµ^]ŰK[ó6y-’´¨ţŞ–Íep߮үG'›×=DŐ–ň˘´bôŽ™ľĐĺ[łL§ý:.Ô{DËŞŁÇ^4Ą‚‹Îr÷±`Ň— 6ĚRTgj4J'+ň?űŮĎÚHsôâ‹/RuhźŻFÇO}ęSÖáËŹa-|öqěžţůÚU¨ÉqÎÜŕă—±8ľ‰ţ=çśs Î0@«Ď‚Ž]t‘ťĎ• &‡rśuÖY…cÄĽD^źvÚi»8šŃ]ŃY NňG}TwĺôÓO·bŇqGü‰'ž(G}t2©EľřĹ/Z|ęvě€Őĺ—_n×GoČ5r’mÂqü8ÖŃńqcµď#ůHťs˙ˇ‡*8ŘO>ůd™8qâ.Çô)—\r‰˝ů rŇjνSO=µNÎrĆó}ő™Ď|&v=îM+÷¦NÚ<(jKh]®yňĘUý’ęĽňŠ_őwçÓ>ęRKcń˘g1s'Ť‰öó=Ú¶mkŹó„šŤâ6nűo‡stŹÂţQ~u|SŰŤŘq36M6+‹ý„˘Ľ®­”0ÔΫ4;‡îÄÔŞŁKŠëséˇÝpřŽ_Ăif Ĺ#"Ŕ‹ÇŞIŤÄ@H+•řĄ•¦s^}Ód§áäŇňĘČĂź…×ĺÁ(íŐ«öÎ%išíő ěŮĹlťäÍ÷–Hł"#Á·o˙@útë c÷îcR¨´‘'LD+ŃxDńŐÔÔŘÇ03wÝ®.ˇPČĚůŞŽ4r'Euă˝ćšk”5µ&j™$q…(đ /ĽĐć`ĆéŽ\^:Ă—‚38oAćyçťg#–Y7¦H+ˇsÄÉÇ!Šł™ÂgÇ˝Öj414÷%‡ěg)Ľ|’Í-_|±Ő—'IŘF_×!îŽ?~ĽuF)ĚM đÓmĆ%aŹ#úČ#Ź´ŽuŇk˘~đ"* ’0‚>`Áqă…ż¤c'š kŤĚÍz8ŹHs…®<íĂKDqäGóÎ3žrŐUWŐ6bţâ„N;÷O9ĺÁN?ď—ŕIŤĆţÂľ#1ľK_ʉŇi‘v()Ż7/nŐ§8®|ćB ě.řě÷ú\ kö鋎YuFv1ň}84¦Ś,sgáq1ŕşČw(v˙¶­Ű,†şěŚú®ű]Ďń±ÇźŤęř6M˘ľ‹qhř]%•đ;TĎ­aKvŽ˝>qťVŹą{ Ývt|SŢ·ër>ikŮ]1H[s š"Á^ÁGÍgäąĐ65Ů>}ő0fĹ$I~RżÎ—‡ž‡—ů}üŞ#5Ć0Î ś 䵝gH}»ö”C÷$3ć-łQŕ>ě0†«Ű´’G”ýöîmKě#ń8#?üđBî\ćKÓ-Ť–—~_ńÍďăôÝI“&ŕ|&’ŕő˝ZnDéͨú–­ňřě‹Rúé§m #xřěýě:gÎśiS©Lu4“Zgg©Ç(zĹú‰¦.¦ĹŤ¤/†Ź18ŘąYÇVjá[R„µO^C­=p„łeĹÉ·—ÎąŁĽ> ßQliĹMĂ ‘¤¨ţ4('>ĂgkĄéÖeűtf˝Y1I’ťÔďb›6&+Mĺ§ń3ĆGW9qµŹ:xň}·­ů6“e›43ö»:3•΋űÇ·ŐkGŢú}éN üŽ’Iş1ÖĄŮyľbš.1ăĂúAŔ=ÎYŽ[ýhQYR\LT3·­ôP•@p€Wα(Y“bŤ,bźě,2uĺ–íĘwŰ:żÖYiđ§ńúčyx}˛ˇ'XätĹńEţÜ‹/ţ´±ďŢňňôůňňŚůÖ nŢ‹cĘÎÇmĚ1Ž›B·öíäĐ15rę!c¤k»*“G÷ÂËĎxôž<»DC¦­-ŤĆ¬yéČH*>ŮI|ˇ÷E€Ď‚ľ “UśĹ1ÚT"?ó“O>YPáÂ…6şšanjńŮÖ‚c\#má!F©…ô%x`©la|@ €yŘ5_<ÎnĽ†hjkŹd±ł}˛łČT|R6s%Í—ÔŹži´ĽôrĘVŚ“ę¬süÂƵ8rÔNj”ţn;-ö>ç‡ď‰Žńéćâî“]1˛ŁČĎ}ŔD‡y÷“RpxĂ€€ŔxRô.”ăŽ;®äwN쪀@˝#gG`ŃźĹ6ŞwwŚÓÓť«’tuő*¦í[[šŚ¬ĽYů\]˛Ę(…Oá'ř¶Zg¸•Üś§ľt'znčyí®!®­ă‘­mWŠîĘăÖyů]Yˇ]<îq¤ÍĆyăö/­iŚ´k4ż‡u˝nÝ4V´LBŕ‹żţ°Ě^řš%4ň$ůާţž44ôďfx8 ľ/zßO^ţ††¨śúúd§­5/róđ'ń&ő»ëĐ1ŔäV%ZűĄ—^’믿^ţă?ţCŮ_ş´o+NyGf-X.ë6l–ććËľ]u+éÝą˝ îÓEöÜGôě «Ťłěˇ‡&ËŤ7ŢhťŕĽđl„ ‰ůunWźRÚqüq}q2‹Çúö ČăŚ#íľűî“é&źý»ďľ+555{Äây"äÓźţ´}„÷hT»xžî8óĚ3ëDĆór-¶P ‰©wüq;%é}¸J@ ’PD먮ŘîĐ’lř$>•“ħô†®Ë©ŻOvÚZóđ"7o\_śţĹŽ‹ăMŇ[ťÜšß™9řî÷ťKĐ}cTĆ!—MůJYK)cuÎP7 Ńs@Ź/5ż1wÇÂÚ4®×]'}ˇT&Źľr»\÷Ź+ ĘýáËoKëŞv…ýĐŘsđ=÷ŘVî36˛\ÜË!SöÉÖqZ3>Ť'ŤćĘĐv´öńgĄűř˘zÄíGeđB·>XŢ~űmąăŽ;¬#‹óń2ąĎťz¬^żE6l2p“ň¤m«*iÓş…lŮ´ÉFÝ˝ř ňČ#ŹX>RF3™ĽÁĽ`Í-Ń9]š¶}c|t•­}|>zT^Řßý8ôĐC…—đQššĎg°f‡Ă>Ëušt'gź}¶}Á#)PxÁ r4sptďţçc¬źęµXsËűô ‡úWľň;ĚÍUďă ô€Ŕ~†’Ö—ĺ;Á'“ą˛Č…Ď';Žׇ,-Yé>>äűƤŃÓhŞ{ZťÄźÔďĘňŤQş:ñ{č‹Ţ§/z¬•םOŰîX·­t_ť&^Ý'?Đł#ŔńtŹiÜ~vé•Í©ëvkwýÚ_Ů«Ř3µŰ°yť,]=ż°xŇ<…ŕçźŃ‘ĺâ_™Ń…0‡nQű>’čIýîľ1iô4š;GR;ŤÇ/q;ţřăĺž{î‘›oľYŢxă !?/ŃÜ8Čqzm5!«–l´éxŢ´iÓ„ďšY^:Fú”#Ź<ŇćPV=ŇćeL^şÎW—SvÜ|ˇo÷B é匕ľĘ:ÔK^îŘ/L¬t<~ 7\K-ŘMősZęZĂř€@} ŕł‹˛ŘîčU.ąşfźü<ô<Ľľµűdëú’ę4ţ4šO/]e«C\őÓ~­éwĎm»tĺ-¶öńúčĹÎĆŐwÎjÝŘçFŠžő7[ăK˛ký 6Â]׋V´Őrw\ż®mw¬úé‡eë¶ť9ŔwÇ5†5Ĺ#ŕń¸4©ŢĽld„ wúaĎ‹sşôdŞ›úšgQŕD{ŃÍcĺl8ŔpŽýÉăć‹-’9s摡›Lx×®]eäČ‘6ĺÉ>űě#;vLVş)őµîzT) €@@ µm´Î*(ŘîéČĺĹ7]şźÚóç™;ďy•gn?ŞaDC! çÖ8})ěÓ®łż}÷KŹ×ü6…§CŐáí®Y±° düĂ»·^ôywńŇ®uGéŐąF>4âéÚľO˘Tř¦Ě|XfľŮ _•M[6Čŕ^űČ łŤrTlşŹĺkńÓ 2' ;^¶lÝ(ŹL»]f.|Ŧ{éŰm¨>ćtéжkaŤ<Ľ® uWĘË3µz,Y=O†ôŢO†÷› CúŚ•–͓ϡbqÚ¸eťĚ[:C–¬|ßťVfŚZ·¬–~f}­Z¶•9‹Ţu›VŰ1]Ú÷Úe˝cUxűŰä‰×î¶:/X>ËËjéޱźŚzŚŚě?Q‡…:#Áž¸r°a,¤ úĺSßsëśZ'ÉOš?+_Ň<ôűd2&IhIĹ'×GO’KżŹ7ŤžDÓ~­“ć/•NäčQGe#¸y)ćŚ3dŢĽyB´÷¶mŰ„Hq"˝yq)NŘĆŹ/¶§.öis§ŃŠÁ,i˝Ĺđ;·o\š€Ŕž‹6DšáÚKĺ@)mnćKš?+źo ĺë“飧é\ oҸţ¸ľ¤ů}cÓči´¤ůÜţ4ţ42|twžhŰÇ›—ť/ěgG@ŻÔÚFm"ľqSó›‘mŔ˘ dqőc6Ş–ß’l[·nµW]±OÍ1¦MŃÔ;ľănçřŁkĐZ#Öu ZÓŻkjł­·tŘ2TšWŐ®‘1l.¨¤2µ]ŠšKV˝/˙ő—sdڬɻ°µlQ%ˇ\qę/ŤcşnŽőkĘ5·ź-Sf^ßÚÓřÓhiëńÍY o9ç.Fż0¦4pGťŔÚ‡CŤ}jśË8¸ůŤ©n®El[Śśqô!Îy ç‚ÖĄi–om«îÔlđëÝZעň“5H¦ÜüŔ˙«ăü>pŘqrččÓd톕rŰä˙.Đî|ňçňńC®(8˘o~ŕę:ÎďCFť"ÇpžIëŃFžyórďł×ŰI7oÝ$żüűä7WL5ëŘyÓÂŐhĆüivÎĂFT6›T(}â§ňŢ’·í ›ÖĘŻß#gú%—ĄĐ.…wăćµrý?ż\ŕmß¶łwŔ§děŕĂĺńWď´úňŇĘ˙ąç3rígž*Ś-§A˝ĆČ÷Ď˙‡Ľ8ýąë©_äOę“ţ݆ú’Ť…ńÝO_[p~·1iOľsîÝ2fŕÁ˛qËzůĂ#×ČÝO]kUž1ŞĽ>çŮwФ¤%„ţ‚<ś@Ş‹@Ţ/Ą<_u5)ß^Ţ5ćŐ¬1ćoŚ9]śk~ťWkW§Đ€@@ ĐÔČcă4»]ŹOžuŞŚ,ucÍ‹®aî,G,đ‹€ëäŐk:’Ő9¬ej6ž.ÖČnćáĹŃ­üęXĆńÍ8x «“ĽXÝŠ§óR37ú«ęô¦ÖMťáşŻc”9ŠëGh:źOży˦Ë/˙±0ŚśÝD>)¶Ź<ŢDXk™2ó9aüEĆ9ý¦<0ĺ÷Ú-‡ďsşMu˘|~‚tnßSnyđŰv yŻžúg9z˙s ŐÁ7./]牫óČöńĆÍçöĄń§Ń᣻ó„v@ <ř쎦f»çYŹŹś‹ĹŁYIÇÍÇ›…îăQ]|ă|tä3Fçsëbř’Ć$ő»ňÓÚiüi4dúčióZý  źK­‘ŞN_mSăĽĆ‘í:•iÓŹă˘ÇSůŹ3Yyˇăעău?oÍtĚK›ąŮTśöěăüVšŇŐń­úÓOŃ}Ú*ź¶–¸>ĄQż3oJ§˙™“®4˝µÎoč8k˙ý„˙–íćE—”^;ňbż2ű‰:|gń5CÝÉÇŘ3ý˘üů±Čć-Ů•©łKt€că;ůűw.m[µ—ő›ÖXŢ•ë–Ř:îO)Ľî‹7űtlśßÇÖyŇź–Ű'˙¨pľţ<ô4˝Š‘ËP€@@ Ô7>%j–29dçѧÝ]ťÝ¶ňĆő)Ť:ŤžFóńúč..qóÄő!SKVşŹůľ1iô¬´Ľëň靦—ÎęúE€s\q×ó§Żn8‚5‚›6Ü8˝éOyŃ ~ŇžŕL¦f 㵦­ăµ®ŻŐ Żćg_ťÚÔá­Npj6úµŹ6cY'üÔ¬I7ä»ó(^:o\=ŮĚ:Ý}M´ł[xéĺ'&}Ĺí˛í÷–ĽUčcžÁ&RNď,~WV´íăÍKŹÎçîç‘íăuç íĆA€ë^Ž—:q^ă¦Ďu€»ÎlĆęĆX˘żu,mxŐa®««ďsBŻkşô ŤęÔ¦Íć:ľăśßŚa=ĘŻkÓ>]C1u4})@Š)îË[›ѤÇ+íŰî|Ż×ň5uS¸ă«ŤłrJVś’äÓßľĎň…Ó~%żą˙*ű"RW_p#ď7Űż^üťüä⇤şuGwHh‰@p€ TV~ň|ééśOË'¸ů­pśŢ¬‘µĂO­›ĘU|ŠŐ?šňäý%ďÔq€Ż\·Xľü›c ×§S&ţ»ŕĐ}Dť)¦Îz\xáŁ[®-‹W˝_č"Żwctŕĺ–”5ëWŘĽÖĹč”§bd'Ťi,Ś7mY/oÍÝůĚ}f^rz†UsÎâ7Lj”;ĺ÷Ź|×|kŁç_ţIKý‚ÜP%“}_\”ł–¦&Ű]«ŰÖőűÖ“•îă‹ę7>®˝“úëcM>ŮyçO“źFóÍëăőńCgL(€@@ ęźµK™ż©ÉN[+kń­'=Ť7ŞWÜظ>=Vi4ĆäˇçáM›Ű'7Ť%MFVZ­ätŮ:&ÔőçôxáđĄĐťŤ>śĂôéxú]'3tśÜęř¦­No­U®Ę°ŐăŐWkôvő§Ťžę莶ŐůMżňŞ,]kT]čieDż V]óźýž}ń%ąż)LůĚ\đJADď.l{Ľyy$/J$ú›ňŰŻ–1–v&o7eŰö-rĂ}_±Qő¶Ăü™4ćcÚl´zHź±…ąg/zM&żv§ŃëôBßä×î’źßűąÂţĺ§\kťżYq*r`Ö¦Ş˝Óßl,Ś·°MľxÓ‘…Ď/˝ňc7Y%öe_ úĆ{ĎĘso˙Ëö%Ąż‰_UčupŤÝ¬­U߲|é8~źě,2už,˛]ž¤¶Ę×Ú§}nťFOŁ#ĂÇźFOŁąs'µÓřÓhČóŃ“ć,†×'ŰGĎ3wo €@@ hеu˛ŘŮ>ŮYd*&Yd'ńĐźFÓ9ăę$>ƦŃ\YIă’ú•7ŤžFSţ´:Ť?Ť†L=ëĽĹČ.çÜizZ>¸ŕÜ%R[k$ŇĆLÁ©­m÷ÚAG±:ľGYęôÖ9´ËYT7t§­úiŤ®ş.u~ÓGŰŤ§ĎÝ\y*—ş‚Csҏۨ^Ć}éµăeüĐc'ç+łź(Ňg?™0ô8»ßą]OórĚ/Ë-~ŰîOź÷˛|úűËÁŁN‘V-ÚQÁ3ćO+đd˘ĂÇ>˛°ßX ^Úř·go9‹ß´×Ł˙şýypřŤóţ™f˘Ř_ţ€lݶŪץ}/‹;Yq‚·ŤÉ‘î–ëţyĄŕ?v˙sĄKűÚ+.]ŰŤ…1ÎyôăRţoĘ­öfÇľ5‡Ů\ďďĚ{I^48iá…ˇdC 8ŔłáV.Ś„8CˇŘ‹iY” BKB îř•$ 7†Ť1§BŐs«ˇ€@@`ĎC$É ö{Ó8’Ž_Cjß:4Ćś.¦Ť=ż«Kh'# ×1śżŽ›:ľuß̜ŒĂé­ru€Ă§ŽomGůëűśPݙݴVç5şŇfcMZ«#\kĆŃÖZů©U¦m?îśÚW_tÜ52möă˛ríKž1Şq^O­3´G§ţrŐ™02kç|ę¬ÇdęĚÇěŘ…+ćČÝO]kŰ݆Če'˙Ěíj´vË­ĺëgŢ*WÜx¸lÚ˛A6oÝdň[ßk7W©vm:ÉŐźüłyąc§BwVśĆ 9Zš737b¶×Ţ`yxęm¶ߠĂSŕLÜXőă7Ëç®;Čâłeëfůë˙c·;ťŰő‹Ž˝&Úö‹D`ç§©H†0¬áŕËŔ·ĺŃŞ˛Ë!S×G¶Ë«ňÜ:ŤžFse$µ}üiô4óĺˇçáMZ«öç•íă×yâjŻŹ'3ô€@@ (×Îk##iLś<·/‰/­ßĺOj§ń§Ń’äąýIüĄŚ‰Ę(†7ĘăîűřÓči4ťCÇč~´N˘k?u\ńŃăx´ĎÇ[_tťĎ­}˛«c\ľĐ.8sŮ\‡/N`úÔ9­‰šnŐŞ•´nÝÚFPSÇmm۶µýmÚ´6Ćh»ľj•éΧ }č­µľřŇ]›:żĹD1*őôď6\nľbšěżw|„6©Mn¸ěyÔkź:˘[·¬–ź^ü°\pĚšČŕ–uhě ĎŃcĎ’__>Eút˛ ˝±:†›´/·^ů¦ImňńXĆî}„üö Żě±ž§m»É%ůˇq¦wť/­ł±0ŇgůŮĄŹ OTďí˙ÓK‘nú&Ž „tö2_"ńßśé|Z"sćĚ‘aÆÉćÍ›c9ą0_ýőB]ŽÂŰ\Ą˛óČĽá†dÖ¬YöKě˛Ë.“Îť;Ű/Ô¤őó(f ňăĆĹőąş$Ń“ú‹áŐ1I2’ú}|JŹÖ®<·§űľ1iô¬4ćŽă]şt©\}őŐ˛~ýzUŻPsvëÖM¦Oź.;v,ô‡F@ »7«V­’ˇC‡ vBśýŔ꯻î:éŢ˝{Y€Čc ű*—ě¬rgÎś)Řďđź{÷Ţ{K‡鎋¤c˘k÷ŃÓĆůxÓčYiiú@K“ëăUş[GĺE÷ݱ´ËIĎ"űĘ+Ż´źÍ¨žěăĚ|đÁeҤIqäĐW¤,ˇč +µ&˘›âÖ´ˇłiÄ7m"ľ•/Zë1§żśEŻIZ»ŽkÚşOŤ“›MŰ8ŔÝ6z҇,ĆQ¨Ůwĺ[B –­™/łľ&ó–Í>]Ëđ~㮯lٶIŢ[ü–W{ł‰¬ÔkŚÔô]T®kźěrŇW¬]h×»ŔĽ°łO—˝e°qňw¬öŹfÁiűö­˛jýRY˝~ą˝aĐłÓ@›R¤Řő5Ćó–M—Ëgˢ•s„Üđ=; 0/J"=;׫z—€@H’LctóE _qóë…5ŽÖ}i:ŁWĄęíĂĚ·.ĺŹ×§ă}u^dçá/–7i\RżoÍ Ąw1z„1€@@ ŠA»'Íö©T8MgÖ]©zűމo]đ'ŤIę÷Í™&łŢĽüĹęť4.©żÝ‹·ÝÂ|p ŕřęµG0ÎjŔ8ąÝš™pv3†ń8…ënČRg·Öôĺ9‡ŠYˇęĎXm«óš}tvőÖ}jĆQłVJ’óŰÍ•ŻűĹÖ]Ű÷6^ŔXJiŮĽ•ěÝ{?»•Â×Řc;·ë%ť‡ô*YŤ,85kOÖÖŘ@IDATÖBě|fÎ,Ą±0îŰu¨qx͢rŕń ŕ€v˛ďË%ë»\řřôe^źÎ*C먮IýŃqŃý¬|®ś<2ňđ˘Cţ,<îzłÎëĘČŁC^W‡Đ€@@ ĐřlźÜ:Fç(·Î>ůQ}ŘĎÂSßrňę…? OtÝyeäáĎĂ]GŘώ׎5Î`ś×8‚qxSëľ;ŽńôłŃÖ}mŁ 4-ô—ł EkÖ˘ýn[#şÝZŰŚ§MG‹ĘÔýP•‹@p€Wî±ŮE3ß—Cž‹oS”íÓyM‡ŹÇGŹ“©}>Ţ<ô<Ľč—ĆźFÓµĄŐiüi4ź^>z}ÉöÉI[{ €@@ HBŔgc”ÓvG§¬ňËĄw’ܤ~ÖF+†Î¤â“ źoL=+Í7ošÜ¤µşýiüi4ź^:G’ڤ~_±tęüčµc¦Žoú´Ť#XťŘ:–Y•źë×cOínů5-^‚ę‡ę¬}nM[Ýęüf]l·íĘѶţ‰@p€WĐaŃ/TĘrŐ/–¤%e‘©˛|˛łę źOv˝‹ŐߧʉÖ>>yic˛ŇTĎ4~ßÜ*#©Î*;+ź«G’ڤţbxÝ1ˇ€@@Ŕ‡v‡ÚYěUĺMš'‹LW–O>cłĚá“›E¦«7mß>zTž»ďăÍJ÷ńŐÇşŠ™Ă]«Űöń¦ŃÓhyוW¶»ĆĐ®_ř,s|Ա;¶ŐL4¸ŽS:ZDŕîq¦ÝŻ_ÍkĄˇ…Z۵”Ú>Ö ýÚf_ŰŚŐ(´uÍ´•OkúB *ŕŻĐăă~!Ä©X‰ÚJŇ9úĄ‡aZü`ě[S’چćsőhŠsŁV˝óňşŘ…v@ ,řěJ´ÝYg%éŤ.>}|Ç&+Vľb0,—ÎMyî]jRżŇ}u ą>zÚÜ>ŢĽôrÍťWŻ4ţ4Z^ĽÓđ´€@@ Ą"ŕł[˛ŘŔŞCS”íęL›-wś®·Ô:IFRżĘĎCĎĂ[ěü:.Zűćf|Ҥ~wŽ´1Yii:ąs‡vĂ#Ŕç’㪟OÝ×cupkżF†łŻ}®öq}.˝ľŰŞżĘe?ÚMűŁ4íW~ëî‡v@ PŮxźč—Cô˘[ŠŞľ/”=Iv×RpÔ±Ix&ő+uÚ¬4•źĆď›[eÄŐő!7MF­˝“ř“úăÖú€@@ äA»Ăµ=ö$űZqsׯ}nťź\wޏv Yyčyx‹™;n­ÚW®ą}r‹Ń;MFM×ęĆE@?Çz¬Ř×>4ÓhoÚn?űZ”WkíočZőÓÚť?Úç:÷ÓĆą´Đ*ŕŻÜcSVÍ|_<Ń‹Y•)Ax©z3>Ž'®Ż5ěĐ<2‹ĹcîN/__’^ÚŻµON 7îy‚Ńc=—OÓl3G×—MJŕ * ௤ŁQ˘.Ń/™({ž‹vS–]ŚîIc’úŰ4z ţRčË«WŻ–µk×Ęüůóĺ˝÷Ţ“+VŘmŐŞU˛aÆ:Žq5¦™#:Ot_×RuŇ9¦Ź:·1–«ŞŞ¤M›6R]]-íŰ·—îÝ»Kż~ý¤S§NҡCéÜąłăĘôéîŁ#+iŚök]x€@@ ’đŮ® ”$#©w•ÍzŐžÓÚĹŔ·î4zMçđŤQ:¶8A+ëׯlőĺË—[;~É’%vÝşu˛iÓ&K߼yłlٲĹ:Ă5ĐĹu#S7ŐĂ­uN­]m=Ź´ŽöŃφ}®A)şOp ›ÚíŘěŘď;v”®]»J—.] ö|۶m qW‡$˝tL= k­<Ôi|î¸Đn8fˇJF 8Ŕ+ůčäÔÍg$äů’ňÉVŐłĚᓝE¦ęC'?®ĎÇ“$ËĺsŰ8µ1|q^/Z´H,X +W®´mÝÂŚQg¶îc$«Ă›>5”Ugjm»óUB›cĄÇ‹Z#GÔ!Ţşukkdë>cÔiŽáÝ®];aLŹ=dŔ€ÖiŽN_1%—¸ľbd…1€@@ ʉ@16ŠÚUĄęQŚldf‘E¦»>•Ż54·íŽŐv=Ť¦üÔŚĂ.Çţ&»ťmńâŶ޸qٵí©ŐnÇNwíuěx6µń‘GŰ•ŻúDk;(ĺă•G‡µoĄk Żňi­Žq}Z“şU«V»Ű˝eË–vŁŤmŽłŰť­[·nÖYNŕ 4ĆSt=ZĂă¶‹‘Ć€@@ ŕŹCĄ‘úřrĎňď/Ť¤zĹO›×<‹Â¸Ĺ©ŤăŁ ă—šČ˘AćÍ›g#Bp†3:|l”†Ö9Ďz“xŁç´üqăő<¦ĆčvŕDр۲eËlÔ †´:ÍG 6}ˇ€@@ h(˛Úkj÷4”žMiž¨ýŘş3'¶8lµßŮWű[ç7Žđ88|jÇGĎ ß~}Ż/:_TľŹ®ăŁç¨îkŤ˝Žc<ÉNÄ8öąŻ`łłáHW§8˛TžÎę€@@ ”ŕ/ŞMDfVă§”ĺůćČbđřdşúĄŤMŁ!ŁTşFfăäĹŃýÚkŻÉěŮłĺÝwßµ)LxôĂą>Ůîö”¶bB Nŕ‰Ó›B _|±` cp]Ň«W/>lŘ0aŁO qj-*[÷C€@@ )"PŚM“ĹľV,|ňłČöÉté´Ý}Ő‹:©_Ç”JW‡µÚť8¶qtĎš5ËÚď¬ŕôĆĹ.UÝ´ÖyÓjźNiĽYhő9_ś,÷řó›‡hw ÁQLąÁ<¤”á·Â›oľYx˛sÄÖ)ÎotŠĘÚe˛Đ"đ"@jě!|ék‚>F]l©/ŁAŤ˘bçÝ]Ç'NŢąsçZcŤ4'ŻżţşŤ)kpÔ|xęÔ+ÍkM[#xÓş:Ŕ5R˘Ćq€“SŻgĎž°ŚCäk*xÜ’v ˇéV ŹĘ˘ĆpNr€ó8©Ţ5¶Őf=8Á)jhŻŇ9÷‰öĆřĆPV»epţ cšŤÔŚÇ1Ž8ÂŐvŘB3 €@˝#€ý˘ŽEҲą©ŮŠť¬»2M–ÚjicöX ÁöĆoا6±Q±9V>¬±Ůůý…ŤN@ ;[ź4ÔwŃ0.5[)p˘ˇKu€—b»ë±Ćů^Š\âÔŕ„ŤŢ·o_+Ž6řQ4†1´Á»\évĐŽ?ŚQ»9ü^ŕfź‚yH•˘ż‰\ŢĐ€@‚< j Ě‚Q€CC‹ I#\ăÖm7°š‰Óů Ę<:űd'*e>Ţ$:XŚş?üá2}úô‚Ó6n. _Ś85‚Y+†ůŞ÷Ţ{ok<Ž;Ö˛â ĹHfL÷îÝwqFÇá¤}ZGu@WÖˇtjmëXÝ×őj šËŻdp~˛.~o°Qt¬Ö¶ÓéwǸ4llÎsř°×qfăř&=áüůómŕ Nmµ×©µ­sˇ?v;O(íNűČ#Ź´>z“Aç u@ ˛ ŕYP+_ţjŔ¨AŔT8úpňhĆF@ź>}dđŕÁö­ÚDµjQ~ÝŹ«]Ůqô¤>źěJ“·ß|tdůýűß˙ŢFŹ`L§ŚaŇo|đÁ2dČűh#QŰ3 O6Ť¸V U­é×6óąăâhôé­áC[´O÷“h:·ŽSYşďň%µ•‡>wśŇjL4¸¶‰žŃöĹ_lŤeŚj~Pbă ǸḉžzĘŽŤţa~H`xßtÓMrÄGȤI“ěMh*?Ęö€@@ řŔ–P{Bm"xpđ,A A,Ś!íĹŔm°@Ôˇ§2’ćse'Ť‰ëojrł¬Á·FčŘŽ=ô<öŘcÖ±Ęď)J/ŃÝĽG†Ť`lSlx‚<°Őٶ;űjŽ{ÔĆuçpiŃ~hqÇ™q:Véî>míGMÇFůॸüŃý(űäîÖ2nܸ?ö7tlw> äţĆnç3AP © ŐŮŻüÔô1g:ü`˙ˇ}(¤2tA í€@@ Č„@p€g‚­üL|ákÁ ÂiJt0ŹžaPă' Ť4j€)_RíĘŽنQ­1úęKß49i4wÍnÜŔx‹s~ďłĎ>6e †QúîFôŹF#Sq¦Ö¶Î…>Ş4m»|Úviô±•§űś#ŃńĘ'Oů´Žňşs)Ť±ÚŻmd»EéĘŤ±ş±ĎŹŚhá3Ŕ‹.»víjo}ôŃöG ąÉ#ţěłĎZç8?rÜÂ<Ľ™žăÇŹ SN9Ĺ%‡v@ \Dmž8ĂiŠ˝ČŤřYłfŮôäy&jôá›Ř•7ű©’ŠO_t-Fç49i4‹… Ú`‰gžyĆF«ý®ü8Ľ±ß'Nśhť­Dęcgrěřý…ýN­v©k«F×€L6úUľ®ŐëŇ +Ź«·Žwë$>·źńĘŁ˛]ąî\ĘÇx·_÷ăř”ă\\ÜńÚ;Îy0ĺ¦éqŠ/X°Ŕţž";ÇĆu#—1o˝ő–µŰáĺf„ôĄňCbđb‘jÄqę'Ź1F†pzÜ%gĂ ŔPŁVC¤ˇUv ˘,scěÔwA§¬zĹń‘«š¨Ž~Ľŕč®1"űďżżŤřV8ÇBץµňi7ŹŇŕĺŐľ4^dDůÜČťCë´ąt>ëÖ.Íť/M7ť 9QWž;ʶÁG8ç;ŹŁ˛&µÄNDúnRđ˘M h ź§ä–R\ýJá c€@@ Ř3ŔvŔÎM{ŠÚďŻ`—`;˛©íŢXŽ˝4[­Ř#WIvRÜz¸ů€“•ßMD~ëۤéĂ–<ŕ€ pânş<Ö]ŁÚŞ*+«8勯´8>úâć˘;8ĹX•—64w>剛+*Gů|cŃŤŤsśßKĘ7tčPűD3Çc\Űą<=ˇ)QjĚď¬b?':GTç°{6ÁŢŽ?? Ţ(N´rÜ='˛k¤Ű jA#Ťł~ůű ™¬r˵O_ćŤ×çÓńŐW_µ©OÜq`NŽşŻ~ő«6şÎĹyŘwkW'—ćĘŐ~·Oů\m·(MkĺˇÖľ$w,m-ŚW­ˇiŰĹRŰд펍ö»¸DĺéľËďĘÔ6?Tx“ŤźýěgĺĘ+Ż”§ź~ÚÓđSČQČgE üŚŹ+Ěͱ,6:+NFč €@@`ĎCç6Q«Ü¤ç<)Űx#Npjlxś€Ř‘8ĘŐŢpmźb‘S{(i|™I˛ę«ßŐŮm«übűt|RŤÝGÚ<}#ă°ďHµ÷Ĺ/~QFŹmíw#ćÖý¨JÓ::/|Đ\zR[yă悇˘ňtŚň¸uś-Ëx—GŰZ«|ähš¶é×±ÚVšŽc_Ç(MÇjíöÓ§űü^Ýwß}ívâ‰'Zűü»ßý®}š“ß[Č冟•W^yĹ鍉¸ő"›˘¶»ęUŰţ€@@@$8Ŕ+č,Ŕ PŁ@ŐrżĽ1ŚIw‚‘LĘĄÄ Ć!Žq0uęTKăe&äÔ*Ş,·vĺşýĹ´Ł:FyňČŽĘŞď}źî>zś>äsĽęŞ«ěă}Đ‘áĘöµVŠSMeč8ř´­4úܶΡ5tŠËGSĐt¬ÖµvÎ㎥íŽs÷Ý62tźš˘|ZÓ§4ÚÝgŚň×RvĘsÇŃf,ŹZbD˙ä'?‘ź˙üçĘbk•IÍg‡ń$Cš›O讎u„…ť€@@ öX°%Ô®pAP»;‚Ľ»űťhWlv‚Wp„óAěu˘±'qđń˛ô¸˘2ăhľľ8]ž<˛]9ĺhűtgδ1<Ö<1«ö8ç;ß‘UĚńß•şmë|n?}Š!|´]şŰV~jŠKsŰ.-®ş;WtĽŇ©):Ö]—öS»sĐVZZŰĺ± ;ţ¸s)żĘŁvů”N×7ľń ™S|öB €€‹@p€»hT`[ŤUŤ»Úúůů‚Ǩă±> zDš`ŕ'úD#ÂUFąë¨ÎŃůţ?{wőËUÖůľZµíV™$ $'3 ™I@’Ć„)(m jÄÖVí{˝®nu5w‰Kh—ͧnčŰ BK+ËWmf„€’™2$dSBCPîůěësÜ)ę?ĽďyĎ9ď{ţżťUoUí˝kßúź•ß~ę©§JčŚó×{ݸťńąvµ=ľf|>ďze1ć~`^7ę^ßćĽ|őĆýŐyĎ®?vÍĽ6ëző*Őőă˛:Żňq}çŐ—¶ô·ł}iCloáiĽ.é~ěż˙ţ Ĺďg>ó™áşë®Ű!ŞŤ§OˇţŤÇ××Éq„@„@„@ôJKU'zśˇ»Blx““W2ÝÂK™AĎ|o}öáŐƮ܏Ç;îkžZt­¶ć]?î«Î—i·ęNíëzk"k¤:W·ĆcýDë 39ĄÝŐ«ëúăqSeł®«ľkSőŞN•őý-ęKÝş®ÚYK_}űýq?†:®~ŞýĘďŻS§ĆQűşÎĂ ß¶˘ßĺ}˙÷űwRíŘ—Ľ®áîÁQ}Č´Żëá›1}Ö¤qýś‡@„@¬Ŕ·ŕ˝&Ęś±Ő«“ŚâžŽŇ6±Źí ^ăD7A0ł¦_őf•ď‰ü>‹ú^¶^µłÖúu]í=pŕŃăUV÷bź}öi —ú`Ny T?ŘsfHΫ̾gß—Í:·áĽÚ«˛jłoc-}őmömŚó7b^ă6űąôÇęż$Â0Kh‹sÇ0[±ÓM»*SuKXM•-ĘŰ•më[űŐGí§Ć4Ż¬Ú™şnśgŃröŮg—\rIfî‡xěOx†mŰ_­®f*r˝ -¦ĆŐ»v\Ż{•Ő5}_UVmÖuU·ň]Ó—M«SíŐőňĆiŁçĄý©ţx|_uŐUíŁ–ľíµ×¶Ź_»‡>DÚ¬týôÓ—ţčÎT;É "Ŕi…‘›ÁUhooŢĽýÝÜĂyúťvçČÂ|™TÚmVÝ)-5«î8W¶]}éŁtć¬ţfĺ÷mÔqż_ÇĘi‚ń•V´>˘ÝO8á„öaL±ŰűTěĆWťsíëşş¦źW_VcŞz}Y«SőäUµŻzŐĆfďËŰô·ß»P'´»?ś‰®}ďŠGř8á.ů·B»ßxăŤă*íoă>ëYĎj˙Ć&+%3B B`e Äľ‰nýXäÔĐJÔÔůÔžh`¬#’] :‘Đë}^xaŃ ĺľxÎ(^íÖ~ŞÝYy˝›Şłž6«ťEmW˝E}Lµ3•WíŮ/*ďëÖ1/žcŹ=¶R-^0g żćškš ćMbsŔ4ö<Š-|Xőgă~űóľ||\cîóĺ9ďËúňţ¸ę´ĘŰ˙ôeý±ň:Ż}ŤăšK•׾ęUť:ďËűcĺu^{žĽ¤ĺňÚö°‡ćAB8Ű{ř@řžtŇIíÁóYéĂţp‹Ł?«ÜbČ«OyĘSbź)ů!!!°Âhź^łő(hy‰v/C8C·0(ľíSß÷©oűx“s˙íĘ´{ď<Żí©˛Y㬺‹Ć[ő¦ö‹Ú®kő1«ťYůÚťWVýŽ÷%űŘÇ6/bş’܇éLžů´=Ç"÷…†÷ˇL÷Á=ëű+ť:Gźß«×źŹŹ«ťĘ·ŻTyUg*żŻŁĽ?W;•o_©ňŞÎT~_Gy;7gN+´;7޲S]˙řÇ··.Çg%ßżâ->+ąwîÓÓźţôŔgAJ~„@¬0Ŕ÷˘›O”ĆDŃć'8#!ˇÁ8ëµ1‚¤Ât ˘c Âd3¦^€îěřv¦-±óÇ4Á\Ĺ<x9ŘÜFqü 7!\ĂČĆ@nQcĎčęđvÝXLÖ8űüńܧĘf]×ßŰţşń±>ŞŤľżľ^ĺW˝j{|®Ţř:ž„°ß)aŚ[=Lđ{­9Śŕ«ÍńŢX–ĎřÚ:źw=ľ´;/pşS8órŚ3ÍI—r"˘SݏâŠĆ[\iłt;ę~yxáľĐîÖaÚ*NuÜď{í^ůĆä¸öćá¸öUŻeüăźľ®¬)nSy}Ĺ©öć[Çăkë\ëH ¸íynÓîŃíĺ€ĺă,íN·ăD»sĚ1Íy… G i–áZŰâ¶ëo*áŁÍăŽ;.Ú} PňB B †Ŕ7ŃŹ ÄĆz†4u-扺§áŹWb¤ât…ć(Á6îŞíľÁ±Ţ´+Ű6&íĎęcV~ÍeQyŐ«=1wÔQGµí¬łÎjŢ ­W_}őpÁ4QhCT3ř2ěJĽ‘lj0®Í}!¸K8–ř–o#$mĘmĆQ5Ô-1N|jÓąüŐ®q^eĆbîĆXü2R;7nç6çęŐąą10Ű”Ä8·€SÖźkĎąvć17>ó˛mŰîťÍ@->¦ĹŁwŤ»ĚůcŚoűŰwÔ§ŞâúĽç=o8ůä“§Š“!!!;tćz´đ”ćˇÉč!7hxŘŰĽEHËÓ|ŢPc4¤WčŁqšj»ŻłžńÖő»˛m}hVłň—[Ő«=ýkŤôüç?żé>†[¬?ö±Ź ]tŃŽ°4ĄeéUŢáꌓű€«˝ű˘m÷ÓqioĆ]Çî!ŻňĘ“oí¦ľ˝|mŃëĘä«/É·U»úŦÖĆYÚ˝t6uŻÝKżÓç´ąr™VwŤ9++m/ϱMűÎ]Óß“ţŘ8Ť:ť‡7Ç’ýöŰŻ=0đ;Ż4ľ®ňű˝ď-Ϭ„Ýţł?űłłŞ$?B B`Ĺ ÄľÉ~‹ŔZ«ú/c†C˘†ްśQÖëf á^CSo-iŁÇÜ÷˝Ńm/joQy?¶yǸcyôŃG·ş<ăĎhb‘hÄťWŹ{ŕa„öu Ę2–ň’ű{ď¸Î‰Ëţظʸ]őŞ|\Vs¨ňÚW>ŤŽëĽęÔ~\NdKć"ŤËëĽęé›°'” zž4~· ‡rHcZ żkÇă1·ÎćüŃď‘ęw\U˙>|iqi I!!!!0ŹŔ,mT׬U«0nŇ‘ ‡4g‰›·{ŘŇŚ´—]vYËăȲ˙öřŕę®ĄŹŤoÍÓ~ŁŰ^ÔŢ2}öă›uŚžt§P’gśqF3đŇáÖJôşű`ó0ÂŞ<óŐ)˝kĎ ¬¬î‰}Ük÷ĘŻĽq]ă­˛ńŘűşU†WϬÎűĽ©ş}=ǵ©ëĆĺÎőol6F{o(0lŰ|sŠŃÓŢŘOëű}/“ú>ýîk,ăkő˙ä'?ą…µ1†¤"ř•˝0ŹĐ`0$$â!śa•¨#âÔadtdř+CŁú%Îo¦4K­eŚŃĆTXcn#¦őSm|‰küëA^ Uî¸÷Ŕ(ď ‚ş÷ä N]cÓ>Ł®=!n_yýř¦ żSy® ëúÔľlť›s]cďwĆ-ż~Oňl ͸Ěöı:ĘěťËÇŹ&h«-c3·~ßN–ü3oľúµčńćDÍoÉfS-B B B 6„ BKŃPÂă•N§éuδ"=Dł0‚—>«óͰ/ýÖŹe*Ż/ź:^Ď5SíôyĄ]=x¨öiFş˝Śş ±Â§Đđô¶Ť§ÝËđÍ©Ą´»rÚ˝Ľ¬KëŰ—-=ďĽúµďŹűqÖq•׹ýřžŹĎK«W]ĺUÇo̦Íí÷D—ËŁÍťÓÉ4|¶ĺ©Żn®SÇďQ¨u]+ŐxíőYç­pÁźb5UMű ŕŢ 5ޤ"ř•MGU"Ť©TfŞŚ °*D B@`4ʆúđ ö‰›kćµ;ŐWź·HÜěLŰ}?‹ŽŤcŢő;smµkžš Wl”Şm{ÇĂÇÇŢk–î am#¸Ý/Bš¨–GX»Îć~*«¶ę·SýŚĎ«^?–6°íziü~ýý"Š+ÉŻsőű­™ŻcŘ&ĎoŹHö°…@?±şT{ö5ćĘźWţFěŤßř< ˘Ť')B B B ÖC€&+ÝRjV;˝¶ęëĐS6:‰nb„ĺ´R†Ö ­Gň¸ő'Ť_×őm­ĺ¸Ć=ëšYăťU˝ů‹Ć1ŻÝş¶öóęÎ+Ă’łíJ#JŐ¦}mô9MnmĺŹöĄŰ{íÎ0nŁÝirż÷łtĽýX«WźSý¶uŚ·OîUÝ/×ÓöUGľăŞSÚ]š¸ćMË;ö¬ß˘‡2ĄÝµŃŹ­ďżňűĽµĎjøŤŐ ÓN;m8đŔ×Útę‡@„@¬˛^­Đ¤7ëTýĎ˝ţ_BĹX4Byɬ0%uýĽ9j›!” 9ŻVŠUÍ#ś špóÔž «ŤŃ˛Ó¸ýyeăşăóEcŢٶ{®}ß‹ú]TŢ·µQÇćJČYĽŘŚá°Ă»Wóý¸ę¸ö*Î:îËŞŽ˝>űóľłĘźş¶Ď«k¦ę÷őúň>ż?ש¶wĺ˘ŰöŘâżř‹żŘţMř7’!!!łĐ,Ą[z˝ĘYÚݵŢhcĽîëômV}^ě:ş„.ç<@żßpĂ ­ńúp8ĄŘŕ´;í˘4k<‹®[fĽ‹ÚU^L§úĘëŰYTŢ×ݨc mŘ۬ź„ţčS?®:®˝złŽç•Ő5µŻţúó©ă>oVű}ťţxVýę{wî1gx÷ďá—ů—ˇ€ü;K YbźEfç÷bśń›‘š f‚1qËp·–Ô·ÍŘJWĽcž$ŚßčaQčsopŇěú±"EűBDđ’ĄÝ­\·lóú߲Ňßµ·9+_˝yeăvrľwđ»µů7ä7ýĂ?üĂĂsžóśvľwĚ0łŘ•bß•t×Ř6!7sţ'ĎĐLŘsĚ1Í3›¨ežÄ«•ŚŐöŚx„6cą4nk<ś)ń[bÚuž°<Ŕ…^ńL%Î}ÔEH‚ŰÇOĆŻśMµ;î{ÖůzĆ<«-ůĹtŞÝ©Ľľ­Eĺ}Ýo-~ŁÂů7uĘ)§ /xÁ –Ž—ąµfšŃ†@„@„@ě*Ą3ÇíÓÓ°~řá;<˛oşé¦¦Ý˝eÉ N» cÂ0MżWš§?§4¶<†mőrŠŃíÎiĆŢš®ç}.F8íŢ·Ő×8–ÝĎŻ6ÖŰöT»Syăq.Sg|MÎ7?żŁZ?÷ąĎ~îç~®ý–ýűI eÄľ Ą=X§qÄ-/‚šá™ś€Üp>ţńŹ7ÍXNä2đŕłRßv_§„*Ż}2¬ó ç ^ýíú$¤}DS ¶ňb™ŐnőQí×ůîŢ/ßîOúŰ˝gp^řÂÇ{ěp衇¶Łßďžţmî^é-B B B`W(­IsŐ@—óZĺ´ÂMCÓÔő†ĺCúĐöaËŇŢłĆTíN•—1Ý·}¬¬Ŕíy†Źľiw†C:^ŢĽvőµôѢ1N1IŢŢCŔN+O~ň“‡“O>ąý›ňďeŢZwď™}f!!°bߊ»ˇŤž%Śëxuřźľ)„­ÍGwÄéVÎnż^Ă^ iâXŇ—ŤŐ·ŻŰ‹-ČHn >Źç5ŢŤFłŚř]¦N?®µÖďŻÍńÖ#ŕÁĐ©§žÚÄ3Ď+o2$…@„@„@„Ŕ® @;×Gëŧ“éuşÝ›•ÂŇÍňii›úňÖŞ§Ő×í^ýVśporęźC‹µő‚q¨»ŢµÂ2Ľv…ÎŢm.3—ÔŮ3ü®O<ńĦß÷¸Ç xŕžHz ŘŇbß$·Ż„\íűaŤĹ/AK¨n۶­y®Đ7ß|óđéOşĄy–8®0%<@Ö+¤ŤG˙ĽÎ rŻVú°Î-·ÜŇľ4OL‹1čuN^ඇ=ěa;>’9»yMÍqŢ|ű˛ť9^ÔV]kQ¬ĚyjŢóÚOŮÎŔß"Żî•…d÷­ű÷đú׿ľĎĘq„@„@„@¬‹Ŕ”Ö ĺ—´§KhsZšV¦ÝijN%·Ýv[;ćĽBKoŰ®ńiwšżÚXvpŐ/ŹsÚÝ[ŁÖú`pJńźřDó §ď8ŕ€6&žŕłú›šc?žµŽ±żvŢń˘~—ąvgÚ×~Ęvż-ŽVŻ|ĺ+[¸ÂÝÓkz Ř ÄľIîj ÇÚ/;,†đ ‹BD{­ŃVż&…gÇ!‡Ň5ňqZ¶Ď2Ľ{Ť ś ď5N†wý)_đ®xäă>çť/ŞËŽWÚŞ­ďsQumŤc}Űúë=€¸č˘‹š'ŹEŤ×JűXŽă6rľńÜżűŹ~ôŁí7ÉţÄ'>±-ôúŢÜ;":)B B B 6‚Ŕ,]:+ꎙˇ›N¦Łéçúp%C5§zšv/Ť?笶§ę鯴;p}Ńî_ůĘWv|ŰGą7âßÍךz]‹×Ľv•-j{Ńő)X 1€oűĽ¬°#Tgí…ä` Ľűî»›‡ă4Ě8ČMhÁ„m ăµ  ~«?ă«Xŕúńz%oyę#ąúú^Źp^Ëئę.ËpęÚ>ŹqŰĆčZÉ|}€T“śWŤcő,"°fxµřPŽEŇňľńŤo´ß®¸óĽ—0÷[»y»Ć×]w]ű°”2÷Z\Kš˛ë“ߡQ%…@„@„@„Ŕ®"PşłöSý(Ł‹éd{Ú…v¤“˝eIóĐ?6:’v§mëŐîÚ§EŐőăÜ8čŞŇXÚ–Ď‘Ąľíłžţ¦ćĽÖĽyüÖÚVę‡@„@„@¬6Ŕ÷˛űO ňě¨0^­äáÁČ`Č .TŠrq‰[˘ş„í”qzžřTźQ‘'IµĎ(ÉŁ¤ÎőÇs…áW Q]ýÍkŰ­™Ď®¸e‹ĆQĺÇsLăűľ÷˝o‡ÇIy˝[LX”xČ $Ę%—\Ň4 ßâ+~řáĂÁÜ>ÜÂ(nnµçř¬bÂŘ"ŻöâÔ9¦ŚŮ×^{mŰßxăŤmďACŐq~Î˙öo˙¶ý]W c÷ŕiO{Zee!!!{”íÂî=-éMÍO~ň“M»Ó4 -O»ÓŹę”7¸k§RéÖ©2yô?}Ş/mŇîÖ áâs.ŕť®Śv7>:J‹Úž5¦YcYoţ˘q,*_ożą.B B B`k|Ý7Bm‘X[‹¨,Ď â•Ŕe'n˝VÉ€čśázŰöíŐÄízRŤąÄ´W9˝őC´Ű3†3´‹†Ść<^Ąj{V˝E<ć1]ÔöTůńÇßťţůÍSƸY-ý-&0ŰŃü´ˇü˛Ë.k^âňl宾1=®ó°Ŕ±:‹ć7‹ËVĘg°fěćyäŤßŽP&Bš8ö&7 ,ĘxG©_Fo|ű}ń–Ş:Źďźß÷cűŘáGôG·žŚ5B B B`“ 5Ćzcj¨Ëę9N,6ššv§/+T Ă´P%´ă¸C»ŻÇq˘ĆěZ:”.§×é0!­h+ý1„돾×÷˘TmĎŞ·…ëKçŤŰXÔö˘ňq{9X‹-«ĂbKĚt‘°‹JÂÖ닌®D+ŹYbš¸uĚł„ŃPŹpxq;«úv=.ÁlăĹBPë‹Ń]ż á Ĺâ’÷čSíÎË›ÇcV٬|ýĚ+S~ůĺ—·Ś÷ÜsŹÓÉuŚłűďż˙pŇI' ŹüăŰ‹nşé¦ĆŘu6Ć^[÷ ,xÜ'{çĽÉ•W^ËŻşŽ+¦Łzę0ôĘ«úÚRVž;umyť›„vś×Có±ř`|fLvlsmUîńş?ÇÁ¦Ěőî·6lň”9®Äy×^ľcśěőëÉoËć!)tP[$Şń‡?üáöŰćˇ?NÚúŕ?ŘŘ˝ěe/ç<B B B v :i^* ]uč2!O¨9Đî´CőUW]Őt%-MżŰŹŰ¨¶ćí]cŁiŔŠGN›–óľé9cˇßŤÇÚ‚Î\OšbQyµźjw˝eSm%/B B B`őÄľ"÷ś¨e8de$jËHÉ+źčeu¬ţZ…t‰hH]µˇ=}•!”Á“p'ě ŮŢP«îZűÜÝ·OŁo%ăfTâeżýökaN„Ú0u±`ÔµPđ° ěµa+6ÚĂ„1W›6×”Aܱ6뼎ÝWÝ7›r‹”Ş_@ŞÍţŢčłĆoďľHĆ`łĐ2vÇ5V÷°ĆYsQ.O}sł9¶™łßśşeđvî¸Úw.iŁ~GĆ_żEc6GżQÎŹzÔŁÚÇFť«kˇČcÉ"P¨]ŚÝX$cô¦âµ·Ěü MH t4ŤC3ŃÓt]E»Ë§qčOúMýŇPËN§t·˝6č.zP_ĄSi5úЦŇGŻ1ŤˇÚX¶ĎÔ =A đ=A}FźD­MZŻ¬ë§ş RLyo0Ö«ŽÂwÔŚĄÂođdV· ˘Sí-ĘÓźľŽ<ňČöš&1}Ë-·´P!^©äÍĂdß}÷mžŕ „ő8­—ŸťYlfĺ÷×Wť‹/ľ¸y€÷e–<îqŹ^úŇ—6Źw ‡ł˛Ă;l8ýôÓ›Öâgě˝ĘĘC {‹ĺ94e8Ćn3¦šçÎŽM;e€/c·ß¨×¸yzuÔQÍó¨~#}ߎýÎl Ýżţëż>ĽřĹ/.¸ŕ‚áćíq-+ńž˛¸K ť%@–FěuÉZŰ­6Ć×ŃFĽůć­Iz]x8’6d¦ĺiwÎśč÷ő&ýąţŃŹ~tÓĄśVč(}ĐŻő ˇi\o|ŇU㹏Ď×;žY\´7ݬ/_To˝cËu!!![‹@,A›ô~-k;#,µÍ°MĽÓŚŚ ÓÄ-/Ź2̶ʉjâ{g#&QîĂ=^Ądüfđµ]ýőÍ\Ôúd<Ż´3,\[[µ×ďçµ=ݬoĂĂ‚—żüĺ-|Śüqî•<űň®ÁB<Ĺň®Q^^Ôň,2,j„±Ř.…aśµ{dc/9ĂąëmŚç¶‡öj\öăsy®“\Ó§ţ>oÜWŻŚÉĘlę«cc¨¶Őśý†,Şěą1"ÇoÂćµZu«mU{ňµĺĽĆhŻO©ňËó{{Ő«^Ő¶ß˙ýß—˝#őuwdć B B B v‚Ŕ"}Qše=]h›˘‘iš‰v§iDßM±çť]ß•ˇµv¦OšMô9G wo6ҧÂÎŃsś8¶m˙–=g|•±PoÖŘ\[[µ×ďçµ=ݬo#Ç!!!«G đŐ»ç;f\Ż9282Šňţf& `ĺ1¸ÚnĺÄ®úSi–č”ďŹpméŰÇujBş şę2ćV,ňňöťęŻňfő[ĺkŮŻ§-×0 [|źĹNq?n†Ü~ný"@[>ŕ^ăř”a›Ń» ŢîQy‹ë§Ć˘Ť:÷_Ćîź}ź×çW?6Çu˙«¬/7ŻĘWĎ}®ß™…Qť›;FXŮpł)ďű;Żůč§Žíýf=Ľń6&Ś')B B B ö´ýÄ(M˙ŃŠô9=M+҇ĄßĄ•1d—v3(5ÎwNgŃQÚਠZŽ# í®/ýŞgôýJËÉ[”úľűăE׍ËwćÚq[9Ř{ ÄľEďí"±·Śđě…-/p– ŐvÁ©ĺŮB”đ:á 2KH/Âé:mÓ„:!múáí̬/ž-„;1]FQ×Ű2s[4ŽEü]ß—óĚĘ…W;áĎcŢÂÄ-Ę[}?m1t^eÚ•ŹK±ńŔ@ęçÝŹËZĺUżöUÜź/s<Ż/×›G?Żęg|ݬľŞ~ń¨6ÇůuŢ/ôđ?çśsÚ› śyć™í7Vuł=E ´Í¬ţ{m4ŻŽz´8˝IďĐďtĄ7é"jşÚ1=Ş>MZúlVŰłň]GŹë‡łBi[ú^ަ••CëjNµźŐÇ2ů‹ř-ÓFę„@„@„@¬.Ŕ7Ń˝'ěĆân˝‚qÜÎÔ4ű¶™ywŻb/{ĄQH›řŚŕĽ˛•zčˇÍ=KH÷íNő+Ż ĽŚá^Őϰ>0ÉîĐÜFč»fgŇ<&Ë–MŐó°ŕěłĎ.ąä’fĽ·ČđĚ'<á Ă¶íŻ…â9•,V°Ş6‹›óţصăzuM_V×ô}ŐuŐf]Wu+ß5}ŮÔń˘ľŞßŤžWő[íמÇ÷UW]5ÜĽ=6ĺůçźß>|é!б[€ťxâ‰íˇJŐĎ>B B B 6’ÍQš©o·tVź·čxŞťń5}»´»Ťîä¤ÂđMłÓđtűŐW_ÝĽĹ9Rřp8Í]N%óÚ—Ő9ÝO›|đÁM»ëĂ›wúĄŰíiřŠWnLôűΤyLć•ésQůÎŚ+׆@„@„@l=1€ď¦{F°Ľ› ˛eE٢z˝^ëT¦Ú®qúŻpŢ Ś ÔŚ‹ŚŽb2ZóĐ.Oçľď©vűňńy•`Ăë›±XLCýč[|pŻWę‹Ţžx·Ń·?uÓź~0ă @§ŃľęíŠ4uovE?i3B B B`ëŘsJmë2[×Č >ÎÄ'cî8ĎW\qE3ŠĄDlA2@IDATb}Hq\·?_Fđ©ëIĆlc& -lÄ-4\óч:Śş‹Äí¬13|[hăöÚV×ŢĆNL—qxQ?łć<«˙YőĺĎ‘GŮŚ®<”/˝ôŇfÄçc@ř;~ú6O‹ĽĚµ<ŰöÝw:~ý˘¤îˇýxáʵí¸öăşćŇ—ŐÜä›ú=źţX]çăĽjcŞÜ‚±ĎďŻu¬Üć÷_ '˙FşĹUÇa?\$cĹĎoÍ  =!xŮ3€c+­÷7Ň.Îź•%@oĐcĽ›i‘©$ CÓx+’6)M6Użňz=Tyý~™6úúuě:c %i$ÚĘMµťĽč ĐGŹüăŰ›}ô Ť1Ö>ľ}á…6Ců“źüäářăŹošJ;ëŃŔŐ˙¸źĘŻý˘¶iµŃhÖt»>i\ÚÎŁךqW^eµ_kß©!!!°w|7ÝO‚đ…/|áđţ÷żżKHŹ»Ż#>&#Ž´) ëŔ ¦4ütÝ›ßüćöŕŁýč¦ý‚çi”ye‹Ć<5ŽţšjŰž“mN—Ň”ĆJ»·7îčOĺĆK{ńź—ŞíYuJ˙s±ĘQcÖ¸§ň§ňŞĎYełňëşěC B B V—@ ŕ»éŢ3Řů(ÍGŃÍ˝ćŤ"RőiołÂ°>É;ÇďŔ‚Ş<ČÎ-TlňmőđÄ类hËV©ÚŻ>«uú<ůĆ[íşľż‡ĘkAç¸ęWż -†nÇŚ×Îím~×ęĆŻčŽďńxLăóWö!!!!°Ńhp:LŘz©ś ¦úb(ŻŹžÓq´2#zéĺ©kvEŢ”^˘Ďl´—=-Fw1~—łOw:’nc0W>e_fĚtˇ6vuššë®î3í‡@„@„@l=»ĎŠşőŘě’˙řŹ˙x32`^yĺ•Íp›'ŢC?ň‘Ź >´sě±Ç¶ýťp k߼öű†Őµ$˘w‡‚q2Ôűxˇ=m/ţźW ď9‰îeÓ˘qŻeĽóÚšWf¬‹Ę—ťĎ˘zćcѦúçş[Îű­ĆVyu>µź•'ż’vúTçµWÖŹë•Ű÷çý˝Şcűڴ帮ďŰÎq„@„@„@ě Ď~öł‡}÷Ý·ywÓîŚĹő¦Ý¬ń(ĘđúëŻoÚׇşđpM,ËčˇŇSłĆ1+źÎdśçŚÁN»ÓńćĆĐĎQ‡f÷öÚ}ŮľŤ{ŮvŚ}^[óĘ];‹KňC B B ö^1€ďć{KD>ó™ĎlFl±ßő®w5#ń|\íe!!!{’Źi·|éK_Úâ|ű°9C¸Đ!c]ÓŹ“·8-Lsąá††“N:©… ±čÓzupßĆZŽőG»sdˇÍéwë  oĽBń k蜡śÁś×xźÖ3î)f}žăţĽďĎńzËĆíä<B B B`µÄľ›ď·>č',Ďhá-nĽńƶç>/ńfLćťAP‹áGśŃ<4ŮőŃľĎy˘˛Ż7u¬˙ÓĆjŽö^˘CXă#˛- ”ŰzCřT»‘·3óÚţÓF„@„@„@„ŔÖ# ·}ŘÜÇŢKk_sÍ5M‡ĎÓt0opFd{!ßhwš‡µuAµ·2óú^¦=}Óâ áô8OŁs`1^덪cĚŢNäТţÎŚ{<¶šGżŻăqÝś‡@„@„@„ŔzÄľj;y ářČG>rxá _8x%ňmo{ŰđÎwľł˝rHW|ÁYÝ(gë[ßÚâřiëĚ3ĎlÇDú"ňF Ö©1óĽI{›×*˝JÉćłźýlÓ öľFĎ_Ţŕ‹Ćµ¨|j,SyóőĽ˛©¶’!!!!°w`ć ~ÖYg ?¸=”Éĺ—_>Ľüĺ/oÚť ă0c÷ĽD»ż÷˝ďmäý÷ßxÎsžÓX µ?/m”žŐGůisÚÝÇ<ë-N^áćXorZwđ_4f}mä¸çiôyełćśüŐ"0_m­‹=2ŰcŽ9¦}\çĹ/~ńđ¦7˝ixăß8ÜtÓMÍŔMĚ-tĽ« S^(§ťvZkk۶mßňŠb?ąEm®W¬ŽŰĺ",ŠÖ â^§ä9cĽĽß˝Vé\|p1D7>+ŤŰ×[4îY×ĎĘďŰ_¦N_?Ç!!!!{orú°ĺüŔ4íţ×ý×Ç?üáöĆcéĹÚOÍžCÝţ;żó;-$ĘĐĽËgĄyíąf‘žŐ®üqŰS=ôĐöĆ)ÍN«×‡Ů˝…Jżs`‚Ń[¨_fĄqŰăz‹Ć=ďúyeú©ňÚŹűÎy„@„@„Ŕj|ßoŢÚB‚˝?ň#?2wÜqÍ›ä-oyËpîąç¶×$y”Ěoňy„ŰęC™Ľ«‰ň>x®(ť5őY}UýEbµęŐž‡H}(“X®x‚±BŔ(ł¨Pw‘{µÝď§Ć-ożľŤţxŞ˝ľ<Ç!!!!«E€‡ŤăĆýĐ 'žxb‹ď͉…vg$^ômÚTx@ĘôŃÉ‹/ľ¸iw†ĺq|đeč.ҬkŐîtx…;áĚRopÚ›ßÍ7ßÜśm„v)í>ωeÖjܵWĎqmS×őuÇĺóĘĆus!!!°Zbß$÷›0ő"Ó«‡ŚÄ^§ôÁËŠű˝HÔńΫO}FpŚÉ<9ćy•ěŚŕÄ´­ ö´9ů…€ůł:>˛ăŘŁOkđýµ9Ť"ŔśÖf´ňŹáűźřD ýG“Ó·óÍ®ž·$iwÎ!+śvß“ş—gÔf7ˇZěÁiwsuNŻ'‡ú=Ú}ŢOY„@„@„Ŕž"řž"?Ł_1ő;ě°öęásźűÜáŐŻ~uókPü=bs^RîuĹw˝ë]ĂĄ—^:<úŃŹŽ<ňČÁë• ËD)‘ş3‚z‘!Ţř¦Ú—GH ‡ÂkFĽs˝ăŽ;ÚÜđ-l0ŢŹ…ôĽů÷eóĆ9«l*żĎëŹűľő•Ű©ů÷ősĽńđ÷Ąî‘ßZo|oi1B B B †fÎďß˙űß<Â}×Ç÷}xu—78ť8+1"«'>8GFő§>ő©M»×ÇâK_ÎjcQţ˛zh¬_ťsb˙śˇß^Hˇ ­K¬9đixĺ80„[sŚŰZ4FĺóĆ9«l**o™ţS'B B B`ď%ř&˝·ŚľtĐđŰżýŰÍÓâCúĐ𲗽¬y—đş ě‰;žôjâ\0{ě±Ă 'śĐ Ë<9][XÖ#^]»¨}‚Ţ&ě ĎwďŚáĆ{Űm·µsĆoŻU*çQ˛ŚAsŢxŤiVyßf=@čëţ]tQ[X´ły%í>îʤŹ~ôŁíŁM áO|âŰ⬅{iQ–!!!MŔÇ-}äţůĎţpţůçż÷{ż7\yĺ•MßŇ*˝~śę›¦´ů%í~ÄG ‡rHÓ•‹®­özÝZyËîçőˇ]ÚÜú„6çµ~óöP(ôW­98µăÂPÎŮ…~ź×¦qÍď˘kg•ĎksY©!!!°w|ßOĆVŻ?’§ź~ú@TżűÝ﮸âŠá}ď{_{M’×Č,ń'źG8Ę Ĺ«™^Ż$¦Ź?ţřĄ łÚ†mgÄeµ[bšć9băUâP Ż‘ň—ďC™ ËË|uľnkőSűĘŻý¬ü*·ďë0žęźµO׼ć5mĚîÁĎ‹ßĆpžěIKŔ=;ÓĂM|LęÖ[omQÜ˙v,ý[铇.oI!!!!°Ńč!AhÖ“O>ąyDű¸ýŰßţöá­o}kÓ¶ĽÁé÷©Tš“ł Ă9ťsá…ÇsLűNł(Ułęí¬~w=˝Ë1Ĺžń›‹7;y…[o|îsźkŢěô=]¬î˛ýmSsX4?×,SgŞíä…@„@„@ě˝bß÷¶^=|ěcŰ„%!I`2úyĺŕś%¤MŹdg0´'žµÁ0K¸Úöd˛Xŕ!bžb2~›Ł€×+ÍϦ.¦şŽÇiž`םu>O43ŔŰx»T2ÎŹüăí”O÷Ä1ă¬p.ćgÜőÁS‹Ł¤ĺ ¸÷ Ű^öűŔÜoäćížGű€Ż#eîź?Î-ĘúäŐb‹±¤ŘUhTZ[Bˇ˙h–z`O»—¶ť×żkęńôŁöÖ˝Éé|O&óŁei]š‹~§ŃĚ‹s,ŻęŻőÇ,íľłs™§Ýw¶í\!!!°w| ÝGŢOyĘS†SO=uř±ű±áŻxĹđ±Ź}¬ÂyI óAĘp{Î9ç4ĎŘSN9eضmŰpŕîđĚXÖ;C?ËÍeŰSĎüx¨řćcŔ»šŃžć]BX{ő’ř_ŻyjÜSyS,Ź:ę¨&ŕ?đě?#=ďcŻ{C­(—\rI›Ă·ě‡~řpđÁ7ŢŚâć\[-ś[L¬brşk_RÎ1eĚöQXűoĽ±íëáŹ:6ü´á-‚Ďţó÷ňÔÇŘ=xÚÓž¶Šx3çÝL€Ă†ď/xÁ †3Î8cxík_Ű<şĎ;FuiwúeVRN«ŐUWµoű}ôŃĂŁő¨uiwýĚëO9-µl˘Y9Ôpáh#¤! VĆpZŢř1đ `öY}Ď÷¬üYí$?B B B`5 Äľď;#+CńK^ň’fxĺ}üĘWľ˛yÁ2r—qÖÔEfŰaHf/™0]ŻQy^_łĘäO‰l‹!OŚÍŢëź ßŚťÄµĹŔ˘9Nő9O ÷ăŞWy ŕ<ĽĹšć…,1Îz°€)2eÄ7×1äzŤőúëŻo|1î=ÂĂĹÇßBŘy ý¸¦ć´7äą—áé•Y/)÷W°µr¬®ß€˝„1/©úŤ(óď Ę‹‘,âi>ç9Ď©¬ěC B B B`— çŠ˙Ýżűwí˝Đ„ŻzŐ«šQ›ţYF×2$ ‡rőŐWďĐîĺľ‘(Í;«Í)mJórřxä#Ů´;'„Ňs´ű˘őɬ>gĺ÷c3ž©z•Wűţš‡@„@„@¬Ŕ·č=çqQÇÂ:üÂ/üÂpîąç6Ďn†VĆÂJSÂŹĐfP.AĘ;ÖGv^}Áť±pO%BÖüډś×ٞń׬W(gŤ×ü§ôő§Ę§ňxµ­ÁčÝ'<±$üy{ĺŐXfyżđ±p±©kn á6mŠuî>2Ś3‚;V†E…úŽë\^ťăˇŻľŽk뼎q-¶®w\©ÎµY©ćÄ \ Í»@¨ç\˝*/Ăł<ő¬+ĎąŤaÚćÚjOľ×|-kĂÍqµŁ®ą`ä7!6ľÍü•‰9éaŁůĺ—_^ÓرקŢ€O?)B B B v‹ÁšłÝĺc™ůČGÚ[mŢč¤+MiPÚŠ®˘yÄ×G‘C=tضýŤÎ=é8Q“NŁŮiP#4[ĺőłć9o?Ĺ`Ş~_Ż?žŞ›ĽŐ%řż÷ Ä6!6őŢóž÷´1¨Ňc/ŘńtyŰÚxŮî·ß~M°j“&®weZ$TŤQžA‰DP/#˘«íÚ÷óĘëËg ÁacÔ­Dä§EÍŁýčAhajĄ…ë`u C7ny±»72ň”IĆeŁÍ2`kŰÂśë€ó:®Řâî•M}‹ŹŞŹ—üjł®u.Ů»ĆŢ"E2Ł´ą:6^c7ćgÍEą<őý¦Ę ]Fm‹µşÖ±M;ŐľsIµ2ţ·1×GP= đ;őÁÇFť«+,Ęűß˙ţö0ńśç‘±‹d饗¶6ň'˛ĺĺO„@„@„@ěN´Öľűî;üÔOýTs>á î-6ÚťłGé¬Yc˘ąhśóĎ?żéc:’QťĄçl»2Ńjó’ůŮhwU2&Zm˝iQźëm7×…@„@„@¬]kÝ\Ž›b¦O~ň“›á•(ţýß˙ýáŤo|có†e\F8^qĹ-TY!Qx”ěiOŮ÷” WÖ{1oäM¨~Çm2 2f÷‰÷Íă÷¸áĄ/}i{˝•!ąĆĄŚ‘öôÓOoFd÷ÂB…ą…oeqÎíyí+·đa¬ep.ñ‡›1ŐüÁüA{K­ÂěÍҢý˝YřÁ~°éZ”^:î¸ăú*»ý¸ĆM›Ńp}ÚÚ˝ď?Ç!!!«K – ˝ěŢ3î‰ţ«żú«Ăýе8߼‰iFUÂł„éÔÔ‰i×0ŠG}Úi§µĐ›Ńp8o.Só›—7Ż­yeĽüĺ/ož.ÚW·ŻoŕÜžG Ž<ěĹ^gä¶)//jçŚäîO qy43Śó˘ć5m+Ojy ç®·ąĎý˝Ö^ŤË~|.ĎuR?nç˝·Žń÷Ć}ĺő›PfS_Cµ­ćě!ö=#7âa ĺccÜV·úĐVµ'_[ÎkŚĹÔ8*ϱqXp‰­ió0¨O}Ý>?Ç!!!!°» Đ=tË/ýŇ/ Ďţó[¸6Ú…v§K'Î]("G úťvçeNom¶4ĄĂ¦ň–÷Ľëć•-Óvę„@„@„@ě]bß»îç#¤× }!ž¨fÄvĚł[¨ ˇQÂYÂP~ nĆUm®^ą›QLĎşŤ5ÇÚŹëÍĘ×›w® ä[o˝µ˝ę)ü#ŻÄ;îO†Üňd®zí‚í´ĹsĽ ŰŚá6eŘfř.·E‘üZŐX´á¸¶jŰľŚÝŽŤOęóśWľ}Wľń×ń¸ÜĽ*O=r›ă2„;7wڰ˛yEÖÖÔ['Ű˙ôýË+žňëŘ'^ő<éÍg˙í&Ś')B B B 63:‰ś6â đÓ?ýÓM»_rÉ%íC™B¤ôšg<et#ŤHŃS-8Ĺ“H»ŹőÔ¸ŤÍrn.µőZŻĆWę<űX†@ ŕËPÚ˘uÄŢ{ĚcÓBGqÄML srĂ 7´xß §óŹc›đ6ń­‰Nžş:±ľUÄôĽyÎ*[V`c$η‡ ×űěłO‹ĂX±ĘË[íafq‚ź4÷e,f0VfńRőÚÁ?^SÇă˛>żĘę>ŐľęôçËW{u}żw˝9öó—×ů¬ľŞĽgUÇĘúcç0ţ[ôáď!Ź@€gžyf{p ^R„@„@„@lv ŐÂż=ďyĎkUÇ;Ţц|Í5×4í^łćˇÜ[>Şéě>ÎNŹr`ˇÝËQaÖő›%żô^í—×Zë/Űnę…@„@„@l}1€oý{¸p © á61˙ôO˙´ĹdÔîCeĚkčúëŻoŻd Ť"Ö¸…Ő—riŁçĄÍ©ţx|_uŐUĂÍŰc|ű”ŘěŢ\0' ĽO<±ť»>)B B B ¶ß>±ýÂ/üÂđÇüÇĂů/˙eřô§?ÝîÓ:Ąéf͉>*Ťô”§ĄâRĽťś'…@„@„@„ŔV%P!QÎ8㌦Áßýîw·=ÝCĂő:njŽś3ţćoţfřřÇ?ŢľWĂAvçľŮÓ˘ąÍ+ݞÚoöąf|!!!»–@ ŕ»–ď¦kťg¬řŕ łĎ|ć3›§2C6ćŰoż˝ÂyđÎJD¤xÔŚ‘^łĽë®»ÚÇĹďc_Ďş~wçď<á;ŻlٱZđ®çiÓM75C¸XÔb­ŰxÉ3ŠűĺŤ7Ţؤ¸F}e äÂŐ0Üş/Ę*vo$7ž~ĽŽËH<5Ţ*믫kĆő«®˝4ľ¦úëó«^µ©¬/ݶZÝźľ/őýć„’ÁI oĎz{ĆoůŢXđ»óqĐ;SíýĹązĆÇž<ŕń;ô›Ć´bŠw]ç0B B B ¶ š‰¦a°ţÁüÁćD±mű†´;­$ÔÉ<ín˘´{i'פO9dp ›6SkÉńŘzť9.Ëy„@„@„@Ě"ř,2{y>Cë)§ś˛#F8#opFFbzQ|pBÚGy㺆!Wěk†H^·z3`\$¤gŤqYÍX}ä‘G6Ł+ĺK/˝´Íß‚¤>déAŘÔÚĆa'÷áAzĐđŕ?¸Ĺúfü¶q®¬â‡—!Ů~Ľőńµ­ĽöăşćÚ—ŐÜĺ›úýĽűcuťŹóŞŤ©ňZŐuýµŽ•۲»1˛@cčWC†qüüć$cĹĎđ·ó‡ž,äĘó»řµ ó'B B B ¶(pžŰśN„Fˇ1˝}Čł»k8kzęŰčTNÂőŮ|äľ´;¸YRŻ—Óz®Y¶íÔ ŘÚbßÚ÷o§GĎ€xÜqÇ o|ă‡}čC-–ňüÁ4$Ăä"!ÉPÎëŮ&Ľ‡/Î?ýéOo^Ě •›5-š×˘ň©y1XWĽĆłÎ:k‡Ç÷ŐW_=\pÁÍ Ë{™!—Á—aWňaśnkcčµčaôő Á±…Š|pyŚ«c é®W׹zî‡<çňëţ¸Ćy•‹ůcđËHíܸËpí\˝:77Ű6eĺŃí5]çbt+ëϵç\;ó¸źyٶm÷|˛h{ÔŁ5|Ď÷|ĎďĄy׏ç<B B B ¶ZzÝë^× ßľĎóżńí;?ôM¶(q2°}ŕŽ?ţřáĎxFÓSÚެi‘Ć[TľYç•q…@„@„@ě1€ďÎ[˘—ŁŹ>şĹł~ó›ßÜâXűČ Ăĺ2˘’·®W*í;ě°ćQ˛™â/šĂ˘ňµÜD4 µ‡zh{0 &5ă°ŤQXüj!gxŰW,kůe.c°˝<×őŢÜŚ×6y ĂýącyUżĘküăsőŞ-Ç•đ(ĂvĺŐ¸Š•}mę¨_çęÖVůýőňśWYÍĄ ţBőŘ<¤áżm»ŃŰ9c˝MľÍ|’B B B B`ŐpđKaŕŢţö·—_~yshˇK«ÍcÂ`ÎśG¸6öß˙ć3ďšÝY¶h‹ĘwçXÓW„@„@„Ŕć&řćľ?»utD´|ŕ›8ŻbžĆ>ćČPËX9/ńäµ1ó*ćíË@ů}ß÷}÷ ç1ŻŤÍXÖ‹ëţxŃXyŃŘ0eŔu­…†E Żo\|ÄńŽ;îhń¬+Ţuqä]Źąó:vns®=Ç äŚČ’Ľ~«ĽVřŹ”ŹÓT^ŐéŤâňęÜľŽűş•gßćťű]TĂu1˛gÔ¶//vżÇ ©ß~űí×<˝•K5ćÚײU @7Ń“„‹ŁťčĚŇî4â<ť¤ĚۉĄ=Ő×ÖCň¦ÝµżŐŇĽůnµądĽ!!!G đŤcąW´ÄH)†˛Ď~öł[lÁßţíßÎ9çśfgÜftť—ÔáÂ{üâ‹/žóśç´ŘĚ¦Ł ¤óÚŘٲż˝axŞÍŞ7U¶Ńyć]ŢË(ÂwH5{ľ<é=t`[ll\-jäńgL·É·™«ŤqĽ<ÚęďWµ_}V˙ęôyňŤ·<ĂťKŚÖu˙ěËűÚqŐŻ: ŐĺÍ]FmçB°TńĎ=p±‰{>^hŤÇ4>˙˙G•ż!!!!°şč+·ç ţŻţŐżţóţĎM»{+“něµŕ%ppSü˛Ë.Î<óĚć^Ú¬´ßÔµ•WŹ–u\çăögĺŹëĺ<B B B z1€÷4r|/<—Ź8âcđ /Ţö¶· ďxÇ;†n¸aáG25ÄKxżá oh)ܶ=„aÎłdW éjżöýÄ çEĺ}[}lĽŚĹ äB¨ CyżW›ţëؾΧöłňÚE˙ř§Ú¨Ľ:Ż}ßFŐ©˝:Ć_uÇçý˝¨cűڴ㸮ŻvłXL€ŁĹÁ<řžŹĐ&Q^ýęW×_ýçy­Đ›0ţěĎţ¬}¤]X”3Î8ŁŹť浳ž˛Ň€öSi‘>\T>ŐfňB B B V‡@ ŕ«sŻ×<Ó2LňÜöˇL"řYĎzÖđÎwľsxӛ޴Ă+™Xž•Q^%·Ýv[űPŹîśxâ‰íă= ě»JL—®˝ńőÇłĆ;+g®ťŐćĽ|ěyROőŰçŐqíµ9ë¸/«:öµŕčËKUŻ?žĘk•gÔźumź?>vž!!!!°6tíΉEř¸cŽ9¦9°üĺ_ţeűţŚ· —ŃîśX„G¶Ď÷ńG ‡rH{›qm#Z®véËÚ»Ş?^®•ŞU×ÖţźJr!!!°Šb_Ĺ»ľŽ9óF¶íłĎ>íUJpĽîşëša[ŽyBZw[ĐkÂ]0|{­RÜB!W„Ú؉čť'|ç•íŠń¤ÍŘŐÁmô6C¶pz7ß|só §Ýë{2łĆˇśn·YĂç-Ň=ěa÷ú&ˬëwe~ôű®¤›¶C B B`ď$řŢy_w٬|óĎxĆpÚi§ řŔvx”řُӋb *˙čG?Úâ 2~?á Ohž)>–ITóZŮč´Č>ŻżěytR!!!!°™ Đ×O{ÚÓ†SN9eřüç??üŢďýŢŔüłźýlű`=ýľ( §âŰ>ůČG†§>ő©ĂQGŐÂőqhŮ•N,‹Ć5«<ú}™ä‡@„@„ŔęŘ5n·«ËsefÎ`MLű@¦¸ŕOúÓ‡ý÷ßż}ôp#¶Ź6Ţzë­Ă[Ţň–áżý·˙6Ľç=ď„GŮ]i‘Q|Qůîgú ť%Ŕ‰ĺářđ›żů›ÍţkżökĂcóÚ}‘~÷¶ç]wÝ5üŻ˙őż†×ľöµ-"ŹňEoîě¸]_şĽöSmV™ýTš•?U7y!!!{x€ď}÷t·ÍG‰W";ě°áe/{YűŔÎŐW_=üáţa‹(ěÉ<ŹpBôď˙ţď‡;î¸cŕAÎłä裏nńĆĹ÷!źÝ™ ăEĺ»s¬é+B B B B ÖB€‘›!܇2Ď:ë¬öFçyçť×´»đ†ÂťĚÓîú˘Ý…PˇÝĹç Nż qČAfw¦EÚ\ąmwéwçĽÓW„@„@„ŔÚ Äľvfą˘#PBúđĂđ€ yČCš!ü˛Ë.îĽóÎfÜCp^ęăĺŚß}čC›ţŢďýŢy—.]¶H /ÝP*†@„@„@„@„Ŕ&đßńĂ÷˙÷7ÝΡĺú믮ąćšá–[niod.ŇîŚŕ¶/ůËÍč-ָІľô=ßó=íCî;§ ×;ÓF]»‘mU›Ůď^‹ŢNŘ˝ŁIo!![•@ ŕ[őÎmÂqű(ŽíńŹ|{µR¬ď7˝éMŻČ3r/2B‹A(ĆŕŤ7Ţ8l۶­y–źzę©í™„Ď®1¸hL‹Ę7ámČB B B B B`!űß˙ţĂńÇß¶Ź}ěcĂűŢ÷ľáuŻ{ÝíľČśgµ78oşé¦ć¸"¤Šu8ĂúfĐîÖ¶hú…?‡MYÁ˝ó[˛O ť!ŕ;C/×Î$ŕC™/yÉK†÷ľ÷˝Ăóž÷ĽsČ^FĽřĘüµ×^Űb‹żâŻ.şč˘öˇž™ť­±€®mÖĄłĘŤjyµrÉ=—Ď3iĽpsďîsźűěąAĄçŘ„Âé—~iřЇ>4Ľŕ/Ž<ňČŽpJ÷އďŰ>¡Ľë]ďjŮ'ü†nWŰ©óYÚĽťUÎďcťăyg>Ö‰ŐVö{†ŔWľň•öaÖęÝ˝ł~ôVÁ®xRýd!!°îóŰÓjL5łÜťĹđÎä#Žhq˝ő¨G źúÔ§ÚtډX˘”1ü¶ŰnkŻdşV{^ŰśgÄĽâŠ+ZĽÄ$Tß±6çĄEĺ®˝ŕ‚ †/|á ßK~ôŁÝú ěy}n†˛­6ŢEĚÜGż›?úŁ?Î9çś¶ «küĽžű˘˝¨˛˛•'P†âń/ţĹ ´ácűŘ¦Ł˝ÉY±Áieúž1\D^áŚâ´;´mV˘ŁéwÉ·…„@dř\Ôߢrí}âźh›7M+ąÎŘ„á­.cŇî%ĐŻ?ÜŹĎţóĂźüÉź ď~÷»ŰşOąőžďMzčˇĂŹţčŹ~›I!!!°^ ˛^rąn)Äî!‡ŇD,ăă…^ŘâĆSşăFĹ ôˇťŞ»ß~űµ¶Uö^<ŤŻÝčsFUmÜç—ľôĄ6/Bź¸&Î|(ž }ć·ç·âů­ř} §ă·Ó'żA^$I!!!!ßJ€ŃńŔl†kzVHCžąźýěg›Č"ŻizŚA[|pmpŔMÓĎtŘXGë6.‡1ŢxĆ}Ę»ř⋇«Żľş­'̉ÜÚ‚~×߸ĄĄ"`MEł[;ů­pxşňĘ+[(ĚŞă^”óĘ<ç§Şź}„@„@Ě#ř<:)Ű0۶Çô¶=íiOŢóž÷ Ż|ĺ+›ŇÓţEŢŕÁëÚFyEó ÷¸Ç-ôŘ ®j›šŚ˛eˇ,6â”÷·9ĽăďhŰi§ť6<ëYĎžűÜç¶y&fÝ2tw®N čO~ň“Ă>đćqôçţçßŇ(ím„g>ó™ßR–Ś"ŕĂö61˝?üáçźţđ»żű»->ř"#¸VhgÎ!6FpoJ>éIOZh/Ý>KŁĎĘ˙§‘˙Ó#7p†Öţ:kýü™źů™áÁ~đ@ż˙ČŹüČ †ąsŽ6I»–€· Ęŕ}öŮg·Đ;~3’t»0ÖŹÂićžěÚű‘ÖC B`üłíb`9 ŕ*ĐČw ^ş É>vÉPůć7żyřâżŘ<–ů9z%Ňö =hxžĐ^Ďě˝z˙ôO˙´˝:Nj㬳ÎjżĽú´L?ę{=ňöŰoÎ;ďĽÖ&y{ýđ !Ňx*ÁrŇI'µĹĂÁÜ^ă{żÔXjŻß:®˝ĽJ}^×^ťYÇ}YŐ±'2űóę§ŻßWÝ>Ż®™UVůµźWżŻÓ»†0¶ůÜç>×bK^~ůĺmaĂ;I™ß–EO’qňŕä'~â'†ç?˙ůíáĸ<ç!!!!ßJŔÇěyS GřÚ׾vř«żú«áŽ;îXę#÷ZăB»?ŕhÚť&~ä#ąŁŁ[nąe ßĄç<ç97>Çá.ĆšpÇĹŁk ÚťS„viĂ>üɨz3´Ňîĺ.ü ý.:Ořý÷ßż9ŢôowÖXjŻÍYÇłĘfŐďóg]ŰçďŠú}›ýqßď¬ăq}şÝúÉď›oľąÝ!oĘCß=r\ž÷öÖq~ ŔXĎ ĄSĺúN µřZ‰ĄţN(ÉüĂ?üĂÍ»„‡cć­·ŢşĂŔ<PŐq˝.GĚşŽÁCúĐ&P k‚ąb ÁÂ`-Iż„ţő×_ß>Ć)چqégQ"Ţl ü’1zeôŞ«®jó$ćĚ˙űľďűÚąq>âŹhuŤÝx‰»±‘ĽUX?c’[‰(¶ČâiŹĄsnÇ8ňí§–DńČđíÉřŔ©ŞÉ  @ż–†=óĚ3›îľîşëš‘™F.ĎÝYÚ]ąŤ.ľä’Kš†ňBDZÜ^ŇĎZĂ]čWűĆd<Ţ dü¦pÖjš[čĘrž /l]ϜÍ}y†[gĐ•śr¡íé÷UKôşµŹDŻÓđî…‡%řÓöwß}ws^áXdŤ$DŽşý˝ˇŮmÖm‰Ž=öŘöćđQGŐ”%…@„@„ŔÎ|gčĺÚu n"źřÄ'6 aQF"t™řŕ#µŘ}ę?ěak˘‰`&DµĂÓ¤7€÷"kÖŔ 8vŢ#>xÉSaĂ÷¬ö;ňJĆĺ ĽJhžÉŇľűîŰgöćĂ`.•(t}ĄŞÓĎÍńZŤţŐŢÎěőKđVŞ1Âî‡s›óĘ“o1dSć^ÖɉHöpÄBäćí^# ŕË$ ü¦°<ᄆýŻ˙uű¦ßDR„@„@„@„ŔÚĐ §śrJ )'„Hi2ʤËéąyI9#5C(MG“ ŹBűůH9íĆÓş ŕĄ%µ©oFVŽ1<Ťiďe-őýh«>śŮ·a­ÁY…!ücŽiEt|Ăi{lÔf9´¨dNĄ=«?ű>éaőĚŰ~w$ýÓăý=«1OiuySçĄÝo¸á†|Ç: Ck(ż :ž!|Q2o\ÜLO?ýôáÔSOmŽB»‹É˘1¦<B B`kH”­}˙öŞŃKBYüÇ˙ř›8ćŮK|-›F_­˙řć™ÂđÉxĽŃÄPÍ#EśCŢ‹R Y{±„ă˘ë–-'¶Ĺ—xCŢŹŰĺ%ďH"y#“9ń$ň[wţ§ú§Űoˇî×Fö•¶B B B B` ĐéůČG†WĽâĂĄ—^ÚôÝZ´;f´;ă·oűĐą´;Mż¬fcđö¦Ą8Ň ňĄMçÝkúNŹúeě­k–iŁęŽ÷Ć.üˇ˝>„î`ź:ďŻUŹ·9íß§~,SÇ}žëúó©ăĘ+/mšĽw`ŃÍ.T%ý®ľsśťÓů6ěŚvďď­cl¬s;ě°ö{đÖ¦Đ'«úF¬{!!°ńbßx¦iq'0‚óľćÁńˇ}hxÍk^łC|•`›×<φaĆOŰ9ůä“›1xŢ+‰ăXĺą0Ż?bM?<Ľ˘çĂ9çśsÎpŃE WÝüŃá3˙ű¦áž»ż>|ń¶íq«˙nŢç—„ĺN¬ŰĚQ2†ŤăVĘčŻ|Qš7ĎE×öĺÚ™ZôÔ˘˘úqŢçń é˝Oú6—=6O÷ŘĂlZÇ˝ÇňČY¶˝Ô XL€vgzä­o}ëđÇüÇíŤ>ůĄýćµB×Ň­  ân3Órăŕ} ¶úç›ă §oqÎëŹVäB>ő©OmŔäťĚť ß{˛3ôöíőÇĆ2>ďÇgŤ éÓ6Öîu^×h«t>Łů˘4ŻďE×öĺ8Ňäăöś—6wlS·wr±^š—Ě»Ou^ó¤Ű…Ťq?Ľ ëC¤‡zh[Ăy2oíÖ·›ăX–Ŕâ˙Ă.ŰRę…Ŕ  !Ż2ZĂÂŁxQ,¸Kb¬6Ćcb¸âMá#6ÄFČ|}¬@ńĹ $ÚŚQ{^Í#Ň˝şyŕ!ű ×ßďφýO~ß°Ď}˙vǰľń÷ß6|ćŇ9ś÷˙|s¸őŠŻŢK<î¨4çŔw&Ëś¦·l‘űgqŕ·áIŢ2îŹ)ůíđ á%/ÄŚű˝ĚBbËÂČŔC B B B` ‹¬9lśqĆMż×·}„IYF»>ąpt|é­EŽ1Śâő¶˘ö­zç }•1¸úµ¶¨4O…Š©ň˝e_Fíń|ä۬›¬ÇlhřťŘ„‘á´BÇ3vűčéAÔň=P?)B B 6š@<Ŕ7šhÚŰ0„$ů»żű»Í3C¨ŚúĐĘXtÎ딨eüŕbŐ6AëuÉecşŽg9QÎë[¨bíďîű™áő7?{řŰ{.ź9ŚonŹ ňń×?t¸îíßŐté ysäeQsęôĚ÷ň‚ÍÁİ…Ďť:÷`§{ë5IFď~‘´—#ĘôB B B B`Ó kß˙ţ÷ď|ç;ŰĆEŢ"Cx?ĆRorŇî ¦ĺQÍ}îąç6µuÁ˘DG҆ľ;tÄG żř‹żŘÚ­Đ÷ן0}>‚Épďű3ĽĚĂ­?„úŁ×K»ÓňŚâµŃďýÖ·=uĽŐôţŘŘ]Zť‘»ŽK·ÓëîýnOĂ»Ź|psPńpĂýú&Î*SżŽä…@„@ě 1€ď ŞisĂ |îsźkbô7~ă7ZxĆk‚s­âŃ+va¶–XŚ®ĽľţçľyŤřQwĎ?|ařŻ7ś8Üůw×^ôű'ߏiĎ}řë†ĂżýG[\=áRßĹN´çÍBL×ë™ŰtŹ['—xĆą Üö±-¤ ŻnoTX­3»Ś4B B B V‡C±8Ňżň+żŇŚÉkz­Úťˇ”ä„°ŢofM†YVolžyć™Ă“žô¤f rçµQećÂ0Îoâť_}őŐ; ćB°”ś–çÔRŽ-Ú¨9׾ÚíËúĽyůăzk=_4˙©ňĘł/7˝Î¸íŤLk"BŢĆäxÄ»›“ o{÷­ę¬u¬©!!I đŤ¤™¶v"’aŘk‰>”éŐĘ?üĂ?l“±xŮD¨o¶eb2´V¸“źú©ź¶m÷X âĘű˙ŢţsĂG?÷şe»î÷mß9üęˇ7 ßńÍ7cwy‘Ly€ĐÂźÍÂEŚCŰ-·ÜŇľ¨îuĘňŻë k¬J`׾8>Żüőě{1\×—(vî'‡ 6Ţ<ıEډŹů(rI#ŞĎ‰â™Ď|ć@» ŻÁś'řÎ$ë Űľôwźg>6úťA\\É Îˇ._¤Oiáe’>hwăÖ Âăq¶ ;yw6Ѳe0¦[g%Flaú„Yˇ×KżůË_nÚ˝4|9ŻŘ»¦Śé4˝ÔkúžQ\őÚ˙ř§tx卵yť÷:˝ŽÝ/¬zÝ^Ž?śUÄÝGużŐO ­B ˙×Ú*w*ăÜA€ ´·D™W!+„Č"ŻîŤĚ8(qëCŠbţŘŹýXŰó§kżôîa»Č8{áůŐwż˝ŔU$*mĽ,¦b.ş>ĺ!!!!!°§ xŰĎvôŃG·Ź•ż÷˝ďm^ĐŠ”|lŘ]vĚ ß6k‚Ă;¬y~?ýéOoÎ#˶±‘ő¬%¬#lI!!!›‡@B lž{‘‘¬Ń,LČ'>ń‰áţĎ˙9ĽůÍoÄ /Ż MňjkÇ˝Ŕ®2ĺÄ3C7Źď˝čEĂSžň”ć5RÂZť>ýő§}xß§_Ög-u|żoűŽá?qĎRuS)B B B B ö´;‡ń´…3¤Ý…IÇö.Í^Z˝ô{ťăAŁ34 sňţĂhÚÝ9eeI!!!!Pb/ŮoY^$¤}ąÝë”b„_wÝuĂ9çśÓ>T#LH˝N8ž$/ Ż1ňJađ~ÖłžŐ^[ô±Eń{‘=ľö=ź~Épö§kś˝đüľßv˙á·ŽX.ËÂĆR!B B B B ¶ĆlÎ*wÜqGÓîâeźwŢyĎp1ł… d*1lÓďBrĐîÂz+ôĐCmÚ=†ď)jÉ H”ü¶<BW8 yp‹IÇ“›ńZh›ąűî»›wI}XĆ5 ßâÚ„ďű¤“Nj^ßóbű°Üo˙:\Óţ÷۶¦ú©!!!!{ ť^ß¶ýăňľ Ăś×¶xß7Ţxc‹›íŤNů ĺ ć´»ďĹpZî„×7íÎř-ôI} ~oa”y„@„@„@l,x€o,Ď´¶‰Ě·ß~űpőŐW—]vŮđá¸}@҉nFo1},‡ńÜGrÖ’ľřµOżuő~+÷ţţúüVžđŕ˙cxöĂ~Ą”†@„@„@„@„Ŕ ŕő-4 ýţÁ~p8÷Üs‡;S}ô˝´űi§ťÖ>vé#—´űĽ·5W]¦!!!°€@ ŕ Ąxkú¤ľ¬^Ţß5#ŻOúȤ˝m=éĎ>ůĽáŇ/ţůŇ—~Ű?»ďđ+‡^;<đţ,}M*†@„@„@„@„Ŕ* Ýy|Óíĺý]ó.íÎčÍc<)B B B –%(Ë’J˝-IŔë’¶]%’źůđßnúň‡†»żö·Kń9cź˙ă÷R¤R)B B B B`ŐĐíc·'I!!!!°ňy썠6V–Ŕwß÷áĂżÝ˙ÝĂîżďBOzčK†Sň+ ëĄB„@„@„@„@„@„@„@„@„ŔĆH”ŤáVVśŔ=˙đůáěĎü§á‚Ď˙ŃpĎ?Üu/۾놧íó›ĂßőÄ{ĺç$B B B B B B B B B`×|×ňMë+FŕĂöoŢsÉđĆ›ź;|ńk· ?ąí-ĂßýÜŁé†@„@„@„@„@„@„@„@„Ŕć (›ă>d{ íŃƇG~ç Ă·ßç»ŰŚţů}´—Ě,Ó­G đ­wĎ2â żű/&r“!!!°Ęb_廟ą‡@„@„@„@„@„Ŕ^Bŕë߼gxËm˙v¸űëwě%3Ę4B B B 6‚@ ŕA1m„@„@„@„@„@„@ěQżë/‡Ż|ý ĂĹ_ř“=:Žt!!!°ąÄľąîGF!!!!!!°|áőíŞ żđ†u\ťKB B B öV1€ď­w6ó !p××nnřŇŮm¶źůęá)9ť:ćIDATµĂ'żň‘™y¦!!!°@ ŕ‹Ą<B B B B B B`S¸h{Ř“on˙ŻRĽŔ‹Dö!!!1€ç7!!!!!!°Ą \ô…˙qŻń_öĹ?ľţÍŻŢ+/'!!!«I đŐĽď™u„@„@„@„@„@ěnůʹÝwý˝ćrĎ?|q¸ňîżşW^NB B B V“@ ŕ«yß3ëŘ+Ě wráçß°WĚ/“Ř91€ďż\!!!!!!°‡|ý›÷ ÂťLĄëľô×ĂÝ_ż}Ş(y!!!+D đşŮ™j„@„@„@„@„@ěM®¸ë/†ŻţĂ—&§äŁፓeÉ X1€ŻÎ˝ÎLC B B B B B`Ż"0+üIMňÂŃÇ1+?űŐ!řęÜëĚ4B B B B B öw}íÖá†/ť=w>źůę5Ă'żň‘ąuR!!!°w|ďľż™]„@„@„@„@„@ě•.ÚŢD“Ei‘—ř˘ëS!!!°µ Äľµď_F!!!!!+Iŕ˘/Ľa©yűHć׿ůŐĄę¦R„@„@„ŔŢG đ˝ďžfF!!!!!!°W¸ĺ+ç wţÝő÷šă}ţŮýÚůCľýŕ{ĺßó_®ĽűŻî•—“Ő!řęÜëĚ4B B B B B ö ă°&Ľ˙ţĂîż­Íí™{Őđ~Ü˝ćyáçßpŻóś„@„@„@¬ŔWç^g¦!!!!!!°ĺ |ý›÷ šTbüţů˙f(đożĎż~v˙÷ÝË~Ý—Ţ;Üýő;ę’ěC B B V@ ŕ+tł3ŐŘę>~×__ý‡»Ű4Ęřý˝÷Ű÷^ÓúÎű<ŕ^Fđoß.ŢţŃ̤Ő#řęÝóĚ8B B B B B ¶, 2Ëř]Áëş*Ď>B B B`5Äľ÷9ł -OயÝ:ÜđżĎżk˘˝ü3_˝fřäW>REه@„@„@¬ŔWäFgš!!!!!!°Ő \´=ŚÉ÷Ţożó{ödÖÜz#řE_řłŞ%?B B B`/%ř^zc3­ŘŰ|âËç¬Éř]ó/#řg˙ţúáëßüjeg!!!°b_›ś)†@„@„@„@„@„ŔV'p÷×ďžű˙ľÝüŢĽ\v^Śŕ?±ď›‡/üý-Ë^’z!!!{űîsČB B B B B B örß}߇ďô ÁmI!!!«C ŕ«sŻ3ÓX)1€ŻÔíÎdC B B B B B B B B B`uÄľ:÷:3 •"řJÝîL6B B B B B B B B B V‡@ ŕ«sŻ3ÓX)1€ŻÔíÎdC B B B B B B B B B`uÄľ:÷:3 •"řJÝîL6B B B B B B B B B V‡@ ŕ«sŻ3ÓX)1€ŻÔíÎdC B B B B B B B B B`uÄľ:÷:3 •"řJÝîL6B B B B B B B B B V‡@ ŕ«sŻ3ÓX)1€ŻÔíÎdC B B B B B B B B B`uÄľ:÷:3 •"řJÝîL6B B B B B B B B B V‡@ ŕ«sŻ3ÓX)1€ŻÔíÎdC B B B B B B B B B`uÄľ:÷:3 •"řJÝîL6B B B B B B B B B V‡@ ŕ«sŻ3ÓX)1€ŻÔíÎdC B B B B B B B B B`uÄľ:÷:3 •"řJÝîL6B B B B B B B B B V‡Ŕ}WgŞ™i„@„@„@„Ŕž"p×—ďľţŤŻµîďßďţĺw>pO %ý†@„@„@„@„@¬ŔWčfgŞ!!{'«>yţpΕ9ÜöŮë‡{ţîKĂĂtŕpđ÷7ś~üO ÷»Ď·ďô¤żöőŻgţ懯~í+­­ď¸˙w oé†oű¶{Ë˝ú„áÚŰ.ÜŃ߯ýȆ§÷“;Î\wű…ĂĎ˙×väťyŇ‹†˙óĚWď8ŻWĽĺ§‡w_ô†:ľëŰż{ř‹˙űSĂý¶NgĄßý« oűčßQü†_ľrŘ÷!‡í8ĎÁž%đ˝î‰Ă'>őń6ÇöĚá·^đ¶=; ô!!!!!°î˝r]‰)g’!!!°·řćđĘżřą˙Ż˝ó·Ş8ŰöKď˝÷Ţ”&*(E  ö{‰‰Ć–äÓ?š|úM1&ŠJě=j,H,HSD”. ˝H¤ üëśĹě}ö†}íěsî7×f­5kÖ¬™{öą®řĚ»ź±·?{ŹĎýÉÜĄSL™áĹŠ–đE6-ÎŰ6îž2#zä¤çăúáɧ3‡Ů†Mk¬|™*a1çYBŕľ+GŰŰw{€gI·é& @€ ĺŔł|é> Ns–L˛­Ű6Ç˙ý/Yµ uÝőo>Ů•Ľmżłç§ÝŤ\üS·Zs«W˝ą-^5Ç= Ů*ßѬN{›١(#\Ç–őŽtĎ,_3ßeC»‹čźdQ]ĺßmZmş}tlÖË&Ďă.·ý°Ő>öŞőďrĄż}PŹ‹żťí¸.ţvŽ}÷ýšh±ˇnä1ŢĘٲ”+])îËćm§•k3ďż^6ŐJ—(gő«·°R%ĘÚřŮĂmŰŹYóÍęt°Z•EĽ&ŰG_ µ"Ń˙.ęóű¸MťlÜĽÖ&Í}?Ş3ĹV®_lÍŁgZŐďbÍëvÜŁ×űŇŐ_ŰĚČ{}áĘ™ŽŐňµ˘ąlaÝÚ °˛‘·zË×.°oVLwEŢ ýNÍ”ˇżÓf,ďćĄj…ÚÖąy_«SµiüŘ’Ős݆Ƨ±ÝşżUŻX/ľďODżظeWfżÚ©X¶šżeSçh›ŁŚyE˝č»¦ďŰ×Ëľ°˙F,ľ]żÔjTŞo‡7:Ć:6í?“|˛ţűUQ;Ůô…ź9+śőްmFÜÖąr_żSô«Í@€ ŕ…cž% 0‹#ѱrůnT ˝ř­e\·Šüą?›5ÜÝ߲m“;îë?˛A˛ęA׌¬=$hתŇŘ]ĎţQd/QĽ¤őn®ľucf$śz\âdɶ*ş7fę+q–°®Ż‰2×o}şż­ţną.mÔät|çÎQ¶ýoŁLúúć:ýóŕ›7Ř•'Ýcgt»ÎÍZ4Ń®$§ďúµww÷_ű©µ®ßŐîyů"[ła…+»éŚÁN~tŘ-NĽm^·C‚>~Ö»ö—W/OX@pF˙4¬ŮÚţrŮ»N@÷e:îŘąÝţ5ćOǫ̈;Rö»d‰ŇöłŢżł Źż-~ěŁ/ßpăQAąŇmđ/?µ›ë“ă˝çw“]Ó˙oöęG·‡Ţş)~^'•ĘUłßť÷‚uiqbBůý˙ą.í&›6qU\|Âď­x±’öäŰsxşË2箋‡ć°% ßţÜń˘Źq›]Łöţ`ż{ć4_dĎ˙fV$˛·Ż9 @€ 6<Ŕ öü2:@( t˝Ú†Ü¶Â}Ľf\Â(żŹ˛lg–$‡5<*á~^/’3¶§ţčç-XYÉŠF5‹˛’woŽ©Ěaľľ®«GŮÓMk·÷·âăČĎwŰźÔ«Ö̉çÝÚü$ľ˙ĹĽ±‘»(ľ>'/Ľ·˝<öo)Ed˝_^ßŢĽ>ď˙ťçîLţzŚyń;ą‘÷¦Ľhż}ňä"´Ż÷ÍŠvíĂÝ\Ć´/ÓQý~břmiű­_<‰ĚC?y8|,>—]É­Ď HůŢW"áűĎŻ^šCüÖĂúĺÁžčějâĆrq˘¬oő;Ő†¦Úŕő‘w~›ĐšÄď›?!‡ř­JĘ×Ü€ @€@á%€^xçž‘C€@"°yëg1$ň˙ľvpw[»aĄť¬&.čuë~iǦ˝¬dńRq[Ţe᪙NÖ ŮqČÎĂG¸¦ŻŻ{]Z&f«Löá&™˛ŻPôh{¦;ęź;vŘčÉ/Ć×údŰ›í™ŃwĆŻ9éČ‹]ń?n¶~>6˛ćŘeő!±ö?źüÓŐkR»­ÝsÉ[‘GúŻâçtňż?ý·+oP˝eBą.Ţ›ňr,ř–.Y6¶&ŃĽ~ű×qý e«ŘYÇŢ`w]4ÄúńÓx>”‘˙÷!×Äőt˘lyŤkf×ýä~ôóí†Ó2eęűŕś*ôË•ëąq\Ó˙^ëĐ´G\Mă}wÂÓVĄ|M—±ýËSďł5vŹK‹ďN|:®ź›“9K¦XŐ µěŇľwŘľbgvß•YďŰńůsţÔţ»ČJfk\ÖŞţ‘QöüíŽSŲUcŰž¸'€ @€@ˇ"€Jˇšn @•ŔŇŐóě¶gOO^™Rĺ#kŚa‘HY+ˇ<Żň­îĐ´§Ťź5Â5áĹęĐ˙[Ö+z_ÍĘ lEä˝`ĹW&Oěí۰ů+ľŚ_ݵŐIńą? ¶aÖoĎvgą[G4;ŢŮqlÜĽË?ZÂîą=~ă; Ç9‘'·ß¸Q/j×řŘŘ>Ł]ăăě’ţ×FN~ÁőˇDdŰ!Ű‘ eŞ:ěŐ–ąr˙ŹĆ\¦d™ă(żóOŘToeEŠěĘQúÉŕ„ ěŰĎ1¶é~ŘéÎkűĹţâÚš¶`ś-‰üÉ˝¶2Ă}ÜzÎ3Q6ý®Ěü¶Ń>Ź2©ÇN{ÝÝžłd˛Ż–ăxÝ€űíÔ®Wąň3ş]kçý©qdGł{\w^řš©=…5.ąďpw®䕞—(V¬x$đµ6 výrˇGŰł˘ťn‘@í}żĺ»¨K#‘ĽŽ}ůÍ8űbއńkŽhÖŰî˝b¤-RĚ•iâŠű;F>໾;qEN @€ BC€ đB3Ő € M[6ŘŻźčm~¸[ÝWˇo÷ĽĺÓÜŢ˙[m·nĐĹ˝˘uý]Çí;¶ŰśĹ“ě«o>vŮŰşY¬h1·‘˘«ü3rŇnű“ÚUą u[~ĐÚXч[ ë#Ę”,źđš ýĄýż§OŤüŔďŹ6ţśh'uľÔţ~ĺűîóçČ‡Ű Ż epˇLę?_úN´©f›XüÖcŢZFçu«5ŤÄď~:ŤăÔ®WFő‹Ä×>ë[ö2ď˙igü‘ř-«mů΄'lÜô7ăgüFśqApҶQ·řŞD±R‘ĹM›řZámďň5Wˇěo”˝îC›Oć%”!ďĹo˙Ľ6ű cíĆ]żpYś„qĺIw'ĚAí*Mb?¬Ç9 @€ Px^xćš‘B€@&P7ňËľďĘŃöm”űŢ”—ěăéoąŃĘ ĺŹ/˙Ěţĺ' Â`^QČÜoz(;’‹>‹ýĆ‹+ŰźČÜgĎ\<ÁÖż:~eëhcÂňeŞÄ×:™eZĎ_ľ[Ôöö'ľŇq‡ź‘`}2*ĘşľĽßýívlXŁu4¦öń¦ž˛ÚřxĆŰjĂÇcŁľÉ–¤qÍÝŮĎąí„ä’ĹËäxĚo ©Ęň?áw»­K|ĺ0k~ŃŞYľŘĺ™>bŇs&ˇxÁŠé Ůě Ó\T*W#áNĺŕşZäăn¶[|WE-VD9Ú:Ť˛áw¸cn˙‘ž˛2 ĂŹyń·sĂb'Â'D-ę‘\Ä5 @€ P €˘Éf¨€ Pp ČžDV!Š:^`|éÂŘzć˘ ¶ —›Ôn·ĎD‚píŞŤmŮęů®-e(ű,ĺ¦QűĘVř pťË"eÝĆU:uf‘ű˛‘“vŮřëżbSć}ŕ/më[âsťČü`ŕE‹·?Fv÷ľ~•M=2ˇşĐ†Źoö¸ŤřüŮČľd°ťÜů˛u2)¨T¶zĘjňöö!ŃWV2{Š­‘gąŹÇüÉ}7§˙»ÄdŮÔH?Q$IĎô]Ę,Ď4Öý ®ú˛ü)[*çłĺJWĘ´9ęA€ @xśT†@źŔ{S^4oŃ8ĘíÔü„`ĐELţŮŢC7äż˝?pµ%Űoř¨Lóďľ_ŁâŃ[ŕ˛ćh;{ɤH(ŢeYˇzÉţ߲ćĐxÂP¶ł>éB÷ä˙|xĂÝéęîky­*ŤíŻ—Źp ?úŞ}6ó]SV{(F+3\ö(ťš÷±Z•ĺú•E#[TQ«rC·ĄîiĘłŹ˝)Uµ¸¬ZĹ:îü“(K=ż5'vş(Z$éí˛¤}÷–.€Çť:€'5#>>důłrÝÂhcŇľČW®_”pÍ @€ P¸ €®ůf´€ P@ Ź2Ž%Ä*Ú79.I7[˛:ѢbŮjűmä˛Ańř”ČbĂG«ýżu]®tĺhłČć& ŹůËżŚ7·¬T®şiŁĚ0&=&.‡EťkÓĚ-€ËkÜ/4”,^Ú.îó÷Ů´ő;›8{”˝4öŻö傏]·nŰmČ8ÖúńłŚúźIĄ5Z™6·Thˇˇűa§eňMśł;[]’şćŁ8;_ ,_ł ŁvöĄRčMľ/íěéY}ÇÂ?k¸ťŇ劰Č>š6$áš @€ @ p@/\óÍh!@ €hR«m,€k3ĆoVNw(jxʨ6á©„‘6«Ó!ľľoČŐ¶yŰ.źć†Ő[Ů…ÇßßËä¤SdµR˘xISÖł÷bÖsˇí‰ż–ÖéܢoÂ&ŹŞ'?ď0®đ«[µiXäÎwÚNűżĎ·Í[wőýý/ţmמú“MI޵h˘­Ź,Jö‡5<:íózN_{Żk˘hѢöň- ¬zĹúV¦dçý]˝R=»ćÁŁâWěňŔŽ/N”ˇ¬çrÍëvŚ«kÓѱÓ^µmĎŠËĆN{ÍîŹ2Ď}üę'˘ě˙łm^´čŕCyzk•­˙ţŰ{_ożÍ9÷{Ű?6xdôËyĎ˙°}›+yđ­­NôÝéĐ´§ű;řWdóY$Š€ @€@á%úż /F@Č ý:ý,f%ßřčńÖ§ăůV:ňńůs¶|í7ń8N<ň"«\®f|-áxæµîZŮăąŔKG‚j»ĆÇÚçsŢ‹Ű,]˛l´ dâć…˛ÝmXT9Ů˙{[äY=vękq;ŐŁŤĎěv]‘ÜWčܢź}ôĺîR|Žź=ÂŽjuŠżťpÔćź{‹ˇż_e{ĘŽ/€kÓĎ[ź>ŐÎú'k’kFů“ń+”ńÜ&ÚŕÓG™’ĺü©;>üöÍ&A»_”!^µÂ.«’„ ).t˝ĘeŰËŻ[ ňvŮęykۨ»Můú7~/ţV­PŰ´Ŕ ¨Wµ™M´Qî\ĎľeŞK,ž8g”˝;ńi[ýÝrwO˙lßą=>϶‰ÝŽşÚ†Ś{Đu]‹ 7=ÖÇĘGľßňCOöŽĎ¶ńŃ_@€ @`ß €ď;CZ€ tMk··ëOdŢĽŢ$Ě®ţn™˝ňáßsôŁFĄúö‹ţ÷ĺ(ß× ١޼NÇ™ÔÉá»´<1áŐĎxË6l^—őh70­ř­JÇ~z,€ëZ6(épÝß×čÖć'Ö«ýŮ6ć‹W\Ss–L±żľzEĘfÚűV«]ĄI|O‚s±ČŰ{űŽ]ł6îÔ§C“ž ŕ%"Ű•[ĎyĆ®¤§mŮ¶É ş}94b04~ŹNĘ—©l·ź˙/g=ŁëľŃÉ[ăsß ]˙óťßęŕBóĐ:˛«™±pĽ»Ţý@–.ąÍN˙±ą´‡Ľn‚™¶Á47.í{G”ń>Í&Ď×đß)ń—@ţĆÇÇ÷8 @€ ˘…k¸Ś€ Ppś~̵‘čů˘U)ż;»;ÝIG^lOŢđĹ3śĂúą9—xT“Ły˝#śěË•ý\Ą|-éŽ#'%ÚźônnÂýä‹nm$´©lđÍŰ6&Wۯ׷śý´]ÖďN—UśŞae^˙ňÔűěŇľw&Ü®X¶ş]uňź#QşbByn/ZŐďbĎÜ<=˛6ňŃŽÍząyîŘ´w|_â7źůhŽ>×®ÚŘţďgC˘E‘żĹuµ€ňÜč»âëýur0<ŔŐ× eŞÚß®eWžt·ÉҦT‰2ŃFő"áű*»÷Š‘Î%ÓžljÂzśC€ @@‘čç´; ĆPňżÍ:Ü–oţĘ~Ţě}kZ®Wţé= ,oż[błn«7,·Ő[ZŁšm"á»z¤ç/˙*˛—Y`˛_‘đ-+”&µŰZÉâeŇviÇŽlÝ÷«"ďíŐÎŻşVĺFѱdÚú{ş±fĂ2›·lš-]3/ňIofMk·łJĺj¤}dæ56cŃx[·q•Ţč„ ő´eůŤ‘ĄKŃ"ĹâQĽ>îôźëăëwmŠ<ěKÇל@‡˙ĽŕĚ%# ěOX ěOš´@8DŞU¨kŐZ×=Do/Ż•EH›GąOnF¬M:«”Żí>ąy.U]×NóÚ©nĄ,+_¦Jä Ţ/彂P¨Í_ß˙D<ŮËýJŔ‡ÄpmęŁj…ZßG@€ ŕ…d˘& @(hd©óęG˙}Ö‡MxĘN;ćÖľńq‘·üZ9éůhłĐ±ń°Źďp~|Î  @€ P8 €Žyf”€ @ Ŕ˙÷y=k/ĽŹ›lfŇů™Ëü‚^˙Sŕ0 @€ @`ĎŔ÷̇»€ @ůŔ'ŢíüŘ_ůđ>[¶fAŽž–,QÚúwąÂmü™WďőŤR@€ d đ¬™*: @€ ŠŔ™Ý~egs­Í\<ÁV¬ýĆmRZ3Ú ´aÍÖV§J+R¤hŞÇ( @€ đB0É ńаći›»a̡ëo†*Ž•/°ĄZÔwň2@`‰Ü­ëwuźüÄdőÖy6qÍ3ů©Kô–ŔĆVر10@€ňN<ďěxi ”,ZÎÝ›°š˙ŕM ‰(€j”j^ç•!A`_,Ű<ÍF.żc_šŕY@ —J-źË'¨@€@A&€^g—±2§Ő}Ŕ&­}ÁvÚŽCÖ^ |•KÔ?ř/區@ľ&PˇxmëVýůşŹt‰@Ő’M­~™# Ň  @űH ČÎ(ö± ‡ @€ @€ ä;d€ç»)ˇC€ PX ,Z´Čľ˙ţ{+Q˘„5iŇdź0lܸŃvěŘő+”âĹ‹[™2eö©=Îż~řáŰ´iSÜÁrĺĘYѢlúÉĂÉňĺËmÝşuŃć™E¬yóćî‡fx€ @ČŔóÁ$Đ@€Ŕ’%Kě‘G±íŰ·[Ż^˝öYâ‰'lٲelëÖ­í˘‹.r%0sćL{á…âŃ]{íµV·nÝř:Nzč!Ó߀˘m۶vţůçŇnkéé§źv}8ĺ”SěŘcŹ=¤ýáĺ€ @€@Ţ ”wv< @Ř/”©ýúëŻ;ń»dÉ’ÖŁGŹýŇ.Ť@ ›Č•Ďuż›6mjú(FŽi«WŻ>Ô]âý€ @€@ €çŹA€öO>ů$Î~íÜął•.]z5M;€@ wÜqîÉm۶Ůţóź<¶Âc€ @€Ŕˇ&€ʡžŢ@…š€Äµ1cĆ8ňmîŢ˝ű~áqůĺ—»Śr5&Oq˘ŕhŐŞ•ÝrË-ńË—/źs’wâZłfM[±b…Íš5ËľůćkذaŢäI@€ @ŕ@?$Řy) @`Ď>űĚ6lŘŕ.$®U©RĹťkcĂ9sćÄ´‰eŁFŤâk˛páB“_±ů}+$ÚmٲŝK­_żľ;˙YłfŤiăÍU«VŮúőëMőŞWŻnjŁT©RaŐ=žűí·¶rĺJWGb{łfÍLÂţÔ©SM› jSF˝_{jSÁtˇ @çĎźďú¤:uęÔq~Đ›7o¶ ÄŹ©ý}őgĎž/Ô®]Ű*W®lK—.µéÓ§»÷üńńűt˘>|ýő×®ŽX©o“ŽĹŠK¨^|÷ÝwN8•»Ć§ů­U«–µhŃ"¬–ă\~Řš=§_Ô«WĎ4h`+VĚQW`z˙lÝg͟ƣŤ}čűU¶lY鎗űĐüëF¦}™7ožé{ëC\+T¨ŕ/]_ô˝ôˇďEnĽĘeŹ2wî\ÇD\ô.±Ô{ôť}ĐžbńâŦż}W«V­ęľçŐŞUseţoH|Ă>učĐÁY ¨Ý÷Ţ{Ď.ąä’=˝‚{€ @€@>$€ž'….A€@á!0eĘ”x°ˇ(ZĽxqg»°víZw_řm·Ý–C@~ţůçM"«BąŔß|óÍ´›`JHüŕlôčѱěřń‰ËÚłwďŢaqÚóiÓ¦ŮđáĂÝ} Š?ýéOíéhA Ĺa¨çž{®›ĂrťK„ŐX$‡!Ń·Oź>öěłĎĆĹ7ß|łé=űŻĽňJĽđpúé§;[c‰Úˇ.±üµ×^Ë1˝_ÂE% '‡7Ţ~űm·|OĎ齍7N¸ĄE‹·ŢzË&NśP® -śxâ‰9<â•™śjL ľň–÷‘j3Ç/ľřÂŢxă _Ĺ.»ě˛XĎm_$.żűî»q[-[¶LŚ_z饄…ŚK/˝4®»·-˝üňËNOUW˘˝6ÎÔÜ%‡6–‡I“&%ÜŇ|k&Ož/6uěŘŃÎ9眸žţ&ĺ®Đ‚”„r ÷ @€ =đĎžą˘§€ PŔ(;WYľ>B\eĘ>őˇ,_ ťa(Ă׋ß*?â#ÂŰiĎeą2bÄ”â·Rö¶DżO?ý4ménH4}ć™gRŠĹĘâ~řá‡ăĚt߆Äď'ź|2‡ř­űU%ćČPf·ż“ß#ř©§žJ9ŐUFó?˙ůĎx±Á??lŘ0',‹eŞĐsüĂ͵ę#Ź<’RüVç%0K Ď$Ú¶mkZHń!Źä9sf\¤ěgeR+ňŇyf‡ż4Đű|űú5@Ĺßµk×˝fÁűŽi!eĐ AiĹoŐÓŻě˛ôýsţ(ÎÉâ·î)\âżžMĘĽ÷Yóbâ!®>ĺ€ @€@ţ#€ž˙ć„A€@!!đĺ—_&ŚTVa(5ŚdÓ‹‹Ş#ˇł]»vaő´çaÖą,$ `W_}µťvÚi ‚éW_}•¶Ťt7”©+a_céŮł§uÔQÎZĹ××}YI„!±=´Îč¨ lůˇK|”ĹĘ ‰Ü—˛Ńđ›nÝşŐŢyçťřŐĘÂWź.ĽđBÓÜxqYíСCăzęď¸qăâkYËôčŃĂÎ:ë,kÓ¦M\®l÷ĹÇś ¤+;\ŮČĘÜVƸµÚăřňäŁĆá {ZhyeFËRć\ĽEM^ú˘g5FĎEí*^ý/T&Ť)ÓĐ÷#\čCýĘ@™÷G}tÜŚľCZđs©ZÜ˙NÄD EýúőłćÍ›»ďť˙•EÜPp˘1éoć~í@@€ @ŮE`wZPvő›ŢB€˛ž@čŰ,a.58 o˛tP¦·Bxßľ}Ýąţ …=ŮMH Ý[Č;9ôa–`)ÁY!‹ ˘^äóďÝ[›É÷›6mjÚ„Ó‹©Ç{¬=ôĐCÎfDu%®ĘĘC›~*«]ŢŃ>”,˙l·nÝ\öŻĽŞd¨ĎZ•†·2ŕC—óÎ;/ÎZ>ě°Ă¬RĄJÎJFýRvł˛ąĺ--Q[â˛Bc”5‡|ąť:urYđ>ó_­BŮŲ¤ń!żî«®şĘ_ZçÎťíž{î‰le4KŔÝ[H¨÷ó)XďÓćŽ q—8íĂ/¸ěK_$ÔË˛Ć ŢĘ®~ôŃGăLw±8pŕ^ýş}źä×fok‘G<}č{݆QŁFą"}żµŔăÇ"«š ç>Ë]6?ĚĂĹ _7<Ş}jź€ @€˛‹ŕŮ5_ô€ P\Mç+ě…< [‚ąß¬O–(˛ńÖóe©ŽĘĚľűî»ăŹÄoeĚjCĚ &$X<„YŮ©ÚJWÖż˙XDVůu{ŃQ×jWďSx!Ř]D˙(3× Đ*S¶p—.]üír”Ŕ©lâ5j$Ľ;\°ťlQŁ~…}•—´BŢŰ>Ä׋߾LŮĎ'ťt’ű(Y<”…ŠüĘśC $˛4ńˇ_d2?»Ă…‘đWኾŢ?{_ű’l….ôh\ZlČ4”µ.Aއ~UĘĘ7E TÂż-„ßCµ#±>yá)ąýP×/Âţ$×ĺ€ @ČČĎsBŹ @ đ *¤µl)”M+ŃMBµ6d”Ř­Łâ$p†Ö)J*”°¨ĚZ ĐĘ÷ËIŐr}©,ŰĐ®Ă7 Ń3´|‘M„ńd{“TĎÖ­[×7s@ŽĘ|O%‚†}“`űí·çxh·ˇlg]‡ľŢ©6딵‰>a$űPkÓÍpKŐ ßĄĚm}$Ěď)Š+ć¬q´!§"ť. ěk_ôP–·˛ţC‘^}=ůä“÷ÔÝ÷”îC‹ ˇ‰//UŞ”Ű„Ô×őG-…‹ ©ľ[úŰѦÉcömë ŕú›“‹˛˙ @€ @ ;žóD/!@ ý%⥠mLf{3ĚŢUf°„ÎLC¶˛Ą?~ĽłWńâ·ü¶S‰„™¶«zňSőEÖ"axë źŃ®{bОźd¤Ëľ($>‹Sň'ě—Ä^Ť'}5™Dř.Ő—Đšü.żŕáŰ ż?ľ,Ő1·%ęë#‘Ţ‹ľ–Ă W÷G_ô=J˙µAf©ťŞŻÉeˇ÷·üŮS}·ôLĺîźQ¶véćbo߯äűáü†ís@€ äOd€çĎyˇW€ P(‹Ô[„™ŞÉCצ}~łBźů­ŁŹPŕôeéŽν?łęH”TűĘĐ–h©{ˇGxşvŇ•kcG‰Ĺˇ5ęĘë; Y›(”}ëcË–-nÍäěZmŞy #ąŻţ]ę›·!äeľ§ř/!VĐ^¬N“Ó=rPů‘§l}ÉĎřň䣲ÍĹŰ×´ŽYc ™'·›—ľŚ;Ö–/_žĐm6Şďj¸1gB…a†»ľZ8‘ž^ôVą&yéľ×~Ž“Űô×Ę$coóÖĺ€ @8ôŔýĐ@(¤BŃQÂqş8üđĂmčСnDeËÎÂg·Jä 3ÄÓµáËçĚ™ăOťř|őŐW'dŐĘ˙y_BYÉ“­*üfŹľm/N&g KŘ׆Źa|őŐWáĺA;WÖş6·THÍÔf&\ŘđYÖa§µI¦ßRbů/~ń ç?Ö‘íF¦ď źKw® ď1cƸŰţWľnňŠĽĐĂČm_$|‡z†m˝ńĆvĂ 7XrVuX'zöěi˝ző˛éÓ§Ç‹ Ú|U˘{¸¨ăë'•}~ÜqÇ™_ôQŰ r\$ŢkqaéŇĄńcjSW>úôéăćĚűĄëÝšCýťů_QřşéގuJn~m‘®=Ę!@€ K€ đË›·A€bÍš5KČúÝSöuË–-ęŞ šąÝ´R‚ąUĘž• ¨Ł„>y‚űhč7«ôe{;*ŁYýR6ą„FŮ—xńQ϶hŃ"GĆń 'ś ZŞž<Ń%~«ŻG}´ŠzČ*ăěłĎŽ-/ÔŤG¬f̋߶Ď=÷ÜŘÖCö/ÇsLÜ_‰úS¦Lq™ßˇřÝ˝{÷„le-r„ŮزOŃ…IBń[›ž†Âyü˘˝ś¨ýäHU¦:yé‹„heěűĐâ†ÄkĹ©§žę‹ÝQ™ŘÉŢÚ ‚ µŠÚb1nÜ8Ç%żµ¸“üY śyć™ńŞY-Lxń[íÖ©S'x[⩾‡ĘÖ÷Ńľ}{Ę€ @Č»˙ 8K:L7!@…€ÄÝĐ®aO¸ę&‹oéÄË=ńQöňé§ź‹µľ®ÄĘ /ĽĐN9ĺ_[Äś¨ź_|±Ëî ˝’%Ś÷ęŐË.ąä’­H@ľüňËíÄO´† :±R6Ę żě˛Ërxś‡–)9ŰĎőęŐłoĽŃ$:§ ¨żúŐŻZŐ“;pŕŔ”6ĘDs ,ëä8˙üóí¬łÎ2e”'‡î‚ .HŘÄ2ą^şk}4?>dą˘…•t‘›ľ(^Ö'>#^mž|ňɱ߶laÂ_+Čw;S+}ŹôýĐBIŞą×†žjűşë®‹7Ŕ Ç$˙sů¬kő=Wš7}×őťűśÜľ~Í ›…ěOB{›đśC€ @ů—@‘( fgţí= lňb–凢jŐŞöë_˙ú  X™­˛ŮíŠDg y e(>Ü=.±ňŽ;îpçĘü–¨/[Y¶áć{z—ţ݉DM˛G ĹŇ;ďĽ3ă¶|ű㨬ayŻ^˝Ú”m¬Lďt–5ţ}Ę_ąrĄ{NBŞĎÚ…h_7Š7FĚÍXd="k˘pX»v­é»âC~޲BŃŻ-ä>zôhˉܡ%‘fäß®8ꨣL~â @€ }ŔłoÎč1 0ĽĺS¬ŤgÎśi .,4^ĂĘČÖ†ŽcĆŚqłŞM"ß{ď˝”3,«ŮP(´d§NťRÖŰSˇ|݉ÂC@YŰS§NŤłŔgÍšeú$‡2Ľ [ÚČ^EÖ> y÷íŰ7ů®!@€ ,!€ž%E7!@ `8í´ÓlÁ‚¦ŚŐ#F¸M˙ öwŹNđ˛6Q¦îš5kvßřńL–%ť;wv›úM K•*eúŘYš\yĺ•6lŘ0›>}züKđ™ęŐ«Ű9çścőë׏‹ĺ;ŻŤ:ĺą®{ąńŹá€ @ČŘ3_Lť€ iłAm”¨Č«Oőˇŕ¸~ýúX¸–ϲ2µóňű–ş´9§2oµńŁDĚpSĚĽ´Í3Đ&¦˛@Ń÷Uß'}·ôIµâ˙U/ô ‡" @€ }ŔłoÎč1 @€ @€ d@ hu¨@€ @€ @Č:ŕY7et€ @€ @€2!€ž %ę@€ @€ @€@Ö@Ďş)ŁĂ€ @€ @€ đL(Q€ @€ @€˛ŽxÖM† @€ @€ L €gB‰:€ @€ @€ uŔłnĘč0 @€ @€ dB<JÔ @€ @€ ¬#€žuSF‡!@€ @€ @ ŕ™P˘ @€ @€ dđ¬›2: @€ @€ @™@Ď„u @€ @€ @ ë €gÝ”Ńa@€ @€ @Č„x&”¨@€ @€ @YG<릌C€ @€ @€@&Ŕ3ˇD@€ @€ @Č:ŕY7et€ @€ @€2!€ž %ę@€ @€ @€@Ö@Ďş)ŁĂ€ @€ @€ đL(Q€ @€ @€˛ŽxÖM† @€ @€ L €gB‰:€ @€ @€ uŔłnĘč0 @€ @€ dB<JÔ @€ @€ ¬#€žuSF‡!@€ @€ @ ŕ™P˘ @€ @€ dđ¬›2: @€ @€ @™@Ď„u @€ @€ @ ë €gÝ”Ńa@€ @€ @Č„Ŕ˙Ř"]ČNżňIEND®B`‚barman-2.10/doc/images/barman-architecture-scenario2.png0000644000015500001620000061216513571162460021411 0ustar 00000000000000‰PNG  IHDRŹ^‰™>sRGB®Îé pHYsgźŇR iTXtXML:com.adobe.xmp 2 5 1 2 †Ň®$@IDATxěÝĽÝäýÇqęî˝uwŁĄîB[´ŠŚá Î6`ČŠ»3 ĐQęB)m©Rwwwď˙ g˙Fž“cąą÷~úşŻľr’'OžĽ“““üňHľ#GŽĂ?@@@@€@ţ”" € € € € €Ŕ/Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €@A@@@ȉűš±tëO 7Í\ľmóÎ}ŰvŘľűŔÎ=Š.P®dá˛% W-W¬]ňVlPµTFwpÁęícfŻź˛hˆí{7ďÜżiÇľ­»ö+T B©"K˙ňWŻrÉž-*·oPˇPA*ÍdôP9ąA ß‘#GrĂ~°ä|ĺv˝ňÝ‚÷Ł`ţ|•Ë­VľxőňĹT+Uľd‘3Ěé«/Y·sÔĚuž{!ś3:Öđ\ÄL2- Ç‰Ď&¬ôÜJ­¬}ZVń\”Ę̵[ö 8Ú/‡'.kÓ­Y%żĄĚG  ěŢwđ›)«Z¸yň˘Më¶îŐsűŽ=Ę/¬/]éb…ŞW(>ţŃ“rĐ¨3—o}ĚҤł-Q¤`Ů…ţ¨[ądëzĺŠćĹŇ–¬ŞŔáĂG†L[óú…Łg­?pčpět“|QŹ:—ő©_;«DôÓĚXşĺĺo ź±Vל «č{ÔµiÖ=jčP3ţ|AVq¤ůvĘj…3cóçËwóiŤ+–.ęą”™ ř‰ÍA‹˘ćr•^üz~wRżÖU8ĄMµł:ŐÔósÎAYM[˛ĺć7&{řŘÚe‰ÖyĘ03Ő›÷řť™Úú’×ÎH{¨]O2sVn÷۵ť{ú-b>9E@ŹîO1÷…ŻçmޱßQfŐpŃEîÚĺX”×>.Zł3]7 äkU§śî1.îUWń»Ľ&ÉţfŻŔÇ?,{đ?3—mHě­hÚSźĎŐ…â´öŐ^ŇşF…â)îĹŘŮëźţ|ÎđŢ/†ý2ßµď âŚúXmÖmšťÓĄfü‰Uµ7wዜUşČM§5ńŰ:ó@ §$v]Č){E9@@‡ŹůqŢĆű>ŃöÖoî˙pĆν`A!  CŽ('…D :j,rýk“řĎĎîP]t ™ËJrđБɋ6˙ĺ˝éM˙ôĹ=ďNS­Ć\¶ěN4ÔĘőĘ'\ń„DCuÖî¨iŮçWµżí›ľšwčp JyÖşÖ„ŠńÇçě˙ШDCuVšżzÇU/Mčz×y«|_§ŮÓ3ŤyJ€şuyępłłyT`˙ÁĂO>÷ñËßÝŁIŤ2yTÝFĹꥉsWnó\őÍ;gş ĎífăL@˛߼éWľ]JOsć,5 ěŢwHŐ|Ô4ďőë;µ­_Ţś8W.ĺĘÚaÝ´}ßÉŚP+ő-ęĽU¬yŇÂM˙ĽľS˘˝Č©ŹĽ?ľđăŇő‰Őěó+łjľ÷úëĐgŻhw^×Ú~iŹyP€h]<čěrXłeĎiŹţúo˝V+ťG ŘmHP@ug>·ĚoĄ=űů-Ę­ó‰ć‘U­®‡>žͲĺťR-Z»łß#żřKŻö +äť˝Ží)W†pޏš‰śóŘ´„꬞°r׾ďß˝ą«†¤°fš'>ýqĹ/ţ¨nN–ĐR…UaPn>vië„V$1äbZÂćâË®!ŕXżmďYŹŚŮ0Ď=`;!řŚ ‹ľ›ş†ľŁp<Á?‹Ö¤ˇŢSv‡2DMŕ¶7§NYĽ%íĄ:míÝďL ­ş™VX-˝ˇ:kÓŻ~·`ŕ YÖG&@ Ź ­Ëă'»źç–oÜýyn·Ůa@Ü+0aţĆÜ»s9lĎÔoŕ-˙ňÜ)‡í ĹŤŔ÷ł×0vi† őŻá‹ĆĎÝ7sŤ]vŃSăŽ?77ĎŹ šőźď—z.b&ä5ZÂćµ#Îţ"pĚSźĎą¤WÝD{č@h ;hĎ—ď&ŐKg•.ŞqJ˛Gůhîx4K5zÖzVş5«ÍâQŞ*p߇3‚”Ľ^ĺ’Ő+«VľxüůÔ¦dÍć=łVxw˝ęČí¦7&O|üdÇLűÇ-;÷źóčŕŐxkU,^Ą\±ňĄ ďŢ{hݶ˝ËÖďÚ{ Pë–ë_ý©F…]›fŮ·Î4äA˘uyđ łË9R XáUËó,ú‘ĂG¶ď9¨ˇ©ľë[±q÷דWźŃ±†gnĚD\)P¸`ţÖuËyîšb÷µ+•đ\ÄLr„€žÉýĘ©PÝ×;ľKž{ý„Žš_ŞXÁ¬2EŹšűpä!ŹS<óĺ\˘uŚĚJV`ášęÓͰvɢ/ęY÷ę“ÔŻRĘ‘lŐ¦ÝęiîĹoćŻŢĽÇ±ČţQA˙I 6z]TŐ Ű÷ŮWńśV¸đŹ}ë÷kW˝nĺ’öę^sŘôµ˙żâÓ +ěóÝÓşźżňŧ>}j‘BA»ŇsgÂČDërÁAdň„ŔĐż÷9¶vYó®*`7uÉćçm|ţ«y;ö4$ž»jŰÇ­3±Ü&Pąl±QźŰöŠýAŕW]{}ňz4«D¨.ři2 cÍ®jď—~óÎ}‹×îT›AŤ2č°©‹ýďgoP'ą… kđłd~bźü°Ü°Bĺ˛E‡Üß»NĄŁ˘cVúęŠ˙©_ăł:×;¶ěÚżu×~ݲT.STŤs«•+®˙Ő7‡wŰĎěâÍÔ Ě)‹6«ŃÍĆű6íا|µ*–¨™UĽö/˙—¨R¶h>5mâ_"ÂT+ý-Z»S-,*•)*Ćf5Ë´¬ăÝ42‘Ľ“Iňĺ(˘˘ŐóWm_´ö őcuB«Şçt©ĺHăů1»ÎĚŐ›wkČËĺv­Ţ˛GŻî÷üĺę{׳yĄ¦5Ęx5â3uFýĽnĺ¦Ý¶ďŐwĽT±BůŽÉWĄ\QuńSŻRÉÍ+-ś¶*9ŮuÔ"~ÜĹKî{ćˇt—Ůšc¨ĺĄľ«¬d M¨‡»‰ 6Ť±véú]·ď‹ý)‡ ĄŠTÔ_é"µ˛JôiYE˙ dęĺwr%ˇÝL.±*f7`ŕhĂę“m^«1dmŤZ;aÁĆi‹·č°ę–fŰîęoDŃśęş«Ń˙ŠŐ¬X˘E­2Ů{łqčđáńs7.XłcíÖ˝ë¶îŃ ¤ŤŞ•jVłlłšĄUH|z%}¦÷â0o•ď@ĂúÉĐýL˝.W˛đóW¶ďpű·~‰ő«´w˙!÷ĐܕۆÍXë·–ćë§ůł{z*–mHc_¤zvßŢ˝ß#g,ŰjźoźV«ŰWľ[pëMí3™F<%@´.Onv6 ´©_^A.=Ő{îóćťű=ç;f*¤ňÖĹ_NZĄ'–¸=ăŞíŔďşÖ>«SÍ Ą‹8ň řqÎĘmje0DQ‰Ť» «hżt¬qÓiMZÔŠÓ4ŘIÜEł–o}čă™ćd—÷­Ż@ŹŇĽ1láËß.đK<ţ‘“Ěcz¨ńňź^źä·ú§wőĐc{©aŁ>˝É…=ęĆV™8ăß˙óó÷s6¸sĐśš‹źÖľĆMý+Jâ™ ˝33wF-Y·ó÷Ďü°Ç«˙ćó»ŐÖ»îŘŽč†[ÝT;eŤ}żô>Ü­ËĆ3ó›É«źţb΄ů›ě¶O«í=ęčęÖß>ß=­PűŮŹŽŮľç€{‘ć<}yŰî˙ß%üGă–Íü˙çc[·c^úf~–íűţ‡>őÝô8¶µyÇ>µÓ˙lâJĹI‹ěUQâ”6ŐÔ·fżvŐ äO2’ĆŁ–.ĂwV»ź‰ EćľaJűąaMŰŠfîđ9±µčŮ/ç)"l­¨sםŇČ…™±tËSźÍńóZq¬­ {×WO~6G˝ő>¶Ę-§7i]ŻĽ•Ć0‘ąbŘh&lĺţíŞé_I!Î Űͨ¶Łę0äÝŃK^ýn"°ŽEîŹőŞ”ücźúę M!÷Rͱź„é˝Tę}Ň«C|6aĄ_/i*Ňíš^{rŁüżŁ˙óý˛ÇĎö,äťg5;·KmÇ˘Śž„ş8h°Ç^XŹóé’ŐJ`źh\˝´^0î3WlÜŐ°Ziű*šţtÂJÇÇÇ{Îiâűşáő! ‰Ö9¨ů@žssź§,ŘYr“€ęáרXÜŻ]µxˇ™Ă‡ŹĽ=rńcźÎ¶?–}Ô5Żţîü÷Ôľ­Şüůô¦qkřŰsÓKă‡?žőΨ%†[+˝BŤ[®żľ-«(f§wŞÖ˘tM¬Ů˛çÜÇĆŞÓC†zëޡá˙^˘nÚ±Ájß·ľGŽń˝‹ĺŻ~» «ű…\ U\F9/۰뎷§8"SŽ=Ň# ¸Ľ=b±5o:­qćúĘô5mÉżÔë·ýď‰ńŻďMńëůAÎ1K)ĎLU÷Đ·IťCY…ńśĐQ~dЬwG-yâ˛6§´­ć™&6sçŢŞęâ—ŔŢÜF!Â˙ţ§ěX>ďŹYjĎPźüC[űkZµ^řzŢł_Ěó Z)5ˇ|>ż\ăĄk:¬4aĺöŁ–.ĂwV…ĎÄ…"ß‹0ĄuLÝÁŠBu ŘŮsčŰŞŞžŘís¬éµ[ö<řŃĚ÷Ć,ń|¶ŇţoB˝Ä*­ż ş×ą÷w-âVzĘÄAq–)¬Ď-j—5DëÔÉťą !hŰ  ŕ׍˙ś´u—G֞̚ÖÔ_Ţ›®óAŻsô¬~UçŘÁOÂŕ—JŐ1|úóąşűňűéŹOżň÷Ľ;}Đř/^Ý^5¬5vß]ÄÖťű›ˇ“0ŁĂ@jăÂÖ‘=±uŐ]d}tL,۰Ű­lüMÔOŐźú%ÓÁ\óZeŻ<±ÂÇŽ2Xu;Ş7O9´˝µL €@ŇDë’¦cE"- >ŤĺWDsý­{í+ó[Ý0_-dŐdoč´µ· hz÷ŮÍco} éµhüÜ ç?ů}đh+7µJĐź‚˙ľ©K‰˘i»š)¨q^ĽP]ťJ%ţ{WŹ2Ž߷[%ĚƉ«·źöđhÝç)‚#ŞH8jćş÷ţܵl‰ôďTČg”ç.˙íýéŞŐĺąČof6ž™zţżč©qłVló+›cľď\đÔ÷Ż_ßŃ]‡Â‘2[>Ş!öůO|oú•ję’-=îŞN»oĐ,ČĹDůdăQóŰ‹(ĎOô{ćˇĚśŰźPÜO 7ťőČĎútA óÁŘĄ_ţ´rĐť=:6ŠÓ•9·DŠ9·Ś.­YÁÔ3öŢČŻ!këĺÇ+ţUŕý ©ůjX ęxźO\ůÖMťŐđŮ2őEzk˘ĆĹjÍ0+]TűŢ;|t†Jâ$ĚôšLńB~5 ‡M_łg˙Áb…Ţ^ubĂ®qc-sŐ©´¦cęNÁ<"„Ţ'] üÖ3š¨ťá=âČź×­s>"w’l`’w€ŘSr¨€Z>î;ŕÝ V{äľ±vSý¤\ňĚÉ…ę¬Ltۡ7Ăj"dÍń›Đ«éÇ$Şł2Ô+ĺ3ŽŢ¶;PŰ^k-ż íţžűŃŻ–Vl-5ýűôîžaÓ/“lźŻ;ÚţŤ ŞłJ«sć¤űG¨˛5'-!źQže~oô’玮\ă™Ě>3{ĎĚ«^šîý·aI„ęb…W}Š|2K5\‚ěKöµ %ŚTšDżaĘđˇç=ăú)ń¨Ľ0ŠłkĐɱł×_Ĺ‘2ŃâX=䏆ą$!kż6dArˇ:k/T)řśGǦrd­¬ü&4„®^ŇŐĹňQÝ|Ýłí=ŕ;&˛ßć ó“8 C¸8¨ »_™—¬ßĄ;Éŕ÷ŞZ{í)ŤüţęUvFë†{¬S«duÚŕW¶¸óu3Ů«…©ŤšäÇÍ„ [ÖĺÖ#Ë~ĺi &đ‡çÇÚřwŻŁö_ONĎżž±őňÜPŚ ó7^řÔ¸¸=âr-R ܻߙ7Y·ż5uČ´Ł:5s¬Ą.ŠT«Î}3çH–˝ŐŽFťR'Q˝=ľěąńŠŻ%±®ß*ažQžeP%Ó»ţťŘé‘ígf˘l±WÍÖ›ţ9ŮަŐ$Ě™j wöŁcŐŕ:ĹŤŞ˝ö›Ă}.Ĺ2ĎöŁ–â>†Ľz˘ß‹0eČÚÜĎ˶žőč>Rß´Ş*+¬3u±o«sĂ&=(†¬ÂY¤ęT† ůŐÔY[÷!÷Ľ(ÜoŘ-Rhňš—'Şç;s˛¤—ŢüĆä‘3×%±úěŰ>źč;’i˘&q†sq0Dë´Źę˙·Óß=úßY”)Ń]Ž›ŢŻ•qlEőלb/"çuuv,h/Ҹ9řtBmOĆ4äJ˘uąň°˛SyT@]řë á¶7§˙×a›wřÖ5ëÚ4ËŻŻ7ĺ0đ“YéâÓ­­ˇg58U˘¤ßĚ; ůŢčĄß§Pť!–›ZJľ1ĚĐÜÚ-»ĆQuěr†>Žź·ń‘AłÓ•yg”_™Ő­RľŇ¬Ő#xfZe‹;ˇ •‰6řŤ›gŇ ÔŢPmęŐJ7éě+ŢúćCĹ–}Ôě»ÚtBß‹0ehÖ†ô$¬u÷ľCÖś'ô JŞŞT˘ů$tPÍ<éŐBĐ­g´.dm’4‘ˇË3CůÝ‹t5S˙›îů©Ď3k˝ncRĎ'ő= C»8tnśeŢ;őł¬—ÄM˙ôe÷»‡Üűţt5 U?zćU.Ő+pCJ« cCó"sGĎş4i8xs,EÜ*´…nÝö ś"pńÓă4p„_ióR'»ć>b¬u¸ Ą5íЬćˇéă~T'>{÷·-ZŘŁäz×dP¶¸›° 4ë«˙ÔŇš|BýOkCúüůňýë†NÖ¸™†”9}‘†–;ż{íúţ˝şßÁ0ϨŕĄ2§ŚÚ™i.­{éŕ +î:»ą{~đ9… ĄçMޛÛ9 ^$ĄTÍÁŰßš2ţŃ“Ý=ü´pó‡ß/ýę'ß–łżÜţ®ÝѢVYG¶+6îŇ°Ž™ŽŹ%ŠÔ@lŤ«—ŇSşúđR33‚ş]S ŽęĆNŻ›°>Ş-­*úY='žůcŰÓÚ×đ\ń™ş lT­”ĆÄĐČbAZČŞ´Wż[řŘĄ­S߯ĐΨԋË!jgfŃBÎěTłUť˛Ťk”V8~ęâ-_LZiţ"(L ći•Ęřvń×ęľß{QŹş±dV?\~«l¦ŹZZ@Ńüčů˝óPgŃ·Ă^٤¸W îXnŐĘł‰›ĐhŚů•XgřűîZËV±%öĆKßDŤf>µoĄĹť_˛đÁ [9¶čGĎ’h&iLŻxĺ§V<đáĎęÚßśm—&αqCÖ>|řZúňŐë:8BuJ©Čţ~AËŠ*»)`‹ÖĄëĘđď‘q^^¶©WNáéžÍ+[ű˛qűŢ?šůÖĹÖśŚNřť„!_žşĽmź{‡ůRÍşçśľt«ţ4ŢHüůş7ËŇű×ţíŞW)÷ŰK&ĎÖ{V­Ě¤Gµo®Z9ýćúGë¶­łk1Ť@ří%í4»Š@žxëĆÎgt4U [¸F]?ůöńń§SŰCuv›OkbÖmpőB­w×oďMŐeďk×ut<«!đË×tĐ=–ˇRŢŹó7Ţh/Y€iujsÎccÍď-Ż=ąámšČ,ZIÔ%ó—éŐ¨úQµô˘ŕťFÉ8ďńďŐş_‰Ő"cŘŚ5gurĹYýVđšÚĺµqďyíV¸ĽO˝SÚT÷|Ż©3łAŐRC˙Ţ»|ÉßÖ±]Ę*SôËżöjwë7†z=¶e˙ť˝aô>żÎU ÁkNnäN ČČ »zt¸íŰ-»Ľ{ŢÔ@(Ó—nim''RGÍ˝G9bŽů{Úˇ ßjĎţ˙2Ž^˘ˇ˙y}'{@ß*dýŞĄ†?Đ÷Ňgá_{ëí‹ŐjŇzYb­dÂ|P‚ä\µô¬ężPNUłőrKuÔŃnR˝´ý}› ľ¶âţ~W•§Š˙Ŕîçu«ő—÷¦í;ŕ=ŕR˘v›„<Ő]¬!MĎć•>Ľ­›ă$¬XşčłW´ÓaŠ*Ş™aőTĹ= Cľ8¨mÇŤý«‰k*;ĄuI5s˝ţÔj·¦YŠĎťnŚ•U©bI¶®uěB©â¦Gró=Ş#+>"€@nHOß4ąI„}A · \ţÂx @᎝Yű«g`kÚ1Q¦xˇť|#} ®$ű\=mO^¸Ůpçˇf›OţˇŤ#Tg•çŞXÓî‰9+L=^»Ó«ľŢEOŤók?K^×Z/9νnôç¨>#Tg•Yő>˝»Gľ|Ö Ź‰‰ţŤ2VÄDďě3íÓ ©3Ĺ·§{JÇ´ů 8§÷ŁŞ =öél÷ßăçčU™ľ}ABu*Ňą]ť/{Â×6Üi¨„÷}0CDO=uˇa:«—/ćů§¦‘žk%7ó«źVVÔŻŐżoîâwŞĘ˙=ç¤ÔK©aÓqOÂlą8¨TŞÖj(v˘‹tJ÷ąwř•/ţ¨:éžëš"”J¶/<ǶĚQ?ĎŢź9đrĄ€)ź+wťB Ď ¨±ĎëCź±ö»ű{{¶’«“Uâ϶n€ěPÍj•)VŘűrˇ–&O;ýÉwŚóIfŇBßÚţÚ¨Ç9^ČŰK˘ćrÍk–ń{ł˝dýNÝFűÝ×ÚóŃ´j \˙ę¤ćšŢi÷mU奫;XŤő9DůŁę'Ţ«äU<©uUĂ S}íŚ R?ťÚH•@Í)#rfŞęsZť6J«*?oŹ\ě—ŕŕASË>żµŇ8_S:´şĺô¦ćżž“ďygÚź¶?jÚvCżßžÖ˘sÔŇZVqżaĘĐöÚÚиąGE~­ů±‰ß_W53ŐBVíÓ?·Ě1ßú8nÎówŮJiMÄ=(VĘČN”+QX?ĺŽâ…Ż]ľdaGě‡L[Óň¦ŻUÔOa—ĆY… őŢń…«ÚŰgnzň˘Í†Ěď<ł™çĐşÖ*WžŘ@uÍ Ag+eBANÂlą8č~ě [©÷ä>úŮ<HBűűѸĺ_O^=čÎîĆŃ憷ÎÜ„¶jKlú+UG¬¶m“IČŢŹß9 ŕ’XĽnç™G}ďńzuěČ CŁŠúsĚ4|\»eĎŘ9ëŐc”9ŕuägŕŔüt}jŰj†ŤjŃźĎhúéŹŢŁa¨»_óŹ=ç™Ë·éĎ>Ç1Ý®AyuAí¸w¤‰ěG÷“’»¨WśĐŔ­SOę h¦© íŚrďšcŽŞ'Ü~KÇL÷Çś™*ÂUć®p¬~ĺÜ{ˇ9†H™gú´ĎT›tCž=šW2,Ť-RŹxßM]ă™lüĽŁ",Ń9jžĄŤňĚ ß‹0eřVăćřvj¦ź{PŘP¶[NobŠÖ‚îl÷ZQ›sŰ€¦îşBákk\U!7D[4 Ď‹_Ď×_±Â:6ŞĐµi%ŤŞ‹OŔw~ia˙É˙ýĄ ~÷:ć­”,ZH‘5őagN–ĐŇ€'a6^T©PaV :ŻHeşbvęä¬GƨŮŢeÚą¤a˙č6tIáHiţ¸kŻ©ÂfŮéiok.K@ ‚Dë"xP(™Pę¦×'żuSçŕ›QçnóVnź·zű’u»–oص|ă.µÝşë@đě)˛´OëŽŮĐx,Ąę)$ZUÁľ‰ŕÓĎüŃÔ*x>á§,^¤€şw‰»Ýľ-«ÔŞX|ůFďÖŠřlßsŔŐŤ›mé=ŁânńäÖŐ‚D]ŁsfÚ»Ď÷Ü;uJč9?63ŰŁu†®÷UB= [4tÚZż4izë®ýV}“č5żGv~ďE‡2d(µă󫦭’¨·}d CŮš)Ą˙…T¨GX…T 9Ř9(öôśľ¤WÝ?ŮjżĆJ-Ú şéZjD;V<µvŚud¦Ź Ô¶¬]¶c㊧µ«ŢµiV*ݬâťm»÷Żňo´uÝrćPQ,˙3;ÖLo´.ŕI˝\Ť*vŐ‰ ŐdD4«Éą~â‚›¨3ß?ľđă¤'N¶·&1×ĐÔŹ‘9Ď€Kwě1ÝQ[żws#ä˘uąćP˛#ą\@˝ç´đ{1¶çúĄW-+6îůóÚqs6š×?›¸RĂ5š#jâ:lúÚaÓ׌žµ^=»§Ń×Đ•ŚĆ°UIca Y=9xNB1MCV!/ęÔ¨bF=„WŻś_´NeV@6ŤŃşĚťQqyŐĐ)n%ΙYŁ˘†‡3ýÓŞ†Ĺ‡3Őç¸a›G-2?Ŕ<˙UŞ}„Żßş×zz‰ÎQ;Š '|ň˝óP†l¦3ÇPë*îwĐ^Z%6\HU÷'x´.ČA±o:jÓö¨óěmÝĄĘ.íÎŤł‚DëěÖS—lŃźUżuz;x^·Ú-jy~m_1‰is ÖNŤł‚ä™Đą$Ă€'a.ęĐ­_»ęúÓđ媥8vΆ±łÖ«óĐÝE?ýůÜ{ÎiaĄQÇÍ ŕꬰćŘ'ĚGĐžŇK­ß;s&,EÜ'@´.÷Sö(w ¨i†FK ˛oęśköŠmç=>V÷~éŐŤô«ß-řÇĹŢ'(ŞňÚĐ…/3ß|÷ŕ—ąyţˇĂ‡ ď?ýşŐ7癡ĄźNXqů¬úAZíe¨Ig[»R‰€ëÖ¬hJąM/ŤłL n%ŁgT2ÔŚüR&‘:3kV­ ˛×ŮĆü—zÁvüَHµÔ÷+ä‚|/B;”!ď»6·y§©RLBßAŤµm(ż6T'~ăď˙eä ¶•Ť‹Ş•/öôĺmOnăÝ—Evi?xaKőOgé›ĹTńMm-ő§®Bźýc; ÉmNźčRssjk[E PgÄjŐkÍIq"ŕI©‹ŢPvn’Ąż;Îl¦ČťąRĚNeM\°ŃP{ŃęµďŢyV3«3 ˝×T Gżö¶wÍ–=žĂ({fî9S˝ŽĚ2vĚB´ÎÓŤ™äÓËůĽ°˙ě#ąR@ sF<Ř·UStď“–{î»Ţžýč;ßžš‰Pť¶hîă#j}sÜţÖ”‡˛»ž’çq2ÎTßĆĺż-¬l|öP7.ż%Mv*ÓgTriL©3łLď¤&]Ő ü®Ćb‹"uÔüJŮůAľˇĘđ•Ôß°ŃęĆścEsâm‰ôä 8¶ží{µ¨ôĆź:M{úTżPťJ]ÚŠŻ©iBęD_ý´şĂߪĹeęYŮsPKXűGÇtđźrŐt¬›ĘÇ€'ad/ŠÜi”­ëNi¤ćł_8mú3§*Ž|z‡ęŞ%„eË®ýŽîÍŤa5’Ll­4÷ľ?ý˘§ĆŮGV›b5µ¸'Ş•KçńuçϬuë"{h() čE«^Ľěąń~ą¬ŰşwĎţöľ9”rĹĆ]ý•ˇ8]¬$†ŠuJf×Î~2öůj¬JןúŰ”öĄ‘ť.ě–Tĺ×kaĂ^›[V´…pFYŰ2L©ł™łÎLĂÎFa‘ú¨Ęh1¬ó–Ł–ŠsďEh‡2•In]Ť“nX1ˇ«ź9q©b Ül9(†b§ľH C•.í©†ŹĐOŚ*ű4­Qú¸şĺ[Ő-¤Ě٨ݿ}ő7oěôç7¦( “ŠĎćű/}vüsWĐ©äc_×ĚR°@ĐGýÚiÚ·|:ČUn9ĺâP§RÉËű꯾^ó żü…Żç˙Ľl«YcäĎëş7ű­B¬r0tҗиĎ~ôłŞjjëŃâŁŰ»ÇîÖü^źÇ Ů j© Ą‹ ĚRČ­ Ü@äVö Ü* Ţ‘Í»¶răî†ŐJŰÓÜüĆäDCuŤŞ•úCźú?™Ą ěYYÓůŽ9ęvÓüTcŮhĺ˝Í:·kmE?3WŚ´Wß3?ŘwD]kŰ?:¦ľv¬e˙Âeßśßt‰˘üYósÜ™i•<‚%‹ŞÂtÉŐ–?¶nž:jiżPů^„v(“>’^Ńܸlő–=ÁsVS8Câ„")AŠa[©/:˝CŤ®jźz>ޞWű¬NµÔÝSźÍywô’ÝűLżzŽb»?Ţýδž-*)|ă^”Äóʬ_ëK÷†VlňíůÄť8'aŽ»8¨ÎťĆŘŐźúNýë{Ó «6ĺŮły%µ§öK?ÖhiÇ*O~6ç‰Ásb3ÇĎŰxúĂŁţ{wť:-)í»6‰s3oOĚ4ä2˘uąě€˛;ü& SůR…ő6ř·YGO©Wl{´N/÷4¬ÄŃI<>©‰D‡†4TٱµËµmP>Ö[‡:ĺő‹Ö9˛0·u5÷áâČ*śŹŞĽsďű3^ą¶Cć6gn"”ÄvÍ=Ů3\iĽĹ^GĎž§5Îem.ʼnwf¦¸ż]ÝĐ€Kă>«©~Š[·ÎĚ-cĹšŁuć(°Ul :śéF©Ö¶ěa^ĆÎţeěűÖ­iý¦¨Ń«ő1ČÄ ý«[ŢÇ˙?pć^eă¶ŁšÉ÷lQٝƚł`őŽQ3×ő2¦QbuýŔ~¶ÖŇ„F2é÷ŕ¨ëOi´Ú\`%ëÚ´˘}-¦@ O ­ËS‡›ťÍ[ęĹŞ“…Ő÷SĚĺ™/ć€J)¨Ö—ôŞ«Ć/î›TGV†|ÔöVĂků Y»q{ÚşI6”Á±č„㪬۲w†ËĆ.˝ĽO˝Ť’ĽaR«˝ÂMu»Ň~ź˝|Ă.Ç>ú}4?#Ą8 l8g”ß®%:?‚gf˘»ťô†nŹZŐ-÷Ý}˝ÓUÔÜtÔÂżP9 ˇĘ …Ioš ĄLŤË Ă4ą‹a~í°]ˇ;ŰÜ4'"Ú:ę×X›wěSm©á3Ö~?g9Vâ> ęÔlńÚťő«–r/JtŽąĘáčYëdhÉ!ą4a^ţ9táŕ +ýĘyvçš•Ë&ֳۅ=ë˘uŽFÓ-j•1żü~dĐ,s´î­‹îzgš»üîú×&ąçŰçtˇnťťiňŃşV,]¤haSŃJé9ćĺY€$fFęĚL˘üŃYĹđ7cé äj ·—z™sĐQ‹Ú…"~‡2HyŇF54UßĘŻúŇÜ•Űwí=XÂxmŹFqCşŇç” ˘¦]ľT‘XŁH•mÉşťúŃTWeŁf­ ŘřTŻ÷Ň­SSŻBýFP(gن]µăŤĚţéŹiű"ŕ·,Ě‹ą7µ*бfŔbÇ’Ő«\2_ľcţżO窎›ÝMőhVÉ.TFüĽ¶÷±UśýúYW’?˙kŠç˘¸3;6ŞPłb‰¸ÉH€ąUŔô„™[÷™ýB ŹŚžµÎĽ§öŽW~ZčµQ&Ď_ŐÎ/T§Ą3ŤĎ»Ëpl­˛ë¶z7ąUť;5včŮÜÔčŕñ˾™˛Úť­ćčĆ7ˇP]§Ć?¸µ›nË4qF‡źMô}s;}éÖ7G,úcßžŰ5Üł*ýĆűĚ#ęőľg¶IĎTđTŚăU|{ÄbCżu­ë•KşZ1Ě3*•rÚ׍Ιi/UNśn\ý¨1í» NŁć­Ú‘zcX+ĎtÔ˘vˇ° aJC12´HB}2Ţ{xtőíđöČĹAZŘi$"kŘw9»4I˛R¶;«ś>'díÇŹLYě{cÓ˘VY+"S·rIý]Ü«®Ţr©q˘^ţçűećú’z»yf§ÄÂCž‡OŻŰÖ/?f¶oş×ľ[đđĹÇy®›© 6Á s‹ÂĽ8Łu\™h´N/ýBus7ÜVׇ†hťVąňĹ C˙ŢGA@7¸‚ţŻ^×áę—&&Ô…e,ź+Nđľíto…9 +ÖĺĘĂĘN!pĚż†-2·CÔ {­ Ć&¨Ç·đ~ažµ<ÎčZŽăŃ®a…aţń©Źľ_nÖéţ{ŇBďľK´u¨çŘ–ác•˛E?ľ˝»…đ÷ Z~=yµ_]ĺóŕG3ĎěXS/äÝyš:ý8oc«:ľ‘݉ó7&ÔäĘ˝uĎ9÷cđ===ĹfŞÇúׇ,4$h[ŻĽaiÜEažQq 0ADÎĚ€ĄŤr˛nĆ!nľžĽ*n´N}hnÚqTĎAÖţާ§“ŰTł>ć ŁÁ …Ĺč7ćˇô+CććwnRŃ/Z§ŤŞ+ú+Oh žé P­™WŤRz·ôBÖÖ++C•yýúźŘşŞU¶Ř„ŞPµ©W^9·ůoOýçĐEŽÖÇEkwXÓ)NthTÁ­{ĺ»ČKŁ‚úmEŁěÜ{ĐoiFç‡yq¨]ÉTżěÓ +n\ÜX.řţ®2Q0בŐéŞ7ŻYfÖŠmŽůÖGŐĘ<ű‘1C˙Ţ»biŹAÉÎíR»xá‚—=7ŢŮ·˛˛&tŁ> c ë# ÖĺÁÎ.çr}˝ôÍüű?<Ş/[÷>w:şâŐ&˙Á(ÔLĂP%D›Ó[hwţÖǰšß®éŽęý1Ko9˝‰ß˝©–ިɀµÝ¸YeŠZ}Ő+±^­_}RĂ;jő.÷ŔG??óÇvîś >JüѸe—÷©ďůȧŮ-˙šěÎ0ő9#g®űpěRµôńËꡏg®2vlÜ®Aî­„yFą·žÜśś™É>[Öň{đĐŁŽĆđ4ćźĚęаbŹć•üʬ»Ď~tŚßRµH:*ZŤëI¬´~ ±ĄĽPř![óĂ<”ÖFC›8ń¸Şůóĺóm@Ý™˝üíüű71”GoĹ ŹŞ©Ý‰­‹,ňÉ ‹BÖ.YĚôŚ3aÁFw´Î: jŞ˙ÄemŤ_áwpÍŁQ[ůX†+^OZă„Zé­ Ťđ®‹áŕ»{ęĹš›ĐýĂĂĎ|ůŰŽůˇ} óâĐ·U•ůóę¦]őŇuذѨ~b^4VHtţÉ˝çś==ÎŔ»xÝÎ>÷ř˘ăú·ŻîNÖŻ]ő˙ÜŢíÂ'ÇÚ48ÖŇ µq¬ÎGȦ_˛\°{ěąF@ťµM\°ŃowTźŰîę=gÉúťŁ~^ď׊}őëO=j-C‡JĘmý¶˝~ÍnkŞa|mŃ}wŐ˝i% %ć×Őťś.|jÜ—íĺŢâş­{ţd¦}/ÓŽ¤ciÜŹ·źŮě˝1Kýîεú[#_Ö»ţquťĺÜŤ&ěŰR›Đk^žřúőÝŢmß}ŕňĆ'ÚŽŘžłyúÚW& ˙˘žuÉÔkŘÍoLţ÷Č%ŽůöŹzŁkî2ŮžŘs:Ě3ĘłǏ왙ľ„łŠ®9žŇ©®`Üç˝ű—Ôiůűgů`_÷ó§rSžúľxf›ŮŻÝQáŹH5?XÉŁyˇ0PkQ‡Ň\’L,­•U˘űj~'޶ř·÷g¬Ýş÷Á [ş{ZÔŘJ·ż=ĺÍá‹ ;©uUĎ–q†Urń˘µ«‡xcŘ" jäÁŐéîoG=ţö!Ŕ”áĘĐ˝Y–^O.\ă[YO˝"*tS˙Ć—ő©úI5:ŐŮîýÎđ&5@‰Ň$Ě‹*& jÔLß&õď˝Ă¸°Ő9]jşż­ÖŢîŘs@M×ýďlCüT7¨Ý›gY«XŠÁéöOňÖ÷„–"zzĄ4đ÷Çą+č©c»gŻh§Ŕ˘{E÷śö +ÜtZc÷ü€s4uţ…«Ú;ěŢwđŮ/ćŞgÇ|ÇLJ;樳 {Ö1ĽŘś·jű ÷ żűěćçt©U°Ŕ/­TOĂ·ÝôĎÉ~Ťă”¦M˝rę~α­„>ęĆý®ł›ßůöTżµŐpCďďíŔAA…· •ţÔŘJĂgśÜşš*¬©®ú5˙vĘę·G.ńëŕÜŻ ÍWÜóşW'©ąëͧ7iY§\ĺ2EŐeµÚ1iĄ†´3guqĎşž•ÍkŮ—†yFŮ·›ĘtdĎĚTv*ŁëŞî‰˘şž§ĘŤýš‚ Љźöđ¨;Îlv~÷ÚöşĆ/˙ë{ÓÍß ŐP°ďT¤ŽšDeŽć…¨îĚľ@IDATÂŽé9ÚˇôÜz¦g^wr#Ă‰Ş­ë§jöňmęŔN]yŞF¶ćč˝ŃÔĹ[žýrnÜ éő§$˙°ťéĎ–üĂÔÖŕ «•RÇsOu ę÷ŕČG~ßş{3ŹJľęsă/ďM÷{§¨ OJ°Ę¤áʠۉ+Ol`¸ńĐćtçsď3Ôf˘z…b*ąŢˇú\óÜß Í óâpaŹş†hťvPuÂţńÉLUÄÓÝ`íŠ%tS§yęRďłu˙ŁnIT«NÓfŤ‹zÖŃhăži¸°ĺ€Śń«Ťk­˘¦ÍÝî˘ ~ăjĄ›Ô(]´P"…ňkŔ•aÂ|ßľ\¬ŐcŻ_×Ńvt$vśłr»ţÜóĎQd3xbR"€@†Ľ/FÚŮ"€@DT‰ĚQőÇác˙řΨ%ęĐíöÍęW)©:ü‹Öî1cís_Í3ħ¬ŐrŽ «EjjÖ)ŢO^ýňDU«Q±¸Ş0č.'î˝é¶rѬ2źřcźú oŢrOZ°Io,u×hĎSoŐĆG­tí3ÓC§­ŐźcfŐgöĄĎŽOhCjviďz ­âNňĺ.@rs"{f&·;©ŻĄ¦|†ú.¨:U™)U¬ŕaŲ4=ˇŐ˙ş‚R˝€ľ-«z¨TwŤ7Ľţ“ž?›Ő,­Š*şĚ]µ]m ›Ó"U¬s·u ó¨% ˘ÂGůBa`óPŠ‘ˇEť›dߢ˛ş0䯥±]'ŔŽ=ş SŻ^†ćކÍĺâE!k÷oWýéĎçúyŞb{˙‡Fé2Ą8¬®*]Z‘UąR(öó‰+ŐŞŃoEĄěÔŘŮSD*W†‹{Öyá«yq{°U(nż2gh~‡óşÖzsř"ŤľjŢÝ=ŞO:s·t†J+ähzbO¬fËŹüţ8őihźé9­[ÖĹkwęĎoT4ϵě3Xô¬~nOĂ4äz˘uąţł8ţrn GĺĄP•sí0ŤÄŞż‚ň©gŽĆĎžă6¨Ý‡zď~}čBăŞÇ(2č÷bܱâÉmŞvózCîH÷Łj ©ŃÓOšş&ą÷ýýŰŐ°÷y§lUoέ‹»éč$¸ˇ_ŁÔ[o…|FĄK/˛gfşv0Ń|TąUC-ę´Şž‚†GŚe«ŁV´Nsţr^ Ĺ8ÜmáíePÎcgo°Ď1L«uüóW8+ů*}G-5‡^(B;”†ŁźąE/\ÝľÓ߉ÁďÎ_ý˝ľxµÇąšą˝Č)9‡©­ńÔŤďľÎ ţv+˝Q0ĽT°§´¦ő-vWzJĺĘP˛hˇ—Żé Đˇµ‰4ÚĹAŻcźşĽ­ę¬™SR¤S0®Zůâ†L®>©á’u;Cč.PŻ«őózói¦~3 ĺdä_šńňŽ€bdj}ćążŞć9ß>3ŃPťÖݰݻg«űÎ?¶FÓ-‘}»ćiŐëyčÂVć4Á—žÚ¶şşG1¤×©©…#Aď–•ÔpĚ̉›T/­xnZJň•–2+“Čž™éÚÁDó©[Ů4ź!7uÔýü•í ]¤Zµnó\+ĚŁ–4JžC/aJĎă›Ń™ú%xÉqéÝÄCµŞS©dzóĚą…©];«DÚęÔĚď&*•+äŢŘ?G¶›óâ ÁÄéŘ\Ź1…ď‰úqwőëÎďçč>Őť&-sîűĄůóŚ´dE& CÖĺĐG±HF@#Á?vikż5ő¸’třĚpď4uńfĎ-–*Vč•k;¨;ĎĄÁgŞ7oíÖ°Zéŕ«ÄMůđĹÇöH«ż6dáś•Űěůhwž˝˘­}Nđiu#¨VÁÓg.ĄĆ¬|ă†NER>(±†|FĄ‹%Ęgfşö1ˇ|ÚÖ3 âlÎJO>÷ţîXsš€K¸ Ąz#ňKćQK$ç^(B;”~‡8Łó/éUĎ/“Äv5¬ůĺ}ë'±bY%Lí[ĎhŞ.˙Ó«¦˛˙ľą‹_űÄT® *ˇ.qמÜ0‰˘öl^©Uť˛I¬®UÂĽ8śÝąÖ7¨C7c IíŘy]k|˝¤> Ţş±óU'6Hj;‰­¤¦Ü·Ľ1Y)&¶©@ ·­Ë-G’ý@Ŕ(P¸`~˝¶uKj_IÝńľzms”Ęž>6­zmÜÚU]5»Ĺ標ۓźÍ9âŐíś^&|G÷âE’Řéë›7tNKX{ů[Ő)w~·:ö9Ži5ĸý­)Ž™§µŻˇłŽ™q?6®^úŁ;ş«§ü¸)'čÓ˛˛úDž>–RÍ żą÷x÷(f‰ćcĄ˙ڞ6ťâDdĎĚ÷+ąŐo;ł™ľćÉ­«µô´üŇŐíS‰GëÁL9ÜŻAPhG-Eč\(=¦ˇĘD ––ôŞS|˙ůi,˙šOË´)gš¶^>˝k×v ’ĺ`? zßič‹0Ĺ+ZzęVęŻç¶P—#öŤš§;6Şđî-]wě Ô—˘9«T–†yq8«S­Áw÷L˝żkţ·óZĽrm{…á¬™ć Žôřemţ}SősgN™úŇ _¤1ORχ@ ' ­Ë‰GŤ2#€@ËÚeu9˙ĄÓ5}ěEĎ,öRâb#Gę.jÄ}ŐtT[ńĚ06SCĘŽ›ăÝ5•n|?»»§ň1¬î·Hă { Ź»>żô Íż÷w-ĚŠBţ÷ÇĺŽ<_¸Şťnµ7Ó8·K­‘öUĚ‘OęUŻ-ˇ€]—&ż»żwÓ¦ÁF’(UřgT…ô\%˛g¦gi3:Sç§š ¦ňL˘šcžÜÍş8 şł‡r˛ŹáµÔA˘sˇ˘jOÚˇ´o4´é[NoŞÇo5źLn‹ŞśţŻ:Ą±Ž^rĹČ)k…¦­ ­ßÝ×űŃK[—-‘|`%«t‘·oę|Ĺ ¦ęT©_tě4ŘřGNę}lĺ¸ÇQmrużˇ¸•zŃݶËwřN˝¬Ť›UZ„yqĐĄţ‡GOT3ç„"›ž»Ů˘V™QťpŰ€fîľ=ÓŰgžŃ±ĆŘ'ü®[íTęúéąnÍseoÝIű.3Ť! $˙¶<䂲9+ a"*—)Zą¬ţŠýúŃ®MłTM,îŠöWťŘ°_ŰęHá“ńÎP”=™îz/č^çžsZÄ[ĐŰÝ2ş_Üí{żh¨ĹߡQĹ Źť¤—‡Ź šmčĚŢľuő§A»nęßXý:Űç»§ 5z*•ńî+–‰şVmÄG˙;Űť§5ç­á‹őŽ×ú¨ ˝×­¶†|ţëyC¦®őa#–^­_ď<«ů)m«Ĺ>ę.?Č»ömĹťVŔîÔ¶Őšĺ*ŤĺP«bńżž×âwĆş„q·eHţĺ(Śš÷Ěç«×ČşéěÖ,ëŚ5»6­Ä[Đ‹—čę[vî˙nęę%ëw­ŰşgíÝ®[©dŞ%ëW-Ő°j©Ô; ěÓŮěě"VHµ„ýď]=­Źť˝~ŘôµĹL+6îÖ b•rĹŘmY§ěij¨‹h+eF'Â?ŁŇµ;ąěĚL…E÷ łWl[µiŹëúŰwđpˇůˇ(^¸ ţWłîcŤŐlc›^¸f‡ľăŁf®›±t‹ĆlŃĐϱůj_±T‘‹luQ§v*QáµÔA2}ˇHĺpÇ]7śC·™H Ž˘¦,Ţ˝g˙Á ó7Ť™µ~ô¬uúˇÜ˝ď?mŞ™ľ}Ďo/łőC©7ÜV<á¸*ö2č(_úÜßNYc/‰Ć«ąˇ_Ž~ÄľL#€@ŇDë’¦cEň€î¤>·!mzE>¬çŘ­»h Ý:‡ĽőôîK&r ­ËÄÖSĚ3[ΨËl­Î™iQ¤eBĎ;öP-Ý´ż°ŹŁf×ČĐt8‡2C…Ź›­Ş/múµ¶]ů’…Ő)gÜô$HE 4í‡ďÚwPŐTRżd±‚ég)•ÝOhÝ/&­ĽřéüV™óBµđ[Úü/Š–*@¶}÷…ŔŠ)¨8]ɢɷNNI›Ž˝Ö*S˘°O”-^H× •Äoµň×ŮxőK­¦-÷śÓ\Ť0¬ĄL €@HsŐ<(Č.#ôbąpţtMU*–.Şż ‰I“ł˛ĺŚJgfş$cůčQJéÍÓťGÍm’ö9áĘ´;`†eŠÖ_ŔÄ$KQ 4m…N~ÝVŠĺÍÎŐ‡N[kŘ|DÚ3†|qP˝ěĐN!?|Ő7Ż^ˇ¸ţ” `o:5śBĆoŤX¬^ůŐůŮ2Ľ#ńűăĽCÉž"€ € €†L]sń3ăÍ6­uŐ ®ú°ł>ş'¬ŢţůÄ•îů±9jŻm¨Éĺ·ółQ@ď2ź˝˘ÝE=ę¨Öl,›F$ÓńvDŠN1@@@*°{˙Aő Ľ˙ ÷ßČ™ëԛ߮Í_µýÔGmŮĺ;ÄD±eý2g~6 ŞËF|6Ť@¤ÖEępP@@Čć‘yTçîĽÇÇjbŤ``çXµi÷gVö{h”Fź°ĎwL_Ö»žc@r-asĐÁ˘¨ € € KęW)Ő˘V™™Ë·ůíŹ(¸ăí©ľ^ĺ’UËŰwŕĐŚĄ[5š¶_zk~ĂjĄş5«d}d@ Ç P·.Ç2 Ś € €ąAŕşSĹÝŤm»L]˛ĺëÉ«‡ĎX$T§ /;žŠuq]I€DZ€h]¤…C@@Ü*p~÷ÚM"˝{×˝YÖ•'6Hožä† ˛ŃşÁŮ € € đ‹@üůßş±sí¬éâhSŻÜ‡·u+R¨@ş2$@l Z—-ěl@@8&«LŃQő=ľEĺÔ-Nj]uĐť=J-”zVä€ ˝Ś2‘˝ţl@@ň´@ůREţ{WŹŻ&Żú×°E#~^—„…†—}řâV=›§!ä—ÄÖY@ íDëŇNJ† €@u*Ą­ŐLĹe € ŕ/?ľÓÚ×Đßâu;ßľčÝŃK7í?ö«‚t˝ZTÖ_ďc++˙ěY‚ Ăň9r$‡™â"€ü*°yÇľĂ^×đBó—)^$@Čąú•_µyĎšÍ{VmŢ˝fËžőŰöŞ7şň% —+Y¸|É"ĺKnU»\…ŇErîRr@Ń:‹@@@@U€Q&Bĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € € –±@ u 6,\¸pÍš5k×®ŤýżsçÎĘ•+׬Yłzőę5jÔhÝşu‰%Rß9$-°qăFÇę:@ pĚä#) ¤ýdK{†)î «#€ €¤.ďČ‘#©çB €nŐ«Wż˙ţűC† 9tč{©5§lٲ—_~ů)§ś’??őť-•P'n˝őÖiÓ¦Ů7™/_ľ/ľř˘X±bö™Ů>˝yóf•SŃMěŢ˝»J•*µ~ý§°o¤‹:áĎ:묽{÷¦ELß‹Ź>ú¨T©RiÉ-Ł™ÜpĂ Ë—/·o˘aÆO<ń„}NÚO¶´gh/mŽ›ľ÷Ţ{'L`/¶ľ"Żżţş}NéYłfýůĎ’2–FW ˝t)S¦L«V­zôčѲeËH}%ď)@@ "Ô­‹Č  «§{÷Ýw‡zřđá¸;¶uëÖ§žzjđŕÁ7ß|sóćÍă¦'AztŚćÍ›çČSOř‘ Ő >ü«Żľš1c†ç;¶‚ ž{îą—^ziˇB…;’-—.]ꮫtI)Y˛dŇ«‡¶âž={ćĚ™ă8@Ž+@Ŕ“MáÎ}űö9J^¤Hw(`†Ž¬rńGEŮ–;‚,ٵާsíµ×šCuVŮđ˝ţúëUŻÍš“]ž¤I&ąhKŇ›KzEĎ˝vśHAҨŞŘĺ(†š׫WĎ1Sfč^1WÎIنű$*¦jŹşžë!ŃIŹ@\÷ůéw‰› @"+@´.˛‡†‚!€@ÎĐ ·ß~ű¶mŰ’.şí~ú駤WgĹ$Ňř„źÄÖ «¬[·NŐ-UIÇƱčŔO?ý´cfřÝO’©”ÁđJ%«Ś®äD ’F…tÖ©S§hѢîňĚĐ˝b®ś“. UĐS5˝Ô‰Téuܸq©çC8‚_"+ň@  Đ6,ŠŠQPă5Ťŕ.ĄÂ 'ťt’ž·Ë—/Żî¨…5jÔčŃŁ=űER´®}űöîL“!+V8â … ŽB{Ňüăž§“ŮaćĚ™«V­Ň¸ćd™[Ş*E9ŤůçÜşuúľWŞTÉNädS»lŐ©´ŻĄi?„ :˛ĘĹÝ! uz¨q·ÝeϨ_˘™ÄŇkX .¸ ąuY O„.ž90@ G­Ë‡‰B"€@Xąrĺ”)SUHcvěŘŃ>_‘ .]ştíÚő°ĎŹM«‚ž{&s2'đä“Of.ó¤sV0Wq7÷ęýű÷o۶­"ż›6mR_užŤd§NťšŤŃ:5Čzď˝÷ü„U×űëׯwě—ĆÇ8őÔS3cŐcťMö\©™Ą×˝_îZAN6ŤyânďÎ*¶űA2ŚTć Ł~÷Őg¨#ą%Ńéˇg´Nő¦O>ůdGţű÷ď×€*şř˙đĂü±c©>ęëŕžÉRHč‘ʆX@ {ÖeŻ?[GÜ#đĹ_¸wFŐŁZµj垯9={ö<çśs>ůäÇR5ftĚńü¨·ëŠë©Ĺ–žU¤ZµjŞĹă2Ňs]k¦ŞA©›3UŕRë]M«*P… TE•ˬ4IL¨H*›‚ V*7,‰f={«˘UQĄŞX±bąrĺR|ôŐnŞŢ™öWÓăY’ź={¶ţWž»wďÖžfeeiO5@Šz×9đÚkŻ9ä5đ«ĆöéÓ'6_ŁÖ¶lŮňĆotGRi‹íŘhr5„«ç(® m(ŞĺÎłuëÖ:ľîůAć<¦i9ťt*ę„ܲeËŽ;C¬ZµŞz¬îŁ ů~!6ó~ą+)˝_Ý:sV~K3zö¦ţőOî`-Y˛Ä=nr‡ řŃÔ—]—MýÓ—QWąŹ>úČa^ŞT)Ç÷ÇäöםŹcNŔ݆}-µ»W`ťáÓVWý˛Ř—ZÓşâéň®Ĺ‹×µ4‰+^&v9őĎÚAĂ„.Î"ҰďúyŇn첯˙ý¬ü˛JĺÇ7„K„_±Íóu["ýLkDő*UŞł@ ®Ńş¸D$@â ( ńÝwß9Ň)p㪋ĄT )Ç*úh®I¤Ç¤/żüRő8*ŇŹ}u=9(| şWgśqFÜǧ3f|öŮgŞ čîMOŠ$ž~úé 6´çoMk4şáÇ[5Q·nÝë®»NŹ1šŻřŁ›íKUµíU‚¸·ďĘađŕÁ*›b"şéw´Ö*źSN9ĄS§N ]Ů7›~÷Ýw5.Ş}ľę0Şš † öţűď+ŰŘŇK.ąä˛Ë.Óô!CaVĺ|Ď=÷XQ{nšÖř!*ˇ*ľ-Z´Č±(öQO)Ú¨*‹Ą ś8q˘»Ű¬«ŻľÚ ŐŶ%ľ}űş# îšYžE ¦ĐÇTeĐŁťß™¦ĄISkżR<ť¬|4ˇsňóĎ?×qq Ł/řUW]Ąű(h-G¨Č|˛˝ňĘ+±o´g}I}ëcˇę=z{ě±±˛™3´—?6ť–ł7C_˙ÔVCŕ6ńśăÎJa)EŻ<[3=‡ń [k•Ô÷7‰Ż†V™>}şU`Mčľřâ‹çŇé­+›pöĄú »ňĘ+ŚÍÔů©Ł?bÄeb]dtŇő˙´ÓNëׯźů­LŠ»śˇĎľż†i]¸Týşé}Źmî”úVžwŢyť;w6#hŤ|˝DĽđ ޅg/Ş~Ý{ě1 Ulź›ţŰßţ¦ ľ}~óćÍŻąćűw†ęâC·ş˙ΠAbż°:%tŞ”)S¦qăĆú…rülŮ3d@Ŕ,ŕń´c^Ą €nU%SuÇ|Ď`ś=Ťjd¨ľ}ަŹ;î8ÇśŘG=!čQA!'÷†b t¬{eÝĐ«A–=ţřă=óŃ@@ žK5SŹô_ýµşS?óĚ3ÝÉľ˙ţ{G›_­˘IŐć׳ŻnĺŐŐú¤I“Ô ŇŻÁٶ˘ö›Ď>ű¬úáro16G;řăŻ˙TŐnŕŔî®ĺDS1ě«×®][}¨)úćo­«ü÷´Ż˘iχ1=ť ÖŕËD• ˛‘†gŐă«#瀵#Ž”:OôP䩏Şăž7*ę^%ś9î ¶«G}GżöÂ$qLc«§~:ĹňŃůŁÓrüřńöRYÓ [Ü}÷Ý/żü˛ç®éaŐJ© Ăɦشg;JkuERbÓEб˘u† ­ci<{3ńőOËÁň<Ž€©ĹóŁÂ1îklŁFŤâVěť5k–;ĂvíÚąg¦e“řj :Ôzc+•˘ŠAkěZG:¶T×FŐçUĂv]rŐĘřńÇwżĄĐeyáÂ…úMQ`čÖ[ouďllN껜‰ĎŻ´öůú9Đ«¸wŢyG•éěóÓ?˙úOż8˘P Ę±4ö1•ß$.ú%rĽŤSMOĎPťŞaę ŁĚî@ł;CE{u |đÁUÓZ]§„¦•§N-ýÓéˇoÜŻŹµ: €–Ń:‹‚ @ yĎŃô4uöŮgbvęĎÎÝÖłzé­Fµž•nÜéU?âŃGU¤@ÍcKżůć›çźŢÝ^Ě‘LU•@/ŇőÖYg9–ş›áčyF‘8ż®Ęb«+f§ †jąźTłCUŮplČďŁvP}H©xöÔÖŐŞ×±Š‚\*{ĐëŢ˝/ZĄrĺĘŽ|ô(«ř _ČĆ‘X%¬g6=⪠{©yŽ ÜęŢ˝»g}IĎľí´]ó&˛ki˘ń”äŽiZN§‘NU9±?şéô<¬p°;Ę\łfMÇ©n8٦řăëyZş·˘9±K„Ţś9BuZäx`­î™ąýRŁ” ş3ÔońťwŢ©“ÄĘĘ=ˇćáZW/óTçν”9 €úľ5ŕ°*ŕ­ÓC˛šę^_/źco›fwt:…oś Ş‹­Ş»gEĺŽÎć…Ăžxâ ó—c•7ŢxĂęRýG{­˘jćP],[5ăUó[Ç&ôń‘G Ş‹­®÷öŞjaĎjţüůî:qŞ ç(żVQ0+ÖĐ5ŕČňżí¶ŰÜ4űÖÝÓzĚÓ~©Şť{‘yŽj"(0§Ńöîg`e˘LU ą©žšă)Ë‘ ?y&´/‰cŞŐÓr:)UWČŞ‹•VŹčîsĎqĚ'›;aw°O[Ůš3´VIďŮ›öŻş–ľhÁҵp<'<Ź…Ĺî^E×"ŐÖ[÷—]u“U™ŇµżI|5<ż}şÚBu±ťýôÓOőä‡Cš»}ҲËi?ńÜĺôśŁwBÁCu±ĆŚŁ1ßąĄţăëyZ:¶ű;W=·ßi$±gý™Cu±"éÇZMe=KËL@uë 8,B‚ řu%®'u8ĄjpÔ¦MµrUË5ý‹ŰµŤ}ĂŠ»9rÚ—úM«Š‚hVŹ`jÁ¤Pť_bżůŠÁéŸuZ ř U V±T%óŚči~˘Ń:÷¶<ç(| ®”Ü‹N<ńD÷Ě(ĚńÔVM@CSqĎU<÷%vÔŇx:˝ú꫞!r5ćŇ`ę÷PŰRWŚîęTVń¬(IlŽçľX'›jfĹFËUvGm>}IŐÖ,–‰ý­€9ĂXú´ź˝iüú§ń`ig= fńĆ4‚üŻŠBŞnćN© S9ćX-LíM˙Ň»żžGßł<‚ß*ŞÉ«7ępMWTŐŕÖŐŰ3ÍT”J?:ş,‹Č1žOl]«ő bíuwŮóřĆ6šÄďŽßÚçkGÜ]IŞmµľŚV߲ŞÝ¬/¬jVÚWÔ´Ý0]?ľ‰^"<·u28 ěN¬«˝ďrÓ[Ť˙.…&=#ŠlŞž»ßđMŽňđ@ &@´Ž3H€˘u ś†n°oC·ďzöÓżçž{Nuzá¬1Xí ¬i ®ŞNp¬ŹÖ„ÖRĹěbsÔŢĘłw6+<§Äîń4zťş"˛şÖj۶­:Dżĺ–[¬­Ä&´˘Úůškô(Ą‚Dj.j=§)ÖvăŤ7ş«8˘u 9ąk‡©ł?µ ¶Šˇ‡1Ĺ/ĽđBkÎ˙±wŕR÷ăĆcWAE±‚˝‚ bď˝—hě˝%¶źůk5FM±EىQc4jÔXbcď˘Ř°÷Š]P±‹XPô˙Âŕ09svďîe÷ráľ÷ńÁ9sćĚ™ó9gďŢýî”M ›ůçŤXžđ(a5",Ü&LV9$ťŮ‡ź dŽőÄ«ľ2F’€]Čávą;ꨣxĆ2!gŚwް·Ő›„PYÚ/?ś›H8Ďo9Ą7¨úäýĄ‡„k)˝§ŤzśX˝ˇ´O ­=öŘcă´†ŚÎc2¦Ňŕă +„–^K|Řx8ůáSnţr ’Rű,TŻ2ÍxzKOĘąZńňoÔÍŞ¤A źűöÖţ/!ÚZFöUŻ_ůr:ÍľŢؤҗ{Kďż]Ź?ţř1§Ăň!‡RmáwËqÇűíňĆTXM›SđŘÇ·6xÉĄŤç­xđ8Ş–Ţ ó .XR&®K%ĽťqŻóhA«xŠF˝ůÖő+‚PcţćË/®ŇoK'¤+Äőč\™W®‘wCÖĹŽ_Xň_ďĹo Ł ~U­KAL+ €- ­k‘Č ( @M‡Žűɧa®r0ŠčËŔńŁĂ;,˙C–~g1âëá#(K°Ą äó|Ţ/|ň§ĎW>ťˇ˘KńŁW¨śĎ!ěň±źJ{±\)Wź勵ƶŰnËĘ ±Ů!‘v"çúëŻ/ ·Ç{2K{9ĄKLЉĐIᨰąŃF7Ě—h ;!ă• ‡Đ; m!źHóč QNü "ÉǶ]wݵĎ-f ´ ů­Ţä\tŃEt6ĚÇýŃó…“é]hőYšq`éçíÂgÂôĽ­¸§Ťzśň9iJYq"}řô»çž{Ň…*mvHsÇÓ ËjyŘ8%#ăk-ÖYčŁňk©°áOoc_ţŤşY$ďřCŞĘZĂ‘·(}J eZÜd}!~!~ź7đz[ńŇŕ×cˇĎ&WËű¤BĂôžËÇüöęŐ‹¨SúHŻ·Ţzy´Ž®g)NŁ.ą±^ÚÂ*éŇ©T‰XĄŃ:§h…·‰řk­oľˇ©5ţŠŕ{>Ćň®.¶Ş_úĚ WŠbóśóŤEú`Đ)ď裏f˘ĂÂYŘĚ›”—1GP 0Z—jV@Z/ŔH˘ÓN;Ť?Ą#@«×ËsŚŻa†©4|Ćhň ňe>!°´X(ŔŮ %Ů FĂĺ»ć•PŚ^ly´.F é­Ó±NšDW¸úžuÖYńt1ű%‘Súy|ât[l±E<$MDKÇ+…]éGzä·’~+ĐĄőÄ4˝Tř|ž/jŃŔŹ(|ŁK]iŔ”žD„_Óޱa•\ţßţö·J{c~Ź=č)7[ť(˝G)xˇćŇň”©rOň8Ń˝…2 Ť!†K46 Ő…ÄŮńá#tˇ|áşZ|ŘÂᥗ\¨*”l±Âf<˝Ť}ů7äf ¦Ě»A•şnSľ™Gýň2-ćđ+”>tťN;š5đzKźZUĺĄQzßdäż1Jżpb„4"ĂąJ­ľ–hÔ%7öÁkńö…i˙¸xďD¬ą±Ę*«ĐÓ°wďŢá­Ş4¸iŕ›o¨°ô>ćŹzŤĹBťĄĎ|áK‚Ň SŇݲđ`P'ťÍ™¨—qСţřoţ SÜeBP TŔh])‹™ ( @kX>‚ţ,LčĂňgŚU,ġŞ×Č‚†L—v+c’»Ľz±Ĺi…›oľ9ťŇŇŚrĄWłÚňŮ||ÜOž_Úˇ +ý“}­µÖJ;úĹÂy]qĽL(Vč§@üfÄČMCgBlş-ÄúÓŹĄ Ł\ĄP•”’~ěąőÖ[ăąbb÷Ýw§ [Ü,$xňh]é°˛Â-nň$0K÷Ą—^Z:Ý;}dčÎgSj±¶P€iĄKôoČÔŕĄ]{8Qz ç-˝AŐďiC§Ň×Ë>űěSúş#HÍ3“?ę…ë*˝–ôa‹w¤€@ýiT:îm±Âf<˝Ą'mőËż!7+€”6,çŤzUĄUU)_iőĐő, s7űz«ż4J#2,´?ô.dňK^’ßĚ…blňeOšŮ¨K.˝)­~đŇVIçÁ¦P÷&Vźŕ' µ&f·âŠ+ň»7˙ľŞ±oľáěů},ý‘ăđJŻś—K+ÜĘĽ 2¶ô­ź&qx>1H•·Îpuţ«€ (P0ZWqSXţvç‡müµĘ(Wć2cI-!fůIŁuĄ3˘uĄíŁ×OŢń‡’4 Ě^_8ęĽóÎ+äTŮŚCşJ?l¸á†ĄÇćăL)Vz6lĂxéÂŐ5~ýN“Ň?ýK?Kź-4˛ôřy†fäń>ĂTša0T^Xř"dF‡šQË&áKşmć!ˇp,źĄó›ßÄĹk©0”)˝›ůá…ŔS^ –śRmúőTÁ)=¤ú= -™Ç‰×)}9 WDš<˰ĚKLÇD|BNéµĘP2/FÇ=z©Äjc"/É®Xa“žŢŇf"_ţsł˘FiĂZńÜňmÁ›oľ« nA>ňť]ÄÍé>ĚŻ,˘rĄŻMĆ“¦ŃşP[C®·ôîWiä‡đŰŚHSábąĽ÷4]ÉŇN‚áĽBňKÍ'ţ’KďďD>x… Ď7Ó)ň˝äđ»~XŚ‚)řfď̦ťvÂ+ľkŕ›oh§+4¦ôWD^,Ä DzY:!}$ a¸üđVž??±~NÓ1RL›P@¨E`›J-Ą-Ł€ (PŁźđCŘŽň|KĎđ:>ĽŃíŽÁŚ•jŕK{ľŤź‹ř+?ź<±–édm•ęI󉦛­H,kĂ埤¦ôă¤ňÉćh<#IÓ6đÉđěłĎÎç?JË”¦Ó“›ČF,/-“W’­8’ëé§źćvŽ˘«Hi«XŚy1Ś* ţ-¨ľIĚ—¸jéŠá@˘Hx`\*¤zm…˝ů°B°Yť±ô<łô\1ş”—oÝ=ťřlj{~éµT ÍÎÇSó9ź—jzQŐ¶P’Ćç/™JřŐ+lŇÓ›źtb^ţł˘pŢ0z›–N)M”~Á°Ě2ËT‰20ËŰ:ë¬Ăâ6 $îT:¦©P¬ú&!->gće*=<”¬÷ž6ęq*}Ý:ĘĄBT=żG…ëjńa ćQ?ň U…’-VŘŚ§·/˙Fݬ AŻź|бR·PľĘżĄ· ýµPéŘü#%ă»@cŻ·Ţ—-)=¤ôşň’Ľ+ĺ] óđ(gIÍxÉ |đ*ÝľJů{ď˝÷Ş«®zńĹłÜSé-ΤGSöP,ż‰ä—Ţnňó.üyáŇ é¬GÉŇźÁçáÂVż–žÂLP ­ë 7ÚËT@¦0Ô… Ĺ UtĐAůtE…2üĺšGë*‹•.¨šjŠĺKtőâSSa׎;îXW—ŘݬôOöJźJ §ź+Î9çśÜ)«ž¨´THé$†ˇŞoPግzśňNšś¨Ę}Ď'ąŁ|áŮ«ńZňŹâ T, Đ·Xa3žŢOšŢ‘ŇÂńˇmÔÍ g,=Wá¤m«’Ϋâ·_é-(TRş2IŚÖMňëÍ-ÚoGĽ–Ňé x‘¦ECáŞPa/ąô\•îoiáüJă%·ŕDżýíoůbăŢ{ďĄă-ŃůŇ_i=Ś¦çŚŤ}ó őç÷±ôWDéW#Ąb|ŹÂ̶iăIçý©óóňNťÎĐW¨ˇô­pÍ5×,sSP EŁu-Y@¨(Pú©¸Ň¦i- J7CşWŻ^1ł´ßS:´*–ü裏öŰożÂIů xŃE•v±áógi=±ÂJ‰üOöt˘·ÂQů§¦´0«1\wÝu…Ch3Ă *ţ†~ …’…)xň†ĺź7 5äÍŁ@úˇ.ŹrR 4„jć†ćÁG*¬7ŔJm§śrĘÍ7ߪM˙ĺ+ŇnłÍ6­â—ÖŇ LmĺSŞŤL•ľuÝÓ>NĄĹy1–6•Ń^ůR$¸žáŇËO¶@ťŁ[ké˝ÎKRCZa3žŢüޤŻčÂÓ’·0nŕÍ 'ÍVĐ(´­Ňć#ř]ZŘ[ËZ.¶´ !Ţ×ŰŠ_wĄóúĺɧ/(<ĚÁ'żżäÇ'°±—śŰĆg©płŘĚVĄp~xĄ¦[ÝhÜ=ěPâ-éľűî+J ś‘űć–_]éŻ|2ńÖÂjěˇBľnäk›Ž˙ćý©óóVů‚ŽuĚák f̨˛ Pˇ°› ( €QŔh]¤0ˇ€ Ô-ĎSFLMýŁý¨J]Ś¶Ë‡vRţ‡?üa<Ş4ZGt ˙ěô·żý-oĆ&›lBUyź2KăäyĚ?~ĐŻ$NÖž˙Éľđ Ǟw±ĺ$h|ÇL óÝ{>°h×]wÍŻŽ¸Uţ2~,ä\Ąsxĺź7Ňć‘Î?|•^†J§$¤xĆgNÁf+:Ö]z饥ˇ:Vßcu˝kŚäMš$9ů“C3ň{ŰVď=mŕă”vĄU´?—ç>ůä“ăD“±ń|(ŤťŞBf‹Ĺ˝űî»±’¨DÔb…Íxz󛾢ӖWů7đf…“ć Ăżˇ\•ú+Ý‚x˝üÎ<î¸ăâfLA ŃşĆ^o˝/ ÚS:ďQž|„{.ÉáĄyIÂqhdc/9?WëĽxkŞ'ä{řá‡ĘüřÇ?KЂƛ ?»ě˛ ]†ůË_ćďt!Z×Ř7_ÚSűŻĽI,ď˙NŕË'fŃ-\)›…;Îdů’KH.źµ–ż.Jß «Lý™7ŔP@(`´.RP@ę(íqĂĐ’óĎ?Ź=öČ?q‚'žxâŹüc8p`:ť>Ç^rÉ%kŻ˝vÚÝfčС7ŢxcˇÝś7 ĹÍ—üŁ$«:l˝őÖ…)ŘčŔřĘ÷ßżP€B´Ž€`>^5KlqVŁ|­=>Ű„ŹCi=|N»ě˛ËŇśNĎ[Ë’v…řD‘÷>ŕXúůŞtőş;Â.XŽ?ţř<şĘdg,ŘZ8uőMf%żŕ‚ ň2ÔĂČôľçeÚsNţy›Ö¦7±Đřzďi§BŐа˙ţ÷żL_•~Ü%ň‡?ü!ďB’_W-G•ńLdجĄÂÂ#*™§·/˙Ţ,®«tđf!Ü–ć”Ţ‚JUń śŐîż˙~~Aĺ3`R?żĂÓŘë­÷ĄAKJç}+˝®RüuJX9ď„vňjŕ%7đÁ+˝éy&—–ż;ç×ËD'W^yĺü‹7¦[eoß|C#KďNţ+‚8ZŢ~ŢžXy&ÓMORľţÉ×=ç\…gŁ4ŠM1¦ňŕëŠĐ¶đ/ ĺVD®›B™V@j0ZW»•%P@˘ŔÜsĎ]Ě·ýŹüČ óŻ1ÜŹ%đg1?dŢsĎ=Ą‡lżýöi>ßZóQ0Í!MŚé¬Hî|Ě@IDATłÎÚtÓMůł›gTőç?˙9źÎ™!G"w…^lŚ’;餓řK=4žĂé ń—żü%ŐŃbˇ Ą ÖÇÖ¶X¸4&Âř©çĂ?L,˙ŕÁYřdXűąbÉ( &®…kżćškâ!!Á§bš,ĂĘç1&îá“ä!Cˇ)o$ÔŹ=öX>Ąj¨˛ÉŤŕććw“Ci·Ýv«r,»řčŘf#[«·¤°—{M'”B&›đ´@‹ĎOZt§ĺ—_>_Íđé§źćS(fÉgQ>ľŇˇ•`Mˇałp]µtüT;8ŮÇÚs…5LůŇžzI‘ńIëđGy>D”B8ŕ€PšŮvřË;ďDĂř0Éî _"čÎáDš=ôĐńg­Đ÷§đg}í…óyµ0äoz:‘#¬I? Ň©˛9a2"Sń\Ąźa*5,Uúń#ý´I1FĽ2 )_%x m€®týĐpŠC9„áZ±‘µ$B¨´a›Ź‘Ě+ěŇĄKžŮrJ»öČr•šWď=mŕăÄ-:źć cš*~ňü<§đě•ŢÓÂĂF%ĄMBę„KxŇXze«­¶ 窥†?˝Ą'-\i¤¨^¸7‹3V?WlR‹ ~—ćó„ŁJ»ÎU©ßś?űŮĎbOĚĆ^o˝/ ÚY#q–|eé-.mCúH7đ’kl|¸u®ró]Ľ%íż˙ţ+®¸"ß'1eďtrd1âü­»í¶ ‡7đÍ7TXăŻúű—ţmŔ´ŞGuT~i…ľ!ŕwNšYz»CŰĆý¤…ó4Óý1 Ď7GP Łuµ(YF(  C]YÓŽź.ý¬›ß¬Ň3ňŚ… Ł_ăyk©°áOo~GZýňoŕÍÂ$o™ůđŔ¨W)A,Ł´GXĄň•ň™2ďÄO c!C™f_oő—mČŇyýjéł®¨Ô<}¤xÉůąZýŕUşe…ü>}útíÚ•…2 ů\ËÂ2 ›ôżcČ|ĚlÔ›o¨°ö_ť;wÎŰ[U=‘ŢGJV‰bWŻ'ěĺÍš/·j)iP@R©KsÍT@¨Q€ˇ‘­X÷3V^Ş {7ß|óX¬–!*&x.L‡ĎBtÓ«ĺđX†ŹC̛·–C‚üł\a˘·X [ţQˇP¸Ć/ŰK§ţI‡—ĹČÇ->oĆĹDţ :>ôĆ!ÁŕÓVtXăŇ>řŕBU-nň‰şJd¶ĹĂ)ĐâU×RI3ĘäÚŐ[ŰŠ{ڨlj†n«ńuGÉś‹ ;]áŇüüňK¶ę«"¤—j¬°Ooc_ţ ĽY8çˇ(ľB(ťN4˝)y:Ż'/ÓbogžyfŞă^o+^L/x,ý]Q*—$|“÷zîÖ­[úIŁ.ą±^‹·/ŕýeçťw®±pZŚžwĚ~~“Ô7ßxŠÚEÔřŽĎ}¬<& w|b˘Ř<|wXř}OdBP ’ż5k9Ě2 ( €A€?yY5˘}©ř“šYçň^u–15{íµWܬž OĐźţô§th,Ď_Ě;î¸cip!–‰ z1¶—1‡±|j¶Âźő±|é§ľ4Ü@I–¬ĺOůxHi‚CÎ=÷ÜÂňš”d±8÷_éŕµJ gaví|äoé!tś¬kî9ş42™ŃFißĆŇKË3 ”gÖ•S®ëئ.}JÁC3ZqOő8…đb)<˙ąAąŃôa)ě*\Wí[ő3ĆjkݰOoc_ţ ĽYL¨źÇ¸ŁUáÖTßĚc ŐËö2Q ÓYţőŻMgŢ ex˝­xi”ľúJW䬺Sč(Ę13ď„X0oÔ%7öÁ+ܲ*›LüşÜrËU)PŘĹ{ëlŔW\yá‰óŤçŞńWĺ‰6–Ny«"Ńż˙źüä'iNHžŤü© o‹-Ö H”ţA’źÔP@JŽ„­$cľ (P«=°X˛“ąĄ—ĺý µđ—ýk¬±ÓN;¦¬. ›č'rŢyçĺÁ˛XžÍYvőŐWŹ9…!ú­˛Ę*L—ÎWĺ…˝q“.!śŽzŇĄQĂŢŇyÓ źĐb=b:& …‰gâ<őÔS™©:–‰ y,˝şí¶ŰŇO`h!¸F‡‹8&¨®†…úK)|D‰-a2Af<ýôÓ|đÁ™'Ýđ•UňzyáŇBĄů5fň°mŤ…۲c9 ·/ś˝đ<¤M*˝AUĘslŁ§Đ ^ˇ,oÂ}gµÇŇ)ç ŔĽ„çŻĘB;KŻĄôaăÓ>=R9cΕv«˝B®ĄQOoéI Wď`‹/˙ެŇs•ňĆćUJ”^cĄÂĽŢyĄ‡Âs̶Ye’Ę^oi#+ÝĐřÚÉ1yga޶Bi…óF]réą*]oŢ~Z^©pᢠ›Ľcţţ÷żżâŠ+Xđ7Ť§…y÷€·Ş ż2}1D‚|úe°OŻ^˝úöí[cOŔć5¬P3ŁÉčЇ n1÷:˘´Ś;fČ0=kň^…ÜlĆ>N¬’LźG^2Ľy!‡(áěęCŇ&ć2y…ň€ńÚäĺŔI‰z0ś×EíŻńŇł·Ď§·±7«ôÂŰUfG»^đ'÷KćőČň©\oĺ¬)Ä‹‘yçeŘ/żř—.íyŰҧ®QoľuýŠ`ÖKúc˛żľč Çß|©SׯŻ}öهż=Ň+˘»\X˙ŠżCXť÷Dú·ňVČŇ"D é˛G7-oZP`bŚÖMŚžÇ* € ( € ( €S”CžY(ŁĐżI?I0E]§Ł€ ´cç­kÇ7Ǧ) € ( € ( €m+@żĽB¨ŽóF=·m‹<› (ĐáŚÖu¸[î+ € ( € ( €•ňIë(Ůş©+ťÂ|P@ęFëŞű¸WP@P@č@y´Ž™űjY«y© ( @“ŚÖ5ŘęP@P@P@ÉGŕąçž+4v±ĹcˇöB¦› ( €Í0Z×<[kV@P@P@&'?ü•p -vŇş› ( @łŚÖ5[ŘúP@P@P@ÉC K»ŤÖM7ĎV* Ŕ$`´n ş™^Š ( € ( € (0ÇĎŹv‰‰ÜÄP ©S}÷ÝwM=•+ € ( € ( € LcĆŚ6lXˇ©=zô(丩€ (ĐTŁuMĺµrP@P@P@P@ęp$lXU@P@P@P@P ©FëšĘkĺ ( € ( € ( € ( € Ô!`´®,‹* € ( € ( € ( € (ĐTŁuMĺµrP@P@P@P@ę0ZW–EP@P@P@P@hŞ€Ńş¦ňZą ( € ( € ( € ( €u­«ˢ ( € ( € ( € ( € 4UŔh]Sy­\P@P@P@P@:ŚÖŐeQP@P@P@P@š*`´®©ĽV®€ ( € ( € ( € ( @FëęŔ˛¨ ( € ( € ( € ( €M0Z×T^+W@P@P@P@P Łuu`YTP@P@P@P@¦ ­k*Ż•+ € ( € ( € ( € (P‡€Ńş:°,Ş€ ( € ( € ( € ( @SŚÖ5•×ĘP@P@P@P@¨CŔh]XU@P@P@P@P ©FëšĘkĺ ( € ( € ( € ( € Ô!`´®,‹* € ( € ( € ( € (ĐTŁuMĺµrP@P@P@P@ę0ZW–EP@P@P@P@hŞ€Ńş¦ňZą ( € ( € ( € ( €u­«ˢ ( € ( € ( € ( € 4UŔh]Sy­\P@P@P@P@:ŚÖŐeQP@P@P@P@š*`´®©ĽV®€ ( € ( € ( € ( @FëęŔ˛¨ ( € ( € ( € ( €M0Z×T^+W@P@P@P@P Łuu`YTP@P@P@P@¦ ­k*Ż•+ € ( € ( € ( € (P‡€Ńş:°,Ş€ ( € ( € ( € ( @SŚÖ5•×ĘP@P@P@P@¨CŔh]XU@P@P@P@P ©FëšĘkĺ ( € ( € ( € ( € Ô!`´®,‹* € ( € ( € ( € (ĐTŁuMĺµrP@P@P@P@ę0ZW–EP@P@P@P@hŞ€Ńş¦ňZą ( € ( € ( € ( €u­«ˢ ( € ( € ( € ( € 4UŔh]Sy­\P@P@P@P@:ŚÖŐeQP@P@P@P@š*`´®©ĽV®€ ( € ( € ( € ( @FëęŔ˛¨ ( € ( € ( € ( €M0Z×T^+W@P@P@P@P Łuu`YTP@P@P@P@¦ ­k*Ż•+ € ( € ( € ( € (P‡€Ńş:°,Ş€ ( € ( € ( € ( @SŚÖ5•×ĘP@P@P@P@¨CŔh]XU@P@P@P@P ©FëšĘkĺ ( € ( € ( € ( € Ô!`´®,‹* € ( € ( € ( € (ĐTŁuMĺµrP@P@P@P@ę0ZW–EP@P@P@P@hŞ€Ńş¦ňZą ( € ( € ( € ( €u­«ˢ ( € ( € ( € ( € 4UŔh]Sy­\P@P@P@P@:ŚÖŐeQP@P@P@P@š*`´®©ĽV®€ ( € ( € ( € ( @FëęŔ˛¨ ( € ( € ( € ( €M0Z×T^+W@P@P@P@P Łuu`YTP@P@P@P@¦ ­k*Ż•+ € ( € ( € ( € (P‡€Ńş:°,Ş€ ( € ( € ( € ( @SŚÖ5•×ĘP@P@P@P@¨CŔh]XU@P@P@P@P ©FëšĘkĺ ( € ( € ( € ( € Ô!`´®,‹* € ( € ( € ( € (ĐTŁuMĺµrP@P@P@P@ę0ZW–EP@P@P@P@hŞ€Ńş¦ňZą ( € ( € ( € ( €u­«ˢ ( € ( € ( € ( € 4UŔh]Sy­\P@P@P@P@:ŚÖŐeQP@P@P@P@š*`´®©ĽV®€ ( € ( € ( € ( @FëęŔ˛¨ ( € ( € ( € ( €M0Z×T^+W@P@P@P@P Łuu`YTP@P@P@P@¦ ­k*Ż•+ € ( € ( € ( € (P‡€Ńş:°,Ş€ ( € ( € ( € ( @SŚÖ5•×ĘP@P@P@P@¨CŔh]XU@P@P@P@P ©FëšĘkĺ ( € ( € ( € ( € Ô!`´®,‹* € ( € ( € ( € (ĐTŁuMĺµrP@P@P@P@ę0ZW–EP@P@P@P@hŞ€Ńş¦ňZą ( € ( € ( € ( €u­«ˢ ( € ( € ( € ( € 4UŔh]Sy­\P@P@P@P@:ŚÖŐeQP@P@P@P@š*`´®©ĽV®€ ( € ( € ( € ( @FëęŔ˛¨ ( € ( € ( € ( €M0Z×T^+W@P@P@P@P Łuu`YTP@P@P@P@¦ ­k*Ż•+ € ( € ( € ( € (P‡€Ńş:°,Ş€ ( € ( € ( € ( @SŚÖ5•×ĘP@P@P@P@¨CŔh]XU@P@P@P@P ©FëšĘkĺ ( € ( € ( € ( € Ô!`´®,‹* € ( € ( € ( € (ĐTŁuMĺµrP@P@P@P@ę¶Ž˛U@P ] |ţŐ7Ľř~iÓfźe†E枥óLÓ•îí ™ď|ôĹżîăŐwG˝:âł‘_|ÝsÎY0٤ß|˝{v­"đÉ磯{hŘ Ă>}~ا#>ţráągYrţ.˝{tÝ Ď~ü•ŹBÉU—žsÁąf©ĺ(Ë( € ( € LŽS}÷Ýw“c»mł ( Ŕ”!°ëé÷]˙Č0®e˙ űíÎË·î˘^ţiż˙wS•cź·ó1Ű÷ެ˙üUĘ4dďŞĎ˝ői¨j–§í1çĚ ©¶Ő•ŚţfĚďŻ~îO׿đůWcňJ¶0˙ovZ.o$WqÉ]Ż{ůSďúU~Tź…f;}ď~Ë/4[şëľçßŰčř;Cβ=»>aýtŻéÚF|ňed_¸ű,3N?M8öÔ˙>wüO…ôůÜvĺµ×iIP@P@ÉKŔľu“×ý˛µ ( Ŕ%đňŰ#Ż{xŘoÇ~o4ň‹ošwm/ąóî;xÓ%~˝ărÍ; 5őő·+ýěćpŠ űÎsĹ˙[­©§k±ňź˙ýńóo{ąR±˙>řÖło}rűńëté4},óí·ßm÷űÁ·>ţNĚ)${őŁµŽľí„]–ŰĂĹ »Üśx?ßđâé×>ęąë·ë˘˘_ż5( € ( € ´ç­k˙÷Č* €S ŔW_ŹůŰm/oôë;C¨®m®.f÷?˙^Űś«=śĺΧŢMCuÓL=Ő ‹Ěľň’Ýčô›÷Ňđ‘žűPÜ$A¨¨Şc ěęKĎ5ç¬3Äbß~÷ÝQ—>ÁŘĚc˘ŮÓfŁŹ›}FëW@P@Tţ^źT-đĽ ( €JŕŠ{^˙ĹĹŹřŮWMš‰aŢŮgşîč5é›ď~Ëăo_2čŐO>˙šÎxĹ˝ŻŻ´äśĄŕ ˙śjŞâtlĄ%'—ĚÇ 1­=`ĂĹŽŢ®×,3ŽťżŹŢs§\ýěď®z&ěşů±·0;ý´cG\><ôßüóéĎż}žíÂCVîůýxŢ{ž±ë÷0rěđŘoĆ|·ßYCýf˝é¦ťôßüMy÷.Ţ‚ŘĂŶ^i°9Gç ‘ÓX $:Eá’ÝT@P@¦<ŁuSŢ=őŠP@v-Ŕ*!ÜÓ¤VN7ÍÔ‹ĚÝ9TNbÍ^Ý—žżËOľď>Ćš éyź}óşř=óćÇ$Äşä|ł.ÝŁËVXoąyŇb!M$ë¬_dPíë#Fušašůćč4`±9öZw‘Ĺćť58ďÖˇ}6:řĘ;źŃOmžŮfÚ~Őž!óő÷F]tÇ+ŹĽüÁĐ·?[p®™×ęÝťÁą'ýűŮpóǺْ”ürô#/y<BűW_f®?\óüťO˝Ă`áÇţ°qČď“/iĚ“Ż}üĚ›źĚ2Ó´tšë»đě?Z­g:¦őá—Ç/űŔ!Gn;>TGš5"~¶ő2×?<ě‰×ĆvŽăÂźxőăţ‹ÍAš:coGÖ ¸ůصCŹ]ü¬şô\·żÎ€˙wÓ×cľeóé7>ąŕŽ—÷]±q;óĎ7cľ˝čÎW|égŢřä“QŁçďÖi±yfÝsÝEňˇcľýöŻ· ˝ďů÷€š(íŇ tˇŘA›,1k§ ‹ŠÜöÄ;·=ń6ŤăޱÍ2C^üŕÜ[^˘G!Yú n=p­ş`şhĆĎ˙ţX¸’•—śsŐĄć¤?ć §ß}÷ă/ç™}¦e{ÎvčćKĆŘeĽŕk|ë†G†?óĆÇĂ?úb™şô]dvžźU–* Sćň{^ç_ž˘YgšŽ;Î3°Ëš ušaěßcôU¤µ ý ÖüŹ»^ĺě<śtđłďÝđ}ř•Cú,<{,Văc\/E¬ß„ ( € ( @ ­kcpO§€ tt˘WË-Ř5(ĄzăýĎ›-˛ŘĽăwśhř‡_ÄÓ8;â˘ÇľüzÂň ĚČĆ—ŢőÚ/~쏖M{ŤýňOüńşⱟ~ńő;ůČËž}ÓKçţxŔö«.Č.ÖHë'"ó«Ëždˇ€­{đĹ÷w8í޸€Ŕ[|~ĎsďÝńÔ»LŢGUNG¶­ýÍ·q+cNOú÷3ÄĹ(0Ó÷ °TëÁç=řu®č_?_a ó“Žx˝ůńá?\y|Đ0ěýýî}‡ľ32¤ †Ä/LXZ÷Čm—ICuˇ—łĂę=˙~ç«ahČżŻŤřlŻ3xxč„:y<ÇżŰsťEţ°× ń,oô%ď}n¸f<ůŹ®”˙Ľ÷ő ^)ł~qŹÂ &=#ą‰/żóc~˙uß›WýlµŘ­2çwW=× öá4ěâAŻţ÷Č5b$Žř˙Îä?CŢŚ »ë™üG”öÄ]–OçőŁËŰ97˝tĚeOrscaâŚ7>:üÄ?sýŃkj|ôĺy`â^ąe(˙rC‰Ö=ńÚGń© ’/°öǸ^Š´%¦P@P@ÚR`ŇŹ^iË«ő\ ( €“\`“~óÝý»őĂgď?  ÚCď¤x–8ŇőwżJŔ+ ŐĹ2$ÎĽáE†ëĆś«î{# ŐĹü8ŕś‡žkl4­Ę }nţ»»b¨.–$ŢBu1§¸ŕöWB¨.ćÓk—Ó‹;~đ˘?ës;A«—öGŰűĚ!›ţćÎ?ßđÂSŻĚHX XĽŰŽ«/ţ›łËŚäĽůţ(bRáXĆZnĽÂ|!]řwç5Š9ĎżnĚiuâëoľÝę„»ÓP]ZŐßnů/7ŹşQră_ß™†ęŇ’ŻŽµáqwr-ifH§ˇş¸÷¶'ßaܸňb¨.fŇ©p˙ł‡@29ďá4T‹1ćúgüÄŤkL>!ŕź_üxŞ‹…?9z‡Sďůäó ˝2ă®u=ĆimuQ¤šV@P@hŁum€ě)P@&ŤCJo~l8ýˇâé{ŹëÖ÷Ĺčo~}ĺ„ŮŮú-:ű_páÁ+mÖB|ŠđĐĐ·Çw=»xĐ+±Jľ|ÎćOž±ÉĆ+Ě2:J)Ňgí7¶’X’ľr—˙tŐÓ÷Ű#Ś`ߣÇwâc¬î&ýć=ló%ÓhZ<ŞRbÚi¦šk\LŤţ€t¸ Ĺş{ÜËľĺR±?ˇ:Ćö†˝őťwęd&>†RyÉ«ţâ–÷˝ú‡'>ăÚç‡ř?Ó1=çěT©%±#YCW•Ę×ţmC_y÷łP^„t¦;y·>a|nČA(&b#qä¶ßîxÚ˝ ŢŚ‡”&Éű—VěÝł Ť¤c]ěSĆ"­÷ś°~®»ĹŠ † ‡łŽÇ/·ëĹĐNÖÓ8i·ĺżpüDl±ršÍIůŹSÝý|›ećźcllîăĎľŽe•/¦ ‚†„Ye‚|B,HˇL+6˙|Ă‹ń¨“víłŰÚ łąűÚ /uŕuˇ#!ÁSŔ—üýŐĎĹ’ç8p‹ç›ë,;÷Ŕ#nˇĚ€°@·ń#|Cfâ»ú«Ď4ýŘ?~[ ~ČŹaٰ˙=sż~ař0‘¸WŽÉ.Ô}–Ř׏ňÇí¸ěţŚťżoŻuÝń´{®xlô– áŐCŢÜu­…˙óŔ›´#^«„të}ŚĂ‰ÂżőR¤ÇšV@P@h¶€Ńşf [ż ( @› e‹Ż 'fľĽ]×;ГѠq‹¤łł¶ĹR!Z—#B‚ sëďžoö™VYj®•—ěvÎţX( VU)AqÔWß„˝tL ˇ:6 ´±Nkőhťă®9rŤyg;{ůíń}Ę8ś™Ëů.ž”U MŹMNÇě{,:Aš% –Y +kGÜůÔ»± ńĆuŇńpČ‹ďßů›uY.vöÎăű¦Q€Ĺ@b±B‚ŁB¨Ž|š—.éP(Yű&QÎ8a×™§ ˇ:źaşiţ¸wż†Ź_„ŮßS̡ćEçéCuä,1߬›öź÷š‡…˝¬SQÖmąâü!TGÖĺĹř÷óďďNĚ!1ĂtSo3°GČ!ô‰vŚÖ}ţĺŘěËßĎúGzî®3" /8×,!Áż×>4Śh3Ćś}×_4„ęČŮqőżú~»´Çb,\=QďcśÖVEz iP@P@60Z×ČžBP` L3őTtŹ"4Fô‡¦Ľř}ô‡tŻ]ŇĆ1¶”Âa]T–n»X9”e7c1&w»ňŢ×ůʆţv§ĺú-:GÜ›'^1!Ķäüă Ĺ8;Ż8˛5?v‰ů:ÇP{ÓQč—BλŤŹg‘fIţýÍ–k¸çŮ,ŠĘŠ«é„}Ä’Nţ÷łÇď¸×k‹×sĆVűńÝ»Î4ěńÝÄČé1g§4Ö™®+Íú±< YÄ4‰MűĎ·é&ŚPćâŢ½#źĐdŚÖq—7LF•˛wÉů&Üë44+L‹ÍÓ9]+vöď‡Ů†2Ä ă¸]rv;ăţôŘFŚô«ßŹđ%˝p÷ kžĚŢy†źn±T,\o˘ŢÇ8­ż.Šô@Ó ( € ( €m `´® =… ( @Ű ĐĹ,v^c±î]f¤ű۲ vM»YŬ4+vt M$@äiź}9¶+!­1ß~;ÍÔS˙ßćKP;ăÚňîi,˘şŢŻî¸ňđU×[~žJ9ňóńë(0ëLúݱIĺÓM;ŐW_Źź‡.Ż!ť^Ť˝Ą‹KäGŃý­ILmÍ^ÝůŹ|:˛ÝúÄŰG_úÓĄ…bÄďH,<÷,1RIDrԗߤ87=:śŐ-~·óňt:‹•3®3¦'&ńî÷Ýĺ¨dŽYg¨RU•{ÇQé2¸Łţw4{;wŞăĎžÎ3MWĄ< _}]DÎË=nĽđ»ăÖü {«_]^C•ś*ĄŹqZU]é¦P@P@Ú@ Ž?[Ű 5žBP@‰`©^¨^ 1¦8Šžb˙ČBuÔŔW˘i$¦ťfęźm˝Ě^ë.Bż-â\Ě—JäýěďŹU‰ÖőśkÂhŮgßś0—š™YŻzЇđYz-é(ËÝÖZ5 Ň˝1˝Ú2s2şsŤŁn Q@ú…ÝtĚÚ±§ŘŚÓOłY˙±cB·9éîpČKăÖÓ ˘Çtlq·?\óÜŃŰő?;b×3îcIÓ˙wáŁ3Ď0ᏇĹçťĐ/ž˝‰yşÎŹzó˝˙Yű‚1Č,§öv›u†4>8ěűŐo㱌Žé* eÄ2­N0p@jžrîŹW,­Ş{×±3úĹ5@HłXm„K,8ňfvšzyő>ĆĄ-4SP@P  Lř»6Î&) € (Đ 4Ćôďűß`4k< Ät(öŇđO㪲”Ľě§«˛jĂ]>řµ¸JéËď|ĆDo•zc-Ô=ŤÖ}úĐKÄĄN˙zëĐxşZ¬8‹užiZF‰ĆÍ—ßůŮ÷óݱD)c~Yôťď{u ~nÄËŚíX.¦ă¤iô™'FëN»ćůŤűÍćżë4Ă´Ô‹±!kMěłŢ˘±’‰IФ#dXę–Ă)ćĆżľ3CrňtŚc‡ŰK¸sîŮĆGúľóíuŹź´ŽĆ¤wybÚVéXîĹ/|Ĺ^–ÚXué9»Î<ľ×äg_~ÍóŽ ™Ä@c%Oľöń–߯0ËbtW »Hî˘CVŽĹjI¤Řâc\K…–Q@P@h'FëÚÉŤ° ( €E__ůÔů·˝r™n§5Ć.ŃźMúÍwňž U]xç+¬ťĘj°l><ôß\ůtR ×E_ż}ĎB‹]_Źë÷÷ćűăűÖőčÖ‰áĎ驞¦ÁڦZîé~gůŰ+1pž€?ţË7<2<śŽ1ÔÇţhŮ~‹NXŃâĚ^ŕńăůˇŕ97ż[ĹÓ1ˇ“&ęzŚÓM+ € ( € ´sŁuíüŮ<P ă | ™„ç~˝ăr!Í wkôš+~üՏ¦ďvĚö˝óţwé,lń¨ę ˘Z}š-–ˇŮi¨ŽN['îş|ŘË Ö?ěąBá¤iH‹b„ĎŢŔ"sOč"·ň’sž´[Ć˝ĆSTJĐńm×Óď˙ęë1• Ô•OOĆu—›;ňůWcŇPýű~˛ńâaďâóÍĘÔ„Ś‡ ›ô°cäiz]„b·]©G¬ŞI‰ąşĚxú^+Äf¤ăvÇPÝôÓNýÇ˝űkăěYťŐKbKxŠb¨ŽhéůŚĂ¨×YvqOşdľţŢřqµńđ¨ý1އP@P@h˙FëÚ˙=˛… ( Ŕ+@ ¬ĘµMó}8†2,śZĄd+vÍ7G§Aż]w÷µÎŹ]c™ąî=qýź02‘@ŇŇ®ĚŕĘĽ0ťž®9jŤ´đĎ·^†~yyÉźn±ÔŹ\€ÔśăÖ<í»đl?ßf™«±F,Y]#-vËqkűŁŢéjě%îvÄVKßrěÚ1îC&=¶8i­ľź(-V[ ˙ÁS6L'ż ůűo°ŘCżßpăć-”g““°áb!Ĺ&ýĹX:–gĎ ×›óĎĂWűĹ6ËÄřW8śîŠt'ğѲ±Â6Y⺣×d4ďOűôűëO†^xd5+” ›Ś]Ž'"ŢˤéI"˝;ńidş»·^>•ËwţfÝ­¶`¬ţ~ł.ů1'$Ľő¸µĂpćCĽőĐÍ–$„W(™ Ç‹Şë1ŽGj®DQ(㦠( € ( @› Lő]ün·ÍÎé‰P@h7›žö)Kµ~9ú[‚)K÷č2ű,3”¶ŽĹ%X;őńW?ü`ähúI1±çś3ÓĎ«´0$éŻGĽ‘‘§éšłˇđ—ŁÇ0ůé—ßŮ÷°C&ÝÇ.ůżUJk+ÍdŐWú÷=˙Ö'śeéşŇU0ÔYZřOżbő†×FŚbY†9»ĚŔÚ˛ wźeÎ.cW,­ňĂ`ä‡}ŠĎOľä*č ČĚqDßűäË­NĽ›ľo7ýjmŞÔĐŠ]¬Ňđü[ź>÷Ö'tš[~ˇ±ó¦qş´Bţ†ˇk!Ű˝ňîg¬»Ęäz‹Ě3Kč™kôÁoĽ÷9ëu0vŢŮK»4żţŢ(®ŽăÖgáŮ*•d\V+fÎħ›š2ĚWý*jŚ«×ă^P@P@ö `´®=ÜŰ € (0… ¬ěíqľ?íÓ?LCFěć'ç>té]Ż…‹g¤'ă%'y¬V‘"'—öŰNP@P@Ú­@ _Ő¶ŰvŰ0P@&#®3O?äĹB·:ń®•—sÁî3?úň‡¬DŻbŰ•›>ŐZ<×Ä'¸"ţ›řz¬AP@P@ Fë n* € (ĐxĂ·\úžgßőŐŘ)ŢX?á¶'ß)śYíX˘é¦ ( € ( € t@GÂvŔ›î%w8÷ß˙ěłĎ9rd‡»r/¸9›l˛ÉkLXˇ9'™k}xčÇ]ţÔÝĎŽ(\[÷®3ž±WżŤĘ–t(”tSö/píµ×<¸ý·Ó¶[Îť;pŔÝşMXç§Ý6Ő†) € (Đ<űÖ5ĎÖšh/„ęŽ9ćöŇŰ1ů Ě7ß|FëZqű-:ǵGŻÉ"¬Ű0üĂ/fšašćč´řĽłÎ1n‰ŘVTč! ´C{ď˝÷”SNi‡ łI“—Ŕ/ůËÉ«Á¶VP@Ć ­k¬§µ)ĐBŻşţýűŻąćší±}¶irXvŮe'·&·Łö˛hĂQmG—gS:ĽŔĘ+Ż|řá‡wxZ)0hĐ ‡zČŃ­äó0P@)HŔhÝt3˝Ş Ş;ůä“«q§ ( €%°ů¸ź‰ŞÂ;°ŔGA´®xé ( € ŚZ P@P@P@P@h'FëÚÉŤ° ( € ( € ( € ( € üŔ‘°> ( €M5jÔŐW_ýí·ßN;í´Űn»ítÓMÇÉľřâ‹_|ńŁŹ>úꫯƌłŢzë…ü&¶ĂŞP n¸á>ŕćˇ[d‘Eę9Ô˛ ( € ( €+`´nb=^P ŠŔµ×^űĚ3ĎP`á…!ąaÆ]|ńĹź~úiůäŽ;î`25‘ÄgśqFş.µÔR+¬°‰P’kĽňĘ+Cšš9Ým·ÝöĘ+ŻPžąŔ¸ś5×\3ź¶˙ŃG}úé§ß{ď=b7;묳Î7ß|Ë-·Ü2Ë,“^8»^{í5ÚIEJvéŇ… 7ÜpCć ¶¸őÖ[‡łóďđáĂ ÄR®”ČËĽóÎËu…™cŽ9b0©3lnĽńĆ4xi-íďŰ·/ĆѰ{ď˝÷ő×_çÖtëÖm‰%–ŔąĐ)˛–s=üđĂTÎą¦žzęÍ7ßś»đಚ×8űěłsŁW_}ő0“0ăal‡Đhü\sÍZ›ţËĆ[ĚY``óÍ7Yçdžyćá.ŻłÎ:\Q<„űřĆo„ÍŤ6Ú¨{÷î!McŔ éE]tŐUW%]ýyK«Ún»í¸ĆGy±Yf™pžŤŢ˝{‡ ăż< ·Ţz+ 1bń2.UÚÉ#G" ƢRÇ’ÇŹŔ÷±k×®< ŕv§… ČŢ}÷Ý,áÂ#Ęë‹bÜn®‚’i1ҵÔIűyÂýbH;ĎF|ťjsSP@P ±Fëëim ( €cťÄYĆ'…:D1ŇhĹĚń/‘2˘Ä,ŇŽ ŰŘăż˙!¨A‚ź—^zé‡?üaڶŚ $J1ŢöńÇ˙ţň˙s^â€aab±7ÓËă~ç1!Źç¤çźţ6ŰlÓ§OźI Ź0MŠeľüňK.“Âg{îą'ń5vŃ[*ž‹ŘçŠýˇ…ÓPëׯ_¨‡–\qĹńI0…ÂUÄz¶Új+b[!ź ŢţóźŘKŽđÍcŹ=FH+Äř(“†áîĽóNşDŃžp,„‡ř!F¶Űn»Ç ů¬űĎN…l†|ĐĄQţŹW]uUěęH¤’‚zűí·ˇŘP¸Ćsqă⹨đ_8śą/wÝu—|ĐAD5<±@Ş+ŤÖśŠŹÎ×_=׎w‹Ţ¦ćvŘ!ŽČ&¶Ë3ä3F븧1źB´®úó–Vu饗ňä„ó~öŮgTĹOw<ŢDb—]v÷7^18.ꮑŰM$.î"jÉÄ}ńZČçîR$DČÝŮ˙ý‰r†ÂÜŞĺbă±ă˘Ź qŰÝrË-cjŻ3Fëh!7nĹWŚ•›P@P@hž€#a›gkÍ ( @Ç @/žü1]%A°B¨.-LČ#vXKóI·Ş+”'&Cuq§NCu!ź8óëÇĐ 4TŹ%Aţż˙ýď4'¤‰ŞÄP]ş—N…D…BA~Ň˝iš^ZÄzB˘f±=±X ŐĹĎ=÷ÂŞKwĚúë_˙Łré®<“(Ř\Cu±0Ť!P6[w®4T«%äDĚ.n¶.ÁU¤á­P —@T4żőőž˘úóCuiµÄX‰¬…ž<ÓP]Z’)Ť$ś2y®.żüňüZÂ^˘ńEÁŤ¦dŞK«%PNµőÖIůôĹ›ľ¨ÓĘM+ € ( € 4\Ŕľu 'µBP@ÄŚý ";ďĽ31… /Ľ0l2ÎŽîr¤ÎI×¶Á‡|ţeH`šJ<8]ȧ{}‚Ö‹tČŞq¤ŁV—]vYÂ7„QŇJčÇ`LşŞq®OĂčŚĆxXâ ’B&]üZHß4âM < ™tŁ#TĘ.:4…Á›„´Bď02 Ę4d´&i†ń†řwńĹ_~ůĺéÇDÄŠ1’!źŘ C;IÓ-–¤' …çśsNšĘ©c~Hß!¶3épÇő’‰'!ňi*Ęŕ‹…%)ĎČGBŤqWAż*ƨÓ$~ňi9™s.Ŕą^âŹ\Z¬6ÄŞĚPžŠ8v˝őÖăYŠŹSl[i:uvęÔ ĆčCĎAĆ´®µÖZĄ‡Ô›Yéy ŁŮKoľZ%rĘ•2tš+ŤZÉ”Ž<LéEa‚)Śô GdŮkŻ˝§ĐČSO=5^B—y‰•3ZX.“ŮĐb´ŽŁíĄQCůM7Ý4fLëi§ťĆáO€†0 qxu@í˛Ë.aÔ0Cc´.´„nVi6Ž«¦*Üč«CZˇr6ă‰XͱĄ!ČÂ|sçťw^(Cm[l±E!řÂřÜ0íÓŐJň/Să…1ˇD‹ţőŻ…ü ÓęsaŔ©ŤĐ-¨PmWâśxiLź—Ď÷É˙%´Çü€äăĂfB®ˇ N|´®ĘóĆS„v˛M—ÉK.ą$ś—ŰGdŤ°ď<rř—Ń©ýű÷›ÄĎ>űě& Ě@88>äó¨3%0GÔŹÎ!6GĽŹ('™iÜ™ d.Hˇťt˘ŚÝýŐňčÖ^gh ·&ôä 'ÜI€8äűŻ ( € ( @óŚÖ5ĎÖšP@*@×0âVńâăds1'OÄŢOěZe•Ub‰`‡ĎJ‹ĹJÂźNCqłĹA˝ŞŁ$ý•b´ŽÍŐ‘IL„ü­ aDÂ!BÇ(Â.LTGÔ#vÁ 'ĺÂółö ™TKW˛D ý•č¸tÜqÇ…LŽF( ©‰= c…äÇúéăĆj aAOÚF@*–$‘v‹ăză5Ć(C?)â8Äď҉?†MBiÜ…ŘŰ+ só…2ao«ĎE7ĆNmq=ŇA&ś˘u˙2 ˇLLJ[Łuik[Wyő獇$>đ\ -‰ŻNM@6ö¶#M7¶Đ-±HzĂ…uLŇ4ĎŰźţô'ŽâA%ęG§<*ʇ§×Ĺ]~衇Â.žşX†®ť<*µ×ŚŃ:6ąŁuŃÓ„ ( € (Đ<ŁuÍłµfP  0-ZěCGO±°Ägu †…Ć…ˇŽé&]{ň±xĄ˝íbmy"SŘ•¦ÓŘA´ÂÄ iäŤ7ŢČ@Âp)”É7 ĆČ#{é•—!žÂś}„Wb|0/CNŽaIÚ‹Ą´í˛I”‡…)bá4ÁťJ7IN„@IDATI§ ¤c´.âü*ŇęsĄ‹E”ĘNTű&5§>iŹ<.9„jŻ™’Őź·¸ZE¨“sqž;â­)/%ÓPĺyÔc´.Ľ"č|J×Č8F2 ß&¤Ë ×2>šuuą5śĂIYZ$$ ˙†ľ5ÖŹMŰ#ŹqŻ P@P@fLřƵµ[§ ( @ČĂ^Ą 1*ÄŢÂ!é&!´wX¨Ş±žŇć‘I §ôňKCuaÔjĄCČ'ÔReoŘElĺ–[n©ŞŁd)L:5ałô!'ÎŚFşĘOŽYĄpľ+DÄZ}®Zpň“Ö’C´´X-ńâX>šcN!Qýy+śşpkŞÜDÎR¸­äĐnŹ=ö §gˇ lrďi{Î9çŕĎ0ŰĽ@ž.­Ć:ăáy|6î2ˇ€ ( € (Đ$bß&ťĆjP@:ŽCç;„ńŚôú!FPYäĚUWÉ$‘v#LËßÉC<-†Ěâá­K„]™bKč1ÇFú(1‘?ÓŔ…UZW9‹W¤=ˇzőęĹú GĄC\\Ž#ÔĚ„qń…Áiď¶P†ßba±2]ÜLqŢŔ4łŢt[ž«Ć¶Ĺg)”Ź·±IO±ĐŰ1í|—‹sĚÂI«?oś:‰+?P ůé´†…FR ͉Q?fëűÉO~Bź;V)á_Ś´=BŻLŹÓŞGŢi§ťŇ21€×R'#mĂi(0E«5ˇ€ ( € (ĐpŁu 'µBP@0:Źq‚ńwÄ画0V\Ľ’Ő-‰XĹňlĆô$ś3‹ąäb3X¤"ÄÎčßTžÄ25&ŇjY=`»í¶ >ýôÓ…Ň@Ă!Y1 Oź>ˇ Č §P§ROćÚ‹Á©ß)^×f›ť«öž€¨ŇW1Ć7ăđR®+F¬ŇĘi„.ÎpWB,ĚŤcôkŘdÔ-sĆ]´'µb±ĽŘoŽ ń¸X8”dqŘ#ŢxăŤ7Űl3n=Óϱ€l íQŃpâÝ1†Ë±q”1ĹX’"Tč5Ö[Ćφͨ÷šP@P@h†€Ńşf¨Z§ (ĐŃřTŁųŐb´ŽůřY·!¨ڏí¶ŰXEîB,ŹŔ:°Q“b1ÝƉ4fA`…Č }é—Î)ÖŠ&ĄŐĆ!ĄĐ <8Ö˘T@™×,F®ľújb=4('b±pH¤“ý1Ç+ 0€z|đA¦Ţ‹…ń‹_Ät+ˇ{ZŰś‹ćĹřT‹MeŔé?ţń–ÍĄ“&KßĆ%8%Âáétl°ĐÍŽcX 2¤Ĺú«`ÉWşĹx%4–NHoSsŚ˘Ąq•ŰË.»l‡v źKűç?˙ٍ´-,÷A -v ä^łš •łŚ,áČxQaü,w!FëBµěxBXŔ—ţ›ˇÁ<T[{ťá¨tF<Â*×î.P@P@F ­k”¤ő( € L`ÍĘW^y%l3P4 čL(”¤X€›qí×;Ćý$űÇ& ¦¬ĽňĘ…Ě6Ř 1)ú+ŨÇE]ÄzťÄ\ŇA‚´¤‹™Ć>PÎĺ3®–MÚáŽüĐŽfl¸á†qx,©{ď˝·ŇĺÓÓjŕŔDŽBşSÝ|óͱŞI‡»8ܲR=ŐóLSĎ•NšF€’0îV[m¨­Ň»P¸Ő›·Žű)ÎíÚt‘;묳Â^V9óĚ3 %ŮdĺÖ0â›Đ^ŚÖÝ}÷ÝDNKo»tU–°ęˇIşć…xa»ÓO?ťÎ1üGťôż#ĚG˘ö:)L‘Ţ|$ř!җϬvůŻ ( € ( @c\e˘±žÖ¦€ (0V`Ůe—Ť1lsJ›nşi:áWˇ Á‹­·Ţ:ŤÝ 4{“‰ęâ)_)„ęŘŰŠA”ÄŚâčBúľaBuéLD Ăę‹/ľx 6ĹĆ( şÚKÇ]ň Qżp ńÓ-·Ü2­dbŇÍ;—FgFÂj±ĎfĚŻ=±ŢzëE+:Ó·ĘŹ !Č<brx°×XcŤPq޵×^»Jm¬ôÂj”á¨4žKtŹĚ ľŽ‚y~B‡SzŢń J«-„ęئ¬˝Nj‹±BŇ˝{÷Në7­€ ( € (Đ<ŁuÍłµfP ă 'ŠýéŇüUD—í Znąĺň2 ä<řŕÓ%ŇIÇňňyN˝aľĽţ•VZiŐUWMh¬4ĘČÄŤ6Ú(ž.ôŐboZ,î%‘6#śbĆgdM€4"C´NL‡z(»Â±Ä§âŚfÄĹvÝuWşS…•IYćb­µÖÚe—]âYâÔŕ*ô‡˘~%řńŹśŤ‡·H/!®ý\9l¨„FĆ0YZ†9ŕčPYzŇxö*Ĺ>&¦µÄh•Y:03VKč礓NŠĂoéĂŐ·o_öfbž´XŚML‡D[z6é\„ÓQ˝… ¬´Ix®–§ ť7+UŇş|zŇŢŞ~,ÁSz˝ńS˝XŘKŔşĆuíŐ¶X'kĽÄ•OJ‡`×ŇrË( € ( € ´BŔh]+ĐĚ=Ůyýő×Ăţ«®şŠĄ8Ča•ŘtŐÎҡÄŞ4[ŠD‡ăÂÄ ÍN'¬xŚ;P@P@$ŕĽu ‚´P@L€ţ8aF6>ů‡°]VÄŚ:X*”Ž`ńćł:thŞcr=V׍L(ĐjÇ<¬űě;î¸ëěÜąó”µ^ˇ ( €UŚÖUĺq§ ( € ( € 4_`äČ‘śdťuÖ9ŕ€š6Ď € ( @»0Z×®oŹŤS@P@P ăôíŰ·[·nçz˝RP@JŚÖ•˛©€ ( € ( € ( € ( Ŕ$0Z7 Đ=Ą ( € ( € ( € ( €ĄFëJYĚT@P@P@P@P`­›čžRP@P@P@P@RŁuĄ,f* € ( € ( € ( € (0 ŚÖMtO©€ ( € ( € ( € ( @©€ŃşR3P@P@P@P@Fë&ş§T@P@P@P@P TŔh])‹™ ( € ( € ( € ( € LŁu“ÝS* € ( € ( € ( € (P*`´®”ĹLP@P@P@P@&€ŃşI€î)P@P@P@P@(0ZWĘb¦ ( € ( € ( € ( €“@ŔhÝ$@÷” ( € ( € ( € ( € ” ­+e1SP@P@P@P@I `´n {Jš$đć›o~öŮguUNyŽŞë + € ( € ( € ( @óŚÖ5ĎÖšhkîÝ»ď´ÓNµě(IyŽjë†z>P@P@P@¨ `´®ŚŮ L†ÓO?}Ź=6ÜpĂZv”ˇ$ĺ9j2ĽV›¬€ ( € ( € ( Ŕ”)`´nĘĽŻ^U‡Ř}÷Ýď˝÷Ţv!TGIĘwX+/\P@P@P@v(`´®Ţ›¤@ëVXa…^˝zUŘŤ9’pe(IůÖźĚ#P@P@P@P ŃFë-j} Lj=öŘ&T ŘŃ«nŁŤ6b/eBÉIÝ^ĎŻ€ ( € ( € ( €ŚÖM°0ĄŔ”!ŔÂÓL3 ×vô¤‹×{Ő‘CJĆ]&P@P@P@P =LŰaP ¬ńşńĆ_{íµÔIŔŽžtýúő#=zôčŘ«ŽMʸlŮ­JčP—^zé1câ%÷ěŮsŤ5Ö›“EâöŰoOżĐbvE]t˛hąŤT@P@)^ŔhÝ‹˝ŔŽ(ŔÚ!ZÇŰ{íµ×H\uŐUÆ ‹®/)L( € Ô+°÷Ţ{ůĺ—ń¨m·Ýv˛‹ÖtĐAĎ=÷\Ľft˝ńĆ㦠P@P` 8vâ{jš%°é¦›Î1DZö¤KCuěĄL,`BP@.đí·ßvp/_P@ÚŹ€Ńşös/l‰ ~úéwÜqÇ*Ő±—2U ¸KP@hFUß}÷Ý>ř §ă_Ňé8ë¶igQ@P ] ­kW·ĂĆ(Đ0ę]«ďmX#¬HP@¨*ŔL‹/ľ8#©ďşë. ň/irČŻzś;P@’ŚÖMÉw×këČ}űöíÝ»w©ůě-Ýe¦ ( € (ĐfGyäřĂW^yĄpFrČgo!ßMP@:€ŃşrŁ˝ĚŽ(P©]ĄüŽhä5+ € ( Ŕ$8÷ÜsO8á„*'gď_˙ú×*ÜĄ€ ( Ŕ”*0Őwß}7Ą^›×Őî¸ăŽ×_=^éňË/ß§OžjFOÜ~űí/ľřâ¨QŁ–]vŮVXaĺ•W&K–&ľůćfKá硇zâ‰'XŠnh+­´łĽM5ŐTC† yöŮgă={ö\{íµăf;LĽűî»óÍ7_ać—i¦™†ĺ&şwďŢl“P@&™fš©°&ě?˙ůĎŻľúęŠ+®¸ůć›ß|óMŇË-·ďżýúőăßę×őÁ°‚ůóĎ?˙¸6yźâ-lÁÜrË-ű÷ď_ýpöň–÷Ŕ<ů䓼}SĎĚ3ĎĚŰ4‡óWëŐN7Ýty K/˝tş&ěúëŻOËÓbďĽóÎcŹ=–ć¦aˇú5×\C;ăŢ.]şl˝őÖq3$XąâňË/‡"ćc»·7öoxŠÉ%ńńÇs>ůä“ę –Ąí»víZ˝{P@ŇkřŁŔä+0űěł§ŻÉcŽ9ć©§ž"f—fĆôřĹ_TşXţćfž”X8M¬˛Ę*Żľúj!ŘÇç‡JUµźüÍ6Ű,˝Ňä´źćŮP@ÉT`ĆgLß_1tqá…N3cz»í¶űěłĎ*]éµ×^;×\sĹÂyb±Ĺ»řâ‹+Nţ…^ŘąsçüŔłŔ śvÚiÄ 5,µÔRé!DëŇ}ôἴiľş»ä’KB±Â_ 42=<¤ůňŻPC;c±B ó7L¬s2Jś}öŮśJ›”śŚ®Ë¦* € (ĐGÂVúĂŔüÉR€^cm´ŃăŹ?^Úú3ĎZ~ĺ•WŇĂ=ßűő×_ďż˙ţ|Ť4bÄ*×Č{ô®»îzÎ9çäe虵Ă;đÖ6räČ|oȡŁßa‡¶÷Ţ{W*çÓ°m¶Ů&íPĘüţ÷żßi§ťňň Éiőß0 9{ŰWrçťwÖxŇÚKÖXˇĹP@h˙FëÚ˙=˛…uśţůo˝őV•čy·Űn»ęNˆ[}őŐů0fŇ ®áŁH!łýonşé¦ŚçŤí$MNÜ4ˇ€ ( @CřžŚ X•Şx%*ÇČĐ´ S’ýĺ/Is*Ąyă>ŕ€\(@śŽˇ¦…ĚŇMúÄk+Ý•gîłĎ> S-ä˙ěg?#ęWČlŕfëţ†i`Ú¸ŞáÇ×xĆÚKÖXˇĹP@h˙FëÚ˙=˛… `^›Ë.»,­”Żë™›&Í™bŇÓO?=“îĹË!MNÜ4ˇ€ ( @› ĐU-}˙=zôŻýëÂŮj:˙üó3c]!?lşŔßsĎ=W_}uiÉŇLÂmď˝÷^é®4óř㏿袋ŇŇ{ě±Ç‰'žXČlűÍüo¶oCŁÎ8Ë,łÔXUí%k¬Đb ( € ´Łuí˙ŮÂşřCź)ęţőŻťwŢyĚ.—˙óź˙ś ěB>ŮśrĘ)…2łÎ:ëľűîË„ŮL¦s衇N=ődüJI‡ľ¦éÂ%»©€ ( ŔD ôčŃăCaˇ§SO=uÝu×Ík;öŘcYĐ)äÓŰ˝đU٢‹.účŃMžÉd˙üç?ĽK+a¨tóđĂO7IłÄÉ'źLÍĚzń«_ýŞđöMĎľA)l2A27ß|ó6[™´®ża 휼6{őęUck/Yc…S@P`2hČěwV˘Ŕ¤(ĚĐĚKn¶Ůfc•Ř´=?ýéOó—"#\B™üďo>°Đ[ZĂM7Ý4í´Ó*™,V™WÁʶ4žÓ‹2­€ ( @« «Lđ.3çśs26­ţh…·N6oĽńĆP†oÔ {˙ö·żĄ‡“.t˛[d‘EbŰn»­p8oß·ÜrK,@⨣Ž*”ašĽX _e‚ůŃňč«­¶ZéU…ż@&~• šZďß0ńZ&Çý w§Ň&%'Ç ´Í ( € LŚŔdÜc¨Ň;şů\ŕ‚ .ŕ»ý®s‹/ľxšCúĺ—_9Ź=öXa×Á\XJu 6Ře—] Ĺ&ŁÍĐĄÎŽu“Ń-ł© ( Ŕd'Ŕ(Wú…ĄÍfq§BDŚ˝/ĽđB(òG˙ďĎöŰoźN÷ö·ß~;Í3fLܤ]L‡ťâ×[o˝4sĎ=÷,ôÎËgľ‹ĺź{îą­·Ţšńą1‡ËÁÓŚ<4™–i`şŢżaxę¶ŻjĹWÜd“MZĘŻ1żsçÎ1]H”®’qĂ 7téŇĄP˛I›­ř¦I-iłjéMŮż˙7ŢxŁŇ{öěI™J{ÍW@P` 0Z7ßÜŽxiyş °Ę*«8â_ůŻĽňJaWŢ€K,±Q?:˛ O›ĚăsĆgđďdŃZ©€ (0Ů 8°´ÍK.ąd!?ľ˙†|™ŇyíĘ+Ż$.§”-RşY¨‡2Ë/ż|^˛43/V)‡V±>lĄ˝ŤÍoĹß0Ťm@Ű×6×\sÝwß}ŰlłÍ!CňłóP1"eň]ć( € (0Ĺ 8vŠżĹ뉩•^đ<óĚSČ6l9Dßř?ÝĹ7ŰĄ2 ¦0CMzTűO·Ů‡ŤöOa P@.Đ­[·Ň:óhÝđáĂcIzĎőéÓ‡°, UW¨Žňh“ľĹš•8ňČ#?účŁFŐV˝žz˙†©^Ű䲗© ďż˙ţË/żśŻ}úôěŮ“Ç?餓ř6{ölśw…ć1íA CŔ0r›oľ™ĄS ˛†ţö·żő2aË”)Ó·o_tX©˝šnŃ<ÖżýíobÍ5ÜşěÚÄÁywüq/ž`=O§{÷îžD.9Ţž~ĹWDO‡żé¦›ĽĐóÖ±Ńő—żüE¬Ń¸őÖ[qóiIĘvV9LJEYa۶m¸_atýúőÉŔgN<ńDľ$Ľ^Ąţ.e”ěŮ CŔ0ň-– ›o_ŤM,›PşM›6żüĺ/ÉfĺĽ×7ß|“łĆ<[]t‘ÄÖťp 8ěFڎuHxi×®‡Ă–-[–˝n}«·ůá4sćL¨„wráÂ…::KrH’#ĚéşüÔiŐŞŰK–,YѰG3 CŔČěuőęŐ몫®"zŽsX5<ßÖ~ń‹_¸S&j×®}ä‘Gj‡Ý¤I“Xe:wîŚńP÷Ýwß˝÷ŢëM@‡xźqĆG}´. Ç‚Etݰ-÷ěłĎľýöŰÚkY:GpŇÔ?ţńŹýčGş/Q~Ú»çž{DČRčŐŮŕ. ( lÚ´‰<_ŹZHÇ„FV9L‚©"{‹/ Ȥ`ă)fĂ•üâ]»vńÍáëÁWîý÷ß§ţ ;ľi|Q9sÖËh.˛¸Ů†€!`ä7·ťĄüöJl>YB jŐŞ*—Ą.p5Č} ¤×”)S mYýoáĚ3Ďä§)Đ CŘ‚&…çŤ7Ţxâ‰'Hçě& 𻋿sp_žţů„ÝáîÄsG”D~p›Ľ!`†@ö(]ş4;:YęËúËA uëÖu˝rź1c†gˇC‡Ĭ±.{YĄNŤ]´őë×K—W^yeŕŔr™˛ńë_˙úţűďµ–-[ęl\||}ô‘Üe3ořđárIEŕA »#ÍÖóčiĺ¸6ghÜu×]în®p¸Š 2cŽŁKČxţůçٲĺ2ŽĎ82sÄGT¨PáÇ?ţ1ŃvśjB4_fnAÄě‘ CŔ0ň3– ›źßŽÍ-O¸ćšk´«Ž1:věH­şäÁ*UŞ”¬Ppď˛áĚ4ń§śrĘí·ßN,!A xëH"ć–űЦƬGŢ>HđůĹC‡Ý˝{·xô .6sCŔ0 €Ŕ 7Ü ®:† †ąMť:YĐUGÖ ˝EwîąçrjDš3'ďřCšĘ¨(‡[Gëł^wÝu"9ţřă»té"—Á!~Ay¶…Q“mS…Ż#As$#Cf8H„6ąŐŽĚźqd§_$Žú%o/^WcťSŻđabOd†€!Ppř )¸Źa37”Wc[> h7L=šYţź˙üç!C†T®\9Ř—ítjWVĽ[p…üć!ďő’K.!5řăŹ?&'¶Š{ŽTť &𣚋ĎÎ+KTp±™†€!`d˘Ě\Ń·`w—Č-•2§Cť»cŹ=6¨ď„TűÍo~ŁX€č%Ě’mJ¨»HâěұZĹ­ňÁ^„ţqž¬w OâkŻ˝ć„” ՗➎\±E¸zú»ls±h6vîÜIŚäĄ—^ ™yę©§ 3xĺRBÁw '‰¸Ľŕ‚ pŢťĘ')Á1CŔ0 ü€€yëňĂ[°9äĺĘ•cŹôśsΉf4Pšä>ŕ 7o«\Ʀ[ú¤¨ś|ňÉî' ~O™ł˝{÷†Š2ŤňĺËëË‚Ő&@€Ú|Ú§ź~żÔ–§CćSpGT5§M›Ć1yŘ[riÓqöĄ9„©†€!` ¨Ëj‚ż)şţR9#Y ¬ó‡E–c܉oŠúłXaď¸ăJŚESM1Ąíŕ€Ł*AßqĄTIżeŞ˛zaőá–6mł“ݨC(šŚŽęŐŞUˇkH;kÖ¬¨żĎSÓ—9á0ÚNŃiĂ:řÖq GłűČYÄÓĄOfčNśąŐâ˝őÖ[@Á’šDä íI CŔ0ň-V·.ßľ›XZx5_đÓGO6K!pK–,aď”4ę’DizňÄťńk¨:§Fˇâ¦M›ę.7Ţxăß˙ţw-)m)•†ŕ¦řé¨RGXś%‘Ťůó« ($DBĐ•W^™‘‘ÁŹ ŠŮE­eøu1 CŔ(ppBçE° ÄâÂúŰ­[·„;÷ttÁŐ2ţ|ň9}‚”UöĎXM˛ôě ÇŇŹŚăË1—­fÍšľťvÚi‹”%SŮS¦$§dŕ4¤&Ź@5´”vňŽĂ¤ş +ŕ’Ďé˙ź˙ügäČ‘ôČIiH .c^áś#݆o ‘™‚ţ=±ů†€!P 0o]~}6ůĂânúĐ@Ż9˙Tëó»‚ĘÓZB›}{]­É?˙ůĎ믿ŢSË˙—üÂŹI:đęŐ« ‘Ë­ ±HőěřaF”9ěr Xłc†€!PXČ9‡)¬Č¤|.öP'NśHŃaÂüÉ{ek6e—tpĎAf8Ő—4 (Ť‘™t@3CŔ0 ,; 6c}v°[Bń÷‘Zb47 CŔ0 C ™Y»v-UwÇŚCb–@f\JrłfÍŘzlÔ¨Qr°”®]»VŻ^&łlŮ2K0"5ÜyBfHÍćä_Ę}TŞT©xqűݔλ2CŔ0 ÜAŔVťÜÁѬ\pɵk׎ĂúÜaZⵯ¸âŠhUlOç_Bmˇ›0ZŽ€Ŕa7jÔ(Ž’rS¦JöŘ-…~‹ŁÖŹ®ąÓąsgäsć̡®Ő ˛PdĎ—|¨#ĂÔü¦ vpüA”)ţ‚eóŮňŻ„MŔ0 CŔ(X8÷Ůşuë 3Đ3ţBBĆ=dĘÁcÝşuÉiŐaţ;vÄűć*đ—Ô”€şhSßq™˙aź˘x2-”úĽdT°ű×ĎČŚ†ËÚ†€!`y‡€Ő­Ë;lÍňÁ@ Wjľ"Ú·o_śPiÎř”SN2d@‘fŻŻFĄmöź9˝ŽhAřhµen„ÔÁAÉ!ކĚÖc±8épü‘ oĆ(jцs˙á§űéOĘ)X&Ĺ8ŞfCŔ0 C h"+¦ĐCGş+§CfđŻĄ$3p3Ž#†?đjp4źĚLź>}ęÔ©K‚ĎN«EŰđlrň f™AU3‰!`†€!»·.wń4kÜbş$Šž{îąřˇ’ŕČ#ŹĽöÚkďĽóNŞą%k»„Ôąu3gÎ$×cÓ¦M ©"Ě“]bREđ¦qĽ»Ç Źć.Ńs$ĂbvÚ´i$¤PD&áaa´ěEc¶qăĆ$ăĺśľü–đDvË0 CŔČr‹ĂäĘdň›¶9Jâ‰'žŔ­ź!Ň-™o0*xsĚ1-Z´ °ÎÁiť~@ä8ţŃ۲e ©™”ě>Âg‚CcűôéĂ»łÄX ©µ CŔ0rË„ÍuHÍŕAE I“&n CvčĐAÚYjPÓşFQáG}tܸqěß’4*ŕ|T-!čě‚ .@Säů­×ÄíHľ*!u<áo¸ŐBę§zâŞăĂsÁDť«.ŽÝşÍdzán#Í5Ü—i^á{A4Đa8ř(C1;Ľ‡äSĎŽÂ1A}†€!`EÜâ0… .8¤‚#_q˘}ňÉ'P2ÂëČ ńtlB-HV%Ń5yßŃaźĆŕnăo۶m±°jŐ*XÁ„Ěěر–ĹÜ^~ůeČ ď®gĎžŚeqvAÄLh†€!s,¶.çš…‰(ęă§#ĺżů˙!Ů%fÂđZFŢyç2; —|âfIĺѨęrâ‰'RĽŹ»8ĺ¨ÜIř JŁGʆ¶ÍǢšntÇe‚MoŽőŕCŠŚÄhnÜ 2ą!`†€!PÔ€KĽż`Á‚§žzęÝwßu›Žqěp 3ě5’pć™g6lŘ0!Ţ-hÄ 9°‚”XΙĄDŔlP9¤ęBA^¶Ż»î:Č ŃČLQű–Úó†€!pp0oÝÁÁŮF1ň6śŮň}ë­·zčˇĺË—ăAKpś1h%Ô–soÝIŻl)#ńćĺ©Q ]’™B"ŢşˇC‡rh,ŰΞ)} Ť&4Źüj˙]zéĄđÝĘ•+kk†€!`†@ŃD€ŕ5ę?ýôÓxëÖŻ_ŁrŽ3 3iť’™`ß8!5C\‚dĆĄ&$Ľ2 sę©§^~ůĺd'{› o· CŔ0 l `Ţşl€f] |„n2˘Ű8ďuňäÉ+V¬ ¤.ąJś’<ö„ëÔ©Ń„nş‡ńř«wé=°wwˇ+ţ¦4ą$°›Ŕ°ˇ×řěpŘQü…D.)ĆÔoŽz ˝AíŇ0 CŔ0 %™ĄK—ľôŇK”%Ě@*\Ś[ÜĂLWż~}¬‡Ě¸ŁZES(Š4ä–×đ¸„D‘„ “ˇ®Č„ Č ¦đŮᤣ–HÍš5Ď>űěăŹ?ž™­ňƲKCŔ0 C «XÝş¬"fú†@ľ@€Ł$ŕ”k×®ĄÖUę¨íB:*^3ŹzĘ\ń‘‘y ­ÄAFö+ ŻC( ^#z+Î2]°‰ł#%„uěKpÇ6µg–Kě0yö̉DŤ^¸ę¨5S©RĄä)EM™Ä0 CŔ0 .ě/â[ąr%dfáÂ…đČLňi6üpŐqz!u0‡¸Ýľ(“q@Ĺńôá0|¨É˶"çZŔ˛t%0“§ l§bĹŠL 2C]6DńŮĹ ´cBCŔ0 C €ĹÖa1ˇ!Ż`Ă9oŢĽçž{Ž” ę­ŕ˙Šcź< ¤“l¨íÉ'ź •”S_ăşĺA!Ć=ąKËĺŚ âěŘ'gbHĐdďáŐW_Ý©S' ± »¬ě–!`†€!Ph€Ěp$+îą|2ăŽqđH…~XČ śˇ^˝z'ťtqą» ]‚·Ň˘ĂŽăČ‘#ˇ[d 0Őd2Cśd–uúé§SfÄůÍg§_źµ CŔ0˛Š€y벊é‡ç {űí·Ě.tšU]şuëĆ4ľ0¶‹ă¸c:äU?yT_K؇vłçL5=|vÉűäp\Đî®]»4"µíôXÖ6 CŔ0 B„5N:JypękrÎ)NČd†ĽW|ařě 3A>Ł©Ŕş»Ń[Z{abK5=Č 9 b3Ú€ĚŔ˛¬ëŇĄ d†Â#$ DŐLb†€!`¤‰€yëŇĘÔ CŹ•\ćĎź˙ /L™2…˘*)«şuÔQśŹÖ«W/`ˇą„­yĎ )iĘ[ž˛wíŽc‘˝h8.—8;|‹śěć©É%ś›=srIZ´hŃŻ_żV­Z 0ŔrIk†€!`…2L© ÷řăŹS˘Ž‚Ť…G,áŃĘ–-Km¸ăŽ;®V­ZlćA˘Ęqś$*÷$ŢĄg™»| 3Ěő"c—„OM.!3¤ĺÂ^ 3¦¬'Őr—«+­a†€!`D(ĆćOTjCŔČ?8¦Ď 'GIĽ˙ţűcf7!)Ş.Ô<&H ‚Űľ}{ütÜýŰĐß}rĺŃľ7–ůżžYn8[Í<łĄÂ ”—¶§é.QŕˇÇs Ř9s¦/SÁ.&4 CŔ0 ‚‚Ĺ1Č{ť3g>Ż7ß|2CˇŰ„ٱ 3Ő«W'ž®eË–äŕ§#_hG®<µX“†g9dŹ“áĂF),…;ČLĎ táxnKŐu„ɸx@ϸ]†€!` Xl]8vË8ô@mńa±Ł{ß}÷‘0‚3+ąDťKÄ DÝ)§śBU—*UŞ$?pMihý … <(eężLś8‘„vŃi'äĆBjqŇqÜĹěx öŇ9»–çŇł¶!`†€!`ÜikÖ¬Ě|úé§8ěvďx(|d0ČLßľ}4h€Ă.áI=úá]Ň1*qÖ‚ň PŚŔ^ 3ăÇŹ'u€Š dĆąů¨ň™9öŘc۶mKb,Žż„±[†€!`†€FŔĽu ků  :RE^|ńEüt8ąâH¤›7{ÎÓÁ»wďÍ…)şä Ż—wé=sÜÝ,ÉŁĘH µě˘“;kÖ¬ &xăz—Ěśě]ήĹçxűí·óPěi{:vi†€!`ůNMĺ Żě±Ç™I§ăY¬'¤ŽÔWJÔAlŕ|{Ô»ô@»›%yP™MSžo>;ČL‚ĂŽ)1stÂ÷»ßątč™7[»4 CŔ0˘·.ЉI CŚ,– )”G×Bpˇ¶IĆ.t´Ȱ H Ô–46oů d™žĐ»ô†»”kˇnk›.Ë•v®ř ĎĹAZÁkĂqaíG}tďŢ˝űôéŇ=š§f—†€!`†€!Ż€Ě ş`Á‚gžy†`şĺË—Ż\ą2™ĚŕŰ«Ĺ) „ŐS{—ß9¶˘¤BKt;@‚Bô––č¶¶ ™ÁgG®d‡ž;ĘĐ ^› Tę{pŢ4¦M›6?ţńŹĺŃ#>JĽ{3fĚŔąeËh dŹ$FčĄ)™˛!`†@ŃAŔbëŠÎ»¶'ÍďŔáŕs°˝»îş‹­ZĽu\&pMH$®®¦M›’XA˘(y¸ęXîeÚA áîFoyďRlJ#¨Ň%(wBţâˇĂOGb9żPŇ‚únhGfpŐQĂ·\Ž˘ú©e†Ö0 CŔ(Ę4hPQ~~{vCŕĐ"ŕuOŢxăŤaÆQ™D _B”D6##^Űşuk2)2Ăs%yHä“ňE“ĘŢe´»(DoE% ĘÜ‚łBRń6˛ŐĚçĚ>îńI0sř•ďČŻ!ť„CoqŘĄź/ťžI CŔ0 C ‡°pCf>řŕáß}¨şËąR¬é fť»Šü€cŽ92đ\uô A#Á”»ĺ){—Ń•$(sË‘řI`&8ď`,lÄFí űq 2CI Š„ŕ¸ÄYÔ7ˇ!`†@ŃDŔęÖÍ÷nOť/€®ÁŐ6mÚ4iҤÇśśPx[śŁŠĂäřI‡źŽŇH /L…„Ť\y`§é.łŞď†ŔB°c–,{ĘüJ Ŕź]0—„ˇqŐMť:•íëąsçjGEjJŔĐ€+ËcZĂ0 CŔ0¬Ë„ÔQÇ#ěĚęLx]™a±†Ěŕ™jŐŞ~:r`ńÓyó Ň OGD–”ťşä™ˇÜ®:Č nGę™0 Ń…qdČî,éóćÍCźÓ'\őađ‘GóŮ. CŔ0Šá_ÝE {XCŕP!Ŕ¶ó믿ţâ‹/Ž9Ň‘ądĆŮ A˘ęN>ůdśS;™v°WPH— <( *ŁGpF‚Â8Ëî‰`üś­1bÄ2J‚Őšť™ űŘ:tčÖ­Ű 7Ü€ű’r׆€!`†€!×ŕrš5kÖźţô§O>ů„1Öý¸ĄßÍ„Ĺ>Ăą¨oŐv̡AŁä™‘áŘY\łfÍ»ďľ ™ :ěä˝06_A㬳κöÚk9}"ęľek†€!`Ě[Wt޵=i>B€ Ő×^{íŃGĺÄ4G–09sÄÓQŐ·{¶p8Řm”zb!(t–Ł·˘’8Mm™^q×uOÇÖÔĆťś yx-±ŰĚAr7nä 9Ż‹\:‡[ôP˙óÎ;Ź„ŠŮqÔ¬(XĂ0 CŔ0ňVę·ß~›xş… rŔqd ٰ^C` 3ń –…»p“¶!3`™ˇ,/ńßĹQ/Ŕ!¤Ž,ZR  1ýű÷?ńÄy¤vË0 C p#`uë ÷űµ§Ë_@ÝpĎqŢ+ě–Ú.Ó¦MŁX ů# ł¬[·nŁFŤăÔW¶[ńCé¨:Ż#¬N>Ţ­čĄhŇŢő$ž˛»D'®Żč{v‚—ž2g…Ó7G~+O »…ď‚^ć†]1;¶÷)šóĹ_T«V Žką$A´Mh†€!`äBŕ9ě2óŃGM™2W]\Ť67)˘$PÄ2ăŠWä2#”&ЉÇO˘ Zâ)s Éđá$ @]ĚđŃ]ˇTć%É€­J6hqhŇťŽQ}“†€!`z,k¬Đżb{Ŕ|ńbÔZv%ę>üîCU— ]sÓ…ĹBѨ:ܬY3  tďŢş¦źD¨[ĐĄ5][ôąLî’UM­źl\k¦śĘ5żű@^yv\r›7oĆg÷{€~NÔĹĘ1śVA">»J•*%ü˘dCŔ0 CŔC€µŰ-Çxčś«?]B‰:–rN‚bŁ‘`:ŠĚöíŰ×ËńbĚ d>˘Ź$ąKúšÎ¸ÖO6®5“瀔ŹúîťÔqé2âČ űŽłgĎ&V2Æ%uýHŔÓgdĆ˝&űk†@‘BŔ2a‹Ô붇=dŕ§›>}:U]&NśŰ?]2ĂŁŞ Qu?ýéOáx¸íĽyÇőÍ’<Ź”ăĚňÁ[AaTź‰$ü< µ‡†w ć·ţM>×_=Hjbí)ŰĄ!`†€!`¤‰cśĹÚ ™a˙Ś‚ň 30á‡Ńi›Ä0 C 0!ŕgئgłg1 đ-r]9>‚śM¶ ź|ňIĽEÉůdnâ{jҤ Ő—ńÖéŠÂAö¦™"mŃ‘FÜ뎹«ĚbÄÍńëĚŮd&1.ŔŐaăšKî —X ž‘żŮÝş†€!`… |F¤dRśî“O>ÉĐHŢw„şŹÉN|ZµjE•:\uŮ^Réč}r[m?‡Ćµ)ÝΆYş›ű¸Ř:$L&.9öBä#´2SĄJ4é«óŽł1ëb†€!°Řş|řRlJ ¸\vÚ´iPŰ|JŔP¨„:ÜI|đ:餓Ž;î8ްálň8čć é•G%b?îVPGŚĆÉă,Gç§”“ŞĂçÓO?]´h‘+ţTc1Č÷ęŐ‹·@b,9;0Ý`,€LɆ€!`†@aE2ĂşÉů¤oľů&d†ü€4ÉL˙ţý)QÇdô¬Ňŕ‚jPĆ)ÇÉłd$W”Ý—Ä3ĺ]:ťŕś©™a÷— ;¶!y5q}!33˛é{饗Bfx PJH¦·FŢ!@Mę˙űߤtÄ˝ťĽ:Ů2ß ~e\}őŐ|’5í®!`äĚ[—˙ß‘Í0˙"µeçůÎ;ď$žŽ´ö9“×l(y"íÚµ#ű•Ř.< r ™|2ańŮ]yĺ•™:™|ň¨Á;úÓźţ4hĐ <˛źsłĚíŽ;î_97h Cŕ `gÂŘmĐŹn I“&Q+mÄ)2aŮ˙Lx*¶ą¨0Ň»wď-ZŐĹ%®˘8ş¦íČB«•EfP®…Úšn‹­,Â\±4˘‡CAF¤!·¤ś°ŠŽX@CĹGőĺZµj±íÉĎŹ3fWŤv¤;ÎVb8í+)ÉśÎvŮe—UŻ^ťÔ=®µ CŔ0 B‰‘A+V¬xýő×?ţřcČ ůě;&<)t¤ľžxâ‰Í›7§önQ&3 $<„¶P!3ú®©(Ťp—|†ŇĆőęŐëÜą3 ^M´ĐŁŕlĺĹáf˝˙ţű©¬B¨#d¦nÝşFf<ŘsĺŔůŔ*Ý~půZÇTjŘ%W,ç–‘­Ë&m_;Ës‡'×}ťr˸Ů1 Ś€yë2ŕ6\GVDĐÁtśFŠ·ŽťO—t÷`đ-­Tu?é-héĹj*mi@¤ť˝FЬ3•Căq–shÖÍ-'Ćé‹?´téŇԽƅJŚUxŕ¸4˘2[|yśá»ő»Ç«ń „°G\«¶5…Ë$†€!`…–?Î4ŔĹĂ 8zôhwitgKę™a}ÄD‰:Č ůrW7˘+xž†Îˇýč„Ýărł8C™qfăĆŤ¸`âNÓ‚ĚP‚ )…̰II;^“‘ýĺĚy›o?p›ş˙XpŐ59ţ†ś›ÍE ‹†ß·Žé±!ͤ|âľáą8¨™2 ĂůdY’"ŔSÇ-ëZGŻŞZYäAˇ7bö,k#2śÍ:ˇč§3˝ ˛—»nhďŇ2ĂĄGŹ-[¶tç~¸Mb×WlşKŢ,;ŹăÇŹ'2Ó¬Yłk®ąźdĆ|v«l·yűü—iÄŤs̶ټčč&‰eľ`î“˝QfŻŘş~ŰžhßĹŽhP˝lÝŞeŢ‹Ţ-:’¦¬™˛xÓ˛ ;—oÜY±l‰F5Ę·nPń'=”:2©|ä¶]_˝;yőüŐ_Î[ý冭{Ő,׼nĹÖő+ťŘľVĎ­;żšşdł´FĹR­ęW*:đÚ“‚€yëěk`¤‹)“C† yë­·Řfź3Ú:‹Mľű0Â^4|Ë Y2eĽ”ś/ď”™3®ç B7C}+}e=gě8#AˇEߊ*ë95×Q˙ŤNĎIřK,Ŕ€HU¦Z3iËÄŮ‘0˘űJ›Ęk}çťwP{ńĹůË_ňîjÔ¨Ík†€!`Č ŰW÷Ýwd†¨s\<ŢRë=Áć‹8묳¨! btív˝‚ň ý <(ŚS–A˝GHiDë§TfŃĎą˛r“םqOÁ ŮúĄP ą±]ştůđĂ©dÇI şŻ´éîČĚG}ôĆo\{íµäĆi‰±Q¶`ëśÝ¤nŕ°Ë¶ťĐ‘é1IľN>đŔożý6ˇy—_~9ÇjYŇ€†:«mŢ—‹­Cć˙Ř:&Éw†Ođk–ŐgęőÍľ˙ŚXňć„•ă˙zbťŞe‚:ą%|řý÷ż3ĎYu× žK+·FIÓÎâµŰĎřËČí»ż ęŻÝ˛űş'?Ű÷ż˙ý¬c­°oß˙νg̰Ď÷{ô‚Üv}o~÷EmŻ:éč ‚ ‹ öűłľt{ät`ŤěHRđÝŚ5ŠŞ.°"„qýµ…݇đňP«Žz̬‘š™ĹőM)×ěÍ)çĘę5›‹Ć1µH¦Í«)W®4—˝eśwěHău%÷‡:/Qä™!9Î .Dź4”}áG§­Ń] ˘˝Lb†€!`äCđ/WÎf|Ƒ־_#3ŮÄ™©S§]îąrľ‚GY–óČlnÍ;Ńiç|ÎAłÉsfĽJ˛+ Ą’X(Š;ńŔőŐťĂnóćÍca5Pę„XśťF)ý6/Ýyë J&,˙™3á\ů®& ´uç׿|lňß÷NĐ)d·®~l’vŐZئaĄ%ëw,Y—ąrĂ3S;4®Ň¶af ŢFĎUGlÝ*eć®Ú¶ńű°AŢÖm/LďŮň¨c,ăµ}i˛ű8ć­Ë.rÖŻP#b%Ƨó /°MHd/îˇáOl^á§ëÖ­|ri˘éžűËz –US(;Aˇ'ăş!<ĺ <(ÔÖt;N9Y®D[óÚÎVN6Kw­´†#˘& „d¶ @. Ĺě8aŤź.P™ !ľZ~áLś8‘’1żúŐŻčE|X^˘7®]†€!`ů çY Eŕ•W^6l _r‰:ćďČ ą“¸„(á=‘,ĐÁEeQ•W ikągÜ]ŠO9( fĆ)§”§śłךqfĘŢśĄ/ mÓµ˛Ůľ}{’(QGˇŢ,¬5ŽĚŕ­ăsÝu×AfN?ýôSN9…ídvČ›€]ţ›rż‚h{ˇL2˝u:żÍŹ:×áqľţf߸y ©3gŁ{şOf­_żuwŤJĄ n…é›¶yűމ 6ą'­^ˇä«7׾QwąxÝösţ6·—ß|ű?ŞÚ‰·îłE›î|u–ŕÓˇQĺg~ÝÚN2vΆ‹řtÓöý©ľtĽň‘‰#ď<ˇDqűą!€݆yëŠî»·'O@`úôéDŇ=ňČ#$¸,Wvpâŕ¤ŁŞ yŻxs4»rK”#XhJ¶^şD•µf:–µN µ1®5ă”E®•Ĺ‚6+š4ř~:ʢ§, űM«Źč»á¸ä5<ŞTËĆ!űÁĚ™3š«zh˘Ď‡ÎËó–Ź?ţř«ŻľşAĽĺ¨ľI CŔ0 ü{ŤJp÷ÝwăĐa-cĄK&3BÚ¦MČ ëŢ–KAý8ŢĄ»%‹,—˘˘”…qĘZ.Ăi!í¨\KrEYĎYF ˝á‚ĘŢôĽKş¸Źł/w!3”±ăřמ={RĚ2ĂÖň÷ş™˙ëôyűz?,dźťDMfj[+äăvÉ˙)ĹŰ8Hwd’nÎą2*dŤk–w¦8áâ>ŤşÜřˇóL!śżz»öÖQmíéá‹gŻÜJcď×űš×©Đ˛~ĹłşŐ;ˇm-o2»żú†,×Qł6`ŠăjV.Ýđ¨˛ÔpV·şGßVì[‡O_7yŃ’G-9k=ÖÄŰĹ!?^‹Öî {ßÖ5®űQłż˝1gËŽŻĐŻ_˝ěoNkNă­‰«FÍ^OĎݵ?ޟżpÍö_źÖěçÇ7qňŤŰö<ňÁ‚˶Î^ą­\éâWéШĘŔăT,s Ś5ëś&ĎéQ_\u\‚Ď_~Únŕ˝cťÂ¤…_&6żÝwŕ˙N[7¨ôŃ ~îéśÁtĂ˙ÔżË ~ýíţĐY+¶ýçăĹW h*Ý­Qd0o]‘}őöŕH –Šx:REV®\ ÍĹUĐű^Ä[ÄjqŢkFFFíÚµ)Ŕ̦´ăRÂŘh°R Ár—ßČü_ŃGY¤"D”kˇôňbD+‹0β'÷lşË¨-Ńâäiš5g'áAô@Z-:aňa+T¨€ÓíśsÎY´hAvü!©DĆŇ 8.5bř2l2kÖ,~ÉěLčôş‹µ CŔ0 C‚a5,gĎ?˙<®:”`ŤĂU]en,d%Á˘Ć^uZ]‰:·şé5 ŢĄX†(čáDZP®…bĘk­,Â8˞ܳé.ŁF´Äł o除iYʍ»{f˝Kϸľ í„‹’­|Ćgŕ¶[˝z5›ÍĽ}m\şCfČ'ŕËŔiĐŢ8;—^A!<;4VPJn,|aüMÖ<´we’y7O"żp–‰·nÍćĚ_L8În6t—µ*—vŢşI ľ8˙źăä܆U›vŤť»ńă™ë©.·nëţm dsŢş ľxjřbgŞEÝŠ$«şöŽď+ĐqT+%ç\ŚŰţ[[c2/ŹYν~K/FDV®T¦˙äÓů_ěŘóuąRÎänźÖGýűŞÎűűvv_Nźéąűý9­´«Î)stĆů˝<űÉRw©}‚Nb‹&™ß¶˘ůüöÔ†€CjKQ>DŐąŞ.ře˘ÜI =IŇtU—äEŃ,Mł=ąKú/Č3›[–ŁfÝ”reÚÓ8f8=m^"Ţ:8.r>\ÂVńĘá´Ťn™"ˇ౤ńK†J1Ä ŔŚ© CÇô_“i†€!`y„Ľ…E g Ą ÇUÇÖ#˝öéˇYż¨ÇJ!3ň¨öŔ‚HT qúş/릾Ś.˛únúmĎ,Ó™LJűQł®K®ÇTÔ~ŢYö0ah^"{Ćxî ¦|hú$3Ě źťć•ě>Ň+%ŚEY!·^č!ÁÉGż˘9śÉ®˝ßčx7ů˙G/Ĺágüˇ÷jwĎĎ: đÍ·ű~zßxíŞÓ˝¦/ŰzýSSžĽ¶›FŰś{ú_Fíţ*Ó3čtĆÍ oŔ‹…pŐ‰„ ľ‹îŹ#V$Ň Îîř;FW·j™Ö +ń°NëóĄ[ÚţćýłşÖ#šŻ{ójUĘ•,}dń zeHG×XůĹNyĚŞĺKžŇqBqôóÓŢâ­›·ę˨‚IŠ ö˙ËEđĄŰ# w€$‚ &PŰĺË/żLđÓąÎxy8`«k×®¤Fęő[Ö ľZÇ źVËÚHP4‹0N9Ą\O#ٸ§™lŮSZ ZY„tIGžl™»p\>ĽÍĎ>űlÄxâpĚ{áłăëÁÁś8c÷ď˙;‰$8ě‚Ę&4 CŔ0&Ä€ł >ü‰'žpdFŻ’Ń™îŠ{N‚ĚhgŤ¬łş»±ŁĺQłHâ”ň 0h6«–µ~Ę9Ç)ÇMĎÉÓ1+–µr˛YşđŃúNâýŐFŘJäĂňäÉ“‡ŠKŽ0:Oß]BfpęQíŽäYbńn»í6|µ_*›ĐC€—’ň˝x]ÉežÎ“mŹ]´cO桨­ě?N´Ö?˙7ł:[§&U.?ˇIÉĹ^˙tĹ;“W;ž±řŞ“š6©UţłE›ç­>ŕ“:®eő»/jO¬™ŞW<2q×ŢýŢ·¦®Áه#ěĺßőüÉ.ť’X3Ž*×6c˙é7˙zwľ¸ęJ;b@űšÍjW °?šSŽű+N9bĺŕCŤx@qŐ‘ş{~݆;výü¨eśńĘ]BöČí˝ăĽÖDŇő=¦C8ËÄô=1l˙¸lQ·Â±-ŞhW‹úżMíÖlP=öW9ĽÎ&çŻţ’NjKŠÄEóÖÍ÷nO}Ľrl;súç˝÷Ţ;wî\âévěŘ‘ěŞÚvîÜů´ÓNá˛ÁţżcYżB­,š /#KF˘ĘQ‰ŚwKäzz"¤»–‹5i$hĘ-± ’¨Ůč­¨Ä šR.ĂÉ$Ł g„7K>HÓ¦M ±${¨â˘Ę„ţ˛eÍé>őÔS©U3‰!`†€!pp€·@`p»<üđĂ ,`Ď)ĺľ#±ä”<;á„§#W]p= y(‘§żČ:(´~ĐŃwĘZ"BgMßʆeg$ř7Ąe™IúštIGY,k}ýtČgśWÉśç ˇť4id&¸‰A 'ŕŢĺ85 ¸đ fMh8ţďĹé2‡öW_ďĂuĄa©Vˇ$Ž*$/Ť^ľćű´Öv•?¸ŁŻKů¤ĆÜ/šđęřčPľŤÓQş˘óôe™µ’ŋկ^¦B™§u®ű«S·’ĘęěsXj˝jeůG«xëz4ŻŽqđgáAsšüýű%í/;ľ1Ťßźłď‚ŽúůZąlÜţ“c.ę“AĄ<îX'áxś1öî.]÷Ś®őzŢ:Ôueěň˙;÷ţC{ęWݵ[¬N€u sW}Éż'‡->şvůÎlq^φNľuGfuě:Uc˝uT,^ěpN™ .ČÍ;öV«`e˛„E÷ŻyëŠî»/âOM˲˙LžÔ–8©M›6%d‹»ŽÚŚŚ hµ](îM–’W‰& Q–Fôí~‚ŽôĘž2ÝSË)§-šY2›wĘn łâ!“Đ\JÚqE|pŰ‘0ő޲) P|pŘ‘=Ô±cGľ ľ5 CŔ0 †~:N 8K[M™ä*u>-Z´ŕ¨%ŞÔQŐAGŐąiËZ™UVŕ:Ň‹F°oú–™Iö”éZż±¬ç×K”SZÖšYRŽZć¬-Łě]Ššk82ĂŽ2á˙ÄNBfřJD7 !3 ˛ă-˛¨Éką’v©ŔqĆ?-‘ö=—vpßə˷ŠđW§6ÓŐŮ~{F ç­CÁ©ą2pNřŚuŤŻ|»sÓ*xâřwă™-Ą¶ťŚ6pîÜ{`gťŔ4çŞCŤľ·ź{L˛·îgýÝxVK±ąxíţ\݇#Ä]¤Bé_îŢďnc8Şďq诟Üyüc-zmü ‚ŕtS˙ł`Íö+™DÎďĹ}!®RţŔ ´·gJéf69bÂąęq`3ľËĚ{Ö*Ş·®¨ľů"üܰ“˝{÷˛ĺČ©Ô`ž9s&áu8eâ¨Ë[ĐPź† BmÝŽĄĆ/®Łč$“*Qَ5µÜ1łč@Z?zW[H_Óőýdłž˛‘v°o–,cÄéMyĂeϲas0Wľ!pÜ*UŞđ=qatě?‹ 4ů ÄŐK`&Ëâ˝Ő Ö6 CŔ0ňçjĚŕ§{őŐW?˙üs–¤2ĂdŘbÄ™aëqŔ€ě>zg °´%ĚYYtŇŃÔúÚl´ŻÖŚŢŐ}ie4a>n& b$Ks–gLDz(ËXôrß ( Ż›ŔIľÜ…Ňxd!šŮ´FŤĚYČLtZ,[Ă"Шf9ÎL tÎÝZ°&ÓuuLýäV“[ZěĂÝą¨Ý€~Ď–Ő Ę“Ó!đUqH+˙;lnĺrG^ÖżńÍg·$‹6:¨H–nČt±5˙.¸On1:/Élą4úSSÚ4Čí•KÜ|qžľő[”ĘáŘ›ÎjÉżw~ËŞłS±C 6ząRwűíľ}D¨˝qKŻź™:qÁ&=í-;ľş÷­ąăçm|ď˙úhűžÚö]™%k*”ÎŚ_CŤ^%Šľ÷ëŘźx:Ţ ýĚs`˝1~x‰Kń‡‚ĂęW/{iżĆüCÎ ą˙ţ`ýś±u3–oéÝŞ>MńTrÜÄÎ=ßhp>śş†Ó-ţňÓv%Kd[׸f9o »,š·®hľ÷˘řÔY( %uuUˇDADŘsćäO<±nÝş¤Ťh“s^´Ŕ4âäÁĆ);ą÷tAĺ”BĆ;˘,’Üť°{F1.Ăé9$Ś(úb!Me6ś©ňC%‡čń›‡­f~ŇwÜqĽ}Şâ˘ýä“O(ŘĽjŐ*îşIş)ńĄZ˛d )H"´†!`†€!w°ŔQ† 2óĚ3ĎpDk®–­ä)QGaÖvíÚá¸)pd†GKYךtbgDôµ¦§ĚĄ÷ŃĘbÁéČ-‘‹zĘú–čkejMÚ"GO5:µ¤ş »Źä °›Ř˝{w˛ž©É[©RĄ‘#GRÉŞĂ]7gŤďô† w7ÜpČ­axśÝ­/xBď“$Ă)F˝9Qضë+9•˘N•ŇÎ×¶aĺˇúS0î˝)«GÎ\ĎŃ«˘OăÓů_Ľ1aĺOz4ĐBÝn Žeł23 ťu[vă,ÓĘ^»řphxT¦wě’ľŤpMzúîň¸VŐxgŢsŁ–şK2vĎë™9˝F5ĘýăŇS—lć §@ž,Ţ:˘ä2j”[´ö@řŢ}oĎ˝ýÜÖNaĚś ?0ţ«oöW¶d¦gćčÚ™áxNÓţM2żEóůí©‹ĐH-;ŤcĆŚˇŞ ¤$ąŞ t ä†ÔW*őBwִؔI㦩’–ŰŮSv¦č7śĺ=źl(»îÉöĺéPFÓ»Ô ť|÷ŕ(ănŁÄ‘tÄÓ‘ÂoŢ5Żľyó未Ć^4}ÜéĺĘ•cç™#˝‰ŞÉöµ'´KCŔ0 C ×`Ĺa©b‰°nN±§ô&a]fĺr+E<222Ř:ňČ#ăôeQŽSĐŹ“eú& ‘Ëz†Ń¶XćVÂ\GQÖł öÍ,™Í]eçncÓŃQ˙!3Ôô€Éđ!A¤zőę\Âi«V­ ­ĺČ`÷ňO.Ľ”n_Ń·†!D@űŢřtE·fŐDíÍ +ĄíÔűháęďN«ŕ?"| ¸lÓ—{IAýÇ9r€Ă´%[Ľu52˝sV~9yá¦ÎM«şQÜ!­2bĘFÓÚĺE§|éâ?ę\G.ŻÝľăűęxĄJ«X¶„dłţgÄbí­s]*•ÍŚň“ö‰ík‰·îźoĎ;ĄSęߡ_¦dql:ǢÔŕ㬠ÎŇ• XŁ(#`Ţş˘üö‹ÄłĂ<ŕ˛#6ę˝÷ŢŁ’®«ł¤\ ‚R‹§¦wďŢ4¤ŞK~ dzúýÇSęh#Z?Y9}M±Ż»08ŠhďJ_×Čž2}ńÓQɧíŇĄKqănÝş•h"(qŃrÄG‹‹Öpˇ7ř®ç­c†Xŕ ćÍĘ. CŔ0 \D2Cí¬Yłfýç?˙aß÷ kźŕ(,ޏęj×®Ťk†uüeEsš˛nr×]l摲6+cąůp+:+­˝«-¤ŻézeI_+ëASĺŕ]Ý]Ď$e±LGČ ¨iŃ|7ŘŤ†“82‡ŽŔ:Č .ZGeá´|8ËóÖ1(Ś ËtFŹÎÜ$†€ pj§:s˙ą±|žůdI÷ćŐ]I»ĎmşóżłśśżÎ6rÖú÷§¬qÂ&µĘ]Ô§QŐ % ß[łe÷ź^™éä$J/ilŘz x\ąR%ş7«F·(Q÷ÓűĆqpD“Zĺ?ž±î_ďÍýtśi+ÉŞq|ŰZ}[× ăđéëλgŚ;üˇD±#–>~gPA†ľúŃIÔ×kP˝,˙gĽzó®G>X8bĆ:§@áĽţ­TÇĂůţg«]a;Š÷ťqר›ÎnyZç:­ęUüŰĹíŻzt’ؤńł~Ť×ĘôĘ­µ şQŤöÎđ„vY0o]!x‰ö±ŕc›‘Ô×§žzІٶ±ÚÔ8(VŚLóĎ?ź“ěŮŽö45‰ŞŇ1*×ÄBN”˝zf–]7™¸9h;Áikaś‘ke7zôoPY„čk#" ă”=9¬”z.¸qçĎźŹź®ZµjÄÓőéÓ§eË–Ľzâ颓ŚJ,™ďUô–I CŔ0 \A€…† nĚsĎ=G08k–^ţ˘C°JH™i۶-~:OA÷ÍŢz´Ŕ(AyPč){3t—27O9(O_¨Ťëą!#Aą'tvĽżA "DYyP§ěÉńá‡÷2C˝N¨gs±oßľmÚ´Ág—ćőL€ďUAĽÇ±KC «´Ë¨|î±ő˙;n‰»ô_źŢúÜçDŠ­üb—:şvů‹űî÷+qö«xë®}üł!Wq®+箎ž˝A”ű}ďí*S2ó¸‰k›„KnĐŔ6Äîýéü6' úŘéŻŰşçw˙™*}łÔŕ‡ßžŢüCćŇ‹âtgŢ=Ş^µ2x W¨™FWľt ˛wĎčR÷­I«śýG/ăߑŏŔ[çUµC˙ŁS#†î‘«şśü§OÜ%‡ĚŢţÂtţąKďďć{©ë-ŘÇ™Ľ”óó”Ýe˙65Ě[D¦  Í[WĐß Í?Ś~:Ž’>|8!uśu›„Uż—RŐĺ裏îŐ«Ž› ł&‡ĽJş»“ÉY–”ż‚Ŕ˙j;ŃŁ’„ąĺşr`şŠ+s7ĺÉO|vŹwîÜ ©ĺě<OGôŐ|HÁ[GB¶ łt “Ôó >” CŔ0 ě!™ůŕ† F=2Č ô&yŃÁY§†’»V´č ˛tj;"D?Ą<łu’äő„Ń*§/Ô´ĺ …ěMŘőăq–äÄZ:2ź!žŽ/ĺa2ęÚ­[7Č —ş{Ü<µ\棅Ö6˛ŠN´˶Î[} ď„p0mˇjů’]ŃŮůˇ®:±)ٲS—lq D±iMÚ'w¨Ý»ŐQNŘżMÍżĽ6۵qZńoůĆxëş]íŽóZ˙ůż3˝8cbÍ$ťÖ3wyóŮ­Ă´ĄćŁ=ŚtéظĘ_/nçú>rUgŇZu•= Ďyf;5©r˙Ď;j!ŢÉż]Ňţ/Îŕ -ʶ_˙t%ľÎ§Ő-ůHÜhG“>Ě[WřŢiQ"ҨꂟŽÚ˙xdćÍ›‰I  ě?łýµĺCÎŮŽ’-…2ÁĘš%k溲Z¦ťws`dăz> šZÍM;AYžKzĄŻŚ&żpř&°Mˇ’‰¨ęB(eŤ5H ˇ3Żž¶®˝-ĂYĂ0 CŔ8ȵ͖~:Ľu™ˇh]BY1¨ ™Ź„‡ă­kܸ1‹ZńâĹeąô&źĽzę^ÉšÍ]egMŰdÜťC–ć¬g’0 ­&P'č;é•RSĎ™˝g’pŐQĄŽ3F`5HđĚBfŘr¦4!Żž:1.ó±†! ŠË<Ą4ÍîuŞ–y×ń·<űů3/ńşŕz{ěš®µ*—vňĹŹxí¦^{sŐß@6®Ké#‹S±Nß0hÄ–ęG?xygg„˙^t}·úYt{Qc.Í™=×´vţé)ĄÓć¬Xrxůç)ă¬|÷ö>ŰwŤ Ď»e—EóÖÍ÷^ŘžúłĎ>ŁÂîcŹ=†;†ťFö5 Š>­«ęrňÉ']ĺ’5ĹŃ}E®…QN"Ę\Š~PBT•Č@q·DNOCLé†tŹjş[b…\QŽ3"r=˘žŞ´EÓ›sTNX%Ô–Íg>ś1ÂjËÎ3ÎY¶ ](%±śĐH9«„ľvË0 CŔH‚éâfß‘ŕ)âÁSşęŞT©rě±ÇBfČ-dd¸˘Ëz†qĘN®ń8M1ĺ8#"×F‚ÓMîj娜»ś+B˙Š+ŘŤf÷‘MGč+ţŮž={’"~ä”Hś› „n݉ 6ą źő×Q=šUoXŁěÔĹ›Ą·ÎéQż`=U€&lSÍSŇúĄš§30ă†@¶pEv!µxë¨ę‚«ŽĐô„Ş.p rjÖ¬IPU]¨SF&FéĚ$N?wŮŹ%W,kú1sŸ3¨‡ČłÚ "Mł¨\ »%“^Ë^4Ąń®yălAă°ă‡ Á)S_4Í5¤Ö6 CŔ0ŇG€…†˝%¦ćÎťËÖ# Gf –0ň ­b÷‘Ą-ÍÍ›Rt‘u ăzR^zCäܲg0×'ŚA=DÎ'ěf¨m¦?gF'†§­#3l:’+ŔÉ!ĽwµŞÔńęqŢ9› sëA†°[†Ŕ!AŕĆ3[ŽťłŃ•™Űµ÷Űá3üŁ*(9סQęřľC2yÔH‰€yëRBd ůč ¬eÖ¬YTuˇDmBęâć O˘®:ŞşśwŢyś–E)­¬yŚ&U" µŻ-úbŇʵĐ3(—Χ™lŮSS4¤# Q“†ÜES„ş—'ç2úIi$w-ă®ĹU·fÍütźţ9®:&@†HFFF÷îÝa·ü°IYŐ%ú&1 CŔ0rČ üt ‚ŇPS,™Ě°ĎDdćôÓOgEcRO)ĺz·"k#ş-ú)-Ó+¨¬­évPY„hFGÔ’ )×+j$*qÝăäÚ¸´ă”E®§'B7%1l•±™Ă¬[·Ž=ivĐÂč8J‚ü6I02ÄÓ„E ÎM«ľ}[ď?ľ·,§ýR׾}{ o“úš2¤N?Ř·†!`†€!»°Ń™ÁI÷öŰo;2“ŔĐ•+Wf9ĂOÇŠ†ăg kź^łâVI‘§Ż¬5Z,ĐÖ·DĆ)kąXĐBÚQyT‚=´“Č_×E+h#şŻČsE9ÎČe8=ÚNÎ×€“F(\Hę+~:¸ †J»¸ęşuëĆAéĎ2—ö1 %ťšT}çö>RÁą k6ď.]˛X˝ŞeŽ®]Zx…ňyíˇŠć­+RŻ»0<,çUQŐĺąçžŁĽ [Ž|„ú:Ű»woJ{8@™.jZ(J[!šéȵAiŤP›Ą‹Č˝Ĺš4â4E®-‹Đ™ő.ŦkÄÝ ĘBĎ \Ć)§”ëgk4ಮžËěŮł7nÜÓ%”’ˇÎť;óۆ#±ŻKłJť6ëÚnиˇŁú&1 CŔ0€˝Ś9ňůçźź3g~’“—Ř %ę8 2CÝŐtŽőT[!sKG|„ ‘ îqňô-‹‘¸ 3„Ü’†¶ź0‡č­¨D›ňÚqĘ)ĺÁyb2Ă—K’6lŘ@ %‰®Í›7‡ĚpÚ/<Öí;zÓHóŇ 7tšFLÍČźp‚Ş˘š?_ŤÍ*'·.'čY߇܂P)JÔM›6m„ cÇŽĄČKňipY¶I{l۶m‹-śłFsÍĄô“h-OłťGfÝčßxŃ`ÚÁ9ç˘ŮŻżűŔn)ŔLÂ9°ç÷ ő\xďÔ($!ąŞKÎ'“ćwĂÔ CŔ0Š8ÄÓ­\ąrůňĺŁFŤ‚ĚP˘.™ĚP 2CĆ+qâ$ŔR°Ś˝lY@Ö:ŮŔ<ŹĚĘL˘ös8ag9jÖÉóČx.šĺk@N4n\ »Ź|0ÇňŢ™Iąĺś+ó‘wd CŔ0 C‹€yë-ţ6zj`ě4âŞĂOwçťwΛ7Ďm6Ćő„¨ąŞ.xjŘîŃŁ[‘˘¬i\JN§śRžŇ2óqF´fśŮ ˛<‘×ĐF¸ĺěkapD-Ś3Q“Ęb<(”9xfőĄXđ”E´ŚÔ–ź:ä‰ŕĂĺ‹A‘sd‹PŐ…‚>ś%˘ĘjűYíbú†€!`†@‚ľwîÜIĚÔżţő/ŽĆbMTS$sÍš5ëŐ«d?ť,‹Ň@9ĺR§śRžŇ2Ł‹­,BozN®5ĺaŁŤ¨-ÉŞeéKC& 7şÓŃBéĺ ť-’8e‘ÇYć‹{ať+Q‡K—lČLëď>Úŕi ő¸iv15CŔ0 ü€€yëňĂ[°9$!Ŕ6ă°aĂŢy睡C‡¦YŐ~sĆgP˘ŽJĚ®Ş‹  )‹đ'îFĺZ‚BΕ´POCäz"Ôš´ůÄÝrň”FâşcY÷ýn¨ §ďĆy–”őĐbA ±†—ăóPŕ@ N}%ő•:Jş+D$Br<ť<‹žU˛PîZĂ0 CŔȤ».X°ŕ‘GĚP_• đdW!u¬h¤ę.«ľ›ŕRČRĘő2—se± ÍfibÁ(v´\„NÇÝ Qy‚ŃqµYmvś‘kS"LÇHPkřp©]Hf5^ 3¸h Ą¤„ d†Ú»śhďf›üWĎJ4Bąk CŔ0 |Ž€yëňů *şÓs[Đ}ôŃ+ŻĽ˛hѢիWă¶C€\¶Oź>8k(íAUJ•9eMV‚T 5‘k帱ś˛Ö”îéŹ4®í8űQ‰ë'OÓ¬g$îY'w7( N9=*Óń• ÜŇU_&<Şnóۦ^˝zTuńĽ´ Łč[‡¨<î®Ö´¶!`†€! ŘłgdfČ!jď˛l%űéčK˝ÝV­ZQ­ŚÝGČŚ[=ő·žŠ\+ëÉčvPY„hj#qrmPÚAĺ .qr±&Ť8M‘'LXt°¦Őśń¸»AyP(“Ś6D_Źë„řćđĐn «!W2ĂK§ä.™ŽĚ ŚÚL–č´¦“ÇÝŐšÖ6 txiô˛o÷íOÄ©P¦Äé]ę¦ÓĹt ,!`Ţş,ÁeĘ bč .Ë–-ŁŞËřńăńÓ‘#ણ;ĎuëÖĄDÝ1ÇC™v&s8WaWQ;9':Aă97릚wĆ=ËLIΧí™ĺ)âl"w©Żd‹PĄŽ}IâĚ_ňD8+Ť¬g˘ę˘ŻLKâŚkk†€!`9D2C 8NşŃŁGCfŘd"Ű1Ě@] 3ě8şz»řkŇŚ«Jžgt‘uú9\ óȬ›ŰÁ7žC4vpÎqfńáňő Ę’#ěIŕ[•e»‘Äg\uśŽ·Ix­qfşŘ-CŔČüç6wŐ—®oąRĹëW/+v~őÄg_»?”¤I­ňć­X¬‘‹·.Á4S9E€˙7„ŻŕŁl»Đď˝÷ &y nDş+űěF’0‚źÎۄĦćOšßĺAađÁ´& )-ŁăşhÍ e'Ś*뵑8yĐxP9(” ;;zD=C×—» /:ŇĐF‚B´ÜYöţ2:î»‡Žź=¤ľRŐ…\WŠÓµk׎ş.¸ęĽWďIyťFT’Ň)†€!`,Xě-AfČp|đÁ!3¤ľ&ŔÂ2‡cŽđpÖ˛_üâxj×ú¬G)YôeŮŠ[ÖµMiÇ)§”Ëpb*ÚpFÁ[AˇędMCŔ0 C Ś‹^Ç2±ˇb]2™aýŞ^˝úe—]F\Ë$žÎ[‰ôĄ^%ň éFĺZ‚BJËÚHP9}ˇ7ś¶,·˛4=­ś†őĆŠ^"á#F˛d™Ž˘/śďů"3fĚ !Ä!žYČ X Uę’ÉŚ¶L[dÄ”B­`mCŔČ Ĺ‹ţuŇYA9±m} ý·ÎľůvˇÉ{}饗`0“&M‚ć˛ńdLęC<U„Ôá¬ÁaG1f· íXĄŻ4˘Ď)Jëý¨\K˘E’lD[ÖšZ.¦tC+{3q·´0AYŰtí8e‘-sąÓq ­–¦eÔt/oDOÇwŞ.ě?OÇŁiÓ¦l>7jÔżP[ś¶)Ůmô‘ő r7(”ĆÝ•îÖ0 CŔ(â°`Ť3fÄ”ň€Ěp¨= Y&$?BfH}=á„řËĄ®ăáY×—H_jŢşén‰K˝x‰\ µ5Ýĺ ĎBś˛6čÚZ3Ąe­ěŤlY+‹‘ ĐÍAtĽ)ąQâ»™aÓqöěŮ.t^¦Ă9KÖ3|Ć•p12}§&)¸đĺ×˙ÜIůĚNÝóť»®D±¤ú’EŠ”ěVN0o]NĐłľą˙F%—™3gNžY~ĎőŚźŽďĺęĽő ĘáčÚ”µ CŔ0 ”Ŕ^ćĚ™C,źd2ĂrF•UĘ“Af8‹’’׬ŕ"Ë|čĹ­äľÉÓÎÓe4ÎxN&,Ź5ž+f±ďYÎ!ČäDRźq%ęŘwäíă§#ë™WĎ$‘•Śč *Ź™[%­adŮ+¶ľeJúž„9+·==|ńě•[i@ÚĽN…–ő+žŐ­Ţ mkéA‡O_7|úZ$Gqř­?n5qÁ¦Ç‡.\¸fűá‡Ö¨fął»ŐŘł!·\—,)Ë(oOZőţ”5ĚyÍ–Ý­ęUěи s8¶EuQpŤoľÝ7ř“%“nš˝b۶ť_Ő­V¦i­ —߸]Fe§đä°E[vdţ,]˛nÇýďĚ«Uąôy= đŹ7ç|óÝ)GU,uËŹ[iăiBqËłÓ\ŻÍ«÷lQýÁ÷揜µ~ýÖ=µŞ”nÓ ňoNoŢ@•Ésšź-ÚôČ xË7ě,S˛XťŞeş4­úóă7­]AOŔÚ…˙ż±ÂńTö Ľ0k×®}ôŃG§L™BÂH‚«ŽçŞQŁEĘ.ąärÜ´đMhDH-"§•G%AZčşxsłTÖÖ¤-´e˘–Ž\¬éFĐHPHŻ8ą6(í8e‘ë9Óf˙yܸqëÖ­ăëŻđÚ~ýúq ©Ż$ĂŠĺôzÝ+( u/k†€!`Ň]‰ę©§¦OźNU˛d2S®\ą:@fČ8řd† ËĘK;ťĹNôEY$îńE.ƵÄé˙:;ZY[NGž`ÖÝ#yg™Ä¸ ç„|+đáUGŤ‚ě 0ś&Ń·o_¶9őUGS$N¨GŃ:QyT˘ő­m$ Ŕ—çŃŢńŇŚŻľÉŚž˝rŰS×üőŤŮďÝŢ·e˝ĚłÝĽä¦ÁÓ\¬™ł9méţ˝0jٵ§=h`›Ĺ M^´éß.t:ĹŹ8üwçËŻŰ1ěóuŻŹ_ůÚÍÇą˙¦˛¤Śśk×?5ĺ͉+Ĺć¨Ůř‡—íŻµ»ę¤ŁEľlĂŽź?4áłE›E˛â‹]ăç}˙î˛ţŤďűyGä÷ľ5wÍćݢ€Źě/ÍhTŁśóÖ==b‰ś2ˇ˝uéC!8,Z·ý/ŻÍ’ă,VoŢÍÄžąô­ß÷ÖNĆ˙{qúż\_îţzÝÖ=SoĆÎă×t9ŻgC™Ş5 Ůůą[8žÜž"˙ ©}řá‡ŮN¨íBvΚ‹/ľŞ.DWAsŮ™tŹ ,DxrŇŽ“SąXI:ÓĐĘbÁu”[" " ÎaśrJą¶śwĘ)§ťÁtúˇ27–d‹FD¦sçÎť = š’ŻABę«¶ć w+( =vi†€!`”!{ŕ&LŔĘĹ6¤ČuŐ–UěěłĎ†ĚZ™‘ť'YwR®Čem\·SŃrWY¦gVĎSÚqĘ)ĺq"Ó !Fâ”r-”yzŤËäFGŹyóćń•ŕ’ěB)322:uęÄ×?]BękÜčY’Ç){Oa—†@8Ún™‘Á@IDATyîóŕÝÍŰż:˙ޱŁ˙rBĹ2G˘đâčĄ×=ůYPáCď/ Ôîžźu*hWťÜ>cÝóŁ–^Ô§‘H\#ĺ_?ůŮ[“Vyąüß˙»ůŮĎ·îüÚąŐľţfßYwŹ^˛~GTÉÓ#7Ż[áĘ›ď& ł>ʨY\Wý{âôűOu‘†ŻŤ_ˇ]užţŐŹNn۰róş™ţSOÁ. "ć­+o­PÍyőęŐl9Ž?N_&J,`3TŢĺ´¬.]şPŢ…äGŘ­† H•´‚n‹˛Ł#Ę-­ś ćôÓWN_Ëž˛w)SÍꢖ=SŢeň¸qĘôܤ§Ś?o8앯ŃK—.ĺ—YĎěBă§# /­c·ž…ä˸q˝˛¤´`BCŔ0 "îÎ ŕČr—"­UÇ>ě…2]»vmßľ=ÉŹÔ]Ő@É:›ÎJ$Ę΂^mµMą+”Ƶĺ\TöĚĘepąË´ ň84‚2C0 7kDgĄ§™!ŚnăĆŤPNÇb’·ÁE źÓBeĺ,ý, í蹥ś`ÇnqvőÍťŻÎ:4Ş|f×z[w~…ëÍ…Ú-۰Ó9=ęŁůç˙fjvjRĺňš”,QěőOWĽ3yµł€˙몓š6©U^ JŁ[łjçtŻŹgęž!s7mßëäcćlŚz븕¬ź˘\‡K3ĺ"°-Gľ’0rę©§ĘsF5ĺ–khÚ”¬¬5µ‘¸^Z?NGědO9ĄŮč3ĘÁľ2Ťŕ]éë™Í’2}“őez8éBě–9 .äÔWěBă§ă‡ ¤öŘcŹ%˛4â Š)m?ˇť¦~šj Ů-CŔ0 ÂŤ+űL™iӦőĘw°çÔ§OźSN9E’S.1zŐKVÖší¸^Z?NGěrJM×Ĺé§Ł,–e,×öĺŕ]Ď—Ů›F˛qgSfâÍ/-Ďě5.Z´z»Ôń ]2C•ş† ⨅Ěp–×]ϸŁď‘Ĺ÷űłp–ý⡠¸ŔhăK"őˇ+:»Žň·uJCníUúČý–©ŃvÁ?Çą[‹Öni¤T~ěŁ ¶tůăm®ú.8îçÇ7ąŕźcßűlżK‹DÝ!W^Ü·ŃĂď/ł»¸ý%ýöÇń]ÚŻQ‹kßuC&ŔăSˇoĎW™ÇľU©ÔÉkKÇh#'P?u`·]¸,G¤á¤ĂQKU—„-h=–¶'G'îVś\›µ¶!`†€!ŕ!ŔöŇСCzčˇ ™ˇp™Źçž{.ë>;˝Ö—Č EžŇ‚7=}™%#N9Íá’•™Ř ÎAOR·E9hA iç\Y‘ kˇ7"—úź2CÉ]Č n;Ňś9H¤gĎžl=BeČ Fôpb3(twănĹÉŦ5 4 F›h^1 ‰sŐ!ą Wýߗ±kxTY$3—đ+ŃţŐ©Íś«Îőýí-ś·ÎSswů{f׺ÎUG»că*"ßµ÷iK#Ąňâu™s®Y©Ô'3×»ľ ŹĘLĚ"ÜďÜcłćnU*[Âąę¸$đ_żč4Í—îV6ţkĘ6%Kńănőݸü_YűFUÄ7·kĎw!§[Č‘g˙utť*ĄŹmqTŹćŐ˝Ş G¸ľö·!`ŢşBöB Ňă°˙üć›oRvOŤ÷˙†$‰°˙ÜŁG6$©Y檺Iěäž… ˛ÓQB)¸«Ť<(ô”eÎn×E,xĘAyPč¬˙Š~:ÓËž˛ž¶XĐBÚ"—iRGߪԑFġiřć8Dvë… ¶Ň+úhbGß ˝™¤ŁŻu¬m†€!`Ä!đî»ď~úé§Ry  nšóÎ;Ź-¨4É Ch#zyPHÇ8ypÚqĘN.cyfőô‚‚B7č­¨$8UŠ~Üô‚ň P?m±¬ĺAˇVË4(瓡~: d†J».ń™ÔW˘)ĄÚ2ĽŹŘŃň …¬ĘµMkYB`©ŞéÖ¨Ffk•ň%wF mjÁ÷î-„ÇÔ˙AÝ4Ž…-vÄá.ć‹S_u/×n^'SżJůý%đ>ÉĘü×!É­ąä髞Áő[wsľ„92BÚ4~ԹΏ«Ł%YjgЦµĘË1¸ŚXĄ\ NËĺ¨Y™'QüwÜrţ!!Ař® ŰvjRUîZŁp `ŢşÂń ŢSđ˙§Ö}üńǸęŘ~ô€H Őń×ŐßuÔ$Ž ¸ľq¤Ęłśľ˛6¨Ťäâ4ôd’ÍjMÚ ĘŢ´4őCIŻtôE9y&Ţśµ2Ł8?ÝÖ­[ᵤľrü+_-©ęBö+ĐüĽŃ“”v:“Ěž˛ë•%ű25 CŔ0Š ”q \EëhxŹŤáôO!3Üe}IąÄä|‘ŐÓĐÖDžĄ9¸iKß`CŹ’Ň8ś~‚¦6čFLP–)IŻ,)Ó=ĄľXÖĘô"&Cş+~:ľě;îÚµ‹uî4 Ţ~Ť5J•*Ą»Ëlµ)- ¶SÎ0Ú+]˘FLR”XżuŹ<~Ő %ĄmH&&·$Ď©á˘*ÜŽ=űë‘…úíľ}ĹŽ8p2¬S(_& îdĺť{żá, g6áď×ßţoý¶t-ÁNđV¶ˇ(_şDĐ ^zó}˙űßďĚçIµśö„ů_śđ‡Ź˙{cĎÚŐňnŮeF ˙yčç´Éç7pÖŔoŘ‹ćo”OP‰?©%P|ĐŃjÂ{´0îťr:šXË´]D†VĐíčL¤WśYÝ%•µ)=D®O2V2RŐ?ÝYi„OV®\ąiÓ¦dżâ¨ŤóÓyŹŕ]&Ź›¬śÜ×ÝMÖńěŰĄ!`†@ˇG€Ť ŞI“&±˘E×Č Ë™; Ô…V±Pjµ4×Mcö”é«GôLą»b9¨ěşČßô•Ó×ÄxJe­@[J2Cݎ;¦TÖ3IVć.T–ÔW^=N:—"ŔXDŐqÚ/Ů!xi˝DĽ‰Ĺ]&Źëőň”˝Ë r˛Ž×Ĺ.‹2ä]ĘăŻüb§¤©âqG^ÉâĹpäQŐN2@WoÚ]ŻZfVć¶]_9W¦ČÜô\ub?WĺJ• ¦ž«:W¶dńÇŻé4[ŁR©Še2]c+7H‰uʤšrR„kW«PRgő­yÂ<…˘x±#n>»ŐĎŹoüö¤Őś›1nîFíÄ‘wółÓĚ[网‚~iŢş‚ţ ęüIŕXŇF‚E^fÎś »Ĺ•Ó»woxŹă¸ÎgçX¨F„i!úN9(änś\nÉXn踿ΎVÖ–ň űAyP§ěÉsN/(¤{˛\Ď-YM¶ yłD"P“›řJ^.Ő—;wîLö+QuÉ~:o y®¨<*qĘqr1ĄYRÖ­m†€!P€ĂŚ;–ĺ ź]tÉ€ĚPĹŚş˝zőbGŠł’Ŕ$}2rpń 㔵<:CîzgÜÓ”ň Đ™•[A "DY4iÇÉ˝©şË rP`YôÓ™ʨńZ!±T^^¶ld!d?Ő<Úµk—˝x:=şw:_w'_§gpŰqDZăIŽdĹ–ABH !1 ‰y,†*jžî­÷;w‹ísöľuU±ŽńaťuÖ^{í˙)±˙µöô­­ÇY•©ŹUˇ˛k¦ĘŃn›Ůxń`tŞlw_ćÁ;¦ŚŻZOÚŃÓ˙Î١կ(ŮŇ®´”˙˘ĘŹ4w´w÷ëÔ¶÷}v“®6}ĺĽ'í«nGŠC§Űţćů#˙ýż0›Üu¤ĺk/ĺřZŃÓF·-˘´űMŤ€eënęĎwĎŘď}ď{¬q¶ö`$ cMÁÉ“'«d˛•ěÎKZGé”¶Ü-îľőę˝J\%őIŤÔčę5W6×Ϩ»á©sWé†ęĘ^cUbé:Q˝*UłäQ_a ť}íµ×ä˶´´Č)i+V¬X·nj«Çäą±%}ę[ @5iŤÝ‚®ěőěl†€!`0ţôÍo~“H&ŮąhŔXX‰†YW?úŃŹöďßĎA J-Y˛d„d&Ö=i'K]î+Ő{•1c7r‘µxĚŇ«÷*C~BĆĂę݆$ŽUç§ň\1ĂɰS8*űx@feäđ–ľBfŘÄŁ©© 2ăúŃhݨT‰ŕŐ{•!c×›+‡ś¸6&!î^|ő̇Ď?sđýwĎbzÝÉ‹]ćś»ş>—ăŐ˙řö>ńóĺM‡×/ťÂi°<îxűâýú›ęź-áT#aĺÜń¬ Ĺ9Í~ůO_ůâ'׳2—érżú…íĎě<-•˛žôż|l–{r‡c°xöÓµóO~ĺö×űć֚ޛĐPµdÖŐ,¤”mvV{›0vPüß˙tP*ýŢŽSŹ­ś^SUÎaŁŔżńh{w4$ěz7!`ŮşwÓ׼™ÚBâ†ăícě–466Ţu×] AC€š››Oś8ńĘ+Ż0kţüůp\™gů€ qůа¤DŤ ·$¤<ĆęĐ…>Ź˝šIÁB,)R¸±Ćň¬IČR Dp ć/âZRcľ2żĎđËĚ;ďĽĂ˛« 9Y† Y'ÂęWîdîř&ViţŠFb,e ÷/–…ŰÇbłGCŔ0 w%ě¸ĘneÉíwÉ×™aňݱcÇ|Góˇ4t…ô}$tdžJéYÜ®3_S¸Ą®ö!·jű@!{5Ó‚ĂZş‘b\gµç…¸ĹŇ-5l‘1d†­ á0ĐWňt|Mňt°S( SędŹä¸ă°)¤©ŚSµ]ť_Cn„&ß:Ľ÷®™+獗%®¤´űíçfOŞ;u‰™C°ěô_oXŔĂš>ňŔÜŻżtË÷ą­żő7»+ĘKO\9wýí3˙íŁ‘ń^˙χîřÇ­ÇĺŕÔg_;3ď˙řÎňąM{Ź_îĎ ¨pôężÉĹĚ’Ňýż^’`8µöéť§8šVVŃŠň×ßżDţ !•ĺeâáµĂ->óC`ůü'îń6dě X6»‰ăk[;Ł RźíXűďż˙đň©dI‰JŞýşŰ&±Ř)oR,[w“~¸›>lřëéÓ§“Ů:ňqëׯg^V@†¸öíŰÇBŚ™{EÎNf`±„@…pxi‡üóę}•Ä.FČ’Ş)ÄRm4ÔULĐR诧q¬ŢŘc,ČŘc!Ćěę Jň­lěÂÄ:2°dĺŘĘv{ß}÷‘§ăd‰Űa‡ĹÇő4NjňŰ»oM6 CŔ0ňṯJfë8Đ\Č űšŃ’Ń;tč–ŚD’§ĚpD,62ĎNz%oߤý¬÷­†!‚ó8¬ý°Ćj€ŕzsĺXů$MZľ|9{ô>÷ÜslŢĚv0Żżţ:3łŘ „­Íd!Xę$É·’+¤OúTŤ䞬N5j“´F×X•®[dŐŹťq¬ĆdŔn1ăÂĂă+Ăh_zé%&Čῌ?óůXýJŞŽßRČşz«v®^e,¶aŤŐ )$ý'5ÉR¦1 CŔ¸e`Бò’CʬŽ2CNgĺĘ•™ť;w2‹ ćLµÉ°“…“t©±^UAU»ˇÂ•ň-Ä^‹Łt=¸žő•k,NĽ÷üž]'ZŁWéŤ!¤,Pź'`yĺŤÄ«ÔyË÷…ĂĽúę«Ě‘dč‘vUvđ€¦BfČşzÉŚë6XčURźÔÄ\%˝EĽĘdYÓ1˝őü}‚ąrűOĄáÄ€„×ß}ú~wO·Y“ęž˙Ý'ţăWvyăᓠ˧~áWďuϬ kł‘GÖq2CmäžD™Ę"쯷čż5ţć—_Űš[«-›=î/?yߊąăUóŤß|Ľ˙ý[ű¤FŃ3“ŽYu˙ďGWęż`č˙㇖?ßůÖév-+SŰús)>7ČTP謽grsŞ©¬ZÝJ†ńoţďű?󷻏;“ĹŚťěţżŹ®Ľ÷ö«;jqnj~l¸ě¦n‰s!ŔľĽŮä¬ůÂľ@[ŕFäz.\¸@’ŽťÎjGĆJÄ[ŚaŢyçť$}XKÂY˘JATpˇđ*1P˝ n)Wöx•®[ń2Ë˙Ö[ĘUş˛ŞĘ!Ż^•*¨ź¤˛qőČěęÂŚHćđ› ż®đířdlÜĂV>Đ\&QŇ şˇ[—ë }ěQ-˝zŻR‹$˝…ě“ú]»v}ň“źt]!“s\¸p!ó&bz{4 CŔx×#@Ťb »3f<őÔSŇ|Č ą’tô†ěw™şÎc6ś‡Ě˘,Ś•~'Ůű$5 ¬ľRA_%…¤MR#ĄbúŘcĚsč­Wď*]9ćÓ†Úx ŞRµO !›žůtĚ‹„Ě0úkĺŰńĹ<†‹’°ăŰÉjŹBŞ9×"^˝W™§HČ>©ççđĂţ°ş>Ćx*-…ZÇ^ŮŁ ’$jů‘`9úßýÝßýÚ׾6gý/,~â?Do?÷ű'¶~ńcűŘg>ó~ib‹!ţµá_ĺ.$xÚ~ě|ç“m‡ĎuĚ›Rç 3'Ö… vö 0Ăn߉֞ľ, ˛;ć6Ml¨Ź©žüÚţ“—Źźďš?µžő°ˇ9€‚¦aŮ7]ł Ú®ş2ľ9ŹÄÉ[ć –––4ÔT¸çކZ1FPp¸Äˇ3í»Ź\şŘŢW[UÎňd>Ęí‰-öBQ™ţćBŔćÖÝ\ßëÝ-˙îǨ­´-ĘßđŻ`. B& ˘Źá’äů;şIY?Ânľ°%–“P‡rO‹‘T—,…ä2­&ćüšŚŐs+oG𨸕Ő"pA~‡!ÇJ·?>%ż“°fŢŰŐeä‘ÇđqÇÔą[‘Ɇ€!`·t1oGŁ]*†a*˛,›{°÷]$dÂ+ zćÇV«‹™]«˝ÎGîąÝŇ:ň2lĂÂâeYĹŚFr¬BfwäŃĹj䀸ޒňXűOÖhC@ŕ?ŐůSřS śęŔŃü)ÄxLmćN©çϰU°ŃŰÝ‹'ńgXKÎťŕϰfj0FP°Ç_$OŔĐzMx7!`ŮşwÓ׼ůÚ2,ó„Ă},Śe0óĺ—_–5•›6mb€š }7lŘŔ˛J˛?:¶óérA÷•č]M>ŻŻ!˝8—·j ¨ŕ:ń*1pőâ9v×*bĆ^˝Ws¨Ź!côüĆÂ/!üÂtHćN˛E‡Kđ뼖oÄ̇§~ BÍôę˝Ę<µ„ě˝zQz_ĺ©Â^†€!`Ü  Ű;@f\dO^9V×TnŢĽ™ăbÉÖ±Ú€Ž’ä–ô§\řT·<ş0ŞĄĽr5®eLvýH‘¤FŠ„ô®CµAĐTŔR ĽJ \˝ëYeő3öę˝JuBĆč!3\,€Ělܸ‘YT,a†Ě0Ü8oŢÁ…?q±‡z6a\ľ‹1—$^‰ zŐ WeĚŘ}Ąö®±*]KdŐ«1J}”Šä®Ć®ŻŇëŮUş Ń»ń$kLjđ)—ű j{ńâĹ;v0™Žő>äé˙8gÎśG}ôđůŠ·ę+^ýJyëµOĺgä4N CŔ0  ǹdĺ,X@ŹÉî /Ľđ™ .fŰ­ZµŠa-NŚeÝ>Ý–G·ór_‰>©Ń¨ô•ëAý»Jµ UçÇl’Őą©<kězFV{7ŽĽŤęĘÄí9w+zWʱźĆ~đělČ*ŮŚ’ßGn,°„Çż'üÜňŻ˙tžűbÁ»ŻL6 bFŔ˛uĹüu,6?ôFlţ’ظXËňXV.°W#˘č™yǸ4i#,µRÁíMUIM…č˝yťx•éĹsě-ńkT*¸NĽJ \˝xŽÝcé[Ż>©Ä?Ľ:ˆ;¬~•Qh˛Ą ,`üyýúőäéä÷őś_đěUâ'¤÷V2N«÷:7Ą!`†€!pmĐ·˛˛ŇÂoűäŕ0, a·eËúV–IJë+{}ĽsÉ uI§ěöbn7Ťľ é˝»Ć^ŞÔÄŹ«Ť¸’;o‹™ĚŁżsăŽŕ/§‚@cXý:ţ|rd@Ľ%•I(°ń*óč“nóŹŠsoŤ¦ô"ŔO5?ŇüÇűs?÷s$y™.Ŕ˛ćfBŚ˝E®Ź’řŃĺw2ËhĂ)(ňďŃ^ź¬CŔ ,[7¨šĎ1G€ľţD·Ä>/p)Ö`2Ę’ŘsçÎ=ýôÓtTĐÜ÷˝ď}$őô(zЧqű-—ĺ «żĆn€č>zĂó*)Ô'5ú‘BŻDďĆ ž9" ¨ÉÓ±f¤­­ "˔ƇzĎ?(‚ú!ćGß&őIMZ؇śäyĺ-âUjđ&†€!`׌ý,d†‹Ł´Řé•s´ŰµmŰ6zXŽŐ‚Őlßľý˝ď}/3ÖYL«%Ôwcz•§[çÚĺ©Ő ë5FŔű(ţCN´:×ɨ»N4UĘú€­[·’eOŇvl‚üđĂ/^ĽĎć12ăzŔ‰{%_%5jď}U¸RüxíyĺŐ{•Ź "Ŕ*?đ^~‘˙xś¦8@ľQ8K`„D02!Y®Ŕ/kf†@Ń"`Ůş˘ý4XA°–„|ĎŚK3ĎnçÎťP.†ądDzĹl/öłs7łsýŇ˝éŁŰĹŞŢ«¤«W® bĆ^˝*Ô3‚űču®ĆĽU'ˇ]c×›+‹×ŇuËČ!ă‡ü.Ľ¬Üá× ,e'AvuA O?±[׿Ęnů•Ľők©2N«ŹąµGCŔ0 C`Śŕ÷jrC$‰ú‚·@fX4ŔÚX( «í•äbŞť,–ÉÜž:ÖŮĺďÖcĆ…{öÖ¨JŔőŻÁx•±ć¨qHHë$dňoúk@€!7UÇD61~ ľ7öaŞc/ Cpv×ĐX+bĹ€€eëŠá+X ×€/vp\éś _,Ďda&ÇŲş„ Öd"iäť«ň?·Łĺ6ć|än 2ćł°©—<]îŢVŮŐ…Qhü0 ˝dÉŕ%[*gňŠ·Q‰Ó ,&Ź©˙1uk=†€!`ô§.Ö˝’'b¸‘¬—ěĚ›Édŕ6ĽŇťyymTz®$=ą[ńóJ#d†DŚÄŕŚ…zĺŐ®ĚSŻ× ö^˝W™Çy¬uö~Ţřo“‰0,‘IŤ1«n\$Ů: ʍ‹PѸ˙™äo ˝5 bCŔ˛uĹöE,ž‘"٢—â¬;3ĂaÉ(íŢ˝{Ďž=ËBNî MĂtaŔła+s{8—yő^e¨Šq~=o5 ’U¨×F•Ř'ő®F O©eš}Ż™RµeŘ™ĄŻŚůË,E~O€$kw51·úĘ«÷*µHRŮ{ő^eҧjŇÚkA CŔ0 "@—M+;ó2Ö™yăŤ78S‹“ť¸s%ŰŘÍš5‹;6n˙î­×5p{7ŻŢ«ôşE2ÎŻç­†ˇB˛ uâÚ¨{ŻŢUbĂ@#†ĄŻ$=Ů •°°¦.r/+‹€,d}@̧†ęŐ{•Z$)„ě˝zŻ2éS5iíµ  IřŮ“ąuĽB–´ť¦ęn,ÔÄĂEx’°#6ąĐ O¶Ĺ4†€!pS 0ĚoÚ7E,HC ‰}ëDč¨Y"CÇ’XĄá¸¬%×2k]2MĽu»±d6*]ŻëvTJ{]·.#Ż‚Brsü2 «o¸“ą#ą ©eę"9PR˘ZéČkTW®0FnÝ*ŻO-±JíŃ0 CŔČ€tńÜ%—DźK§ĚůNôYÜé—ŮŹ‚ÎzęÔ©,€Ě¸3hĽô`äťťëväŢ´í®[UŽŠś0ď îÇ öEábÇ:pcҢ¦×ń¨•"ŚJ˝®C‘ÇČ­[Ńu¨Â­î–•ůq•˙Ö$mÇ\€_ řÉEśhnŮŹe 7ŢX¶î]đ­ q¤gâNJŽ‹é` Jł–äÍ7ßäx56+aE ›Ü­[·ŽýěHŢAsă.|Ďn‡çöĘŞ÷*ńäŐ{•#1ö…śbĐ[[!«EO÷Ę+Ż0 Í#ý=KEyä‘ °ĘŘ]Gě¶Â `´ô®O•S9OeL^{Qz_iT&†€!`ŁŽ˝snŞZČ gÜ“rzńĹ!3̰̰t€9b,& ńá)¤víî1vű5Ő{•×ÍŘŰŤ-†«cňtś<Ć–»Ű·ogn3ěĐłMĘúőëYŔXtŐ­Űd7€ŃŇ»>U9wŰrmĆ^ŞĚSŻVgB~fä"&y:6Täzꉍę¸KžNŻgV—!`Ś.–­]<Í[1"@_Ĺb†RW­ZuŕŔ `A­O?ý4|÷öŰo‡˝Á۸.ĽWSK—ô¨ĽzŻ2děę‡őě#{ŻüN ÚŃŇŇž֬~"6va>¤|Ö®]Ë|:¨-™;qî¶E«ó*óŘó*Ou{ ň¸ ˝JꓚXHöh†€!`\čÄ™IÇF,Ś…Ě0ôHOÍşď˙űŚGr8; ŞÉ˘CRbŕöwŞÄ‰WďU†Ś]ý°ž]cdď•ß ±AfŘůdÇŽ,§ OÇ»L c¬™aOřް©:·ŤniőnY• wR¸e~ç!?ZĘ„TđCČEFŚRņ-Ąj‹†@1#`Ůşbţ:ۨ!@މ1gřŮŇĄK‘Ź;FB ÇĹ&dîX-ËfvĚł‹­‰őyÉ.Ů5HľŤ5 •1eŐ~XĎjŚe!ĄÄFÝ2ÍĘŇsěęégą Űp°N„Ť]¸ł3ް[ők—<Ş7ďŰ2żqěmě1ć*ůĘ>•q˛.Ó†€!`× 0ĐČl63OuÉň'_%5I‡®&•}*c·“G€ţxŹĐŹ7 C ‰€eë’ć]])— Ň…%÷Ůeô•%,ö$yG¶Žü—‹¤žL Oë’óp#×2Ź™T1FĆ®[·-n<Ȱ[ŇsP[.cŃČpYđaů0‹…ÁŠMsBĹ]˝Wvëň¨˛pËk(2¦Î5 CŔ0 1E€žť<«b!3dŁŘ‡—ę 3äé¸čÇfc v•´”— $•ˇ^ҵ Ůh{ÇČŘu«u!Äâ2CîňđáĂ/8d0q0ĄŽi‰›<ĹÝWI9VWŇ@5…[^[‘´ţÓÚkT&†€!`Üp,[wĂ?p]€şApˇnŚKß}÷Ý›7of9 Ů:wČů)¶€aŮ,«$ÜČ(8,ăq Ąk¬zŻ’Z’zWzđ»J×ŇŐ#'/ja'ň•/Ľđ{» “Á„â/_ľśÍqX3≅¤ŻĽzŻ’"!˝zs…q*}*ă<â'äĘŤŮdCŔ0 C`¬ Ż‡Ě0–Ćă]wÝĹÖl¤¨ŘĂŽscéÍ·mŰv˙ý÷ ™‘tžĆCÁaű2—H¸ĆŞ÷*©"©w5¨ŻqHÓ󻨅ĄvÝ%e ™– ?řŕkÝ"±¨äUáJě˝Ćn®2NĄOeś?Â+7f“ CŔ0ŠËGC@!p} Ǭ±÷ż˙ýĐ\¸{634Íѱ˙üĎ˙Ěę‰5kÖŔó,X 4rŁ,ł˘ă5V%mtť¨^•މYňč}ĺU†ŚĹ'ĂÎ0{Fˇ™U‡Ě <€°S503­óé4$JŮ䫤FŠ„ô1‡Ă‡üxő…+©×kł4QhĆçaşj ŻIă¤Ć­(˙[×Ňë¦ňě:§ ß%mq·j“ CŔ0 1E€ÍěHTqb,gC1׌ş 1$łHc±2”Ä'Ľ3Ł>µ–PH]Z$iśÔ¨1Bţ·®ĺ'ť§ ,§=†€!`\g,[wť·ęŠás$ěVŻ^MŇŠĄ lřÂ6v¤ęvîÜÉB4̰»ďľűČى±p‘]:8, »n ŻqáJü¨±ĆťÁv¶¨c‡>.2w0űůóçżç=ďa@^Ρ§T¨©ô!cm]LđÚ{•y"ôľJë$d Ř CŔ0 âA@z|’qäŞčŮY ™a}č‘#G†d rÁ‚lJű裏ĆČ M ¬—ć ۆŚUďzP%·Őç7Öâd!١ŹÝ“éX#©:77ěÂő!K×[LIę“qŇóÖűĘ« ǢµGCŔ0 C Č`m,Ë{ě16á…Ělܸ‘śŁtŇ[¦ž‘ŢrwćĄEJ*T@ę15v-Uó_ďzpăQ'™ŽŽŻ'OÇ„AYŰ ™áÜ… 2Ż0˙ş×m‚WďUj‘¤˛÷ę WJE©ě˝ĆÉ€Mc†€!PüX¶®řżŃ­!$#Ć3\n7ÖXPy+9dŤŮv˛y3—ŐŁđ]ŢÂtŮ ŽË@.lX磅 kc˛x¬`*{5Fŕ”4† açÍÍÍśÇXňt¤çf.!ëeŘło춨ÓH’ iRSc>úW!¶é CŔ0 dÇëŮ]ăŃ•©ž2CöŠńEV‰’žc;Ćí„ĚŔŘĎNČ ;󎙡]n«“¸ ĎcÉ(#d†ý…Yôʢ‚'lë^ÉH2Ś*¬Ěő6¬ś?XńTĆ”Me?vĆŇŠTţc ·GCŔ0 €eën řVuŃ! LŽËrŘ-Cµ0]8®ĐD63†÷°t”tăŇšęҲŇ*}ô’$}‹ŕ¸r);¬%Ô¶§§§­­Ť-ęUÇ(tww7ÍaU/I:NÂe,Á‡jA?ln٤qR“ßŢ}“ó»ŠóĘ>i,š¤>Y‘i CŔ0 ˘E–‡!“EzŽUd»ŕ0ÜIu1†ÇR†îX˸ťÎJS~"ŤŇGoźčľU™‚^ăJjźß2C¶ńňĺËůúꫯ’§czd3oޱnÝ:ČŚË \YŞv 5D «Ţő JŠ«^•2póćÍe$`Č ”†)uä •RZPcHjäUZ˝:t…l’Ż’uĺ}U¸Ň[ť:W ccŹjo‚!`†@±!`Ůşbű"Oq!/dDš©vlAd1éáÜ%Gǒ»÷Ţ{ÉŮ1ŹqiBg¤š; ÉK’T‰Í°l)iśÔX®^ćÓ˝ů曤ę â,}…¦ł Á3źŽ]ů$T·8 ĹŇŇńśß2ä?¤Wź®2Nę“׏ČbŁ–*$-Mc†€!`?Űzä‘GŕŚABcŘĚŽ kl÷Á˝™gÇ´;š3¦d˙JBb=¬ęe>d†!RNý:uęY9Nýbł]6ŞăřWÚZĂó©_'­^ şBZ'!{×§Ę!cŻŢ«TW1ŘŁki˛!`†@q"`Ůşâü.UA¤eĘ ňž3˘Ů..ć¦!“’2UŤ…±Ś÷’c84¬™E † Wáţ±ôÚ§m~ŕÖííí,aV»ş°Ú…đ{Ö¬Yä™!ȸ: ‘Ř®Á˙°Ť źcíX{.30 CŔ0@ Uďéĺ ĂÂH)vpč 2kca2˛ł-óěHŰ10‰o%Fj,UE!ăTM“V@f‰‹ ‹vI&ršěEČ á1«Ž†HŤ×ŕX¬Ň~‘BŠÍE+ČŘů/ĽŤfi†€!0ŠX¶nÁ4WŁ@’m„XŕčÔ7śaĆ Ë ;ÖƲtÓ¦M¤ĂďE`9 #ŇdÄX+;ŮaL+$l7x·i˘w5yIÇÜ2 ť}íµ×†Ar†ÍÉÓ±H„ ÝĂ?,«E(ŞÎ«÷*ĄiyBŤ˝Jë$ds+Ź!cŻ>©LjÜZňżu-M6 CŔ0bx;·ďŽŮ_‡G IČ 9/xËË/ż|âÄ 2b˛Ô¶ŔjYČ ńHŢE$f7r·iŞw•ˇ¶±k©ĹĄ.v©Ě0ĄŽ¨¸Ă˛ČÓ566ę† w„eÉŇWo®g5đ*Ą:µVHë$dď­(děŐ'•˘Iꥮމ) CŔ0Š ËÖŐç°`üäˇ.Ďóv´#ô#Ĺ!ŽdëŘŐ±hhěرyvěÖĽ{÷nö…a™›ż°ŕTŮ$ĄRâ”;i$Ş‘0˝úüJ ˛›1Ľđ ŚB3źźl˝Ě64pqƢˇąR‹úQH’765Ákz2NĄOe| ‘K˛Š¤FŰz%v7 CŔ0ň#ęGbd Ź“)Rń@2Žó˛ ďÁd¸X1@vŚ? 3äěHęńVR Yĺ‹D”†ľV‰˝÷ööj޵Ś•r(Gľr'[™YąöRW¬FUŞ[Ő„,Ő Y$©ÉďÄkďUâ'¤ĎóĘ[ŃË=O[4rŻ-h‚!`†@ń `ŮşâůÉÂ9 „#çp9bŢ 1Ă-|‘ ąäě`;wîdŽ Ůe^›Ş¬Zµ ¦+›ăSÔTpß"‡ôÉŔ°dş««‹ÁgvŇ#uH ¬ a?ćÓ‘4„ݲ2WwuŃÄUě1F¬ş¤qĚ@óX†^…ôęS…eHOÁ<Ż’oCĆ!˝f‚!`†€!C€ľĂíÓcocŹy:šÂťÄ|ű™a3ńŮś—%KĹv·ĐΑ‡QŔsŕl`x#H.â‘䮵đJe÷•«WŔşW™IÇťŞ ŚS_eż]2†˛ăžÎősË&ť'5jźç•Ú¨2N«W‡®ÖIČ^|Ę[µQÁ­9¤Ź™ŮŁ!`†@ń `ŮşâůIć‹1â ›„Ŕą0X ý‹´$ÖH<¤ĂX”Ë$)Ćś;ÖĆž={–a¸/›Â0ÉŽ„6„ť>˘«%’MfŔ™<«EآNvuˇ^ @j-Z´xńbćÖĺ…ľę=˝”«T5Ś‘ó1r›Şifl†€!p+# {VČ"ÓdĎ>*Ȥíěŕ'0FąĂµ 6)d†©vpČ [ĹÁ(xEĚ# ;Y–h©>#[Ô1ËďäÉ“0ä X ™aS`ožî†ŔUxĄi?DžÇČmµ›™!`†ŔuFŔ˛u×p«® bt„Á^VzÂŰé…´% ź×ỉÚX\íóĐ\,Ă­\ąŠąqăF–´µµ± ŁÓ÷Üs{¬0ůľ+a’ÔîĆ r,`ŃÇ”ú(Sę)VJ›J2Vo1ÁkďUR0¤Źů”ÇqZý¨8÷:1Ą!`†€!C ÖI1ÇQň2PĚV+p$/ćD«Pň škpĹ\¶őë×wwwł 2ĂFDűĘ+ŻŔ4XIŔ478ŁŹš8Ł—[ŁűčĆ,zWC)ą¨‚Çâ*‚Ě aě“8ő2Ă$· •SéCĆę-&xí˝J †ô1źň2.P2»6çŢMi†€!PTX¶®¨>‡ăG ĄĄ…d ö2kŚW†y™ČćšşŃŐ{ĺÝą6',GĄd0]ćµ±<ÝöíŰYűü€áhhî}÷ÝÇř°Đ\©ť;ŐÁÔÝ`4Ż’ZČÓÁ¤I >˙üóś&AÎŽ3ÝŘ#XČ ˛üVFěÝâ‚@R“G2¦÷Uáʇ´ÁxkĚď\Şpďiť`*âş5Ů0 CŔđ"Ŕ<2†ôčÄٰ‚]á $§b–Ębúäc¨K*Üř?Bf\$™Č–&ďżřâ‹Ě°#•F’‘ŃAŇydĐ <äě˘1—J2+yźCR#o!3GË|:9°‹ť…Ěp oWŻ^ w’*Ä^ď®CU"xő^Ą”ňľ*\Ş1ŹsooŤ^Kń ŞÉ"IMţ0ňř—‚v7 CŔ(,[W<ßÂ"BŔeJř$QEŠ JG’küřń¬ÚĐqi·H GńSzCN ô€ů¸ĺË—ĂÂŮ˙…m_Č02nĚ錣g ; 5mäY. Ib@ŁІ;KEöîÝ Ëß·owl łä×®]KÂöŚg$V\UH66©Qă*’Ô'5!źŞ÷ń*)Ň«7B–!}*çZ‹ †€!`·8n·"Ý:ú}rvŚę]ľ|™^›Iv$ČÜľŰ-Ąş¬@•!ÁëAڇőCYl„ĚČ®pY+ů;Ä“”rHŁđO+ԿĠŹR»(!38$kIú2’Ĺ8„Ě€#˛x–|nĄ¬«q}Ćô!ă™>†ě˝zŻR]%Ż˝WIŮ^ÜĆŢƵę´z-h‚!`†@±!`Ůşbű"ŹČ;µ1ąŚ=ě¸óČB’Â×’řýŽ’–`Ä»ŔĽÉ$!›ż0b %[Çř9ÁŁgm,\1 Ď{Ęâ„ôŢ ą“ű#IÇâ~e0žC®MŻ-ş¶âĂ–;˙x۱ó?lÓĚŔ0 CŔ!Ŕč#+Xd†ĚÉ)V p…J]7˝ôž˛f ™á×â´VvČ…0hĘ+Č 6$Ú Ś·”ĄáRu$eIŁOÇ]Bf Fřő–Ž`k’ľžţžLo_¦ż'›ŕ)·R6+†‰ľ,Ż(ݍ*ŻŞ©¨®)«dŚąm sOÎ)çˇ~Š·B ‰›ź¤,ą \·n©4VŲdFŤežÝ#Ź<Âv„Ť‹4JŁÂĆ+r|´"™Á ,Ž%d†YuěÇ™Ţ&¨‡Ř[ŻŢ«ŚtCö^˝*ÉĐő÷vôu´őv¶—dúK35•Uµőu5ăę*ŞŞË+*KËHÖ•eł™ţţLf §»»«ă|ÇŸŢ`YeEM]Uý¸ĘÚ†˛ň«ż‚©s /©ŃWŢ·^eČŘőf˛!`†@Ń"pµ«(Ú-0CŔERH’ŽZ.†|—†)’łCé®Âp‹$ĺ§Ë$mMz@“Ç Äö×#›ĆŞXÖ®˛9 ÓâŘĚî©§ž’ÝjH·±˘¶JظoT-­ŕ‘2˝mŰ6’t˛E"̤ăđ ŘłnöěĆ&N\ŤČŁ˘Oĺ$•*ő @IDAT1Azí˝Ę±´)%wŃ„ěŻÁą:4Á0 CŔ ôSBčë‡cÚdFf´Nf Ô—ńŠ* Ś0äDpp.sŮĂŽhźyć™;v°ĂÝ>™“xÉ °Î{ňt'ßGc1†Ě0¨ źˇÉŕ‹3OHOqď«Â•@Ň^5ąit]]-ş/W”•“Çś9^}ÓÄ꺆šÚ(OWQQ^ZĆÉ!€^ )É’©Ěf2 Öß×ŰŰÓÝŐŰÝŮŐÖŇzéB[ëٮ澲꺪† dîÜ´ťâ ßN6B-˛T}Ěg¬ =†€!`–­+žoa‘„ † R5<’‹˝Š9†¶Çl5†¦y›täU&ÍFK#L( ´´”ŕ¸ěÍ [eŠkI^ć4ô.\C3téiÜť}ťYE+“ň[‡'LÖcő+é?ˇ0‹6ý;c˘#ç…¸µT!†•÷1•±×) CŔ0 B† “ér\&"3ězÁ]ČŚđś+JĹ4cú(ݢ„Ę(ą9dÖ®’w̰3/d6™al’·‰‚BfXúŠĄXô†%´,}Ĺ©ylż y‹5*U_•qžC~FyČsHď­Ń”†€!`†@á@?”ĚĐÝĐű+™!ÉĹ´52bL=c$Ďőę®™!{üńÇA„¨@c8­‹´d†ő­$ő›´ă~đy"ťÇú€Ç{ 2CcÝF‰ěmšW‰}Hźt›Ç8ä=›Îu·]ęąx¦®¶zÉňŐ“gĎo×TY]šFǰkggWggGwWtZ†ÁăŇRf#˛ć·ľˇ^¦jl|,&ĺń§¦qÜř©Ó§Í]ŘrîĚ©Ł‡.ž;RVÓT;a §RqžŐ› ©Śµ” †€!`ĹŚ€§ż,ćp-6C@ oĹ5!ßĺŽ Ó%gÇÄ4^Á–ˇé< …Čͨ_©;,–ńä•+W˛÷Ü /ĽpâÄ ˝>ű쳇†ű2dÍšryŚB“Ľ{â‰'0cՉμӶx#÷*)Ň«7W§Ň§2ÎaČŹ°Ę!cŻŢ«WŢW(˝z­ÝCŔ0 C 9.ÍŇ2#4†;Ý ;öÍ`Ó 8Ů.,óxuOŁBf¨7懅ĚŔ[X Ë»r`ýsĎ=Dz6î¸ďľű 3L©cţdfÆ Ë—/ç-™ykH2ř¤FŠ„ô1‡ůŤCNDĎ} §łŁůDy¶Ń’;¦Ď_\ßÄ ?¶L˙ ŔńáĂGŢ>tččQNË=séüĄöÎŽžî^Ö{d#_Ą•ĺĺŐą˝§Mź6kćŚůó,ľ}ń‚󣕯Ʉ»ŞęÚĘŞöż›4}Vóéc'ß9ĐzöťŞĆ)5M“Ý…±yZ$a‹AězŇÇŠŰŁ!`†Ŕ GŔ˛u7üXq §ĐGŽ&aGžN!Ŕ˘8}‚ÇŘä‚bÉŻ)üŠ!•“¤{)톫‘#Th.y:Ö˝ž:uŠGćÓAm™^ÇţtđÝU«V!8´ž¬M¨!j¬*č«a…‹n©•ć/{{T'IˇpK-{ E´¬ †€!`·&Éľ#©Qd 1P’8Â1†0Q 2CÎ2#ăv©xHžSůŃ8E˛„DŘäŕxäWćŮÁgXú c®Ëc™$Čä22zćÖ1ĹĚő“'6×LäüƱ·±Ç¤·FíáŹÝ—Îő¶6Oź5{îíËÇO™Q][G®Rí±äslĺŐŻîŘż˙Ŕ©“'Z/·uwuŃŢ~†Ť3Ě fÉł ÖW3w®b Cv0[Z^QUŐP_?qâř9sć._~ÇÝ÷ÜłjőJ•Ž«˘˛Şaâ”ÚƦ Sgž9rđäŃw:/ő×6M)«źżˇ‘ hŘ®2ŹśÖ>Ź+{e†€!p}°lÝőÁŮj+`9°[(p\á"ÜeŘ* S„M’ Ë1˘«”KBŻňč yѲ0–E»ś2Ŕfv0]2wěÄ 5‡Ń’Şă¬4–Ť|!Qĺ©Ë-^ ŮHФ­bXűa Ühcráe ·ŚUaʆ€!`†Ŕ22tôűtIhąČy‘­“qGXŤZĆj;2CEÉ.R"„̰d† Y!K´ :’§ŇČŮŻěŰ ™át,š Řű¬Čkć )d©úüÎ3}=mçŽWf{—Ýy÷ĚůKjŮ YËÂ*Ź=şńG_Úňňýű/]jéîéîďíe‰”ł„?%ŃI° E‘™ëž\;uę”ĆľţlW_ćĚů®=G.;qţ䉊Ţ޶uŰwżű›÷Ý˙Ŕýoxt'Ď|>–ť0eFý¸ńM“¦صµóܱÚ)łËŮ#/wŘ˝F’_ČßĆüeí­!`†@±!`Ůşbű"Oj ‹\—–U±PFř wv˛D˛„´]l’Zęš|„ŐuR8W&ZFb±gO:®µk×nܸ‘ťŮĆŽAiÖɲ 3ĂŃnŞ.ÄŔĽzŻŇ 5&{í˝J ¦Ň§2Îă<°<¦ržĘ8m$ŢđLi†€!`€Ś…Ě@`¸”Ř™a' ŇväĹ ô™Ç,Ô'R¤@2#„̰b€=éÖ¬YłuëÖlٲ2Ă#{ďBfH2j$ˇz˝zŻR]%Ż˝WIYŐswGűÉÓgÎZşö˝Ť&—9;ëń |ëk˙µ<űĂ3gN÷ôgű™F×3(dş(ŠŇŇh>‰:ţ__SqÇśqk—L®¬bń2oJzç4Ô–÷wv´UU˛Yaď™–ŽÖ–‹ĚCÜ´qÓ_iöă?ńř‡>üÓ¬†ň1ţ\][?sŃŇƦIwo;sęPŐÄYUőMîˇv¬ůiő±âöh†€!P„X¶®?Ę­„Ł@¦č"EYËp/Ţ"@aZlfGÎľ(gP\·®˘Jˇę°gVoˇąK—.eýČńăÇ™XÇ&ͬ“vňéŐ{•ˇhźĐۤ«¤FËz_®Ě‰Ö˘‚×s'^{Ż2ż“P ĚCŔ0 C@ Ëőţů!Ň:Šs1ÉorvěgÇŽiBf`8ů]]ŰŰPgG^‡ŘG™ĹlC†Ž€}DfVŮ:™ňéŐ{•ŢŞU*’ÔÇ4„ŢŰ~©óěá…KVÜvç}Őµ ÚL,Ůśäďţö«˙řőoś8q˛?Ó?ŘŰ—Íö•ńٞ’(7—Žo¨şŮŚyÓŞ+Ëskš‡^ňT[Y±xú¸{W̨Ş(ýΖŁN]ΖUdúŞŮćďÄÉ“/lzţ_ţô?ôáÍť;Ěé7eęŞoxsű;űör4m͸‰*Ë«XđRyáJńŕµWv7 CŔ(*,[WTźĂ‚B Ć$ Eäŕçc~.V¶zÁ‚ąb eä­¬%‘qiî\¬Ë€ărÇ ®„Çęňşő*•Ďyß®$Z"aëşsçÎ?Síć̙îĚ!˙…\¸ĄF[x‘Â-Ĺy*ű±3ë`I CŔ0nq’}d†Éq, e”2ĂŁ·ŻŹ‘™(Ć1ŁeeÜń Ťa’;LoĹ@f¤Ütä| ‚äěW.Łđ6Ś$8ˇź–Â-ŐCE0ëľ|±ëÜ‘;îZ7˙Ž»+ťĺşĚdŃëç˙čó;wěěíďt6µc2]9I:ćŔE5 µŚżUWQVşhfÓŁkgWWWôö°‹]¦˘RV4—ôőg.wő^hď9{ˇŁĽ¬´«Żź7%%ýŮl¦§{ ďŔÁ'>÷ÇŻlŰöď>ţń ®©­!XSßxŰťVU×xýŐŢ’lŐ¸ÉîĘ\iiÍĽc)bwCŔ0 ‹€eën,ţV{AŔkYý! @ ¦0Tá¦0$.×…<Âha0`2thd\:—ŻË0( CĂBÜbéO%‡HR,$|ć·Äţ˝wď^v{Áí]8Y‚Ôd¨T2Čeě1iź'¤‘ŹÄ9‘F(ţŢł(SIeś§R{e†€!`$€ş¤cZC†\ÉĘŃńqąö˘%÷(W—%·M˛C€Ď@f(ŤÁ§Ž>ş —C}źÔîúÖ’Ř:ÄĽlÇƦu =†JąžUŽÇŐL…a Ô!fĚc_{kOó‘•ëś»dŰĆ©1ÉĐ/ńË_úâ—›Ď7G9µţî˛l”§“ůtąŹĄř D3ëJJÉĘ dëĘJ.´vóçŽů“Şk+P˝uüŇă­'/vžoë! ć瑣ĺĐزŇANĄČöwe3}™Í›·9rô_ý«Ź}ôcť>c:ÁTVUĎ_~WYEů×¶÷ –ÔŚ›$3ě4NŻk¦×Ć”†€!`7–­»)>Ó­$+)ŘŽbÚÝÝM®Ť‹3ąHŰ1Ă.9É.˘MąŁ' ‹r‡ÚĘ 4‚x`’ťfŮĆř:í2ŞłgĎBľáµ¬Ä'qŤÝ8Cz×Fĺ±WďUâ*•>•±Ć™Ľ~ĽĘa2fÓ†€!`Š2üÔOý$„=ÝXÇ*™‡qS3`Ľ‚Ć@`„Ćp×G’w8éčč€Ě0ś ’Č$P‡c$¸}1KG9e‚ćÜu×]P É­×5.DďÚ¨śĘ‰×Ĺ»ýťí­'öŻąwĂĽĄ«Ë+‡đÇř䉓ż˙?˙©ď~Ż»·{°Ż·´ż;7ź.·îpŻpE"â#ŹŮ’ÁcÍßŘthJcÍ;gŰ.wö<Ń2m|}wďŔžc›/“§+ííÇ**ۇn°4b©eĺäěú2}|Ű̱#ÇţäOţěŘńă˙é3żĹO ¦;oÉj,ěÚŢ_^QQ¤Ń”=…BŻ’·!˝4Á0 C h°l]Ń~š[70—X¸¬1dČ(Ü”´ť0]’wťťťĚ’clY-88"J^Áh…éĘ«ĺöXa˙ŠC”™ČĆ+Z0&$=Ç F둊ŕĺ4Çe·.nE!˝kŁrČŘ«÷*q•Vď-r˘ˇĆŻ˝Wé­N˝%‹$5bśGzĄµ`†€!`n—ˇDLd†Ô dF’wBftřĐĹP(wwn¸˘ ’w őQźdÇbÂő#Ebš1z„zŐ××swý»€˘wmDNĺ!dŚ+@Ëö÷^:ľŮęµsďXŁ©şl&ËÄŔßů/żłyó–Ě@˙`_W)[ÔUDë^A;Z‹qeVť$ér÷ˇěrO_fßŃKX˛\Űťď\,/»DR¬(+Ę©w0‹Óęp4H˘Ž˙—’Ŕ¦˛’ě@¦kpp ­%óío~ô~őW˙Ď3gŕ‡đć/[3ĐßwpĎ.f÷UÔŽĂząBÍ é)•çŐŻö·!`†@Q `Ůş˘ř D!DT šRQÁť‹ś™;IŢń)ôMă™WĐbî)ŮE[ă‘”w цsřn!Áä±IK”u‰@8OëděěÓzŽOqń@ë¤.t|>Ią’9˝xń"ł &Ŕ—Ą_“ß:/Ŕđ2IŞ&=¸Ţb˛ÔS†S‡śŢ0 CŔČŹ€tdôő2Ź^ 9;ú>ŘŹŚMz=™Á@N˘d]”˛ĂM¶4[}¶7ŰźíîüĘWţ¦§§ű×?ő©9sfS”„Ý‚k{»:Ž9R ®©Źü.·ĄS†€!`ÜX¶îćřN·l”IÎ[Ő„ť]]]Đ'M´ •ĆhUŽŃâ zDq%‘3F˛6–ÄÔY’z.ŕÉ\ç®ĺő‘CńxkOkL˛Śe,'Nśŕ]dRix€÷“)#_6iҤ™3gĘQt‚d˛Rđäp[Í8zô(çfŕx1s¦1â„ěšĂ‡c1ż``CAI›ň™x+ß”Z¨ťď”Yłf-_ľśĹ5l\ŤŢ­şđfn©ţݎ–5Á0 CŔHö#ô‰Â7čűčňděGM´ĹřŚ<â ę硔°૲?™ 3ěčL™–Ĺ%)†|2 1p+Š»ÇP0ŢSă!Źý`6Ó~öčř†şeëŐ˝ęýöţóúíW¶oʦŔőv”—ÂŻdĺH0"Ĺ–ă'ąyvéP’n诜.gEb.šaÇ=“Ť6Ľ‹ÖĽÂ\ŘU™uÍŮ2w¤yE˛.Ę١)dÉm)sěú»z»Jżţµo@xý×˙Ż™łfâ§ŞşvńšűÚZ.µ´](-Ż(ݬÎÓF‰,vOk+nʆ€!`×ËÖ]Ě­Ć‘"á€ă’?‚]ÉňX‘&ÁD>H6]ŽŐ˝”’kH-ŹP/h12~Đ“ĄÂLrRĐ\!f1?îc~Ţ3lqu%~Ô‚ĘjŕUŠAňUR˛ĎäËöěŮóÚkŻűʶWJŘ"®§ť­áĘsčd–śÜA4rŮ:Ę á)sěä¦m‰,^ł%Y˛wĄŃ×c¶¤®¤Ľ¤<[6Ř}Ľ„h]lôž>dwoOÉ׾úµq ŤżôËżÄŃş8¬khZvĎ;ž–&”6ĆOśp›é†Ň»6&†€!`'–­+ÎďbQ„¬ : %żCŢG6ł#Ĺ"m‡Ţő"Ś%t9"GW.ěQF|)›%o…ĆĄáĘÝ+&ŃßâÁŐä‘Cô(•ü‡üx«çŃÓŢ-[¶|˙űß'FĂA€e§$ăHś1ť  l±ç~…`˝*sâČÇń;1ŰnéŇĄ¤ířÝŕĺ—_f®™S~… ő6oŢĽ3f‰cO@ĆůP.’zś~‹g’nëÖ­[µj'ÇQźź\Ň4b&ľ ™ë·˙ţ_|ńŐW_eOś ¬X±‚íş×¬YCA/Ş 5䫤Fý`†€!`Ś:ôłBfȵ‘°¨ĐíĘşĄbd†Ú±GI‰Ŕ%ńL§I/Ć%Űé¦éméÖݵ« ɸňľJĺ!?^ç!ăľp˙™ţÖă‡VŢł~Ň´h…©\\ö‡đżžß´i„ZŻ/U—KĽŃdYŃ* ;7I—űŃmčc\ńĚßŔ!łfŇó AO¬Ž…ď” FŮ»ţĚ ‡É’ĄŁ8§Î––qT,R”ôô”ţő_eúĚţ™AÉ(6aę¬Ĺ+Öě{m{emem~…$2IŤ”‰†€!`7?–θ9B¶(ßŐ@/ gĐ.p—˛$w$ËĂťÔzl3±—*ÄžWZ#E¸YF)ŠCą\ęę†ęČkç·‚}űöýíßţ-łęČÓ±ľő‰'ž ˙EömĘ”Éőuő4^ĹpôŔěRK®Ť)x̡#ÍGŤëůçźÇ„ß1ćĚ™ó“?ů“řá_ćÜ‘¶ôđžÔČť´ĆI¦Ź¬(™VlJJËX ŰŐ;Đ=ĄMŁ1çň˛ŞŠęƆĘ)Ő•dýîĽóÎźţéź&WČôşŻ~ő«›6m"awŕŔ‡~řg~ćgHöÉŹÁČa‰yEŔcžíŃ0 Cŕ]Ś@Şî.Ś‹ľ’‹‚\$ěH˝Iż"3+€tť"#Č$d&ןŇÉŇ‹µż± ÓĽţYŰvîřÔéS,_ w”ŕ$˙đŐŻ~ăżŢŰYĆrT2kQb.Â6÷I"Ă+B¤ĺ˙WţÇ›ś]T$2K^¨Ł¶F›Ó•TV±Ôµ¤›…QŢ®4ZłŔŞ…¨$;´Ŕ˛Ę2ąu±ÔV^ž-Éô±qKkkËľđ6yxĂC¤ty1ç¶•NonmÍTTéJŢd˝1ŤŤ=†€!`–­+¶/bń\ ’âΛăĘţ/2Ş, Xýň,JČ«Zîp&x­\ŚiCŕ/ĆÜ1¦†Eé¤đEÁđËř›Â Sá–RGŇ>©ŃhHĎmܸń+_ů KM°ýĹ_üEr^¤ŘHź ,¶ {ął‡ Zv°´˛Ľ´¶®j|m”5(gäăČŠžgňřĆşŞŠňĺ ¦_ęčţöąÖwÎ\”ß4"˘mÍc.e«©,§Ć{—ÍyäÎ…ËçM˙Ŕ>°~ýú/}éKú§Ę"Ů?üĂ?ü•_ů•{îąGvů›1•q¬¬=†€!`#G@z"ąÓëÉv°é6XŤzęظĆşNbúËÜÔ<(.é 9Đ Wv@KKfÄsÚ6R5őJ±˛#TâŤö¶]ěn»Č‰•µő5ă&qLŞ´=VŹC dÚ›ŹÎ_Ľtâ¬9jÓvůňç˙÷5źn.%OÖß[VčÎŞ‹ž#`á$‘$ŹBi˘ą9w9oŃC4…îJ® 9*$ďX1Ŕe]ĺôńµÓÇ×5ÔVî:|ńrWÎo–ŐŻŃfvŮň’ŠL.aí`Ge¤ű:Ë«^|qË÷ľű˝Iż@Ňu.'Í;kÁ‚cGO”0˝®şVjń˘:ě+1°»!`†@q"`Ůşâü.·tT!‘ŁLĂ##Ů7Č+—lWrvhđĹĺşŔę ”8‡×F<,Çż„b Ó'$¶HE ŽXUW¨!•Z đ4Éă<ůĘŐĐfĂ}ń‹_dÄžDŰďýŢď±Á\¶´ěą×˙Ó¶ýoť8ßŢÓ ĂĎUL‚P„!žJŕ°Ř(sWW3µ©nŐ‚éëî·jáôĹ‹SE[WďÓŰßúţ+Ţ:qiyŃŢ9ŃRŹ«Z;»Ď^l?x˘ůĹ=‡j«gNnĽoŮĽ'Ö.ž?}Ň“wßľzáĚシ舘{/´v3¸]öwá%LÎcîÁ“çß9uéŮío­_1÷ŁŹ¬^ő©Ő«W˙öo˙6Kz˙čŹţč—ů—ďż˙ţŘo28q›Ż€z•ú6)`ź¶H҉i CŔ0nB]F¦AZŤŮýđ:nąÚŰŰŃ3ĎŽW®”< ™‘TťÜŃp!Ë&süřqČ >eKŮż…·-núńšyťc™Ô‹¦ż§»őŘ^¨ČÜą Á¨íâů Gß„¶T5ŚŻ7ą˛~\yĹŐ±U)čé*éîX´r‡ńJđçľőÍÍ/m--ĚtwVVD Gl‘p%7—Y ;Dݢǜ6Q°śÜ1dô±ş˘ĽŞ’}<"P(°ďdé+‹¸Ž×lĐRZzűôq°¤×Ź^ěaË:RsYľ ş”g™n—Ě”F;ر6·…]v ·°ěţáë÷¬»çţîçÓłvîm«Ď;Ö×ו­ÖCx )“Đ[Ó†€!`–­+žoa‘ŚBA I¤lXń÷‘|łÉ`«03ę mq­Í;o±„ÎjČuĘͰC¦,y‹ššÖâ#ĆKŃ“'O~ůË_f”ţÉ'źü?řŮsćśľĐţWĎĽúüîw:{űr©µ«ů5–†“Ľ#˙6Đ›éěí?ßŇ~čäůŢLfጉ¬W=tęÂ×6˝ľy÷Rr’ăË]ĘĺXmŽś·hŠ ÓíZÚ»[;zÄ÷ÜÎC­Zđű™l×ôń÷ŢłlţÔ/}ÇçA:ňŕG308Đ|ąý{/íŰýöéŹ=şć_Üżě=ďycÍżńżÁ6v¬Ťe%ÇV$vĂ~Ž1|ŘzÍŔ0 CŔ! ]ä„î Ę!Á†aH!$ČĽBÉ+dîrAf„ş¸ťšČ”˛#ąĂd¸(«}Ý0FĹm63páť]‹o_vŰť÷WŐÔ<›űuu´_>ćŇŮSçNą|˛§˘şľfÂ䪆 •:ď,›í8rîâĄă&G‡«rŘ™S§ţňŻľ<80č)çPV¦ńçŚŇp9Hä‘»h"N’ă%<Âd˘ńĚÁ’šŞŇń 5SÇŐLj¬iŞ©¨©.ݬöŁËĺĎ3 7fŰzúöź¸|ą»ż®’ vQvŻş˛láÔĆ m=ďśkŹ‚\e3Ńnuś:QRšĺxŘĹâŮ7Đ_ZVuôČŃď|ű;‹/š=;:cܤ)łć-<|ôh¶Ş®ĽjhaŻ´‹»]†€!`ď,[÷îřŽ·D+BśĎK4QÂA!ŁrdW¦ÚÉ9^)Ç;ڱ„ĹRL—;±á4Čś±@qř12°×E0ăôU(äc„Ú2’˛^ź1%ńűŰßfhťóX?űŮĎΞ=‡Ĺ§ż˙/î:tŠ9l1Ť(ęP‹Á\ijîž×.™ýľ{—MźĐ@îěËĎîض˙3ŕr.B(yĹI´Ň5Ë™gÇš[Om|}ű“ydĺwÝöđĘ…ÓĆ7|áéí/żq”Ă҆(óP(Ce őŘąÖĎűĺŁg[~á'ײösźűÜÇ?ţqť`a, {™-Č÷˘P¬ůCnÂz5p…×ĆdCŔ0 C B}JE(™A€Ě0vČÔxvו}fá$ZAÉ ť 4Ă…ž»PdČ wí 3ĚłK2˘BZM¨!#,îu«Ę¶łÇ¦Ož˛ęˇź,+ú¦˘¤şş¶~üä©s—¬`cşłçOo>yäâˇ#ٲňŞĆ uă§”–T t¶.\ůˇ4ن}}_űęßíŰ ˘ĽŚ ŕ8˙!b?°ŚŃ@&­=© úč=Ů´č>©±zÁ´ú9ë'40©Ž­ç"îŤVŤx^…Y{µUĺ˝ŮÚx#vś [2ˇ±jÁÔ†óm=íl`WšËÎE ;ö°+«€{Fî‰KÖĂöt—WÖ˙égâ'~‚]G˘ýËĘg-ľăÄŃwúşK+Ş„ó\­Ň')†ľ—¦3 CŔ(F,[WŚ_ĺŹ >Q¤‚Żüü#Ś–•#,$ăĘ…’ęV„WrÉ5L.”0]­p_Ž4…沊ě#‘b ˇWI}ČO*˝×±tňY.ÁĆ7źřÄ'V¬Xqˇ­ëOľ˝mÇÁ“¤¶Řę8LH˙qu5Xż|ůüiĚűĘvľĽďhÄ.Ó´T3qŮ̡ç?÷Í—źľř±Çî\6wÚ§?ü`wOďîCg`V3 &§ěčéýÇö´u÷ţúďżë®»'ČYPűÍo~ó×~í×řÜjŻB–¤&ʱľ2Á0 CŔČŹýKŞ>1ODEPún˛utĺÜY1Ŕ$U@Ex«Á¸˛”TťŚAR\Č Źł™ˇ»dŠ:w‰6OŁŇśŻ>©ěn9»ę‘÷hŞN[m7ÇQňĺ“gÍź8sîíkÖw´·\n>}îÄ‘3'ŢFž5oqÓäébŹŰłgN}ăߪ(«ěďkgÂ[4I1÷‘hiî9şGBîťčHźMW»lö¸ySę몙‹‘tĹ}<â™AN쪭,g^5ˇ"ü0#Ż­«VÚ♥ł„Mš$sĄę˘aÔh=,CˇŮó/<óĚ3+W­ś37ÚzoÜäiS¦M?sáŇ`¦ľ¤¬*‰•6V»†€!`ÜtX¶î¦űd·DŔ!ÎAă…@‚‚ëD˛o0T†ťˇą¤í ¬TĆ'E)qŽĄä.”ĄČ2@Í#—ÁmŠ3UŤĄ—ăÇŹÇIžŔÜHÜČóQłPŮ´z’¦|ńĹß°aĂG>ň†yżµeď‹o…ä'3b€W`yÍâë–Íini˙Ζ˝[÷Ś^áşŢů”ÔÎ(r[WĎ×_xă\Kç'ŢďĽţĂGů˝żŰ¸÷h3Ż|áAĚK2Ůg_9Č1źü—<öŘcźţô§ŮĂŽ6>ţřăî±!¬Ľ1…ŚŃ‡^yýŇ0 CŕG ŻQ@× ´Qu @Eŕ3mmmČBop,ńĎcáçáUNqužŻ 6°‚Ó§OË$~bÉ>u‹ÄŐăÖ}ôĘn+\ď«ě@¦®ˇÉő—sy»’Şň¦IÓĆM2ë¶•ý=]-çĎV×Öĺo‘9‡Ď?űô3GŽ«„ňq¸K%rŕä ‹ $;Í~ĄěrsâŞ+K—ÎżjŢř†ęŞěĐrŘČ>9ź.§ş D8ÖU—łźťęIÍŤ«ŻĽmú¸¶îţ‹í=čyGÂĆIQň.‡*‘€ů;·­¨¬{qóK?űŃĂ3fÎŕs“Ö›1ď¶łg7gű{Ë+lSfĽyŃ}č•Ćf‚!`†@‘ pµŰ(’€, C`Ô^‚K†N’tčáŻ].« —Ĺ’ 9LJ"ţFqń AR–Ámv0]a8Á8ő&\›C‰Gî4“[9_‚ôâG?úŃ &;×ňôÖ˝¬ŮđĺÂňUĂ)ăëßwßŐ•[Ţ<şůŤĂ˝˝0ĘWf¸w9*\:ÉlÜőöçľµĺťSn›=ĺÓ?ű0GĐćVčúËSŠ3kź~éŔS/í--Ż ]¬ĺŁlßľťöúËä(¬"˛1˝!`†€!PTĐsI<đ˛u0&Ä‘_CO——ă2q2ŁĽ2#¬F8ŚÜŃŕśsôdŻř ~Đh]Ĺ€€vŮŚ©v\ľT`TŃ<µŠŠš†qÓç/ž0m––ęěhę©ď•–” ô’c“9—Áäx`¤‰ÔW†3IŁMWýřĘ™÷Ý6Ąľ&—ŞăkČőú9䣤¤¶Ş˘*Ú—nč#ň1!N g4>ş|Úm3Ćq.'KP)¦ źŰ’0ĘßqE‘ÓŕřÎś9µőĄ­­­­RŐ„éłk««986çK»†€!`ÜŚX¶îfüj·tĚ.i‹ÉůqÁ. ce ™;ü‡DĽÇĄ§š›“TE¸ µň(”W4XBmOť:uîÜ9ś0Ä-µäŹDßşń«Ry«Ź*¤ŐKAbŰ˝{÷ŮłggĚÁÔłžţM»ź8×Ćő\ ŔĹ•‹¦­żcîţăÍ?ÚůvóĄŮNąŔâyĚ`ŞY¦űýńw·µ´w­^4ăS~`â¸e·É˛PXćI~ă…=ç[;Řz™3aů@o˝őăVI?yŚS9ńz6Ą!`†€!C@:—ä=fć}¤§ca,Ăo,…Ě}Ł×Bâ†tĄ„ĚŔ^¸0 ©=dąD‰F¸ Iv---BfĚ[uRé6!ô6­>T{ĂÔŮďěŮ>Đ×›tGMV»2¦Č<·˝oĽţć›ű™ť–é뚨 XŔB†ěrĺRuŔ@é…Sëź\=ŐŻ¤Đ˘Ř Ĺ&ňÝßńZ[Íl¸hË^÷B1m|ÝK¦®™?‰˝íđË’Ąąp"C‚“řHŮţÁLöĄ-/_ĽpQśÔ64Nś2­$ÓK!u+źCUéŐŔCŔ0 bCŔ˛uĹöE,žˇ Ë5° )’ĽÇ0ĹnĘ 4W.ňw’łcq«ŽOBŹ„ČrW‚+L—·"pÇ?ĹŮ˙…MÓ.]şÄu24±0BŹZ6fJ/Ć®Č÷ľ}ű`ę,ť7oîĺΞ^'"Ž)/†|'6ÖnXą¨Ş˛|űţăűŽ7G8úť Weĺ%[öůëgwvőô=°bÁGY]U^™‡ŔůÖÎăçZŔ ěř"ÍÍÍĚy”_W† +°Ăz3CŔ0 C´sAH[Đ•cNxˇ[—„|2Ă,9Ć’¶S2C)á0tŽŘCcr¤&Zm ˛pŢ’ňĆä!3±ň©ËéK§Ě[6Đeř®\Wťç¤+ęt?„1'öh†€!pC°lÝ Ý*-%1ˇĐňa;řT•U$Á…Ŕ#ćäÝXJ ÍĄFĹL“tŘpąÄW1#7yjoo'ĺw óě‘úß( ţ×?®ĹFÁżićúőëµ=ŃÜzňÂeČߏ˙Íź7}üÚŰg]îčyăđąÎîhÉč^9-+ůÇ^˙áÎC™ěĎ<ĽęÎŰf°%”°ţödĎ·vÁU§OźÎ×!aĘwôF%źU^ †^ł¤2•q˛¸i CŔ0nY¤IŢGô^ŹH!3’2CöŤJ©EĚ\2#fpŢĘ#® 3”R2CúĎMüŤ<इ»ר-ee“­:Ý|qă7ľ´í™8ú掶KÍąU“ŽýšŢîΗ·˝R^RÎęáaŇÚŐl]ŽŃ€GnVŰ Ř–.™5îáÓgÍjŞ®.ŚN‚Hy –ôe3 [SUqµ×GDnYÂqÇěńw-śŘP[%Ţrsđ”^!äňvÔž%ťşoď^>řŕ¬‰ŠŠ’ÁL´/a—üHhlf†€!`7;eâ‚oU_'BĽ:&«B¸ĂPą`¨S6¤SćŠŔE ĽĹ2Ź" cĚŞX¸,—‹…±äĹdĚ“U*šËŁHž0ň*•Ş1ŘÎŚ3xüwÜA ŚMëş{hĎă'ůŠ`j«+—Íť:©©áŔńfv—Ë٤s’t›Ô€ëíĎ~ń™·Ď™şlΔűžµ‡NźżÔmĂ콬ł7gnjjâÓđQä‹ČÇň )Żđ+Ó†€!`Ł…@¨{˘×‡nă‚uŔ@¸ČÖŃBox‹’»\dî*đ1Ĺa Ň{BfPâŮŹţTJy›Ă+ŻŢUâĘ}Ě/ç1.ݬ?wi¦§«µŁĺĚö—Ę2›ęÇÍšżxĘě…ă&OŻŞ©Í㙼ŢÉÇß~ű0S {»zŮ-ŽŔsaE˙ŹîQ¦|˘sZL­_żd*kX‡öűq×Wáůăoś§A¶9.©¬(«©‚F:zWD_:Č×c__f÷ŃK]ýŃŢ»8ez];Ůĺľ”ŤT*łß|co[[ű¤I“°©mhŞ­­ëŕKUGCťW®<^1±ż CŔ0ŠËÖű˛řĽ„XH>”p„1†˛„„LlU†Ł´Ä•ŚT#č%E`´Bgq)2ND)9;.Ęŕa„ B”ő)Ľmń*Ą@č•W/JBbe( »™3g.\¸lÝé mÜ ,UH__W˝dî´žľţÇĎťoď‚č†,G¨g=ěńł­_}n×o~ôá»oźóđĘE˙ôŇţ’LŽHű|皪-ň˘ˇĹ’o“š<ĆúĘCŔ0 Cŕšu=°ŽÂ}âDüŔC 0†ÉÓ1vČŠ0|(>5éc‘±FĘ ‚*Ű2FÄE¶Žâä† <ˇŔ$bVAăOjäU*}ĚĂ#ĘęËkëk&ÍĚôőw¶:th˙ŻUWVÎł`ęܦΩoš 1¨ÉfŢÚ·żĺr[„o6SęŇŞ6Qö¬¤tę¸ęő·O©®('vľąµŰ|ä†ĆŞššĘî®ţÎÎŕ>zŃŠÖÁAΗ¨,żšJsë‚GńלšĹ#ś9ŰŐ›ŮsěâŐŤč®X“ą#›JÖôČŃ#ímm˘f3Âqă']:}¶Ş¦!JďEµů“‚!ý÷ö·!`†@Ń!`Ůş˘ű$ĐHq—`yýCRˇˇäz ¸đWîđ]F•IrÁ}eÔ'\0]^InŽęT˛‹JĽq‡"CsIü‘ ?~<ţ©o®’˛I3”®ŤĘ…č‰G¶äŁ-Ă<Ŕ m]ˇ‚ę9)Ŕ§4Ő-›3ą˝«÷Ŕ±óĚ`«°ĎdŮ´ryeÉŹ^;ôČš…V/üČ#«^ŮěôĄö|Ą•ŃDA—Š’˘÷6Ů« §m…ن€!`iuLŢ®ÍuNw?&uĆąă~áÂ’n\(qÂ%dş¸ă Ĺa5< ĄáÎ[Öŕ-&Ř O†!1–"nŐI™˛\1}R#©ôbL#JŮČ­ŚLXuuÓ$&žőu·ź>ńŘ‘wĘ3ă'O›1ŃÄisš¦Lݍ¬’Z˛™ě[÷stnEÔâ\Rn(ľHÎڍeü©«.żç¶©ăëŞ3EŤ7¤Şş˘iB-›ŁTV–őő’2Śprćü…Ş®¦"ŰÍ©Ł˝"âô\k÷‰K]ăj*ćLfŰş˛†ÚĘĄł›Ž6··t÷ąîŁu»Yh׹sÍç/\ŕK ±l?ˇäŘQfE‚ĹÇW˙{ŐÂ$CŔ0 bEŔ˛uĹúenŐ¸`Ibá%@©Jú”â®gd.¨*ŁĐ h© Ât%%‡.KA’zPXîQ¬ąÜJ)+ÔWč1€ăBp…Tń(U‡î1Řc¨”ę˝ö(e‹¨6SI%¶wő0<«Ą *ËĘgO?mbă© mďśąş|Ő\1cŔ™ĺşß}iďÚŰfß6{ňşesź~ůŔŔ`|z€BPŞ#.ÎYŔ.÷đÄ““+•Ä˙Ne/lφ€!`†@®ëOö&Ú+]3BIźâ*殂%ą9!3ň–Α©väÝ 3h¸ 1(ą„Ď  Ä!w© 2#¸ă—ä)®oBW,ÔŘc¨”«/°4%2.+ŻjPUß”ť’ ˝Ř˛÷őײ]Ďß÷ľźť9˙vń 3;ňÎQvÂ%ł5Öá1W(CdČ«%3›ćM®ż’Şsă’A)30XQY’aR\t$«ăË1GŰP]ŃןM¦ë ”í=űO]>pćrCuef°dÉŚqlŇ;y\Íâ™ăöméí"NrÜ‘©h°Ł˝­ůÜąľŢ>!–őŤMě58drĄęŃ»bn†€!`#–­+ĆŻb1ĹHË9„nĆś ű(µP–‘g®p Ř-Ů:h. P µ…Ţá­Ô(wő™‚dý„űćŹ!m3 ·§vZAxpw‚‡ööAěŇ]TÇŤŮ“›*+Ę/wtźméö¦óR°5ŐEÜ»¬tëľă»Ţ>ůĐŞ…Ź­Yôü®Ă—»ÇG°YKEySc ń0}€b¬Ů!aWHUQv†€!`cŹ@Úçš;Y©2WĄĐ2ş~™g'dFhĚ˙ĎŢuĆQ\m]ď'éÔ{±lÉ˝ŕnl1˝×PB'!¤ BK…đC !PBBIč Ć î˝wYVďŇét˝ţßěśFëŰÝÓť$÷]Žóě›7ofŢžnß}ű Ţq`3`¦F 鼂ô˘ŤĆ =¨'Ę< es‚ś`«…_>q1S© ZÎ’Ů]łÍ Ół)B>oS[ Ř"!@“ý'™”.†7›E;ľ4•Ś’^]0îětÂ.ňűBÁtĹ&9¬HXŁNíöń ô°ČVŕéŻB“íĺ`9\’1iMťî&{0řø${a8;vttâ‚MFČÔMŘπʡł-AÎŐʧ1€ÁůÜsĎáYřń¦O|ĽFs×]weffƬY>•5 kŕ„Ó€ŚÖťp—L^đpj@ô Ă·:¸4™ŤŠÚ…Ľo°kaŃ‚8ĄĚ0ůmt  ăťeŔmŽ%RQÂ.FAˉŹfE#2â/ ö˘^ŁÎµYP€µŁÇŔ¶)ń „)ÉłAajbŠdëW°©ˇ,ü.€“^«Ó"‹q<«wÖM«*ž8"ż,7}ëÁŘZXVŁÎJ5ÁŔ=tčv Bŕ’¸ ü…±)ĐĄ'N䋒۲d Č5 kŕŘj@ôţEív0Z`ÉĐX n0f°ZP@Çýš30Z ‡0ô ŕD7V´EgpăRŁ’˘'ĹL×Ě-,‚j©o‘·Ëe·÷`ĎđÓ'ŕwpiŃs0cňÓŇŤú@\S K řC%˘‚çÖLş´…AŁę›Ť €\Ä*âP(v|qzvŞcNš®ôtł®<ĎŇéň{|ÄűŹ:‘i¢‹„ěön9Ó 5Z8KSŚž&«+:J~OJPňłĎ>ű‹_ü"©QG“łŹ>ú(ţxŹć¤ň\˛d »d´nŘU* Ş¤ěŚŁyˡkŔ;ŚW¸¦ĆňpPă@b}E' „Ú»ü}3ŽšŔÉg¦śBJz 3¦ĂzŔŹ•p°Đ4‘ä&q–„.¬XŻSgXPz,ŘnwŮť^ťZťźeUUš—žťfÖŞŐNŹ·ş±kó¦Ćö˘Žx»™ żN“?glÉÄňüĚt“ĹĐąf–!….B”.JY´L’5 k@Ö€¬Y HÝD’ľ5 $'N kŔmĆ `;j·ŔžYČA3Ůá˝Xg!xŽZ hŔx Pµj05Ű×€'cfkRh—(]”Č_+l`,Ŕ[jUôÇŕ,źĎĺq“P ^ýđĐ3…ÝШnë5čŐĄY&2źôďX0 ‘!nč ™ž^§ ˘ŠyJť°!ç'IŃęŐ©©RV:zĽn—YíĘôfŇKVŔřG‘Ržc©némô1?¨†öR6§ÓB­YîPi´0čőčT$4„Ů;“Ę(rc( úç#4äŚÓZfčEę™ eŠ!Ž]ëíŢáďĄéŞńyŔ§ÇeĘĂe Č8VŃşcĄyyŢ#¨ÜG“’ŽŰ†ŢĚ(‘Ú¸¸çŃ@‡!ËňżĐ{!“@Ą‡RŔ‰á1ë‘Z!čôŕóÂ?°-äÇ’`ťÎĹä†PLÍ Ó$)•Šđtłš ^E*F—dݰpĘÔQ…VŁ Öě˛exí…jš»˙łlëŇMű=ţ`âÉńŐeŮL·ź7ő¬)ŁRMm%FĚfÓ-äĹŻĂČČS”ťj4hşíöĆĆFl3''‡o° rŘxÁI˛ü2AÖ€¬Y˛d UÉŢŚ¨ů!Ľub â€@v¸?2ËH śR‡tjĎ€CĐF/mă”ešŤZśŰ„ˇ¬}bEţEJsŞŢëöűí0„5ÍtL*Ečôj|íçÂ^_0ł…0Ü댺›±ŁÇ‹Ľ ©…—ßďŁĐ*şHäo$t&Ó`ŠńĂ›EnJjW  4CŐ=`«ä>OuZ‡Ź< (LO˙ŠŹĹZä9e ČŞd´n¨”Ç5 Ä2lޡ߄¨dˇ|Hf¦*Ë˙»tŔ^h`n„8`1 ŚBŽuâľ>ôE˛ý҆pµ1 1§xń/Ź×h5¤›‘Ć%ÖTŤs Q§R›ôj“Awᬪ«çŹĎJ3RxW×Ö]ß g;ŽÍ ř®˛8ë[MÓh•‹VˇňZ8r‹‘ËťBa0‡ďşxÖŮSFšŚÚ[–m9=·79YVóŤgO.ĚJE®p4ĢžW@IDAT¶˙> x ---P~qq1»B~FIJ‡`NŠźÍ"7d Č5 kŕ¸Ň€ż¶I[’¬–$u+şť@%‹Ę‘Ƨà n”¸K‚c?éQő•µgŞ:ďčÂ;=†ľHˇÚ!YHĄÄpĆśĆ !°|ëż\ż‚^ęŞĂŚĽ*üKź"HJs—»ŮîŮfÖˇâÄČ|łE§K‚’Ůu´9Á ŤA¨FݧՔ †ˇŤh"~_5jÉ„BpѲĄŮ–ýÍŹ“ŹÖENňÔ±a€•J{w·-+7…KSł»Óřz‹a–Oů€ę𷨎†Ú𻎷6]$V…O =†˛Â°ÇkíďŽýşć@c«ĘbŇ”čF•¦Ýt™&/kp’˝»jéXýic4ą”3¸ŮĺQ˛N Čh݉rĄNˇuâ^űJâ–2;’2ŕt¸=f.ř©áZ—z›L&T6€E 3ëÁ=l¤‹Ţ$“Ů&’ÚTś.©! cU48h"_,i¶Ě4’­fŔ]ó`ďâY±†dnV—ĺÚ¡ČîÚÖŻ·ŐlŘ×x¨µ§đné¨ŘNžQUĽpňČýőťŰŞ›‰şE†ćąă˦Vj5Ę×?Ű´zW킌‰#ň6w-^łĎ S^vúXł^żťŤ!Ł‹2ˇz„Á˘bŔÓ’’zőă脿µ8ZŤß#D>•5 k@Ö€¬ă_ŻŻîš{Mgΰ^ľđČýDÄ ();Dꆕ”•OŤ0Z`ÉŔŐ¸0;š,”ÔÔTfĚP3ď…{+V’¬ĺ µ)¬SŞ+Yşč–‰„ĺĐŹj±ě˝bcŔIđş~Ë›%HšÝĺ[łżmOcOE®edľ%ÍH…1;, "˛‘‰QşĚßÚ 8â­(ÄéúÖXĐfŇ!ËÝ’Ŕ]zD˙Ukp9úÖJ~ŤE˘X¨}b˙•Rl,ź|.­rU9Ç:Ř˙řĂ‘f<ö=…§łřłĘ×ăĂemży>ÔÖÉvjďň¬w-[Óýň»i7\’őĐť¨0Ízl8ŢYŇýŹw)sţsżĐś'Łu jNf;µ4 Łu§Öő>Qv+eR$uł!1L0dĎ!l€…í cč€îŽ0p©± 9#Mt;Ü ±ś˘Ă©4ˇX!+Aö=¸×a‘1˛27Í„{wĚz8%ĹË€Ö8˛µŰůŃęÝo-ßŢŐăĆŁáň<ŰőgMš=¶Ôéő­ŘZłnWŇŰUgM™··ľm@÷:D‚cŠ3­Ćő{ęŻÝsíY“N®@ńY8Ř}ąĄÚ`Đšt:Ŕ…v$j9\Ťˇpő% łm°D6lŘm# 6//[jFHęŠ)AŠ™1ČŤ#­PwO°Ł[SśŻÔIţüHd Îek‚­ýV&B­ŇV”čF—#Ăź~$Ú‘`Čąlu ‚žRRTYéĆéŽÄ,GT&¶ĐůĚ«t ĄŃ`»óGtşWxýő÷y·ďĂúÓnĽ4ëÇw áŮĽËńţRx%řëšÂN·¦(W[Z`^0Ë|Á<ŃÁ€{Ź‚Î%+)›Ňb2Í›:ŕ™i@WY–óë{p™:žzÉ8÷´Ô«Î5źsúżgp~Cę>’ÔE!üUŃ6ě+H »F 40]™ĐŃ‹çŽÔÁĐŔ˛EﭢۑZöpŃ…;…/śRŰ8;¬ŹYˇŃjôZM´ëpS‹ÄşB'Šţr臝Dv­Pôz›jşö5÷–çšGXE1;DpkËĂN¤ÜĐ3Ô(@ŃĐîB\±nÉé¸@ČDH÷Ĺů{E ŰĺƵĂ5ęŰ/ů—Ż>]nBP&>$ř[Z‡÷AH8jCč"IřW=fĐóşVmnľ÷·$>\ěř@Ü •śź_¬_¦É50T ČhÝP5(Ź?‰5@MQC‡Ú¬0dqۦžb*‚±K \XK§5mŹ˛Ň°Ŕ‹(ĺŢÔÔTSS”py™VVă `&±ď¨îĺĹëßůz;±ˇ!†#±tů™V@\´fĎľ†D§–dŰŇL†6»“T4“>` í©SˇQíihoęp~¸r§Ő¨Ĺóç×?ßÜéđLζ™ čŐ-bÄ ¤ +5'ÝäóyWŻ^ ëdÄpa“:˝¸RĚ2ýčh ĐĐŇńÇW<›vq!(ĐśźťvÝ…¶o]ŁĐ˛ôCI¬Ąë…·=k¶Ä8ű¬™ąOýX•JĆŹĐlíhşóçT¸iţô­ vţ9ŠÖ©2Óe´NôŁâŻ®wŻŽ~Ţô“F;ímŹţąwńr>3Ľ›v9ŢűL[Y–űř SĆň{i#.©éűż˘śR6ďĹDFɶjîBj=ÜΔX:«Ć€µëőFÄBpç=Ňă00l  +QFVdŹÄŠQ(ÜţĐŽ:{m»»,ÓX‘gµYR ŔXž6vyśľ`aş(ŰákäGç :AŔ őmV–ąÄîŮY׍yŁHY -…55îuth@"|SRŕ ™–ž†+%&R¦ p]đ瀿Řüx‰GL[$ýűô<-<ɇęT¶TÝčÚ&jL¦ý•÷M§źf>kŁČ Y˛†K2Z7\š”ĺ Ä·Ň4"Ą„$8śîBŔOźYá·m¶4–v $lfÜ/AÎ_ ÚüS¦MQ"zˇóyđŘ<++ëСC›7oFĐh®Íb1ę<öŔŔĎvű–iČDí |$ź\ ¤Ó’/µRQßÖóňÇë›:ąé–;Á?îŠyăýÁP†Ő€j­­ö^‚ęĹ=4ŞÁBMNؤ‘ĐÚ=őxa“¨Ş;#3Ť‰î0|ášgÖĂ€ě·EŃ<ĐŘů§÷VŔŽ%v§BŃŃăěqyÓ͆t‹FnĘdD¸ŔA^«¶É٦Qůľ`$;Ý‚IŰě‡ŰË‡ę  ł^;µ˛HßňĺË–Âx…oCë×V’3[ąÜF вţ›÷Őń¤jZ~öűÂ~ĂŁ g`×s˙Éůĺ†SčÉ% 4Üa|ź\ŰÎÝŕ—<ć¨DëĄgőţďóĂ :ĄR7ftčŰUŤÔi”-ÜÓ /ąŇźÎuȲÓ°Ł#:ž|‘DČž>°ťůÜÁGČňď)ü;ć€Kăä3'(Dj8D‰J`Dä°Ă=ď°[`Ěŕ×>rÝbŤ–…ó†1óż-µžÄéüIcFĹś˛•DéÄPQxݮԾµÖ——^ u„‡ r}}.÷ş ń©\?Aň'‡Żůüa”€¨kwd mĆÖŹ×B2ßiŕ°µ~É’-žéFÜţĚ“NŲÓ?Š8{˝ĄBGeҢ±XśükĚÎÉfhťßëňBjµĆç÷¶Cý Ńé¤t%Ę,E5â €ŢEyŽ"[$]óŕV…˛l iÁLăÔqě_ž™ÜŃrß”âٸ“uˇJř‡{í6öá÷VŁ.ȱ^|fÚ «ł3řś¬mýžw–&­Yě/ăűßDşĆ 7d śšŃşSóşź0»Ć=Ft­|ÓM”O˘8ĂYÖCʦa<Áś…™‹O§A‡Ő K—żžŰË$3f!…vIŃŃËďÂ2JKKa|ŁjjSssnaqEAćęťuL~" bĹńt]ˇ`| *S˘÷Ô`(ÜŢăęîu›Ť:«Q? ób¤Ëp¸ĽxX@o˝)>fůě a° Ç!‚Üra”VĄWägË[ąr%4D˛°°°Ď®MdO„‡Ż(6F”ČzĺƑЀkĺFüTŽJÖ¨‘đKť“éxo žŮR˘kéjĎÖ=†‰Už=ç‰űŚ3&’ápŮë´#ŹX×ó˙öﯥÝk·JI’ Ő8§Ô\ĂBÇ8©ďÉD&…Á]ľúÍÇKyÉŘcĆ‹€ bşÉ!»CaĐ‘üb‰=Ď'_ ápśtÚîŻ7"ä™.ŰzŐą]yťmÁzőyŮߥ˛šAA˘ňö'^č~ńmÚë۱źFuFcfŤd·<,Ęgłź !`Gv‰ŕRâE"d/:DČ&­Ě×žÔ %©?ҡ •"ÔĎĆ XČĎ…Đh#ËÜëřűŠß†d1?Łŕ†Ž®Č¤acQń{Ďh‹ňXm´?ů"÷DĽÜk¶ľü’ä2şÜ5p j@FëNÁ‹.oůh¦`vx'wň±™p;‡·<”gb0ÄéMŞKTěo Y0µív;ÜëŠKË*‹łÔę$ĚnŘ$˙ žH+ĄŤ»¤HŻŰďôřK¬¦4‹1ń7NŹŻˇÝáőŠłÓ˘Űéŕç§‹čµD«ŕs^ětňČBT¨ąvíZü´:u*śů<´-Ş!›L9¶đôeűÂ2˛¸ÝvÇŐhŕalÍyw `® NICAë4EyČîOEiË S¦ŽCľ˙úkîĄdŁ úhi‡qéŰSÚgp€RZÍš‚ó9sŕqŁ)Ěás˘Ý»dśŞ|{TŔG´0×8sRúW ­ŇÝ˙|ź˙P:ë'ß‚FÉzđNݨR:Ĩ±íˇm¤Ć·Ý~Úţúć¶GţL‰ćłgë'Uu<ýOäDCp’˦ŽË¸÷fµŤy–PĆţw×ĘMÝ/D1#üÔD]6†…Qjşë?—šGĄĚýíŹĚŇňŁčteŞ9˙O1AI銍B…DZî’RP*e:Űűw÷š-LµďS…†|y˘>C÷+ďÁ”G}p"oŽ~BeÚ7/aq7đM ;ěFŽÔë/˛ś3‡¶ńŢóÎ'˝‹–ÓSËóRŻ9żç­ŹťKWáŮżüAďËěŻâđśÁĹÂőµÝu˙' 8™u>óšwë<öGś›:'CSZ\Š– çÇ w=ďDĂ`ucGęGŹđî µ&č‘ńÝë™XŚĘ~č;ÎOWę›i/®8[v"[î“ý!äíŹ=!@ýTé©úq#3t‹~ěČ6ůTTâ€ÇJ"d˙ý^$BöĘs­—ź­ÉËrŇq·Ĺ^`·ńÁG :šĄ ĐŰĹŮ,řăô&Ţ5Lr"*­©§+ʇŮáůV1rľˇáŃĎĹľň]ćČę°z$č%€g E7Cţ!e!¸Ľ8Q„S"HGIjPQ${ťBňą(áj5¨µjâ(P4–ŃÜínG ‹PĨSźV–aĐÁ鏬„;"° ¸•Ľ`śB©Á…EER¦W lΞ®@Qż*Lč÷ůăO,˙“ĽNhĹbńě“řÖőăG1ć`s{ÍY7gO6ÍťŠ§žş±¸ŁáIc ŤĂŮ|÷ořPź!ÔŃÝ|ďă%ď>Ă'˘Í‡ęX—gíVÜRÓoşŚQ䆬SP2Zw ^ô“aËR·Ě¤nEC3śžÂşĹ[-MĂŔf×ÝÝMŞw©ús+Ľf ˛±@ëđ$6??ż˝˝}÷îÝ Î:«(;=Ő¨ďőú–1¶ř ÂÇ‘0Răr"«‹ßĺőő«hťrರáđöC- O«(ÍKĎłYj[í1$3÷ŰŻdr0Ŕŕž1şőÝ>\¶ €ö8mÚ4č?îÚú;…SP±ýĽEůy,rs¨@čaš7ŤµÍgLďęCëüŐuŚ>, φLPÖv~±¶ů‡żHÇ(a‡Ó‡×îęîWŢ/zíIý¸¨öú˘őĽąqFÜ^˙ľCxŮ_ű ŕ…_›Ěd]1 $ăcşĚçĎSçe!öĵ<ęNvă% ­ ;]Śöů)Z‹QE·íWϲHU,ŻŢOľÎöQă´ń1SÓSmy‘ë«őěŻ ĎaÓ.ĎćÝHçGŰJł`%~,˛ąPe‚ L\WlkŔ¦g2vţőŤPgż# (Ť·=DVČ;DÂÝ/Űw®¸‰üşfBR4*{ˇËţ]ŇŃ@3Ńüęül%ĄŔŽŁ –ízţ?^K?ú;+ŚÇűřuÁ<ćŔ†L=xˇt ®oŃëżęGĄáWŠsÉ Ú¦ża 4zŠwüę‚ĆOÇ“űä,îŰ8=zÜ2‹~çÔ]}w°1 I„Ú:]Ë:Ý+7ĺýńg–óçń9Źm;ŘŐŤ…]r=Äyő.ú’E(ǬDČ>őhF#dĎ™Ă>!1śIťJÝVަ1ó—AŰś-Ł„Ý‚+üÖÓÁÁÓ>,,ÁpľLŞ!EH¦âňKQ(nąłµ‰Šh#GUfe¤5¶t)UšpÄŻ"q«ä+¦®ă¸ u*›ŕyŐŻ6rIř˙S?˛TbDq˙âĎÜ\łŻc_ł¶"Ç\”i2h ôFËPpĂ{Ă]N_S—y~Á†FˇÍT–mâ;Mľ_8@8ű)IýŠŃU•k´&R(ěéěb\Ĺ^ŻŹ¤®ĂU# ’8âtIŚÉ‡i 8eµ#oüčk@xký‘ř2¤nźGM]¦Ł™_h ÚÔrJ|R*D»ř’cŘ)ĐĂ#F444lÚ´‰šH7eĄ›ŤľľÖÔL,R’· `€«>gŠQřA¨"¬• ux÷2Ş”Ş˝őív ĽN‘ż˝¦µ×ĂRÔ)ü‰ábÇCâęeLifUq¶2%˛hŃ"ŁĹĹĹEEEP5]۸pťR]˘tQ˘P¦LşßJq>•ß4&0Đ—äUz˘ąŠŮp~Ř\Äu őôz6ďęýđ ĆŔ‡Ű~óW>TÇxĐ˝ĺ'ż/ýčo”Řůěë|¨ŽĎ‰¨Éć{+ýřţv{őć–źţŽťgMĽÂGsXW‚ ď¶˝BN8 l*űüQpŽB†YÍ\@` ­s}±–I3ź7ĂK2 ż‘¸®řŁ„mXů1Ä®çţŐń€¬çLA):ëĄ śE»Ü+7ʤ‚€ĎĽ[ú~f¨Uđ­ăG›Ő±.ŕ2śyďÍ müö#ě—㡠ĎúímŹ?źóóďÓS|–˘P©FŤ%Ç„óĐŢ®g_wĽ˙™ůĚXłaÚxÔK1ÎDP6—M9¸÷·Ěwšę0hë/ţb^8›‰¬ëX5Őuţń•c5űđĚŰ!‹BŐůy$~Yá˝§ŽżáXĘź¸đE‹éh2;8­ă1$¬ś˘kX–!ş<*ďÂ^!%ÎŁĚHó¦7:ë˝®^™Ü;đ›[T2zdy]s§J­ ú|Ąp;­ÂZ-‰;%š'p™Ťş×őá`śUŐ3—S—ëc›Ý×îđínę­Č1•d›MZuł~ „ĂMÝîŽ^¤ţ YťŢ€Ýí †Ś$"ĚJ2üCţ ÁNŁ2h ă'Ž·ZŁ·BlÍá°#*µŠdŰx'¤łNĽü&k` üýWµ—}Žu1|x*I‘»Î§˙™v㥙?ş•f ńőĄ?ń°ŕźfEWďö}Qgs…OcĐ:ä(zóŹQ×~E {Љ[pĚĽň©¬SM2ZwŞ]ńStżńm”íN)!ÂáŕžKÓ:kB’’sUDŮD‰l °WH©]RR‚4Ű·o‡‡ťÉ`)ÍMßWßÁŕ-&Mިŕ M‰Ł¤('đU<—Ć ^{jd\&ů­`hĆë”*E[—sOcűȢ¬9ăJ—nÜßëöŃÖíp#L†ĹHžuóä,:iž‘" ›EEĄ^ľ°­[ľ>ĺ‘(­*:ÄÄu%%A„®RŞs3‘ĎńÁ2Ö›ó›{ĚgĎ »˝­? Ç1Jw.[´ÎtĆ ŘúSCZ=ŇšçO˙úÂçB"D”Ic \Yü‚@]*‡‡˙”ˇó™~bŠFťzĹ9Č~MBžw  hg?ň]б"ę–‘Ńą°`Q˛ąp!u‹(¬D0ăöŕ–™ĚhC­˛Ýy­ndIďGË™ç śěđˇĺ0ÁXöcrN˝ę p)Ź»>›q|ë˘ËU(†×·.Y-Äż1ÁęHD ”áppR"\íIVD˛ĆŚp.!…żf:#ź‡ßfś˘DôĆŇ‘¸CŁýŕčlĄhxtFó¬™Ó–|µ]źUś]Á7SІC4"Gźőíť„ľRŹCŃ8Áď ˛Ł ˛ńâčęőŻëőíięW”Z”i4jŐüŘXڞsŽuŢ©ÝŘZD!¸QÜ5L˘_ÉxîŔčÄó÷˘kEE…Ł*+q9(CoW»y”$r” ŕş`WŠ[a‰Ő &żËHLpŻĂłÉ®—ßĹÍE4^F2áŻé ’ź+Ik/ř¶*;Îă†élßşÉE§ĹC,f˙đ“„"[¶(żL”5pęh@FëNťk}˘îtvłQŽážŮ˛a?Ál˘VÔđ®‡M‘ X@‡¨ŔS»±±qĎž=§Mź9¶4çÓuýi•âËÁŁnŘéHĹ9éúž-‹ "6kôč79ű(˘˙‚ ŕÚ]usĆ–ŽČĎSšSÝÔ šZľí ÂTłŢuÔ^†íšc3MŻ,ÖiŐź}öŔG<ůź9s&v—¬ZD×#Ź ¸×mküöŁÜ"˛"MIľé ‚‰‹•ĚâqšqĎMé7^Š‚>Z$±H×óŢg,tSŃż˙ J%JJŁ™Î¨4÷ę-1h’µ5Üú Æ4Ą…Żh3Oź›ýÂż:{ÜJ•6öăy!ńnăĂ‚§¨ĘT„ŕ…ámCŕË>Ŕ§DÜ$ÔZˇť‡ČBÝí_ą·ÝÖ¨+Ď1—e™,„ßé0Ąš»ÜHŘK¦&#" ›…IđЅâZ/Ŕô(5zT“@~Ţśślv!şZ\ľIȧTA,†­Ă’Ct5}˙p«í;‘˙•5€đđ)ëľŰđB• ×׼wş×o‹qčĆAıÂ(2ΛĘžQŮxn„!xµýü<ÁĘůőݲ°¦Ó§°…đól5gtą!kŕÔÔ€ŚÖťš×]Ţőa˛]¤lťĂŁKü^B‡Łw(P]ŚđÓ•ŕT”d!P™‰á^‡`ŘYłçŚ+Ë5tţ y®+CóQ§AŞ8<vyü1˝1§Ĺ ó L<Ś–ţŤ{÷7tä¦[ćN([˛~ż'@fµjw˘^GÄlТ`lS'É#†fŚ))Č´¸śÎ·ß~ŰétNš4©´´TTŐ˘:ˇ vĹPbNc¶)ź9 @ó0ţP&ŚyźÁÓ*ç—wą°>Ds ÓRĽaS@č2îľ ˝˘ - AřÔÁH=lżÜ~ ¶‰SŻ˝‚G  ÖBŻŁ]¨MÁxhĂ·3IO‹^}R´h̨OńÔ©Ü(üţP ˇuüuĆČAĆÓYłX$)ŔÁćvöŐá3\ĎâÄç&®«yEO ˙ů„nD1ëB?€ÓţřßđyĐŹŻ4Lä.„ü X$CëśËVçüęnaQ´¸ř‘ŔIJjJP¨č`tŠ]˛ě‡oÔŞôŰ®¤ ’ű÷łÔŤÎŃW_B•e3ÍďĎşĄę'TÁ×Ň˝jłhâmDg7Üö`é‡ĎÓŇ%‰o™­ Ŕ‚ô:Aöײ5ôTvLŕkIŞMˇ:řÖ đłsXj % ŠÔ +‘[<Ö#5]€^Ń;l‚‰s**DČ#¤°R]0!4[㡣g.@… đŁè1ă§N»čó5j­Ţďń!€A0ćúŚô ô @çŘ‘ď{ j c€ ×ĺF.DĐ'€[Yt@J Pąv‡gocOyŽĄ<×b3jşÝ†.·e|0w˙ˇ-)XAţă•Ţ`Đç:äµ›Rm1çž1/3#ę đyŰë] TD3Đ/j$6bsĘô&7d $®mIľ¶ä’”o^‚!x@…ç—ěĆŠwű^ ušÜ¬ÂW~ŰúógX~ů‘ďywî+ýřEvçĄ˝ŞŚţL¸ř&ę"·d śňŃşSţ#pü)@ʤHĐÜƤ$ +q!qä$(dčËJŕOÓsĘ.,Łc,ťTTTlٲÁ°@ÇŠłÓ łS «!±ń„~(M]ŞIçěđ÷ş˝q~˝ă6‹tuŔő8Ůl/˘vpü fŰăň~ąíŕ’śYcŠÇ•ĺĽ +Âëp‘j°éfCšÉ…†#a€ŚͬB&»O?ů|×®]x’<{ölˇĂź…íťOD;q:_á1BäÓ#§¤nş÷1W¸“΢Đió~˙S>2¸Ůóžy(A1”ę:űë°Z ˝‹—#>*¨âşĂ<äB(%‰ű–<đ¨™ő±jł Ŕ`E PÖżáÝşW4±]üQÂ^iň?±¨ÝĆxŕlv{”FŁđÖËňĐşő@ëŔŽ1 —µ…ŤÄu%CŞC/€’ţ’µ8†Ľ›wáŐý÷·ŠˇÄDę•çP!$ţ7ËF«úâ™?đ|ÝĂ˙‘öšÎÂ÷móß:ĘNcŇ耨ŤlE&ĺˇü(U̢Ňđ˛Śv]ľ#‚HjÝΛŠlzŃő¬ŮŠl‰´Ťf¸ăĆ„íŽöß˝”˙ô8K|Ët:ĽĂUMŮ)2â±¶ěĐŻ ‰–8TÇ"^Ď=ťĹgI$KÝhř¤’ű:Ž!˘ËH|#Âál¬°KHˇĘĄ‹ÁĎč°UÔF«Łĺ ˝µ1ł ”ŠBTě…ś˙ů×ëQL;čMIRvć^ÇůĚ‘e’Ěą(ő äv$Ëń°#¶ , vTtĆ9rÎÁ„cTtąüť:÷6ő”e›áF}¤ľ,·^D˛jŕ!Ç EÓá"0’+”DL0q„ †ľor{{swwWËW“˘Ô0Ă3R¶}ş(˛€ľ »ŹÜ5ُ±łd¶ďÝÉ=Ť<¸Yç>qźgÓN–6Ä_ÓH»ĘZňÁsHXáü|µ{Ĺ&˙ZľXÜ {ţó‘í[ÄQ]>d ČP2Z7 Šd†ăER3AŽÚB‡ľ) t č•bŇ…&D¨ÄäŽ7nÝşu۶mCq7V_U’˝§66w¬p JX‚f˝V§Ń Ř«Ýĺ%#’GÄjŇ[Ťz‡Ű×ĺô ÖY<^ž©kvÖ^0˝*+­đâŮŁwjsů}¸ľnoŔç"ÎĂlÔÁDF*™9c Ge!·Ë;ďĽÇ:”»ť*áő ę®2ŐB«j¸Vm #ő[_ÁdâÓU•óĹĆ´×UĚ@á©0Ż<‘ţłűĄwD4ßŢŐr˙˙!5ýÖ+ ?S­ťŮýŹw©Xäłăk–‹EÂ`Á©4Gcź…‹…q™×¤('ü.ŮGňDyú >—†čBĂÎĄ«Ű{ž•š…W•ř–Ů,áem4â|ˇńŮä64 „ęO0őĘs­Wś Ŕý©HęťpĆŚÔFŢŔ Ĺ#¤ )TŽ(]”ČćŤi(ŕMgHm<°“ˇup˛;ý¬…«^_»}żZk řÉ(JFŕ3âGa´ÄŔęđ¨ĚÚďaŤĆ«rĽÜŕ ď}Đő˘tÚIĚ&EÄál®é˘lŔýT‡0ŘHŠN©@ş5*gqÜô­ÓéóŔč§Őj”ę .ş //—ő·Öčőj-ÁéđÂJR!Ra–/° )LÜ5 ĄM^6»ůÂŤ.ă{×óźEˇ­ÔjŮXZ •—ˇ•łľ U‚í]€í:˙ň ž%ŹÓäCÖ€¬Ä4€GIň!kŕŇ앤ŽăA5üq=(čVYY Ě®ľľvZŤzlI6śě 듳#ÁâI/b7$ÁčÍM7gĄ™ÁÚnwÁN’őđ‘héě]ĽvO›Ýą`rŸňjűpĐ#Oźő,PŤZyÁĚ*“N‹â_|ń…Çă™;wnj*ń‡:\Ţ Ď†Qá\Á)< Ýj/˙>Şł^yné↪Ő+~äđ#2ŕm6dWaPťş ;ăŢ›‹ß{¦bë˙ô“˘ÉĹ(Ä-˛62ľ±6ÜÝvĐ—·Ż"ëEč;Ĺ\ťyťťň˙¸Âžţ2¬4™Z?› hŚšČ´Ç˝v+cL)ĺX‘– Ϡ̨™Űő·7‘7šžZ/;›6¤Ţו”„~şŕ»WÖŹď(˙úőě_ţŔtć …Ŕ?®ă˙Ŕ,•`áʰŇ6BA]_E#—Ě8˛–„[‡_Üţ8 a×7dw°h Dˇę*J('~˘ě«:_ĺyxíźt>LY€ÂY?ýٰP夶̆ˍAh€ŐáC’zÝ…ĹďţąüóÂ+öČAuX§čţ}*‘¶¨ŁLäŻsx§ćK¦mľ|¸śéÓsjěń8{˘t…"3·řŞ«.A •VŻPŞI¬)‡’ä,úŤ‚sbľz„xŘ!ł†s˝Ü$°Jpp8üěH#`4 7ĽĐ o7ŇŇqěÜ ¬¦€đč(‹Â÷:uš‰x×±Ĺ#¶µÇăójR+c¤‰sçk‡2¸öĆÚÎ@Dˇ‚çĐF"î pŻă–Jgîź—I–˛Ń€~Â(ƆäuWÝGSxDhlEQűú›âŰÓ˙`•¦FmzÔŁ /ű+ďăçβĄ]{!+7G.Ą [­Ü5pŇh@ö­;i.ĺÉł|ł'»€_tóI •,qč+)!1‹‰Ă&ěb‚ŁĺććççŁ,Ă—_~9oŢ|¤®łšt˝ěĽ);ELH8ŇÚLQ©Pn‚ءbĚQ„©–ddĄšö5t´Űťb\’4_ą˝fáisÇ•]»`âžşö®^7 1Á0ËÓ+ §Uł{ĺ•W°„÷" ŮŻŮ6c¤'KŹNO!DJŽ(żLśZüóQRôł-áđNbQ~˘AŽ .Ŕµjł˙`=c&ĄHąô+ŚRüź?Ň0U|(–ÇşĐĐçGa-ŚÚ¸“ćs˝ç­ŹŰ~ő,ĺ4ž~2ÓńG!t±äýżtţő c‚$}đɢ±´ürülD~ÜVr ˇ…ŐşWmaěŚČ(1 ëĺ {Ţ µJqtţé_´?=+‹˙‡9…_W‡ŹřĚływ÷KoS>DÖľü8ł{·î±żąĄ¨ŞlDY âlbX…:$öB286ĺüy€#Ůiâ Mq>cF(1˘ž‘µ,ŁţşűX%TaÁÔ©WźË†—7¤ďt{É ÷ăĺČ$ČzŃP˘™ ŃÖ–ŕ=ń-+­tää/ŕTnGˇşnr˘Ł|„ůśÁGĽJ©ßIŮ!R·¤„H-&)úĐW RB„+‘âŇ…ˇ´ ˘Ň›Ź]©ŚĐ mJ tp{#vĽŢPâ•xŘÁĹ –p’NŇŮŔÜ8G<ÂČŚ¨Xó-›€s™#a"ŤíH;’fŇĄú=•`•u¸Ľm=?2‚hő(yĂ ×—”ł 6Wďîě´*ĚËą×QA6#cć7â÷ň9ĺö)®Ăډ?p˝‘ęÁ»e7ÂDub>{¶¶(]†iă=k·Q<ůëýtÂ#‚Mí|ó‰ŹÜ‰J“‰˛d 0 ČhS…Ü8Ž4 eI$ełždBŘĺ‘ÚW"t(Đh4"u|ëVŻ^í÷{ól©ŁK˛Ví¨ÓjPőLň€ŠzdN·©Č^—a5ÖµŮU)"Cđô¸(+ud><ÚěmvWRW îu=îĹköN©(9şdzUá'ö`V“Ę)Â…YzůĽqVŁn÷îÝK–,cÝ‚ AŠ.=ťäĄ„đyäö°hŔ»cC= nJx–Űů,Ďé )ŔćNŐO¨&upî tR1Łö~’ŕzţ˝ČýU´N(|ťŕ!… bř™Ž?Y$×[¨ŰÁ†N =HL ‹Uq%˝Ü(âm÷Ú”ŮńߥĆ9“téÝ´łűŐ˙1 (úÉÚ´ˇ;Sćoq|° ľl Íş@ mřÁ1~űëÂVÖäeáI5ÚŚ.Ú@•ŇĆďţĄKń<&2żž©p 1PńK‚bůt$Cĺ >EŘN\W±ń)껦<®Ż7šĎź=uç1´˝ü§ô¨5ŃůçWcÄZÄŞÁĆđž"hšŻ“ć{Ďć@lÝ/żË :dTôŐÔÓX!â˘Č ą…—‹~ÜHĎşíTxëCOŰşŕ!rxÁÖNĎúmż{™Í«źX‰ö ¶Ě$ČŤÄ5¨®ő‘?Ąßq5@ę#ęF'uűHę¶xD…@i‰/fXVÂ.“”´¤č 2Ă˝N—Yp`űĆ’ŃSô&é†{]^Ń-7߸eçĎ{\•Öô»jDĐŤvdˇ4¨x©˛A;®f«†„$Áęđ oŞăbcŮöřŤ(<”Źpvň·CRćšeŐ™ ýĎ!±®ÝÝÝëS¨ €ôÎ\p&ë,–¨S6ükěvHé (ÁľśsY<Ö ţČĚJ |*k F¸‹ĺ˙ůáÚ˾Ǽżcč©¶˛,ď?Łmř&;?YÁrŐ5âĹOGřą-k@Ö@ Čh]ĺČ]'§âŰ+‰›­C×Nü• ‹a<¬‘ŕĽRüz˝ĺS?˙üóýű÷ďÝ»oTŐ9cKVďě÷-’ʄƎ¶"USŤşĘâěÍűš„ś°BµjĺŘŇśŠÂŚúöží[aŕµ'‚¬-Ë·U_¸żrÖŘŇN޸żAµFťÖĺő5w:§WM«,†ĄüÜsĎ555™ÍćsÎ9¤@ŚAJ'”5¦7ćTDśLn 0\ ö”üýŢa”¨oÉťPI ő ęč]ôeśqÄ»ŤsžŇŽ(öő…Ż6Üú abĄ{ý”ଡkŕŕˇę˘ĺZx />‚7Ó¸j|"m#<$ă®ëdăúb-r»Ďšeś6•V@^łşËż/+Eńmß×psěŁox)˛Z±Rńmcąě¬.~@.ŞÁ^~¶?Ł'®+6$Á†něHÔrĄUY‘ź®fÁÍ$*@x9 QXŹ'‹AëŕĆČęŠ$8/ź-ăžŮ…[ÁÁą×ó{ŃFÖĽŢ÷—R"~ Ŕ.ź€lý7Ŕoqču<ő^|Úä—ÎĄÜN|Ë‘…rdJ‚ŔçŞř­§d>nŮâߤNzcFôşHé ĆhémŐîŮ\yÚ\:Ůëćť}ÁEgţĆ{źjt&oŃ®!Ť’”kÁş¸˙‰%FZÄ—4’–#Ҩ€ë@Źëb°a'ý‡´č´(HÇ5đ†SÎĹŽH$1łp¬3hsŕY§R!@ýX‚;<Đl÷DÔĄ¦°°đ¦›żYXTHĆâDějďě )tJµĂ)TG#aqŠHXR: Ş•Ň •$żËŻÔ_*ýäE<,DŘPG˘^: 3ľwŚćŔŽ<EŻ?Őńô?a@ď}L>ľxÓnĽuŇiVY…QĎş¤ćó•(Óe ś4Ńş“ćRž‘˛9ަUJ-µôËb¨ü8ł°ëťźŁUUUYYYÝÝÝ«V­7~ÂزütłÁq G¤„Ă)ť×ćŽůG̬*\˛~ŹĂíŹAâŕX‡"ł“GćgXLëv×ďŞm!f'±{“8 Óí ľ·bç¸ňÜńĺysÇ—e¦šđ(»©ŁÇéó}ë˘iifýúőë>üđC·Ű ¨®¨¨Ő— Ó$®“Ä9“Ř€Ě:X Ř`‡Ă8Äĺüć^*‘qmż:@ŰĚĺ{ü±™<›vˇ'ŚÎ쇿Űř˝_Š–Ž…mŠÎüşl8m¤ß~Ś`–#îu›ĹJ ÓÇÇ`—„?ŕ¸r1B<ÍĽďV ˛ˇö+­„d9/úł6ÎŘÄuGhň ćüúž–˘AÄ€íbu˘Tf?t,ŞÔđňíÜĎ–‹ĎÄuvšlxeĎ›óăjůpĄŕń‡ß0”(¬/aś9)űÁď´ýúŻüQ±m…"ç±ęGŹ}[Ž•&ź'  Ę'Ŕx¤XâÜz†Ĺ„HjÝR‹–•PáRSđ×™ăOŠŁŔo9CVŃľÍë FŚ5§EżŤÖô›nżmÇžý[vUë VźËT„‰qO㬝Ż:®î×$žÖä›X­«ÔřR&ظ(˘‡€< nHë…¸ů‘W씉ăp:nM\n;neČRb3fZőě†PGŹŻÍJQę‘qř–Űnž{Nú­Wň+„bŮ˙5ěl!łB ®q#Ňřôżű/öÄ;)]1á 6ćţá§Şě !żnü¨ÂW~kš?-¦+&Ńž•šJ9Ąžçm÷íŽń ć]Ńż·ÝůŤYđŮH»é2|fPDv!ăˇńô)±lpľ»íĘ’EĎ›ÎvbZ0łtńßSŻ<‡ő&¸e˛ZµH.&‡6ŕVC‘OŹšŘ-IxC‰łţ¨vśQ®±ěTČ)EaCř )f!ťŽŠˇ(¤r‚-=FH|f:)ÍTK@©Ţżék’+Ž;ĺWMúÝoßš“‘š‚‚s(A=#Đi‘wn-„JŠ·âžkŠőˇX+š”'ŚoEy–yářĽË¦_6˝đŇéĹçM,¨*´Âń-B>Śĺ’ԑᜲn¸EŇMÚ’LłI§ę[YśÓލڎ””Ë.˝ä˛Ë/K·ĄsKX®Ůą©˝ł'¤Öq°ŹÍqoX‡×QNĽÓ˝łSJů r[Ö€¨pÓA %ó3ŰÁ©ÜĽp6Đ7!TÇĆŞáŘ>}BęĺgŰn» ŤÓĆóˇ:Ć&7d ČŻxvü‘rݬ٠)“‚<:Lř8N„ b˘CD‰PFâtťN7~üřĄK—nŢĽŮßFŤ;w\éúÝĂBç^źý{§V^5wěćŤíÝNĄŠ$IÁ`†¦[ cJłsl–µ»ęvÖ4a¤RIřBő3rs…ţ·jçÄŠĽ1%9čpű5ÍÝ—ÎkÖk?[ňé˘E‹€6^rÉ%ĺĺĺÔ±Ntű˘Äţi-Q~Q˘`(! 6­őgč]Ľśß‹Óö§^ĘüŃ-°Wřtą-Ô@Ů築˘dKüŃkáKʉ ‰CÄ'0űˇďŔőîŘ겓BźUĺôkÇĆE,ĆŚŐŹ…Ĺă3ňaęš49úń•šBňŃe6E× Ź6ĽmŔÇŞđźO vŕ/˛ŃiJ ‘˛ ]•ű>Ťá<ěTĄĚ~ô»YĄPLVťm™”gYé‡Ď&đđŘĺ•ŐźN#’ŇUĚpčJT-Ś ¶> }˙ţZďΡ֠ÎĎÁ(üN`<ü?C˘t “Gó{Ń–zžŹ VáîŔ 7ë§ß¶}ď˙ţCľ˝‡"Á ~l…nLVô"–Ż)bN‘¦°đ…ß Ţ1>řŰ:U¶4d߇|bqšČ–1{ĺţ%± ä=ů^˘]2ńXi@ę>BżU\Őń dpk%J„*’˘'ŬPŞôY%Ő»wć–Vć•WQµë Ćł.şĽ®öĐźţöšÓ§Đ†ó!ĚeVŃO<ěءuX#Ć'IŞřÜ…"ľ0ʱ†kĐ«'§O*·ˇx=@4ÔâŚg5jrÓĐŁÜQo÷¸x2š ‚ágÇ•­(Í6çŰŚ„ŠXTŠö^˙¦zOŹ;8{ÖĚ;żűDÂr}x‹´6Tܻӓ˘KQiŔ ”‚°2”;ྣoůWJW|ą-k@Ö€¬YÇ•d´î¸şňbŐ€”Í‘”á›čdqůŽÄJ¨•wÚţN©ôsđZ”Á°•••™™™===_|ńĹ„‰gŤ)ÎN7w:Üń]á`Ą6uőţwĺöʢ¬ń#ňŻš7ţí/·u8ܨ¤†I𬸠3µ<Ď †wŐ¶Ő¶őĐś)Ľů“hj4ŠŐ»j×î®;kĘHťFµ­şiTqÖü ·ËůěłĎvvvfggŁľŇđŃü,x‡tĚÝĹźF¨1!%ľŃ^8ĐŐ]u7ż‚'cCö_?¨iDX#ĘŤă_ÇŔ+Áuř2Ľvx”m@‹$¬Ä0yL’†Ęž”®’ť n@Kńp BÔě˙ęŻď‘zÍůIř)ęŇâ• ż Žx%(!ń- '’)'¤î>˛1˙"JéMjăWŞuj[޶ŐKSłňŚ–h=sŞíÚ[żŐŢŃůŻ7?ňéLŔµ>1(đeĘ=¦űˇ€Ś k%f‡Ů…ĂWŐ¦TäO‘ˇÓ©­©:ťAGüt#(tôx'”ŘĽđÎ;Ě$2ŠűŹć§ŔB›Ą2/Ő¨Q… rPťË\¶··¦Ý…Ľ%?ţÉýUŁ«5ĺîuěݸ˛Ű kL(ťAĐ:b‘4Ç8Č6IaŚţ”ÇR ‘é˛d Č5pBh€<Š‘YÇŹ`jGb…˘x$ćŠ#“-#şdcBâđöT7eʸ§ˇ¬ŞĎëÍͰN­,@Ž6\ĽˇP‚Á5»ę_[ş) _wÖ¤ď_6{tq6ž*#Ę©™â•çgÔµuďŞmu{ýś•+.i@*ĚMż?üÂGk«›;aŕfĄźsZ`»7ŢxéöŔ™gž‰â(n»eË–˙ýď˙řÇ?^z饏>úĄ'Đ#źiŤ®8§tT~Wó=ʉBuŚÇţÚö7łXVf@IDATSą!k@ÖŔ0j ěóל{ű)W 2oT¬Ze˝bŕ*øY”¬¦ţM‡µYďđ6üĆđÎ_›!˘hÇafśqxbşč˘čé€ÂnéRsz\ţ]«?Q!¨›[tç=?ĽćŇZx©éĚ˝%HBbÉfýĹŔÂD"a°ä?Ú…Ţ˙ąHX±´Ł Óŕř›šn0ôŃz…BoФٌéV]Y¶%äEĐ+9H,QÚ,úqĹéY©zB!P]ŠĂ\u w_łŁ|ćyhęôé,]](čßżeuSKk@mT(‘±ŽŔ‰X Ś:‚Őq~vŞăvĹÍÔ!p*Ş1™(k@Ö€¬YÇłpB9ž—.ŻMÖ€PRć1c>Ž­ŃŮ…D!…íOŞ‹O‡KÚôéÓ—-[¶uëÖŐ«WĎ™;îřňĎ6€ŮÇ™‹LXlšěőx˙·rg^†ůęů/=}ě”Q…_m?¸yŁÇś2˛ ĂjÜĽżéPK¬R¤jIJó1“!{ň†®ż}¸ú§×.(ȲâîÚµëĎţ3\!vÍš5+W®D­ ÔšŔ)}ň »Ĺ‹ßrË-Ó¦M„“[_W”ŠČřť_®uŻŘČNĄ¨ţ‰˘4€NŠG¦Ë50 Cţ}‡řÓn¸ľl|ŠÜ–5p˘h@ęv“Ô-őŘ ť}Dzů„B„vˇ…]0Ląĺ5v[3׌ś4§`Ć{~ńÜ˙S<}üĎËĽ) a>O/Ę«˘^jpfšFĺ[4;jŰ]pi3j•Ĺ™–4ł¶Ýîm˛{˛¬:Ľ´5ŕ9â<×w"S«Up¸Ë°čŇ-şćM :^zR©mD®&*Iië ¬>čÜŐÔ;ŞrÔ#?dŢĽyH]B…E¡Ú][öďÚîQj-ý$Ąi9şčś¤ŕwŃQb ťP'ѱň?˛d Č5pśi@F뎳 "/çČh@Ę49~ _Ń}‹.[”áIŃdUTT·´´Ľűî»gśqĆ”Q‡Ý^Ó˘V €l"#KInZUQv0„[vŞţş3'^{ć¤`0DźďfYâí©mßQÓŇfwÂ@˘čćąĐZ«I‡ň·şŇE®=—˨›mooÇĺC­4„Äćää”––b=6l¨««“ ĹH]ߤt%ĹĚ_µăý>w>UĐut»żŢ˘‚™ k`4 ZČb䞀"ô“FgŢsÓ ¸pyɲâi@ę~$uł•uD…$>ŁÔ2’˘'ĹL×])5:}Véöµ+ –ÔŠ±đ"€ťŞ°lÔ=?}Čl1żúöG=N…ެöą{ýA_šŮpĹéĄă*rvhHČ;LŢ܉ůFş­Ë˝zg3 ż•ÓjPřöN?ZGÄ*"*ŤJŻUˇP,\ŕH ®,¬EŻ™6"claš6‘/®îô­­vÔwyËĘKźxâń©3fŔ¡kFYЦš}Ű7®ę i#Z„Ůr †č0÷L”ÚXŘďpB"aéÁťR’Vb´[ţGÖ€¬Y˛Ž? ČhÝńwMä‰if‡YśĆ·NÄ9†•*µ¶A/ÚX ®Qjv©á”kłZ­3fĚxóÍ7—/_^SS“_TráĚŃ;kZăş×»°Ş(ë—ĎW–‹’˛@úüřüóĎGµThU)50FQbtI.bf×î®˙×§7W7rö«ÔŠÄé AhÉ÷Żś}ṉ́Zµ †,tĂinöěٵµµáĹÓnłŮLˇşÜÜ\@x´víÚ«®şŞ±±q۶mčbń#âsôQ“Őa߸ţ˝›w÷źÄmuţő ÷†íqYNÎNԦ̺÷ć“soÇtWÚŇ‚˘·˙D—€ö1]˱ś\ˇÓćýńg(ˇ´šI Š1ţ>–Ű8Fsw˝ün°µăHOîYłőHOqśËOö^s”?Ăq–7¸•@`™1+qN60©!|flGmN …ň7.[¬73 Jéáa—[Tţýű†G€/ţóÍÚćNť9=čuâѤ×ö‚?j»¦äXô“Ge¦Ú Çr˛•=™{¸PÖŘG“€Î¨őŠŮŃ aą ŘLłnÚČĚŃ…©j•Á´vO`K˝kk˝ËĺO›:ĺ{ß˙îŚŮłIˇ î@čl{ăˇm«>·»Ă˝ŘbtµÄŻŽ›‘ t0ϢŠA/ŤŤeŠ’˛d Č5p‚j@FëNĐ '/;žř6źŹÚ7|Š'ĺňóÇĺvüĄ 3 ?ŕ­9sćqCę·wŢyç~iD~uuő“O>‰"úé§ź.++»ćšknşé¦ÜĽĽćÎ^xĂĺ¦[N_ę íNďÁćN¸Ý ‡ D.\0úĽiU°e·T7í8Ô:±<U&&Lž2yĘit ö»Gü»5eâĉ@‘şÎéDM·Ř0%s$β;ěݲŻ™O&6eŞEFëŽÄE%BăÔqGBň‰%~…ÂŇş'ÖŽájď.ńí:pt 4ŹÎD'Á,qîA1öINč!†ůŘj&ţR…kKŠ?†9ć”/–Κé ú×ţÁ´…—fćB  ¸é®{ĘFŚřŰß_Z»yoDo†Co®¬[»»őP{ŻÓTk”Źĺ҆Ŕ¨P &ŚÇôűCx™ů8«vG(öúC.oŔ iÔ ä°›V‘Uh3B‚ËÚ×ćT×h÷šMćk/;÷[wŢ9vüx¶TxŐu4ŐnţęÓ6‡/ŦT¨°)>ŃX×>śŽŕv}piněÄŃ›HnČ5 k@ÖŔq¨­;/Ę©ľ$)«‚"GMAC\‰Ôp¬?Î^DG ‘H5#ŹmńôxćĚ™ź|ň J7|ăßČÉ/8wjĺK‹×‰ş×Áö+̰ŢrŢÔyăËđ=óĚ3pĘŁ’ĽŘPg6++{o]ű‹‹×mŘ×pɬ1ß<{Ę„ňÜÉ#ójŰş¸Ůěľ™Mšł§Ś4ę´źo>đäż—µuyҬúÓFŚ+Ë)ĚL5č´Čţěpy›»zQ”v\IÎ9ÓFˇĹ×_˝˙~tĄ¦¦2%Çlś˙ů‘ę’˘óÇňŰŞ4k¸%ä> gŢo<ŕ¤áĐČ·›“ćZĘ9Ů4`ątńô)GaW€ęŇľyÉQčxBę>ÂîMGm‘C_‰¨„ř"$ )L-R]˘tQ"%l~THĎóu5­űôýig]’UTFsŘYk0źyŃUĺ#«Ţ|őźď.ZÚĐÚŐíS¶Öy# jC´t»kší驍Févů«şw79Š3ÍfŁÖëA­†VzŔ 0ś‚°×lsx;śŢě4Ă”R[e~šQ§rx‚ŐíŢM„ľ‚süŞ›nşń˘K/IĎČd«EąŮ¶†š­_}ÚÚăI1ÚPĚ+LRŽ Ňş'Ő$€ËĹŕt†Řod ŐŠČf”˛d Č5p\i@ţůt\]y1ń4 e^Ä·ăIlßĐW"%!fE ˛ŃQR̢tJ4 óçĎčvčĐ!„Ä>đŔ ¦ŚXł«vŰÁ<ţĺ/̲¬¦kL>oÚ(¤şCÖçźšGRŕt&Lřáxá…¶ŮÝď|µýëm5^pů¶jDËž1±Ľ +ÍdĐYKÜ»Ń"i¦¬4’«nÍŽšî^źZ›Ňëö-ݰ˙ł ű9C•xŐ!wLEžíÚ“ś6RŁR 8ě}÷݇şYYYăĆŤ)şwě+Y:_˘mýäŃúfŃ®bĆwŻ—óÖĹčD>•5 kŕŘj ăŰß8¶ 8Ąf—şťpĆŚÔF„W3qNŚ•bĄ‹… `”~ŔsÚô\_wËęĄďO9ýś‚Š1JUô—ec&ýđáňÓçÍý÷›o/_µ©Ë®HŃéá`—ĎűцĆ.‡ĎfŐ5¶ąÖV l«ëδę#ťn« ˇ ZęWçó‡z{Ľ.·é즏Č.Î4i5ęö^˙şCÎýíŢ6‡YěŠ s/ąđ‚oÜpݨĘŃ~ë;¡PSő®-+?ďpS (ŁDIÚ~—:E »>^Ď‘Ďu©#˙bŁä„ĺCÖ€¬#ŁH0ÔůĚ«T¶Ňh°Ý)ßIŹŚ˘Om©2Zwj_˙Sl÷1VZ"»?Ţ ťAl!Î6QkůćŘÁ˝î_˙ú඲ŠQWÎ_ÓÖĺr€”ѱ€ę¬Ă…łĆ\9w\OŹý˝÷ŢCč+ŇŢMžű,rŐá‰6 ş… j@HˇK˘K/0¶Ç|Ć ăé§±{ylwßyćý·)ő<‹ĽŹ.˙;\@Éŕ˙ţ÷żřŔá€z#(H‚0m*|ôčŃp&®‰d9˛ŽśhJP”îąôŇKŹţ˝ěČmí”’Ěî, ^AĆŁĄ‡ÇŚĘép­r¤D —'Ĺ™,]()!´ ŐÖ o0ôőŇO:›ĆĚźjËRi˘őXˇkfî9WŢ0gáů»¶lřjůňŻV­Ż­kr8=ţ@@ŁŹÖ…ÂľPhEµłŃ‘‚pW,ŔçaçÎť§Q@É+W®Ä‡„Jľűî»e´NTÉm·Űí´«¸¸ľ(ۉK<á6ݞşş:@ĎĐ9˛‹Îš5ëÄUľĽrh@ę^#j56ÄáLŕĐĺ$%A”9qb˝ …)î:fŕ-Sz¦˝×˝ríúÖ¦úÉsŚ 7Ą2Z¶Ł)-cÚçž6wÁ55űwmŰşeËÖÝ{öŐ54wŮŻČ](’r°;x°‹+rElU’UNŁRę´Z›Í“ť9˘ĽtŇĉ§M›VQ5ÚlMc‹¤ ”ĽŤuű¶®Żolém)j>$†Łéčú,XÉA]é¸yTGČÜA1ŰŚN$aŃ^ů]Ö€¬5€Pz…Vńä—Ůd B‡ý¦Äxy¬Ł¬QË®Ů(ń—$%!Ááń…'Ő+µ’řB¤F%KgłP÷:€ëׯâ‰'ĚfóYgťu×ełgŽ)ŢŰŘQ”•6łŞH§VřxôŃGÁ 8, ď­oyńş˝ đzó‚J•R­TšôZ¨^4sôü ĺŽořť/9Ď:ne6‹ 7A$ˇ{îąç€ľáç+ŔźĎ×ŮŮŮÚÚŠź˛¨&qđŕAřÓä^pÁ@ůá!Ö SmHÉáł©m©%ď?Űúł?ô.^Î§Ł­02t‹í¶«bčňéđj`Ďž=۶mŁ2á_9ĽÂObikÖ¬Y·nÝŕí·ß>bÄ“lł'Üu:Ýé§źŽ‚Ý¸xŻŞŞJOGÖ*ů8Ů4 ugIĐâđaÔ¦ÔJâO!5*Yşč,É żJĄÎ+,ryü›÷ęč|wĚŘ˝Ł&ÍLĎ+Ôh´¬úćRŞ4Ecđ:űŇ«]ö®Öćú†Úú¦Ć†ć¶V{—Ýétűü><¤„»ž^ŻA•‘‘QZVV\Rś_XbËĘF á‚Q䑎®öÚ=[íŰíđGRĚYv'žvRüŤ~*đNęH§T`”Îť0bĚ\Rj‰a“Oe Hi.ٍŔ.Ő˧‡zzc©łl|bü6ůÁ›‘Ý ‰3‡Ý$•P$ůë@P‘*ˇÝQi€ęĘWżńxÉ©JrŮQEbzŮ ÜťĚpâj@FëNÜk'Żük YŁGĘxn’“.‡"Ž Ş×\sM[[ü’~řařtś{îą3Ş gŤ)sOOĎŠµk'‹€Y$ŞŰ¸qăgśQšk»dÎŘŤí=.8âˇňÍjU”9qD~†Ĺ€!ëÖmNKK+Ż%íXgŤ)6“‘° ÍÍ@ëů¬Đ$ 9< N—źź?räH$ÎC=Přl‰·… I|,źSe5ç?ű¨w×ŢE_úvW‡])¨kąx°<>§Üv ŕ×ŃâĹ‹©ŘÂÂÂŇŇŇaźB(kŕ¨i`ĆŚ†ősÇŇĄKáň|Ô¦–':Ő4ě0qcšLVxRĘvá0*FT”ď ÷µ6uŻŰTW[=rĚ„˛ŞI©ŮąjµfyŔă,ŮxUŚëKG …dˇ±âs%ńô—ü Oô\"Á€ÓŢŮTłŻfďŽîgHźšb2±ŔîÄqŐ_IŇ:¨ťÔźŽÄÔ’µ0÷şh'§pĘ6ěĘáď]nźjč]˛ÂńŢgľ=uÍ NSkś9)ýŽ«´Ey1Şč]˛˛çő}{k‚­čR¦ZtUećsć¤ßz%ůüö=o}ě\şg Ť:ű—?@ęgűëúëšŕŽ ™ŕ·ÝuŚjĘž3‚ňÍ]űŹkůz¬$ÜëRä&V!eMÚuö-!ú/ŻÎg^ónÝC8a·çdhJ Áfąp>EîÚ~ő×PO4§ Ćř5¶>ü´¦(YęG¶üč *H™jÎ˙ÓC|ቨ"ěń6ßó8eš? ?:~˙÷Úma»CeKŐU•ŰľwiödľXüi;Ţ_ÚýĘ{š†°ÓŤ.pę'T"‚Ç|–ě‰ĎWŐIŇ–Ńş“äBžLŰŕ[üoö÷ČČgNPÔp**A!üy‡˝-şBQ"¦–˘‹® ŕjn˝őVdŰľ}ű~đdCщĽĽ<ř˛-[¶ Ѧőőő€ĂöíŰ÷ŘcŹÁÇmćĚ™ÓFćÎ]Ç7(ÓáŔOKtíرfW¬X@ëŕZ':i"¬Ü4«Ćn{{;R4Ă€ĆjđSńŚp¦"hG$#ËÍÍâtXŚPľ(QČĆ(ÉňÓú1x1!răčh`ëÖ­Ä4Ä1wî\Ú}ÇeMđĎ×ÂŹ–¨LJ„3iLvfÚ•ŕb’Z €Kç;™¸ŚD<6?˝Dăđ$¸eě ?ţđńçGíÂÂđĺ3”^L‡OE‚ ¶)Uc1¨—Íؤq–ŤśS§N]µjƢÚ5ŔżXJŽL?>5Ŕż$őŃâäo-A!RĂ©¨…đçö¶č E‰ZŠ.ş*)ćÄéřË­¨(dĐŮÖîlr·t­<¸{gYĺč‘c3s ‘Ě.x’ľ?řqŻ;Ň]%·+|«^GwGsÍţ†ę˝ťvGHgUXrňEČW8ĘżâZt‹G|ĄS»yę@é %L} kłŔX:żÔöiŻü.k ŽÂ^_Ű/ţŇófôi(8#nŻß!ĽěŻ}PđÂŻÍ fŇီڞř»ýďńĄ…{z=k·áĺţjcî~Ę]űöÔ8?[I9ëy6’&ôđ¬ďzţ?ŔK?ú;Íőś3„@BÓ~ăŰu OdJ°±µŻĹË˝[vç<ţCć@ç^łµůŢÇ)°H™-xyÖlÁîŠ^˙ŔDű›aËLT¨˝ Ŕ˘*ÝJĐşpص<š€*Ś'qUUdzđ¨ ˙ţĺPw uő¸WmĆ+÷˙îO˝ć|*Oo{ČőŐz6ŕt}ą/Űw®ýöŢ^Ż˘J÷Nr2Ź’ $9ĚC„Af°[A›{•¦±ő~¶ŢŰÓŐďző»_Űö v·¶s;ŢnôçxEp@ć1€Ě2$@ dĽ˙ý>'+•ÚUűěýľgxs˛ö·kŻZµjŐłßśZűŮUµg˙×?‹\8[7nâHîB.ðԤNç»ÄIża`Ŕłgލ_u4ŞR¶¬Đ‡Ć</^Ľup—^z){óń‹_üĘWľÂÓ/Źť<Ą“żÂܱÎôţűďgI,SđŘJéĚ3ĎÜgź} ˦Nť˛ŻŻXA)Kꮺę*–©Â¦µÍđu‹YÓ§ńQZ¦ű‘Ńî·ß~|1’‡¬›2e Ďđą‡á°S}Ż.J:)+ĺÄĎÝ€ě°Âŕ‡Á÷OĘ!ńŹëżřżL~Ąü~ćÍ›·hѢ#ŽŘ2'bK"čiv:űă—iÂ"DHa,m5"ëŻůg˘LíÜ˙ýůŞ2ë˛×®]ű±Ź}ěÚkŻe#E•˛:=Kti”ß-Ƈ~8{ĂACóďh,ëž5křŘKDKŐ‰äĆoÄ9mńOăěłĎ†˛ä ˙ů 9sćLp`ÝzĹn}DĹże‹?DŰÎżî9s㍠wÝu“j‰SßëŔ˙äń|ÜqÇőűw$Y´.?ĚŢ%ZfćŇwđgV,rČ!*µ3_~ůĺÔâß>dM€|XÚŚ`fŘnă‡z¬řç µĘ|ŢC=”uń|´›~;HLaă-[¶ lÇT(W¶PČ[d~`x“’?GĽŐ€J[ąr%ßÔćޡç/Ő5×\Ăű ~<Ľ´ ţň’`TËÎý†-Kć ‹­#0>7a\ŘîČ ýţ# {Ú%NraŞuaüČ(űŐAŮ8éAöIă¦ör2qҤ˝÷î…{öŮ•+×OZóôKËźżqú·í1oĎ=÷ŮoćÜ…3fÎ*ŢSŽ)h;벅]!0‘އí 7Ľ´zŐĘĺŹ=ń»ű—?ţŘę—Ömž4}Ô´Ýá‹Í*n[ž®ŕć ®@ŻUX°xŘ„f’ŐşÉeXĐ”•1{ŃŽŔŠüFHŐmƦMOĽ˙ă ňy¦ÚˇÇ2˘ęBcX­'˙Ë˙·ÇWűf˘…E!Ugz¶†ł›ő˙l ýó(µěý©şĐÓôX;÷’żBąńŮçÇ_1ó.40ůĄîxęźÝő#›¦ľĐĚ•K6±üüăÔWźÔ3m Ą+˙ů[UV±ÉÇ>ĺ„8ł m\Ţîp¶n»»ep@.Ő°ĄLÝă$m.¤>©ĚyNbYŔň+ž˘Ż¸â fsđĚĎó'Ü»®Ŕ&đPĘü;bůKSˇ'~üă‹Ëŕ ÂĂ<B4iĚ–7ŔÁ„Ed٤Ŕ3‹ąucxçqšhZ“zrÝLę“ʰ­HNÚ'•QEż^ Mžxâ Ĺ·ýĄ˙ć7ż‰™dč66j䀨‚± qhF adÝ€Ă3Ü…^ÇGżIHŮđ‡žÖ¤á_ —dX$[Ç ń •ˇö–·Ľ˛oőęŐ˛ä€0zç;ßitÍH †¬-B˙É'gH±«Żľ2Ž©˛h6ô &Î.ÄýAŐqĐMţ™‹02Ŕá_%Ľ'Ë3ˇ ­¨,@PßřĆ7¨%đGĎA7ůdŤŃúLŕýÖ·ľeźĽŔ}t„Ŕř5LśµwöŻ˙úŻiţ^ńW Šśßő®wÁWVw»ĆgsBиYĚ †hł;ě0ůj–ĚškţBZ»ÜA"§9Sâęó±ÇcŞ˛ő±NŘrÂźbŕŐO‹» Űh€łH\čfrăKŁ{Ý=NrPç"Lę“ĘśgôIű¤2g\vÎk‰ŢŢ…=ŁÇ<·jŐć1ăV®˝fóč•<ňŔCż›1}⮻͛łÇ‚ťgí6eĆĚI“§°Ť×ŃĹ7XymRĐj“ĆŃú.lܦM6®{ůĄV=÷üŠ'źyüѧ–?ńÂKk7Ž™°yü”Ń3főŚé)Ś63Ă·¨©»Ďą8ZîŠî´Xş˘¸uŘź”ÂdKµŞ+tiç˛ĆŠ\p’0éěŮ/ô˝›Ä`Â{M{ÍÉź[Í2LľŚ†•«úË™ôĆ O­Xůů7'Ü{ç ß0züxÖĎÚě3h¦~uó”ă73XČ9ýő§1Ń žËčłµ·ÜmˇPm ÷ňť÷őŮŹ;íŚ'ĽĎ‹żşůĹ_Ţ$%›Ő¬űđE¬·]qÉÖ¶FŤ;ă ż7~ßĹ‚ß-“ňçüŐ{ŘâfĂĎ,˙óżUőńű,ý_/ťźőßc{vţOżO,~áŠbĄ0ÇfvÓĽ˙‘IKD^ő+[şâ´ë˙|˙ÔÓŹßôâZVćŇAé×\ůgë ˘‘!8[72îăČéÉD2źP:2rúôDýMö:°jGlĂ'4ÇÂ… ßö¶·ńyžśyÚ$ge†Źîzŕ?ĺ”SVĂ<«<Ů2…ŽJ‚DîˇĆ.So Eô]č[ű®ÔďëäIăfL™Č;k¦Ř° c@~mR?l·FŕD¬u毙 FŐ…J¦zi:•”Đ!UZ˘ç‹É0_ˇŮć[Ez]UgĄü“ůň—żl—&@ôÜrË-ĐĺŇ´IČ:™[X$8»öľą Qućę fóío{¨¬ŤŞ mnľůfţĽ°¬ĺ‹/ľ2ĐŁˇÉpťđhpĚđEÉířö·żRuf‰Hlvˇ˛,ď{ßK‚Ćß˝˛q¨‰¨:ž˛ &¤ęBcfrÓĎ?˙|”ŤÂćŹSó w©(*–?Ρg—»ň3 Y7÷š.—{ÝyŔáÓ˘Ę9gmÁü…óÇ<úřš5« ţ¬§gí¨ń늌›ž\ő»‰÷?8qÜÉ'˛íďô™ł¦NßyÂäÉă'N7ŽŻ¸’Ľ_‡ŕ Żë7¬[ ăľęŮUĎŻXóÜó/ľřŇşQŁ7÷L5aĘči;ł±]×&Śűx:ň(´V[hż2OWÔj‘q…UDŐ«U´Nşŕ´…Ŕóß˝|óÚ—UuěnłöüÖßöĚ(vĂŕ§Ď^oŇżxí­°uĎ}óG}[5jÜ^{Ě˙ΧÇL*>¨2í¬Sżč/_¸ň72~ö ˙^fëĆ-ś·Ç×?©ąc=»ěôä‡ţZĆëNĚ5ë×xŐw~¦ęśwąřgýÉ…đ®ó9ď˙yéşb<ĺŔf—÷˙§çľő#]ržý§4óoB`ÍéGżI}Ů´j ĚÝÔW˝áé•Ë˙ĽĎ–5°S_uśU, ť@1ç#ďü‡gaüÁ™ťö¶őż[&˙@!¶nÝ}żłáéĆL™ő)Ółç#űŁq Çôťď|GzŁźÚ‹„ŔŘwRÔ6ĂŮÎz!KhH€?â€2¶Ž=őXuN)ß!…š”Śž­Ň…|dý©ŃŁěćV“­Şcf˘Vβ®“%¨r׳ÖŰŰű›ßô˝{GĎŇŃŁŽ:J,mćĂĐ’!OYX Ôěj' gWţ>pgaýĚ(⌿<đ•dö˘y ¶÷ľ÷˝ŠŤ­ôľúŐŻZQN`g~!đż|îsź33fźzę©\bđůĎŢfÂrňŁŞ¶~Ą8á>šçđGnJ¶/*F–šŮHÎCÍę‚kPťŘI¶Ňˇ2ŇmÎ}Ň>©„°›·ÇÜ'ź\ţš5-žŤ—ŹŁ ľ­7zÓčM›ÇLŕvŽŚrc‘¨č‹l3×’ Cž {pÎÂE±ůܦœŻiµjáŻ/ĺ&ę(¶§K}J'Ř~‚ŁE öńtćMĺ؆.:ÍX·enŐĆ/,vŃ1n·Ů»Ľç-[®Š˙_÷Ŕ#v9á€"‹°›šĽaŮS|Ő¸<é'ě»Ŕ zvšnrR¨6feîĆg¶&„+ţ>=šóY†őżëăăh…}÷B.oúY§$›®©lEčsěĽ9c&3SˇďHB1íuŻ|6Xqr^6E9'ŇçJ“M¸rČŕľ@˘Ysâ\ěŇh#AŘţŚImđ>*ź™"ž…^đGlT·Âô1ó€ü °rśĄâˇ™É}’ˇŇľÇÔ-]˛¤m„'ŮJŰ‹„%ę˘ęđź%źśmˇięL$4łăŹ?žŕuÉżDx(cëB3łO `k·†P!Čě®?«Í¶CżţÁ ;D¦ŞÉ--Ň;ŃdŇp›.ąäj1ő ÖŹIy8OĆ*m%J>%a±qkđcôeXĹd=ćĘŮeȇň ±/T„OÔě»ÇmmvČÖ\Ö® Ž€!üÓD© ťfY!äś4ň“˛ź˛FaäôÉ sĆI}R™t[‰śđ×o×]ç¬;–W;hDŐQkL±U;Öé |YAˇÓꊥ¬ś.`÷°ŕ’t¨°gz^aX|‹ÖęWĘ‹lSçâ/Ĺě¸bnžI03»DS-{Üę(޵í»Ţö˙Ô#ť·-ń+G ŔĆ[™Ż13¶ľ=*›˛*Ó”Ł'Ś3aĚ„ľüˇPň/fśnsŚ™Zµî6¦x«4޸jMdźĽäßdŘ5›34nŞlŠę®)ŚYĽG¬gżx©Í¶łđřXí“ú˙łzwç·/‰ý18[7bnĺŽŘ‘\ÂA¦˛CÁ‘ĂaAhÔT­Ă>°Íň8&×5 ë BdÎĚ©p|Pul Ĺ%ŇmÜÓF1 Vîjŕ JĎB´Ë¦B$`Ťv¨‡_3¶N[Úńăk?ůÉOX®hĚQX%)C ĺ¨:썒l|śŃIÉď?´I†ń’Éë(ÂĚXŹi2BxÉBx:e\^hÉţĚłÝßŔ? Ëâ©58hŃŘ:ĆŠf>m«}±eg7śrüđ‡?äľ|“Á@©Lö·Â2W”Ô'•´XSĎC&–¬(ܸqĽĺúRÔdĐ’ApüŘ13§Mâm4SźXÄÇT)VĆ©j&’dxIĄÚĚĺôA¤.v Ě?â÷¦őžA¬˝Jѱs¦L~ ”ÝÍĐ3'˨:¶˘c1&3ˇř\Ŕľđ…Š54úWo­W íERíłi){Ő٧Q»†>ˇk˛„8Ί$dŮЇ»Z»s¨1ÖŹ-öŘlŽ9wwß}7çpK8*R…©¬Š5'‘Ŕ;sË'đfá"YS†®]2/¤tßúÖ·ZQ(đ‹ŇeٰC*0\Ezvy»C b|©˙÷$ç¤sŕYß ĆąH’ú¤2wsĆőő9ËöÂ&™±Ó h;fňü{‹§×V Ć˙ŠĹ®}üĆ…Š™o­ĄŻ|"–ťčhWÉŚ.ĘJ<E*%x“·BdąÔžŽ"ĚÔSUÜjśż;ˇŤËŽ@‰‡8ęë?PéŞďý|ňńK¦ťuęÚ›—>űµď[•IG.BžvĆ Ď}ő{Rľđókźů»Żđq Öl®úţĎ~ţßĚxęĹŽ˝zL8pocë–]ü±ąźů+»µKď{ňCź|yË|Ŕo9k·ŹJËfŐ=ńOĚ˝äŻFOšđě—ľcTÝč ă',Ú7ŠÖO˙6#˝]›_~yőŹŻVC/ü⦩Ż>iÜîł!ÇÍßÝŘ:JGŹszÇîĆHüvŽ„»č}Č%dĺÄeP±đ0rŐ‹¨4şě·§Ťě;O°ĚŚ[ż~ø±=ăĆËFAúŹjÔć‰ăÇÍś>™éxĐ+Ěᡚ™,ĆÖ5Š„ćŮ72î·/n0dŔŘÂF~uáúA‹ő­ěż¦KĎňÝU+â7†l c‘˙řŹ˙XJ~ dµOĆHěźŔěŮłAL}ä›§|çÔúËĄÉ™\-Üy睬~• řC™=P‡~(‚Ë3jĆ >ÎŚeÉÇaŤ4|Ík^sÖYgńüĚŢp|@6äଖ ÖAřAű¸ŕ šnIë¶+źŐŞřÓłiű÷ž-I&ľzˇşb“›†­őłň`|_E0^´˝#`żĎrG†2źÉ…Ńv 9‡tł\TÖ”Ń5Ťě;4)S§ô{Ř­Yżn}ń˝ńtÚŤ®5éMq´ţ>ú´–ľ!UG)‘lµ©0ÜBʶŞőĄIˇÜ×Ů O×WÚú?yC¬čfEQčĘeG¦żţ´źţ×őŹôĺK^ü"3zʤťZî&»dĘ)Gó­U•®řô×ř/´D;wÎl©6űO/\sůŻ6·öŃ[÷ۇ>ýÂŃ“'ę˛/žž1;ť˙ä]Ţugí­w?xâ6ßÍŔ€hµé´]_]ö^öÔýKÎá­{~}(Ě`đ pđľ|ŠWź˛eş‡NýĎď[˙ňÝZëă÷]0v×YvéÂ@`›Ą(# ?Ţ…€™„ގěË–6ă˙Ęę´ĆWÇ«RÇľ‘qÎ9ů" ж°uë'O7iÂřţfŽ÷EGö:eŇ„ť¦Nâő#Ź<Â#.“›ęLŢQäuú ;Y×AH¸˛‰Śp±06(«®ş ę–çßţmë›^8šŢŢ^,CfDsš=Á§QĂÍŃB‡.ŰÖ0FbT‚°‚kcY|óÍ7óX+ ÍL™`Ä Ňř°)Ď}ăß0ćEBĚÁČ/\¸Đ”ßúÖ·4ůŽxřz¬-Ëeݱ>Ü ¦]ę8ó=ţy2çŽĎČ2Ňś„ËHMiÜoż­»ęŔĐ}éK_âçqőŐW˙ËżüKÓěáF~D.z—řżöµŻŃS|–š†ţ}nťÝÄíE°ác(¶F#a(c¨Ó–…WÇX6ŤŞČxŔťËí„ ăůĂźŁ±ăŘ–·X ËÁpŇž–TĚŞ+4UWu…˛u`Ó÷­‰…‡®Đç\Ŕâţ °ĹćQKG š\uôˇe…™9!|)uÎ_ľgTf®ĚŃîűgcwé›9>çżżw\k1ičÁä1Ó¦ěöż>¸Í'¬l@fĚíú‘‹C—U7ç#k[˝éçś®‰ˇ±É“O:r—‹˙P—=Ó§N\˛5)Úôüę—ďę{ťiöˇ0HPôL›˛ëÇŢo AŰ˝tý/]w;Ě]źrĚ9ńn3pad ŕsëFĆ}™˝ ·(w¬:‰ě“dSÓOÎCÍęj«©ěsU˘r™łl¤odśk4tB aÇlx‡“'N›´ő­Tą ˇfӨͻLź [÷ «™PĂS:ĎđZWš™6jJ„¤>©Ě‡Ţ\îr Ű|°ďŐ"«VCö$Śüg­#Ô sĚ1ú0ł˘lÂÝWżúU><ʧÂĄk†Täa .íŻĘGîÚö˝ď}bîśsÎáÓ¨6ËěĘÖőţč¸ăŽ‹”——·ŽČüµ¸•)r˙ôO˙¤Rľ˛ú™Ď|&˛äň´ÓNwĎź›wÍ5×,]ş”ĺ´đ°áÇ1ě[É.Z´ŻÍÚgŢ p”[¬Łů˝ßű=ý±ÂIv˙÷l #JžĆa…Ť}’ÍLDďÇö…@nč±ňuşÓˇ“\uš®FÎIÎöą*ĺ.ç,é+†r•˛¦-Uŕć`ëxťŁ˝M آ®Ĺľ]ÁÓmÝ~˝7śSTpwĹŞŮ‚_Ó’¬ĄÜÚb+ŢĚ–w[x:Yn5hIŞX'ň¨˘_:ŐL=ý¸ß˝dŮűţçú‡ű¦ŠË~ěĽ]ç}öŁá×$Ć/ś·đGź{ň/ţnő®Ś|BuÍýô_„›©1ß-˛Ń%ßŕźÍ¨Ög”ÍĆ„¨JŇ›ozőř}>őŃKÖŢŢ·Qť*B&îţw>iÉ}mőôěůÍO=ó©/­üÜ˙ŢĆ3“ďŢzöś˙ţxÓĎúÓ —˙·O­t벌˘­[˘3ikŹęCQt/ŇlŘh ™öšOyH?ăŤgŚęóô˙úüƧVĄ„ ‡ě7űC4ĺÄ##˝_nď8[·˝ßÁ.ţŠ\$Nq*±Éů©é$Wť6kzŔ˛ÂIeě[ “’Ę\sIă¤2çAŃDU`ë`@V­Za7}—ą;±]ŐKß G7őî6sę¤ńŹ=Ć4”ÇɆŮć‰óV‹–5––‹ĘŮçôˇ7“1ndo]/^lßâ„¶3R§]>j[›±QÝŹ~ô#Őâw®ľ4W°'9*Đl:†8f™ýęWżRŘL'äź­–żîuŻü˛%ĆQż`ÍŢđ†7„DXdPçŠíä“O–%ôč©§ž +«Č—^íÎR †Î)Ăîq„{{{mŢ_®ÄĎô·\CoŐ2+yÁę»ßý®™ETĄÚřŻQŘx3F’ż¨ÎÖĽ#FČŤ)őł čÜÉŕy¨§’1$•]NÚ'•Mť$;áĆźAÎlٱaý†˘!­‡-¬·áݰ)ػ¢ŕé íÂ[¬ŃfáŃâé Ĺž®đŤť, ý™\ßŇŞ¸°##%×{ĹWÖ?úäËż}hý#ËĆÍŰuâ!űŹŰc×2&|ňuî?üŦŹ˙>«Šńć—×MŘoářýzmţťUa˝*˙ŮĄ ĚbŰ˙ËíRB#cU’›˙˝„\c;ľQ Q8ွ<ňĚoł˙Ű;fľ÷­ëŠ€ćC±ŢgÂAűŚ™¶kĘqKöşćëź}~Ăňü Ö—m™*XŽVMÔ„‚†öżďgQTşśóçďâżrŃŚsNź~ö©|«wíŇű7>żŠĆÎÝ•®uŮŘ5#gëFŔMô.ô!Ë?¬hŔŔ0r®’˝hdڇFöőŤeÉ>b,NdŃ ßvźß;g§©ăƎݸ‰wGU¤‰ě¤Iăď˝űôÉqŰmĚ”aţK¸˘­~$B©ľ}}Ë$ţ®FŚĆOE[ˇÁA<Ú‰ ?oyË[5fű‹ˇÄyó›ßlź =öŘcůĹţú׿.¶o0Î'ťtOP?ůÉO¤ač+^ń ÉrN˛]ő#±FÁđO†ę'ťł±*Đ@L‘ă› ágR)eg·÷˝ď}̶»í¶ŰĚX˙*Ď;ďĺ”SŚĺĎu®öâ‹/fÂ%żxI*ň“€„“eÝ®Ľ™“jŹ<ňHĽńŤZŢ1¨˘ÎĐ‘üĆ€K—ŤÂÖßOU«řI>lĆĺ‘…€ý‰şŐ ÉLŰ1ä:ő‘Ëú–ŞŰČľľqMKţnđjýŘő6ldňő¦ÍĹVtöŻ™Ł5Ńnsë ­ËVÜř/ŠZĂ“u§8·ćč‘.‘É Đĺy:ŞGĄŃeáÓG řMóÉT}5µ_7U“–ÄýZŞ˙.ř¦-˙őŰ +LůÄ*˙őoąóŚžťgôkf“ţ ůĎra#ŕlÝľąŰk×Â$#Î`żOaëakCI. …T]†ŤY”‘ü@IDAT3nŞWw˘sµţ€đG¦^·i–›6˛ ď(MµCA~ôgkĄuŻVµkĐ›[3N ‘‡¤Ť+ŰCŕşµĎ~reŐÚsŰI-Bꤺ×u®BŔŮş®şL]*2Źšą -ĺśÔ÷0N’Q••eŤ°k¤ĎWô«˘ŠĐ™4”g{žů\#U^yĘi'¶×Í÷/[ąúĹÖv}o’y{ÜÚé…•n=sfL}ݱžvÄľŁ6ĽüÍo~“ ţ™‰\%M*;Ź\ń眇}tą«`:3ŕXëJTěhĆ´,~~]ˇÓU0Içj…Ä<ľŹ}ěc̦dż9fVÚ?ľ?;\Ôíí·ßÎ=…ÇüÁ®‚Î@ěÇ–ôY3É9©Y]M”ócBص˛˛¬1ű\QRźT⪩ŢZ…úN›LEţ¶0ťŞnĚćľOIŕA·CB|kDŐµ2#+J6J©ôfĆY–“NĘf®iMâľsÝjţkŁú`W‰ćvsîßp gë XwŰ&$Éܢf^Ňf«ŰVK€ÉPưmDńU.ÂŘ®u=¨Ć–8–›fžŰE±güOúSV wđÂĄ/żúÖW¬~©µ]±4„jĆőđŘý÷}ĘáűżhÁ¦uküă˙ĂĆU̬áűŹőłŤúݬoiťR•6*š†öăŕËLm€¶K.G‚0Ľ‰íf«í»ďľ÷Ýwź˘eĎľpJJŐžuÖYĂŇÓ±%źš>ě°Ăěă¶ĂŚ7ÚŚĺ!cłręˇQ`.Âd•Á3Vsőý÷kInáoĹęL‚=?ŕéd“snMŔ>g¬•ϲoZ«ěg×p 8^˙ú×óŐx^«đšGs*É=†ŢmsŔ3Ç“÷L„§8‡1$oÚp:GŔŮşÎ1tC@2·`*·ť´Ä,i\®>Pš #ç$d#c<4˛/KSÖ›gVĎń0Ěţô|g“)r\pÁEŻyĹŢóvąĺľeO?·†Ĺ"&Śť5m ë^٨î Ţ9“ÇŤ}ę©ĺěřţ˙đLuyÓ›ŢD-ňݨłÉ#›đ2˛Ź.CKäęŇČŘ/» ’T~6˙üĎ˙ĚÓŃwÜŐÂş×n r‡Ť‡§®ę;[řŁÄ»&˙®]»6ŚŤÁ‚íóŢřĆ7˛n7Ô™|çťwę· ‘ĘĘÓn…¨^űÚ×äcŹ=ĆÇIřkĆs5“‚YCMŃ0F»hѢ*ľ¦G<ĺ7Ă7Ý!Ť˛…жrcVM˙VW`9'aŘŘäĚé“ĆI%­'őIĄB5Đ"›č2繎ŢţkK;¨_‰Ő×$rN,6 B™ËäQŽŮĚ*ŠĚĆ…:p#8řăĚÁHA¦Áˇ”ÝŔÖ)S„жNżÜĆpşáĚG»ŹŞ;Hć BmŇ9žkúď°zŘ…ś«¦úЧÉőťä,Í‚lĚ҄Іu¬GuÔ3Ďţřă÷ÜsĎŤ7ŢČ—ř¶#ĎÉ,€e2­MşµÖöLÎU1*,+Ьş ݉Ŕđň,݉ÉpEŐ… ] žmxŻPÖنg{{ĽĆ0ĽéG 7˛ÔL6úŤ§C˙ąę´Ű4Âś«¦úd—9É›çČ ş”YRIQNoÎCc`4$áě MëŚŮVý–̶©ó°-“9±Z.ähÝŔ‚ŞăO4ckN9ôj hŕ ŚFQ!ˇŞ(×#×;Ž@—#ŕl]—ß Ż ¦˘%CUN‡»¬i§,޶+š‡śĐ‰çÝvŰŤ-ŇÉn¸á–¸~űŰßfy,K\I&ĚňČ#Ź<účŁ+W®dę>óöů¬'SęXÎŞËEUSßIđ5›p3GŔpG mšŽS$3Téň”†9ÚŔ¤˝ZuÂł «c܆MÓČ›ŢÁ¦ţŰč‚W©F€[Ruä®,€Ą ÔÂđŢ bČ FšvŐýňRGŔčZś­ëÚ[łă–횦5e+11Ľ8+6Mݰă Hgëęß\·tşgëşóľěĐQŮhÇŔSł/Gr–Q—˝ő«©đßo]3H:I*­J(TXćŠrząŤJŁKkş¬Ź4Ŕ 7ÇaU"›č˛lPQ7,Šä˛[3ČĺôVŃGŔpG Gjffźô:‘eŮ”ˇeŇUżĘ˛gUiä9é$©ĚĹ“3nŞ—Ő˛ş&D­'őIeT1Ľ,Ű—5f_Qd6&䌛ę͡ Ťŕź[»@iĂd–‰0«ćNźiäm`Ť‰ &Qár*šF˙r6*÷ć8"ŕl]‡ző‘€€˛ś\®“ëá0~MCÍu!§$˙äV˝Ř~ťçî‚ëGŔpúhl:z2SaY6E¸{ü·÷ i˙¶#F‘EŰU7Ř?Śj`‰‡Ă;bÓá+a«qóRG Ëp¶®ËoĐ^rŘc(ŞJŇŞ7ň“l1çĽěąľeÔP®bd¦Ëśq}}Î˙ą˘¦úÎ#ϵôś‹<ç$§Ď9w˝#ŕ8Ž€#PŤ@nd)g ~ÄIŇ}Ďő-نr#3]ćŚkęsfâ<°)sM'őIĄą* Iű¤’ş9}Ů­kš"Ŕ?[ÍVÓ’X¦ÔiV]7`Nl¦8Đ4íŁŰ;Ž@÷ ŕl]÷Ü Ź¤ĂaŁ)ç§ľ“ú–ąŽĺb@_Qy«o©Š9{J­GfcB'ŤŞKúO*s42Ž đKGŔpG  rCŹŤĹu|vî¤QsÉr1 Ż(Š\Ő·TĹś}Řł1!j”Ë\QR__™óśôPŃŁFöŤŚËP¸¦üŔt@„‰§ŁVňu|  ±áŤłx:] wĺ8CŚ€łuC ¸7×?á×h +†Í ’“i.ŚSrÎmŮMŇ8©Ě‡n­˘ aiµ‡\•Č.sĆMő:Ď5—tëJGŔpG >á3HyHE0aëˇY9’ú–ˇź~ĺśŰdŤqRIőś^žŁŇčŇZoŞ·ŠˇĐÔIÎ>ôirÎ8©O*Í• Ž˙Ž8`ÄđÜmŕŘ€÷×:ŽŔp!ŕlÝp!ďíŽXšŰĂjSWő1Ĺ3íŞ˙úÁÔ·Ľ€Ă`űŻßS·tGŔp†FbE&CąjŁËç{ô<€·qŹFp•ę˙î¸wÍp†gë†do˘}ryRَ±{ś$Pxą +ŞDE9e}E‹ecµŇTĹÖž“\Łť;oä™ćdß´V2NW:Ž€#ŕěh䆏“ĚXM¨s‹“ĆI%ŢĘú˛ĆÍ5Ő›ĂPhę$gú49gśÔ'•ćŞ,Čľi­˛×8Ž€#ŕ ÎÖ ÎŢĘ#K5¶ÇÄW1‡‘Ó»d“J![.*kěĐĄ:›2iźTR%§OĺŚDßČI#ăd_ .GŔpČŤJaJĐoÝŕÄ6Aa'cK*söĆÖVd]⹬É5Wˇoę$×nŇOR™ ¦‘q. 9÷ł#ŕ8Ž@7#ŕl]7ߏ­1ŚeuŤť¶U!I9 Yš˝ ałIeh`rKŮĄ ć¤BhdŚźFög<¨‘TŔĺEŽ€#ŕ8Ž@SŞGĂr"ŃÔ}ű\$Q fV¶¬4Tćä~Ť#č2çVúFĆTid?xĆI5b^ę8Ž€#0ô8[7ô{‹Uâ$łś(/¬rŃqY2Ľe 5;‘ ŐŞ÷k`–eˇ~Ýú–´R߸ľe|ŁZŤŚĂV\vGŔp*(Ź/CśE”P´CFDV” 54 ě~ÍĚ>Ő$ăFn|ý*ő-CX\vGŔč~ś­ëţ{ä$s‘FgŇŔ­é'çˇfuµ•s˘Ňčś3Nę“ĘČax™łOę“JĽ5Ň72C ĺ¦NŮWçJĂđ\vGŔp’T "’HÔt’ Łfuu-ç¤QÇ“N’ʤŰęH’~’Jü4Ň72ÎEŢÔIÎ>é?g,}®4éƕހ#ŕ8Ă€łuĂľ7Ý)ą„ŁQĆIúé°z&}&•ń—=W'ť'•r›,ŞŻ¬¤ó°«ť—,k*ú Ď•Ž€#ŕ8Ž@Ű䆡FůL‡NrŐéTŁ0 ć|6Ő›OyČă-WTÖ—5 &§·PC!g< úś“Šn†±ąě8Ž€#Đm8[×mwÄăÉfNí%‹ťšË{†>’\/rĘ>*Ť.s>Ń×·4'ŤŞôkD—ÖhR¨o\ß2Ů+GŔpą!fčS)V˛WüÖ rŢB}#c*6˛Ż6.—–5a¨‘©LĆ\yÎI#}#cëN®VEĽČpGŔČ %Ű]2“ëHŘYÉ9ËśľěMθ‘ľ‘q®Ńś“dŘMťäś'őIe®EÓçjĺâw˝#ŕ8ŽŔp!ŕlÝp!ďíf°4˘fćjö‘ÇšŐU+çDĄ5]ĺśÔ¬nńă'é*©´Z‘3n¤odLMíŁu™s’ôßČ8é!§¬ĐSä‡#ŕ8Ž€#P€ O5słŹ|Ö¬®Z9'”Ö÷“sRß“t•TF˝¶Ë ă\QR__IÓIcë”ĹÖŻóSÖ—5橬p’ Ű•Ž€#ŕ8Ž@ŰäF˘úYMwî$çç5# = ‡—§¬©-iźTV l˘©“ś}çÎsžé'cvĄ#ŕ8Ž@7#ŕl]7ßť4¶0ů¨™) ©°bÝ;é< <äś„ý29iśTR%§O匛ę-ÔPhę$iźT&űbM—«”5fě‚#ŕ8Ž€#ĐáČ2Äyц­‡Áe$Ä # )”ËöeŤěésƸĘĺôa´mDRQ%ŮbR™sRa\Ű5Ž€#ŕ8ÝŹ€łuÝŹ<ÂNČĄ/ŤrÖNČg„x#)G[G…W®Ře}KŞ42Tű¦‘4 ¦ěĽ¬1]pGŔp†ÜH¦CMÔ‰¤lSÖômŁ*g\ŃĺdęGRßŇŞ_ĄľĄ9wÁpG «p¶®«n‡#K5ş37ŤŁďěšľÓÍň]]µßČş›6m˘ĘĆÖ±ˇuHĂ9j˝©çś}M˝î>Ćc‚cěر===éúžĽŚš‹.“U\é8Ž€#ŕ4E 7ľ0`5uŐˇýĐGB‹t3×®şS]uą‘1u±Wö‚ ”FB2Ą± G٦ŁË\$‘Ţî2z“%č¬ěEŤe2´eĆQ»ĺ˰EµjĘö®qGŔŘ.p¶n»¸MdŚ@. ©źŮŕ±ËťX&WŽł¬@I}RYŃ}Ůs&©}îąçV®\ůĚ3Ď<ňČ#Ë–-[˝zőK/˝´víÚőëדŃÂŕa¦|7ĽCąC›~ĺčVr)ŤŇY¸ąqăĆMžů䓏?ţřO<Áĺš5kÄÄ)OEÖA:űňË/+‹ĺ,çś%DžőL8h‚3‰,"ÜÉ-Y/—–“ Oť:uöěŮ0zóćÍΛ8q"Ęd„ĺľ”5ÉŠ®tGŔpÜčŁáŻfC9'Ş^ÓUÎIÍę´…ŚC?ˇőĄ\TÖ”«–«<űěłË—/ç ÷üóϓޠ$u‰ăĺ˘l”ĚPÔbäŠEřTÚCsÖ˘ Q‹\Ş(4 ŹeK4a‘l8+QA oQę™ü¤uŐ§áRÇ´iÓx7)RBŹË‚í›~#*܆±…r2BW:Ž€#ŕt'é?ôÝ«Gµ# @JQ?«PŇ3"aőˇč\‘‰BĆń2™ĚU/“‘Igźzę©G}Î.bëđ9€ôaMB˛¨Č°éKTQż ĺÁ¤ą°u+V¬€­#}‡¶[G"ŚŔ1aÂ^ks9ńKGŔpG m¡Ş_'žĚô Qh¶ ýd2š4'VŽĄd2I¶NL\äÄ.-©0M{BÎONŻV»o2i oËlÝ.»ěmUG9 g’ÎV˝şĹözçµGŔp†gë†soq¨N\,ż©YŇU}Éęa»I¤’Zýę1Đ+e-ą;î¸céŇĄĐsLIą#­pFµÉ„ţrÁĂHň˛]ńs›8Č€YoÂĘYŽůóçď»ďľ0zvčíMuŘíŐpG`„!P=61ŔŐďoÎUM'ąę@Ň ©¤J=cşH7˛VĆp<řŕ, ˝ĽC/?ś%X0ˇPQš5•ŰvU4ü•ĂĐ5"!m“ž3G1­®µ„v·Ýv[¸p!üÝž{îÉÎNÉ ůŚâŹś7í”Ű;Ž€#ŕ /ÎÖ /ţŢzr r‘DAI•ËBjV7ťűÉy ‰¦ÁXT9·őőĽyľęŞ«n»í66jáµ3 @”ě–ß3‡íŽTÜ8č;kd +ď˝÷^ňZ^Gł®„|ÚnѢEyĺ©vÔŞ¸#.ď—#ŕ8Ž@Ű0pÔL4Ä”ŞYÝ*źqb!IČů¬©gÔ†ŚăŤ#“ĺ»Ááćt”ó™śŰ(ŞîĽĚ/˝~y¤syäużýíoáćgÇňX2ÖěłĎ>whŚłłžĘI® 3sÁpG Kp¶®Kn„‡± ąL˘i溍ÓćFN¨’¬•TŇ­¤ţ†n ‡#»ĺ•,ym±h¤´h´${íµ×Ţ{ďŤ%‰ űľńň–»Ŕű[ö‰#)´ÖI YŽŇ¨®ÜÍ’>, e IJą0?ŽE¬ôŃĚx‘Žžî |衇řöi+o˝őVh8óP-ěrhů ŐY;sß}÷ýú׿†łcÎÝâĹ‹ań’ŔV»őRGŔpG@äΆ¨ Ł 'TÉŐŞŻ×ş›nş‰-;©Ż™2Ďđ t-÷éo/”ĺUů zäÝwß™u¦Čp[ˇ=ąŤľů`Ęäý’2, ĺ¨.1“É@5Â-R$KşFzF>†Äɬçĺ0ˇâ¦î ‘w¤@¤g·ß~;őpŔzÉ,<<„C‡.;Ž€#ŕt3ÎÖuóÝńŘú ą)•ŤÉ9 Ęo #¤ÚHJ’9Väv{ą„zě±Çîľűî{îąçá‡ć˛đËFn ?Eą ]BŐ‰­Ă¶ŽäŹ"ŢŮ’ďr‰˝śsSHyűeë¨K•Â{0}2”˛4ś“l ®–˝Đ4I6É®Ř:ľËGlń@ĘË™·îZBBŠŚŢĘP i1™ë`ýřZ—Ô‚š$­7ćQQůŮpGŔhĆ&Re2ý1ĺ«NÓĺ!µN­nłˇď, ŕE_Ą'źAV>>-Děů ä$$Ť Áf:'Ů:röÄÂÖ±×-ŐM™„ĄŽ 3 (ĺ˛uR˘Ů:ɬ‡@olŮ żôJcZéĚË\’É€Ćd;üşx˝JďćĚ™Óď/ ç~8Ž€#ŕt!ÎÖuáMńbHA Px§JňÄAň7déÖˇW„ë(I˛…‘sbŢB!g\Öó$ŔËŰ/~ń‹ĚŞKňtpp GęĆAŔd±űí·ë&Ž8âľ8FŁűďż?6”ŠŚłN™€ŤÉ&X´¤•’U °Îą)Í4şTÚ w†ŇÜÚkp)­Hxľ˙ţű ö Ę’RŢÉłÇÍď~÷;¸KŇ\ @ ňWOMÖ.z~i<Pťĺ6ď˙űˇ&őRÚl\pGŔpÚC€q2…dFC”'3BŇR ‰ßĎţóßüć7¬÷,ót‚Ž1žŽérěă¶`Áf–áç â-#ÉĚ’%K”đČy”3$ ,-™AĆFf‘‚ä0ĄäĐREčI\9ĎJĹou¬Č”7Ţx#i JXKR;x=&â)Q2C¨ü´¨^Dły3y6¤‚Ľ@ĺägśÁ/Mď_ĺŮĎŽ€#ŕ8Ű ÎÖm/wjŠ“TC˝µÄ…Ě\í®»î"aţď yAĘKTň3YZ•&óéË—ť{Ŕç€8 cË9¬Đł–óĘ+ŻdW—0Ń }ž|ňÉđqGy$3ć“WÉ®ÎXZR‹%(MĺHˇ­ 9›^˛ôJ3ęZÓu±áĐd@Şzčˇ\ľńŤoDćÇCĘˉĄÁläP¬śe±p«ĆÖ–<`ó™Ď|ć‚ .X¸p!9.J,tŢję’#ŕ8Ž€#AŔ† łŕV ęxŤCĂ® ŚVP*ý&3´`N2­mU[»[U-i(=DMçBĘé©ÍUwĹW0+MůLd 7G*Č(Řa‡$™!o Ţ®ő>d5ę2gꪺd…§Rô‘’Kް ­Úµ’jÉˇŞ›\!Xl­i.•Ă wÜq2 .™=ÇűH2=XĽ[nąŹWŚŞ®v9“đ<Ău‚Ă!‡Â.žĚ8.8Ž€#°˝ ŕlÝör§vÄ8-ó€?âE4łęxUČR6ć@;w.o ™çOf–CÇ<” ,* ¸&FE É*Ieí/~ń‹ë®»î¨şÓN;Ť td´ Ćd¶ŻyIÝgˇ7šS‹™`¦”4a©9T]3CëZ­P‰ŤZ]ó¦"y39¬k––˛ÓMŮÓqŢ´óËa.á«^ő*–ÍBŢ‘ć^}őŐđw!s€v<*€Ű©§žjÍąŕ8Ž€#ŕ4BŔ2F%¸9F"*B¸0Źňމ`hvÝu׊d†ćĚIÔ4C^¤ĽËöb(×*k˘A†ăú믏¨ş<ćcŽ{bň;™ Ă:)"˝˝kڤ9µĄ j4T˘Á2„T2ĺÁâlĂaX·ˇĎ°ÔŁGČXZ»č/Ů/żč #g9fMsMÉ"‘N8áĂţ°‘OąBFŕ0e$ȉĚtF=g»T•в¦CseŢČĹÍŹ jN—ˇgŐ*›ÉĆÎf`BäPĽ«ç੉g~đĽšć AUHpµ——Ô «›OśŻ.ýě8Ž€#ŕä`°`†;#Ë6™ÜÍVŞ 7$3Ś#Ľi#™aÄ–˛%ś9?ˇľ<0©4 CűÁs1Łć¶ŻÍ˘Ë\0l «őÂPLŕé>úŃŹŠŠ˛®Q¤„Dgs6Ąů7ÓX]Ů›Ţę*TťM™q)Ó×If0ăAŽ4[Ů,˛äRĆĽqä˝,ďłů]}ŕ` ,ó7ńŔ{n~]dŃÇĽěĹ"Ű‘óĂ3Ť Ž€#ŕ8Ý€€˙]ŕ1l@”ú(ŹÁ‚4‚ z!ć,ĆbO^˝ňj>…Í;Řľ„—Ő||€”ÎěÍiYcEe!jÝ ę;éÜ5šs•Ó[E §śrĘűŢ÷>20Ů묎 ›€1˛•J0Ąɧ]†EŤĘyx¶FC?4ˇFĄ”Ť”&›}…ĄUI:T°˝˝˝˝_úŇ—Î9ç¶´3oj3Ľ0ů®ôᙊĽá5.;Ž€#ŕ8> €Hf`ëHfH]XďÉŕÂŚx¶iă}lo%ŚVĚľěÁ4BÔşY–ÝZQ$tîÁć\ĺôP™¬†T’ë^˙ćoţÄ”ĎH©Ž #źśŇŞ„–‘2W—^`µbuUKgYŞ×f ş¦ [ •fźSšAΡ*ň›9t$3ěŘ a‡13ě^Ç›n ¸„ f‡g¨ääŻ.´qŮpG`p¶n÷ć# EŐČrHsYHÂ>/°$đtäs¤ą$śyHĚ‹kÍłkÜRe…0ŚĐĐR´P١L[ąć’žsƬµa]'(Ae¶¦'NHZŇ…˛Ţ”©Ź:ËŇJM«VʡťUQΓ1(ëeŻ`äJfśĄ´*&¨!ťMÉĂ«EŘŞ™×Ńü´xFRőĐX2 fµf6*‚ ŢHé—Ž€#ŕ8Ž@@4¸@<1.“Ě0ôđę¶Ž)ŢŚ×úÖ'ś c5Ď.tŇą…a5ŞÚ倴•k.ç_öd/fĂH Dڶ$xŕfEˇ`#»)Ő©(†PY®buĘĄa]Yâ<4“ŠB}…†˘(B4VׄP)oˇ$3lZGÖGŢjs63;Ă“_±™°łfÍ kY‘ Ž€#ŕ8Ă…€łuĂ…Ľ·Ű&Jpٸ„w€$%¤lĆAŽ‚Ěś’]fŘ‘ăÂč‘«Ťr$ý'%ą0ŞŚ`Şvó6•ÔŤI ,`s–+őWÇĺ 3ŐC%—ˇŇśŁL†ÖUEł kĄěP‘ó ‡˛l/Bµ =ÇC?đąęŞ«řý°m3YF+3â@ ’¬.‘2<Ăł^¨qŮpGŔ¨F€a‘VŽt…‘)Q$3Ľw䀳ăĚŰGŘ“°c0JúÔ€›, e. µU]jńT›1:s řđ¶ XćĎźĎ0M>ŁŹ„‡2SšÁ™Ă”é ‚9Tˇ&”#‡aÝB;*fk.éĐJMc@;‹jČ8%3|j 2Ž&ţŕţĄşÉYxr&çá Ą™ĘBc…gJGŔp†gë†o˝MČ`ؤVNkI Q`¦X:Á^'Ź=ö™ýě7íÓť0ś‡—Őň€8ˇ óc‚µ[ÖÔ)†Ýp~öłźÝrË-<{ĺ°kÉ`+7•r&´^KIuL–ŤĹ#)’UÁĆä˛ĐąC<„M4u7wë­·.]ş”o¨ń)XŇ\‚äĄ=ŰüElž‡ç_ł^‰Ëđ ŻO>/*]vGŔpę ŔĐĂčĚÁXĆBرż;óň•–+ÂL1ÄĚŘŰǤO”ŁRśGšŠËq‚üČ•ÎQ‹IĄj…–…‹€š$»»âŠ+ŕs!•ŘŕŹÁzáÂ…Ľ¸ kÉŹőZ~LŔ9ŇRçđ±‚1?&`)‡ˇ`˛ĚBoČJ·Ę!ďŞIcČŮr—d†é‡x&7Xé`čŮdéĂRAˇ*´%ËPiĆ&‚”f/Ť B{3@ŕPsU١yŽ2EŽdćÎ;ďdčK%3(Ég8Ceň›oMÚ%Ţ_ţň—äɸŤŔdQöé§ź^N"KżtGŔJś­J´˝­AA€Ś„ěGßĺäő ą „ě /¨93‹ :B łÜ·;©>(‘eś†)ZĆ$­nZ‘,öcŽ!ťĺŤ+éť’đ@6ĆŠŕ­gÇŕ pFťÇ%)ł Jj0Ă“lŔš€Y˛zXW6ŐÍ&tŢ“łň€ŚŁ§:#@ŕ’Ú¤JşOÖKzJ^Ëʲ|>`\hř áÓŇ_ž”xÍoÉ”č[_łĘ'Q‘_:Ž€#ŕ8Ť`fbŘĺu3ě­ÎřÔ;#É śt/)»$™ˇwŃŘ]łżMkÁÖ{ě±ä$Ěg(ç$;ź1ľKCš‡ŕŔX1”“Ěü  ¤"–urâŹĚj¨DV7CeNSá"s^®nÉ Ý$cˇŹĘdHfřa@\rÉxˇHďŘ”l„4žŽw±ô=JfČy¨E2ă©ćěLGŕÉg|ß:ĂÄGŔpşgëşäFxý Ěí,g"sĺ Ec"W‘—g‡ ĎBuR7ň6rš~ZĘ'cąE’ŻÝ „†*ÚJ:JÚ“ŮqÄLţâ#§l*LßÉíHőx5 ,°™°xäsčن Ź3oď©EÖË ¤Jřč ú¨KÎ\ęÜ*)NŃ%qJ©* ™PŃs©ĂČ‘ĂKëi¨×jiĚ˝vf!……$%ĄŹĚPŕ—@n …ÇĎ€vĂź ]†É=ňČ#Y7Mj«WĘŠÍš.ć8€ ±)%`ądÉŇb~WQ‘_:Ž€#ŕ86fEz.5ô0D’Ăđᤅaš×E–Ě01Á=QÄXŤVeź9MEI®nS}u[eoI{R;’ćż“Ěđ–‘ZŚňŚéŚď°WÔ ’,† 5‘QŠaĨ‚2] LÉś)2Y‚ěMÖĄEVĚaäČá%6:B}E2Ł|žŽ®ńŕ`Yg4d8üţ’·ŔÓŃk^:2ýi†ĘuiŽh·4[ü?‰,'N¨ꑱŰE‹ń«‹ŠüŇpG`xhźą޸˝őŚŮL”dä:[N†H5HVHJx#­·ŻĽxd±éo™HE~9,ű‘AÍ00Îy ¨ľ5št•TV·+o´&§¶Ž‹.ş×ł7Ýt[śÜvŰmLµ%R˛^ŠTĹÎ"¶Č9ôľZ2Y/2 ˘H. ECŽ»‡Ě{RI< çR ČŚ"ÝĺŁđh’•|Cşq‰’Ŕ8¤'/GIŞĘ{f.ő Ăí6™*T/ĂECOÖÎϓܔKb«†‘\ů˛Ë.Ă­Á"‡täďx»FE~é8Ž€#ŕ0iě«E4l1pł2‘—g°0,]d€fŕc3;’F.­ýd ŠüGN¬ÝČĚôIa@śŕ9é'©ĚGá)™AyÁď Y{Ýu×ńF ‹¬€Ńźs2™QBbä$JBý%sI2ĂAf¡dFŮ- dKfđCQ]g.ĂD™0HZÄôa2CĆÂÉ a“˝HĆ3d8Ydôa2âF D i»÷Ţ{“̰Ą „—Dšq¸ýŃŹ~Ä9T"+™9ďĽóN<ńĨČ/GŔp†¶ö€<Gr GťŚS¤ ä‘^şBN‘1ŮŠiVL¶b¶?™ IXżPw†9ďÄI®nNoŤ&2Ęí¶Y~&ç&XűlZ´ŕË]ă8Ž€#ŕt‚##I é /¦Égŕě(bŕfG·ˇ’ę ŁeÚ«e~Č @ÁW¤"d ĽŹd ZŔa˘¦ŢŁç°ţŽ”†d†ě{(çÁ9®Z©ÍFd ý§ Š!şD"o2ˇZ©ôśÉ"Đ“®pÉatVęBŹĐëŕ¦c†žL†%Yśüť\)Śr0 2:—“ś“Ěđę‘YśÄŮűĄ#ŕ8ŽŔ°#ŕlݰß HDH28+ďQŽV+k(%ó łŻ¬!ă!Ç%»%c’Ż©Éę0Đd+ň•¤‡°‰PÎ%FŤś„“r®•˛q}˰.Ń’é‚ ) ßS3'NľË“€¤ą¤Ľd·<*p&»%ĺE% .ę"«!“ĐČ­dŕ‡˛0ä¬ÄA˛Î0Ů-gâçţrąňÄÂbgúÂS ©-öÖ¨ü+“ŰđL¬N:ăŚ3hşm?^ŃpG`GCŔĆG†ţ ”&›`É  2É “ČAĆŚŠDú$=«H‡ă°¨‘“°bRεҹ±<-}ç ĺc*=JýHKČ^Čú8kΑ˝@Ű!É 2ç"•Ů´‰L†{„@]sE+(Ő"Ja»‰1‡Ją}v‰ 2g˛&‡áĚ=U#ňî•RěiË:e„M÷+ËCd†gR&’ćÖŃVTę—Ž€#ŕ8Ý€€łuÝp<†m°¬‚LB¤SäRGĽrä łŮ¦Â–Ě,Rr‰hťŢŢ^>˛†VI@Ű‘ě’ă’é.\¸ŠÇR˘¤‡˛2§±Č#b4—8ŃÚ  /MÎéÍ =€EeňŔWĆB'jŃÚM^š}XjU(-˦) foE+BŚdČžßüć7vŘa,HŚ&ܧ#ŕ8ŽŔ@ŔĆ,Ë`ŮŕŚHE`g fĘ‹X­Jąű}xµF2'Ĺţ$3PN=ô«Гɠż“¬^Vć4ą0¬#ąŠˇ':"exi2–& @Ŕ$3Ľ˛ĺ ‰pźYkQBtI ¦1Ů,qk˛Ei¬ş ć§,TŰX(čçtüńÇł/Š~6čÜ]9Ž€#ŕ ÎÖ ’îgŕ°ô… \đk|Ŕ ü«Ř/ŚL7|“™lŢy)Ť[ĺľäÁŃÉš>;ŁQJÚȸ“¨Ľn„ż~3<˙đÝ4&Ö1!‚d7˛ńKGŔpG %JfxSČ’ň¨:†¦É /ˇů8+c!™Ń·bµ3/EJfż8*˘¨˘ú)J}ËŠÍý~ ¤ÍĽ™fA łęHi<™ń߆#ŕ8ÝŚ€łuÝ|wvĐآ4ŽÜ‚d‚ô‚t–ŮpěĚ«ă{îą=ĺŘ–Ť4Ľ˘ş†`”Ş’Â’Č’¬đv‘U±8d;Űâ–KöaŰ]2`˛çśÓ—…š1”+˘ˇ.;ah€2Ľ”śT–Í\Ó!üxřµś~úéGuÔůçźĎoCŹFşőꎀ#ŕ8#hŚf(aě ]aŰS2 8µGy„3É zä8€÷|*L˘ş†R”Ěţcg^’Řş‡~I/5IiHf¸GšÄ–ó`ú¤P3Ś\]}«!,M:L*ĂZ.üxHkůůťtŇIďxÇ;Hf”9swâ8Ž€#08[7¨şĎDŔŇ8˛ ňN^ ’•ň]W^J3˝Ž”—U±¬ř€ËCO"ĺ˛ ĹśXdqđŠ·ĚŃĂó˛eËxËÍç,ČwIs)Úm·ÝđŚ–erE‘ů !×î`´ĺ>Ëđ‹b wľóťlĆĚ”:~cNŐ•QrŤ#ŕ8Ž@56š“TŔ ‘´0_’Ž÷…$3¤4wŢy'č<¶\`č‰+;4'V¤$ŽŹ—šÔ"iY±bKb!ďpŽ[˛&>#@’>ËäĘ“tD ¤.°·$3K–,Ů˙ýůŤń;‘=őN9Ž€#0’p¶n$ÝÍ‘Üĺ‘d˘¤dśě4Go!×XľĘŇJYTÂ|4[ĘZ3ď$sĹ'±‡őÓŠ\i?;­"!Ą¦QŽńÍĄČŤÜ“F-îŕĆ<;ť|ňÉ'žx"łnąŁáÝwGŔč%'$$(äL@ÓWďá×Ř™—…±ä$$3ś9ę'3“´Őč [Ŕ9iůmQ¤•łużęV¤"Ea»5ÍÂ*.·Ťż"ćW*™aă](ݶ]yEGŔpˇDŔŮşˇDŰŰę¸dg +'ďÉ6řOÇ~sěŻĚ›dŢrŘ"V«•kXm‘Ú˛ü„Z¤¶Ľć«j°u8çŕĄ7źl˛á‹±á0ň™Ś–ć"ł\úśçr•ś%zRέ¨ăČË~vL ř0ŻA}/s˛Ľ‚ţěg?»c"ă˝vGŔhFލnQđ˛9 NX»ŞE¬kěČÁjV2ôLÁĂF#xä*şT[řäý"É Ů É Tŕý÷ßĎB¦×1=ś˘®MfčT´¨§~Ůü„ř9}ůË_nŁ®WqGŔFś­Fđ˝éőłR8;^˛•ěóńLJY#+˝÷Ţ{‘ˇŢČ€•’Za–lĘP8ţ|ňcreĂBBŢáYą/[ĂШćß…“r.ăě7 *ę0·\š QQäśµ˝7Üp°ě·ß~Ľ¨g9LTÝ/™ÔŔ-ľúę«yFbĆÁ©§žjĚŕđ“ŕp”GŔpFÔLf0#Żŕ€e_c<âŕ}!ü;~0j3|“ĚD;0Dc}dĂ»’‘ á ‡P¬Ť…$ABO2C&CŁQĹäe”fMu )“ «‡˛ů‘PQYúeSôSäWŃ´˘Ű;Ž€#ŕ ;ÎÖ ű-đ¶A@éÝ6ŞÖEJćŚ1'‰,i.KbÉtÉnyŤ¬-–ÉPIU9”’Vä‚ćP>µ™“é`¸pH‚‹OöĐŃž2Ľ˘d–j)ÔP.jraä:Ö59çD«]O'K¨:¸'Đ€ľ¤/Lă; đ5stkn„ 0tL˘äé…›ËÁť…śR9Ř^(Në/t0‡]şŕ8Ž€#ŕÔA 9¦G©‚.ˇQ0†_#µ`°&Ąaˇ/ YÁJŁ3 É ă‘Şär•r–Ŕ‹FÜⓉÁŽWwxS2+šăe'iCÄă¨nż}ĚĹěxÎ[ÎIÎŢőŽ€#ŕ8ŽŔ…€łu;ÔíŢŽ;[‘Ň‘ŚÂł@ŰÁÂŔL1'ŠŠ qĽ‹†·BIŽËZňŃ(%M¡<{˝Ę&µĄlݦŮŰŽ=e("÷%ÇE¨™×&ŰŞPVô·˘=%ç ôĺŇĄK‘ •Wô°Ť2Čt<"¬đ9Š“źż (]x:~$€đŔđ8Ä=Ç=ĺ§ÂÁó (Y—yá°KGŔp¶¨Ů‹I*831T1N‘x0 3Lkă­c7ăxťd† ÉOä“ę$3řÁ'ă É ~(U2 E]•Ě´Ť°WtGŔpFÎÖŤ¤»ąăö…ä•ĹěóÂÜ7Č–~0[Š|:†Żˇ±÷äů¨rÜ(+M&ĐřäŤ4;âiýuŕśď„˛`–ćDŘ%=č~Dmur“*ZQѱÇKŘ·ß~».ÉËiŽ8IýÉÔéłíŠÉÄĐA~řá°Qěe˝áLŔ:wępŐĄ#psáˇ'f+ÜsĎ=üX „ g‡ qbO!éts1Vđ(ů¸ÇpőĹŰuGŔء`ÜáŐ#I‹rćÖ‘ŇđRÉ ß%'Ďa‡kĂd˘ᬠ6Ľ_äĺÄ~´*™ Wz,Ś%“aBź‘€I'ĺ¶Ę Ő×äšŔCEQ}˙né8Ž€#ঠś­÷qDő˘"W‹Ór·ÉGYéÉ,*’]öW†‚á5ň}÷ÝGľ 'E>Šž”´\1©!Zäm6y3¬NHťĹééŇD{Ę (oÎ9Ięs}Iv?©Äm¤?ţřă!Ůď†^SĘ™7óě-MXýJ/č;*z©w饗Â6’÷Ó:ˇ9·u€—ŔĹcC2řîTÂľ1KŽ[CďXěĂbŽîó|Â<:N)aĆüą"„řť0kRzëÓ Î:ë,gë GŔpę# ĐaĹ\`6PrZ¬ CG2Ł9NÂxÍű6’^@š}µ HđI&@>€F˝'žx‚Á‘“€źdRŹ” ç*ם\_’öI%-ćôą`\ď8Ž€#ŕědGĺˇóŢÇí\>&‹äݤ›śážxu¬ŹEŔÔ@Ü0ąŚ7ÉěŻL˛[‡‡’[8r\ŢiCĎ‘ÚÂáŠdÚ şV‹WÓ¤Ľő!-÷MRYöY6“Íő×_O63eU3âŔ@IDAT°„“:â#8ŕfŇÁ@‘÷Ă9Ň  ~ˇG Ät3¸<`ˇ ÇÁŁgŔä "ȡ6h¤đÂtěXś 7jáÄnE 'BŘ1Mú#B“aZ‘9 Čş€6M‡0§ —ŘP$KÓ#cŇŕ„xVa±°KŘĹŹŘ(±+ŻĽňÖ[oýíok¸!ŕđë_˙:kc?đ„z—GŔpNČ â6VâśaT#,élĂ4,C6ى/˘ČIŕ×ykF‚s_%3ŚŹě…§d‡ňĚŕ¨WwŚňa$Őţ“})+ËÜ&•ŐÍy©#ŕ8Ž€#°ă ŕlÝŽsŻw ž’eBÄ•ŠE"…\¸–(ňT˝¸Ć .8ä{ß„+$Ňe<“@ăŇ^‰WÖ˘´0®ăvŔmUÇ*][ËIŔ¤ňĽ„‡§ăµůâĹ‹ •\ś,źî“—(-(0[ś™’FMr şŤ~©k\&Ů:JiN69¶XB¶ŽVUí"ˇ#ŃpŘp€3z„Ę!˝ĚŔ?ČÖwzĘA´<™íŇqU±up—űî»/E8‡lĄ:€€Ó0!aąäÖĂťwŢ ?;ŕ·É:Ž€#ŕ8u`üexŇXĚŔÇÍ`'¶Ž±XŁcă]żŢŠ<¦uŘ`Ť+AĽA2ĎŽVUqE2Łqó~Ýş#ŕ8Ž€#ŕ ÎÖ °î¶}ČUą~šhUÂVÉ8á_8xĚneĐXpv̶có2’QM˛Ă¬ß†Ě?ĆĽÇfZ>™ˇí…O–“ č}5Ô¤•|†ç0¶:˛5jĆeŤŠLóÍ7•Ůł(ř„Nřđ‡?¬>*C9dŘ(h/ŇtfŐi} ˛ć ňŔS¤68'}WNOE.9ÂvíŇÚ-k¬¨ľŔcCŇ8„Ů.±«HgÁźŰÄ ·‰oŢqŁ9ĂWBŐQŠ[«…|`ë LŁűŕ?xíµ×ň8¤¦…=}’a¸ŇpGŔ¨@Ŕ†BŤ8–VdULŔ°EҢd†ńšŠ”†KĽź°cç %36o=¬ʡsFLrŢZQťĽáŹŃźL†‚d‰Y{슡]ápYż#ąvMcJ„ś>´qŮpGŔŘAp¶nąŃŰe7“I[ŁdQŕnŕ\´•u ¤¤,*!=%ĺ%%…Á! ć5rFaŁň ŮÇën6”!ufŤ-ył¶•á’íáhŽ Řj%;Bsf6Ť±ŽP‰Ś2Ňä”fĆžkď~÷»IĘUWg5ŠŚ@˘OÇ xď˝÷Öě6ô0t\ęe;@qđÖ.Ź=gčçĎźÉ%—śţů×]wJĚ8$űŮpGŔhÜ8Â0TßN§Č:ěŻd†Wn¬feŽ?z&Ź“xT$3Qs8DĂ I2CJIÇ«G’&Ý3Íś˝2xéĹşđ©PucQQFš ĎeK×8Ž€#ŕ8;ÎÖí8÷z‡î©ΰEPTĐOJIE´ńÖš|”Ä4÷jşś\’Ľ’7cϤ-!Č,Žݵ  Š > Ľ›ôe·9ËH_ł"f0häôŠ„`˘ŠdęÄO_Ô—qŔÇQ‘Igô†NłíÔ5ÎvČXźä0ZŃshäŮ.MSDĐjTg=´t}z,E˝qM)xÚÁ %rÎžŽŠş„ÝŁSÖŠĹo‚,Í@‚JĂsh–¬›TšŰĐUٲ¬QĹ$nˇz*.|®şę*žyč,AJZÓ.8Ž€#ŕ8„@8$…M„ăZ¨G¦Ä\…Ét č$08°ă`ÄçĐk6e&eÂ.ňf—XR·LÖłCŹ+2VČ2PBäŃ yŽŠę»5˙rýŤĚüŇpGŔp„€łuţKč:˘|®"mŤBŹ*†Ąć„\“Ľ“E,{dbKH i íHLY]‚ž˝ŢČYÍŢś”5V«Ĺ ;Č>ÖŐ2‘Ť¤6…$d·óćÍŁ-’`2l«ŇŻěKR)Wɢ|đg?űŮ-·ÜS oČţlÇ<X€@T-:EEΕÖA)10ÁdŮX[22t,·˛4?&tî0j˘©Cn:]şté]wÝŧ`á썉„lóçl`úá8Ž€#Đ!6VĘO8VV{Ž*†Ćć„dFI éÉŚv˛#™aš?ŻťHfŘ`—d¦Ě¬™‡Đ­dćŞsP‹Ľ…*Í= ě8Ă ’ÉpđZ ›rÝ Mą;eŤŞ›Ţ„ ·^ä8Ž€#ŕŚxś­ń·¸K;HIÎ3ŇoN–3¨Č8Ë}Žś@ś‘zöööB±écđkz5Í®vĚżÓ[ëpfYäÁš°0`ÄŘł™WÓbë „Č›y;Í%>ɀɭé¸U1'‘@[e›reMä‡^đM >•Ŕ2zwĂ 7ÜqÇôť"şsEEZOsÖ¨ą5ÁJC m©J¨”Ś˝U‘™‹,eŁ"äÁs¨9tlĘs÷ÝwĂĎňTĂł·†éuü9–ö ŠŠĹ> ŐĎŽ€#ŕ8Ž€`đ"U`” ÷yH‚c#`TŞá/Rć.#'jťéó$3Ěëg€#Ą!ë`Đç$‰‡=ŢšĂČéĂ0”Ě08BBŰáŤ|†ÍěpÎJ[|ňÖ“<*¬b~B¶ĘÍ•5TI*CW.;Ž€#ŕ8; ÎÖí€7˝+şĚkaŇAňż(E#Ëd®ďo™°V~'†U´˘~ÓGYb/ŁYf¤ÚđtĐ7Ú˙…$V‹”” «SŇ( Ţ9kÁăî@k­ ©3ţµĎ]صę€#˙ÖÍ:™ú1ǤpUäÜCé8i7ĽĐGn‡Vě"‹ÎăA}Źb ಆxBĄdëš %«‡ueSíĐlB‡8áy 2ŽžęŚ…Ę¤@€µDI÷Ůô‡›Î-ćÇĆWAř/pˇ o ÎýpGŔpr0d0—ŤA'bëČ"”ĚXVó ˇY8t†úPƆ1ť3ă5® ćH9ă‰!ʱrM}…Ă( ÂĆ-©Bö‚ťá%Réü á‰eä$Śł˘(4sŮpGŔp gë †e¬Ť\-Q$Md–4 †ELy#‹Ą-+r\­Š%ÍEC>Jö oE¦¤!aŹ6‰Ł:Én1†bz2ťĄ_©¶Q"[Ódú#Ž8řŕýë_ß˙ýFäîô Ň đy– _čÉď™dǙԜZÉlˇŇ/ú"8s©s«¤8E—K©* ™ŕŃsYî8)elçPŻŚ4fŚ€N‘,ŢˇŹ¬âqäˇđ´Ü•[ÉAż¸;tňôČ#ŹÜgź}¸_ühQ±YÓ.8Ž€#ŕ89PGt€lHÂŹ3°ß9 NÎĂ€člj„N mĽ)$R˝µbd¤†xâÁ¬N‹ …‘ř$Ąa<Ąw$3JfČťpŽďę~Bż 52î×›8Ž€#ŕ8# gëFŘ ÝnşCňwÜqÇA!)ÁµŚŤŚđňË/żńĆŮdmńâĹMęYcÍľ™«Č>ç='Ä Y)„|ÖĂ?L2 m'ş‡5&PWLÂj 91Óµ Ľ´„Ą—¤Ë0eQB^&;R_iŃ’ źÚ:.şč":uÓM7ŃÁŰn»Ť©v¤ÝDĹAÇ) [G8,şĂÆdrwdž Drńś€F$ČXbOOuô\ |™Q„€ńkđh’ ' â%!pHOJž=xÉŹŔ%¤*EŹ&S%‰°î2·U<̡ÁdÝ+—z‚J˘ˇá—Ž€#ŕ8Ž@„cÜI'ťÄ¨ĘHÄheŁ c“’^€ťx≼b@Ěĺ!‘O»4o¦‘ôŁaŽt…ˇŤŤçx!GTĽ%źáX¶lŮńT8‰â’![;fP‡€řdđMµĺęhr˝Hę“ʤ[W:Ž€#ŕ8#gëFü-îŇÂ\xá…—]vłźČqŁüŚĚR‰]Ćnľůf&ňKVe–{’LXËfŇDM„fň…ý}CbŞ Y|-‹¬=ĽK&mVX9 Ů9ďźaé/ÝÄŚĚ^óË"vIś˙—˝ó€łŞşö?3´ˇ7)"˘¨XŔ‚ l¨řÔÄHÔhâÓ$ĎtăűÇëóEKLŃŁQbD4Q±€+6°‚JU¤(ŇűĂ˙{gÍ,6çž{ą3sgćÎÜßůřąîłĎ>{Żý=—9ëţöÚ{Űá9– 3’Ăilfr1ˡ]üx~6vŘagśq‚>7Ź€µíXď!Ś1yFăąä?<Đż8Ąď#‰äÔoůaa2ĂS/@¦ŢYKDzd§^Ć~ ńÉ˝^ŢĘřĎ$š@I„3Ź’ß-­˝zőâYđ”M‚ä%Ë­Đ˙E@D@D Â¦şä’Kžţy^”x ö>ňZpfxÉ2\ÇvOěbÄŠ±>ňçe,Qˇ÷Q¤ŻĘ*áÇ(/>Ţř :âưęsX‚W ¶ŘŻHż1LÄZB&n;W°›ݤv¦yÖžé: x@\Ł}rĘÁ)?$,¸ŹÇÇ)Ěů¤łä꧉lçQ~f•{ÂíQBD@D@2$Ŕ›č~űíÇ[’őČč#Ż<ĆŔJăEư /ôíŰ—7”żř¬ˇT/ŁH± ­˘˝iÔ^|„Úńç…ŽWĂU^Ž…G±Hi,1ł©2Ľy©néŇ+_ă ď±ÇćYâ&â#FJVń4âA⼄…čc>.6`ˇEś‘ŹčńxşËÜUĄŞ*Ţ18Ľ”y«pľŃł-÷:Ipź §Hx~ YÂÁ=>ůM‚ëONâ·HéšqŽçŹ’z,MìZK›ťŘŕ -m?ř2eHXÚ>)ŚÁ|řÄ~1hŽÉ÷Ę~~xŁÎ$lÚ3•ĘŕÝÄ@]‰Lg% Ţ›ţô yőp•·-‘n áĎđ KÝć7V4yÇń*äŕI[Ľ= ŻĂn*cŇ›{Wl¦Y›ćR&ťŤ”1i i’eű«Ö7{ęĺĂ«~ W“Óž“śđň~)MŽ_"ˇCD@D@j€Ŕąçž‹Ď€öţűď“ÎŰ*|aąř9S§NĄ kňdÇę˝~)U"¶/śŢ‘°bčt6؉a¸1Důń‰TÇ'Îłbńsú«—ÎŚRBD@D@ę"©uuń©Ő›ń2qݏâŠYłf=üđĂ&L`Č—(­Xß”LfpĽôŇKlŹŔî 'žx"kŻř¸t&«S‹­ß®&×˙jŞ» âݢÜq|řᇠ§ăôÇ,Ë0@ĚJźHeůÉ–™\alfr1倀€TĆöX vŕŔ˙űßqfp"SbĂvqf¤üŕPîFŤ…^V9g†:SůÉ.Î ‘}„ÔˇÍáĚ0o—ˇGäEĆJigĚśbńĚÔäÂ.„éT6T(?Uá°!ĄE@D@D ßH­Ë·'ž[ýĹ}ÄÇeZĺ€ŘŻÁG6ÖJś9Fůĉd=;îÂéDJ«îI4gsI¤ŁuĽpZÇŮĹ~śrFâ1ÓXË•)" " "P_ đöÇC`M sfXâť%pbű‹Á:¬úŠk3Ă)čeśf®‘ĹÖě™ÔéiO0¬HývŠÇ‚ LÚµ-p˝Ü™Áź‘3ăĐ”Z$ µ®á«é›nąçž{4čöŰog†ČĽyóěRŮáYâ?ôĐCÝ»wg’ćČ‘#ěX“%ÖǍͬw|\š`ů<"ěKÂJŇ Mc CÓÄŮĺG>˛#Av´Űhlf&–Äúܱ™™Ô¦2" " " Y'ŔZ·ěËvŹ—ź~ú)Î ďkü™äćPĘX—@<ś\SO=/"Ͱ_Ą˝°i*1g†Öi”˝ŕq¨0KłC1dWÇf ¤j1U~ŘPr:Öo‰ÍLľW9" " "ź¤ÖĺçsĎą^3‹űÇ?ţqÁ‚O<ńÄ]wÝe35đäR9s¬·‚—‰ş7|řpîEłc@8ұT÷R¬Bî¦×'ŤĽ¸ďľű˛ˇŢ-‹Fłl3ţ.ëŮ1Çź›Íd¸öą$nŹ×ŕ9–HcFň-É9VIŞüH[:¨Vp@ż~ý.şč˘qăĆáĚŕ*0ŞÇk:Ő›ÚVćenÁ#¸±WŻ^>16´3ŐíiĽđvŇa ŚAa·÷Ţ{ăĚXÇjĽ83ř]ŚAň‰3Ă’#Ď©$ROx5•%a»^>63Mĺ~Ł" " "?¤ÖĺĎłÎőž"Ř!x±r «5x௾úęË/żĚ'!l±ăŇdr°f3epsń8‰Î#F/Ă©<ĹTî¦ăŁbŇL]A›Ăµĺ`hšY$¶ 0n.KÚQ’ĂoŚM$›AŽ‘ňdFr8ŤÍL.¦ €BÇć̰«ĂřńăqTđpZ’ßÚdbÁn,c7cĆ ÜŽ8âś‚ŕ2±6ąB»k§îĹpfđUpf†Ä“aO[ś´E‹¶ŁÝşuŁ€MˇÝ©1K8µ#r#™‘Nc3“‹)GD@D@ňŠ€ÔşĽzÜu ł¸§x‡řŽx‡Ëňp(qLаë’;€‡·|ůr4;Ę0Ű ˛c@#ąpsđq±agülVźahpp±ygťŮ‘°ŽĐt&®s-TU" " " µB€·ż93L,EcąŰO>ů! W!•2Ĺž eěpfÉ‘Š#Q­öă«`*r!ćanŚ @b—°oÇťě‘?S­E•‹€€€Z§oB. <Ť)!C† 9묳®żţzöetšăp%cÍEÔcVě“O>9}úô#Ź<’•žŮd çŇĘ ą•©ÜhÚŤÔçŠ#K*!~-łb™ĎÂŕ93Jp¸1Ů‘ŃéĐÇŤµß3“[OΡpr¦ĺDň9…źXn‡7¤„€ß;ĺ;ăůJ€€@UŕĚpěµ×^ěűűß˙…ĺ;pfä‹­–|ü‡§žzęÝwßeÍŤţýű÷îÝA­üľ“hý°Î?^˘¶Č)ď>&(ŕĚŕŔ0gŮŽ4ž ę!‡-fŢ&Űzrf$ÇO=‘¦ ]zO@j]˝Äu¸¸Ź}űöe1;¶‹}óÍ7ŻąćśHóqc=92q1YłŹs˙ý÷6lbc±…ŤKÄgM+U=ÄńˇŮáË˛Ô kŘájîÇ|čwx·ěAÁĐ:f¤Ńě’ÍHŐĆ^˛"M@ă­·Ţb¬Ś6Ű%}óđ*ˇ‘,*4eĘ~™ ˝uÔQ®ÜAŁ4ŕ@űüćá÷B]¬ŕŐܧOźoĽ‘×ÍK/˝„3«@üoóŘ: 3ÉĽTŢŕÄ™á ^Î łw9‰ d7-ślřâ‹/ř´Y±838<řf©ĚNvfčKŞÂÉů~»'˛ö T‘€€ÔARëęŕCË'“ńqńYŔ9Śĺ}ôŃ×_ťˇićśÚR/8¨-Čdożý6zŃm,„Ç*x‘b~šě,ÚĄ yŠV ¦˛îŢî»ďŽmL{AXdö.ʧ M3jÍUś` o=6AmÉ[Ţ2íŞMińD}h`KŇŕë3ĽČ!‡0PŇ4UŐűK|sx4Dkň á°MBČŁa ?$N'ŔŻ#?UBD@D@*A· ŁwÇ<~ÂÓO?ýÁLž<™řµTÎŚ-˛1mÚ4¶€`ë ŢÝ HĺB¤ń’݉Tö[%Ę@#Fâ?ŕ93r7oŢ<śrXo„1ŃT–xĺÔf‡çX‚ĚHŽźú%Oř%%D@D@D  H­ËÇ^÷ş\Ş™4ĂGD†ĂA$ŠĹěÂX&ÖÍE®â*Š ľ&iÜĘ:P 7V_çq± !Śag¬Â6[ü…ńsBí¸DÂ=>#Ţs…S s{ě- "F ŻÚş‰hřŃG‘Ć$ ą„,±GšáqÜq\ŞV,Ő<óšaĹáËŔü#ľČ—@3g!Čsü(â{Âx%Ż™]D8üT ¨4FÔđF6ăe„g›gÇ&•3ĂË‹28Ľ¤8óc‡+ó*mC&7š3CśŻE^ť8ŚxVĽL9(€1|&;3±ÎIšF+Z>MUş$" " őŚ€Ôşzö@ëswĐ•N=őÔŁŹ>…妛n"ČîË/żÄ‰Ä…Ťí6ş CÁĚć`Ů;Í&ŔŤJp.#ţeňíiÜÇô÷˘ÄáŕŇÂs^f> Ţ6–O‚7¸ěÉŤĆćD,±ÓH¦ßČ®¸€BghŽKü6ŔáĆĎć'Ńv8ú8Ů ÔďłĎ>D˘F1‡—ňÜHaSíÓ«­C :Âa?'ü“îóeŕAđ»/q ¤Ńě(@×(OéU9(lý%“59ęP÷eŞ€@ŽŔ9öŘc™ßzúé§ăĚĽđ L5Ĺ[HĺĚđú6g†Ĺě†Ęë›I:3 ŕ d§Î /AÜSy9ňęÄ©ŕ]‰ëeÎ Ă“Utfb S¦€€€ČT2/Č(M¬ÂvÇw Ľ°`óí·ßN‚qé„Hç’˘Čă6~üxF¤™‹l‡>•ą™ÜëŘV’˝^Ö˝KŁ(w̵Ä7ÍOLŠ­$ŇVl"ß>˝Ľ—<üđĂmş Ăŕ\ĺ“Y64ŤtWÍ|XFÂÉA¨ÂófB1X@AśAv`!ÚŽUi8pĐ9Ĺ~„Eo%÷€ĺ×čĚí×Ý·@K:ÎUXr "ľüü°Đ'Igy‚'ź|˛ÔşÜî˛PD@ę^1={öüÍo~ðâµ×^Ka.•‡@>ﲉ'ň¦fV,ÎLßŃáű.¤ńg™úŠ˙€cŔ‹•7&ďMĽśjHUIXalo%r5rÖŁ´€€ä©uůöÄëCďE{ęׯęŰ~űíÇĘ/?ü0Î.˝řyÉ®9Lĺ°±k‚Ş(c!<îÍâ ĐäFŤ3ŠĆZu4‡l‡6„׋ţ…d–ţ1$ú§é7rP€tX€2äX>?!E5˛>ň8¸‹JÜ/çČÇB~{ŕîóă =Í“"Ía?Zě÷™¨iv`3?¸…SĘpÉŇ$¬*Ë'MvŘ€ÔËŻ„H_‚±Ť«{ţůç‰Yřä“Oś *üűß˙ÎÜŘţđ‡aľŇ" " "PuĽ•Ě™a‘8”;ś¶ň9zĎ@€LjĂpńNÝÍŞđ2Áż–Jž8EŘâ3UťXnGX€śđ4MzîÜąÄgeŕCg™5N‡>Ĺ>ą´ŽĂMt+şŹN$-$0¶ř$$ŤŃË ĂńČm ­.­ZÇUšł2©Ô::Şu´k—„)tŘ“ĐęJ—™ă “ŢĎoófLĺ°4ů¦ÖQ’zHSŹőťžr`<ż…0Śvé83zL­C»DBĺőžŔíŐ¬Yłř)Â)•`Ç~Č<â4ŔuID@D@ŞB€7Î o1Ţ;ĽvyőŕĚđFă •\3eĐËră.náÓśó4’Ëg%‡×7†Ů-R'oŘôÎ e"öGNłb*zL@j]=~¸yŃ5ÜS–qL–Dµ©­^X»fj˛ÁÉ9;µ“[PĐX¨Žéźô‹#R Ü8¶|¨śSŞĄż¸‘‰6¨r°â”ÚPß Ć§VžäX:4Ěä9r¬f?őś„ĄŤÚ§ÉsĄyeů”4éŤs®ň;Ä:–óÉÁTVć5#>˘ÜQŔjóVHŘ…$¸j ěA…üôÓOé#wíľűîf@yqý_D@D@jď&Ţw ˇ±\/#¤783Dͧrfx—ń‚^Ľx1ď2ŢŃŚ\rŰ[ń6¬!ŁS4c/Yű ‹$ç„W•pRë…užn.zÍČ‘#™ËÉęË좀P… »jŐ*„¤ŘîQ’Y´L9Á3fľ$‘Y¨ZuE˛IďőŇqş–ŻĆű'î,T˛ě^Ó­řä‘gr ‡ĐÝ·”ńD$m„íjř‹˝76Ójó{#Fň­pXO,™0yŽ6h‘đyńĹY®ŽÎ‚ȢĽu%D@D@D † đ2:řŕYmg†ĹdYľWĽ¶b-AŞă`č‘}'xٱ/q´żŘňą–ľťsÍ6Ů#" " µE@j]m‘W»ŐH€ą!C†<ůä“S§NePúöŰoG·"Š w0Ö#ä®0ł)‡ vŘa‡¨•#‚]¬Á°K•beÓ‰gź}vúô鄞Á„ŐŮŽ8âęYÓÍŠ!oQźp©Ë2)ŕ O[oÚ XfX!i«ÖJz=ž¨z…‘&*Z!ÚÓĄ?účŁ3f°ôš¶HČ×Fj0u€€Ô:‚ÇŃěĆŹoÎ ‹ó2˛`Ç»Ő^Ż y•ł’žĎ1ÇĂÄXT?ÂĆ#Ĺjĺ4Ö`,I•_+FŞQČ)9ń Ď)"2¦>8p {ˇ27–5›™‹.Ă,Î4®!‹Ůáă"o±ŇsŹ=[‹4RŮ™śźścf*Čžl•Ŕ;]{ë­·XÚ!’;.1ë削ĦŁńÉŤ^›'üjc%í’5çi–ć3*´:"fÎśÉVLf»=Vâ#ĽmŽ ěDÁ4jP lZwô)" " ą@Ŕś™łÎ:‹•yŮVâµ×^ăýĺoäd ‚š=ÓÉ™v/ĺ9ĽŚeú˝vź<>~ĂĐGÄ8Vůá“0:NIó4€jI&(ÉöL|F–ň%źääHLĄ÷N <'ŕÎĚI'ťÄŔÎ űąóľă]– ‡7&o=^y,ÂÜ^yŚ\âĚPOrájĘń·v¤ţTů‘b:Z§ď@='€ĂzdÇw[O0=ź•qi„śTëż°`3Ű„ĹĘwÜË‚ÍčV$""QőĂ—ÍĐťM_Śek:č Ő‡ź={6±uK—.Ĺ'š ŃŠŢl8…H‡JEźěFÇ]„qĆł7őŠľ[÷í”ONíłôJâ#r Ë´[ il&ß-÷H‡§N8Ě·_&–ă…IĎĎž)OÖ„HúČŹ~®đ[…ź46Ý•E|8xšĽ&;T©\ŘTů~Ł%pĘŃŕŽ*=.şč"dJüűůóçż÷Ţ{lÁA”^>ťĺRä^¶pń9QDął48H#x™Č…ŢGAy”!Í'ĺćLăÔ~X1.‘ -Ó×ĐŃ8,Ť¶á,§db Ëç™üD!0§čŞ\B|ô4·ŘÖ´‘ľ`ư‚ÁtÄС`žŔ)¶Q2C‘:u*" " 5L€×.ŁŹ÷ß˙K/˝ôúëŻßvŰmC—Ę ^‹,b˱Űn»±üŨQŁx_×`Z•ęU›*?ĽWiČCRëňđˇç{—ŮGO÷ŇK/˝çž{XĽ• ą'Ťł`‡ĽE`‹Ůáé˛Ü[ LcOěĄŘĚťČgDĚyä‘lŁÁÔ`/f‰r€ĆÚvÄ"„-[¶ŚđC.Á™Śjqô9Ą*wîI$ ~Ë “žz2í  Ň–°tůĹ2Í.‘i&ń–·[ěů4’‹Š#ŕ :’ýCzőęĹ–Á…Čv¦?RŇRBD@D@ęA±iěÉ'źŚ3óŻý‹W9ĂW‘whŘÖ÷ŕĎŢJ83Äٱ^xµúŇ©LJÎ÷OTźUŞYD@D@rź€ÔşÜF˛0Ë5#˘ŠŃéŃŁGiĹu8ŻóćÍCźŠm‰¸-.ˇX±`3Ň{–Ő¶m[DźŘňUĎÄOÍ\HŞS‹vF÷±»8čJáf̦!Ť`gŃjt™§LĄ!A›Ix&ŢY›Í<5™Ěj+­51)Ő ŘiÄ/yf¨ß…iÇK¦ë€¤Ú¸d˘źśr`E îăÉrj|t–|bčlŢ«Gůa[č–(!" " u…#RĽÔř<ĺ”SX‚µ>¶cŕŤ—µżăÂľđĘćUÎËg†˛¬3ĂďаXÓÉ>@šĘcmNS^—D@D@D ŢZWď±:Cő‡éˇ¸Ş,Őűä“OfU—n¸ (ŘCŤqéTŢ$cß|óMd»W_}őřăŹďŰ·/‘z•0=Uý±ů‘±Sʰ \ëJŘ\woA„ ÁâÝĘÁ­»OS–‹€€$Ŕ™áewÁŕĚLš4iéŇĄ©Vůŕ^VćýřăŹŃě؆g¦WŻ^„Ú%׹ӜđÝŽÍgö.‡[Ť]‚Ű´iިtkÖ¬ń™Î8EEELőHS^—D@D@r“@Ă«Żľ:7-“U"kđ™âĘ\ö~8p łBđ‡Řg-Ö×Äxňń–µCŕcĘ 1ľ&óJ"ššu“ťY,†ú‰Čă“2iŞME†¸?ëđF\VĐłaęTw)ü*ŕ±´6ˢĂÖ>}úś{îąB$" " ő€93Lqe­–Ą#nŽU>đŢ‹í 93x¬g÷ŮgźQ¸}űö@±c¬óKU43Ă6” }’°ţTů”™6mZ¸ęÚ"Mc-ćÂZ¬v­Ó83< [o˝† c*ϢK—.L…3fL-¦¦E@D@*A@±u•€¦[ň—€ QâÚ⧢Äq ľÍž=ˇŤt2śQ<§Ĺ‹s ±MNůDĘ®·‡“Ťń}ńŞ_|ńE\VĐC(Ä˝¶i,Évćg¸ŕĆ< ŻKpązőj§AA傼%D@D@D  ŕXÔ?kŇ-\¸!Ś:ĆńRb­e2 ř˘Ůqp AvřYwfx/ăĚDÔ#ç•W^9ôĐCŮ.j—]vá*V.Ś5ľŢgB 'sůňĺ°š;w.㎠'[ŻŐ±cGžW˝‡ Š€@ý# Řşú÷LŐŁš @`ăĆ#GŽde:–¨cŕW‰#UŰxŔ,Ă3~0ÎhË–-ńźÂ7Ź­Ű˙ý-¶.RUD‰ó«äÓ.^łTX=:\†¸żO>ůäţűďÇ{#MT ŇčSÜž]ąĐíÉĺ„14b<~r Íá×>öŘc<đKůđSĨ4iŇ„‰ĎC‡%”2—;%ŰD@D@D r°CÇ9á„XśŽ‘E†ń"Ň83\Ezď˝÷HŕEŕĚŕW šąGá±u83 g& jiśś[E· ŻĆA±Š7őG}4}úttF´Eú[ęΔX…n@ĺ8T讚l+Ö0şĚ<üOśĆQč&L%ś™eË–q;ᏸ9|řpüüŐŘÚ”)" "łRζËY‹eäSʦL™2qâD<]ÜGĽ¨TF"Ň—‡Ř‡ 4xđ`ŇV’9jřÍçťwźî঩Ęn$" 祠™'âJS¤u„'üi ¬5jŃv‡v›g`†‰†”÷†" ?µ:íÔ3cO˝őđŞß¶ĺiżšśH.“&Ç/y"¬çŐ&/ł ň(ż7HđĽxţĂ€{ÁĹ0ţő×_ŹTÇă G‡€€ÔWĽVdřęž{îyđÁäŰ©3ck~řá,¸;adp„pK¸„3C>†ó×±ç„ îB.|饗pfP b SŢź={öÜsĎ=.=zôčÁdO_Řîő"§ÖhŞ«‘ü°°× ćiďB$'M=Üąę§É—<',Ă“BÍś7o‹#Ď1µVŘ6¤Ô‘ŮÂS3ť#9x^x!Ž>'â©[«„€@ť µ®N<&™ÓpˇÚřĹgÂÇĺ“7ܦе ;€˙„D¤ăśĚCae4ĽĚ‡~! _“ńĎTkŰ…• Ě1ľŤŁ†äÄň.¸n t‡RĄeĄk†¦ńwgDťŁ˙ţ&Káő˘ëá3Ó„J"˝°SĎŚ=ő¦Ă«~K¤Î°Lx)ą|&9Ô€ź >mfv9ŚŇ3ěĚĎN‘SAÇč=?EpvIP @pĺ4,¦´€€Ô'ĽdyEň˘ÄŤ!*źU>eŰ©3;ŰеkW4;ś™gžy†·-^Ä)§śÂ o'|w'ăâeÍ»xęÔ©83xAĽš3tfěÄYÂoá°4­3ĺK:wîLC8WĽÍ1€±Éd3Ü*KDNąÝs<í%ń<í=Šäřížđz’©ĘŕLⱄeX]—5é›#a!u 3÷ŹO·óđ[ ÎqÇwŮe—>‰ĎIľ—QBD@D NŘ>äU'Ě•‘"p€pXŔź•07\(¸‰ěŐ5bÄv@;ĂÓMďTáĂ˝úę«l˙ŠŤ— 2•X=ÍökܲmĂF+·n™YĽfݶÝ0RUB>Łĺ$0ĎĆĎIŁ*â”3‚í.™O_pIŰaWĂĎ0?L{=‘Ä»µťün˝ &“p8“~ţůçaRÖvĹ˙‡7ŹG˦iL>óĚ3mYśŠWŁ;D@D@D Î ¤‹őpŻĽňJś[-}—x‡âĚqÄ„¶1Ú‡3ú±÷ľöÚk„Ô±Ŕ.c±Č4áĚä6—´Čw— ŐŤ‘|Lbąa2ń^H#J’f˘(Š[‡Ya«߆9Ľä{ –ďź8WžŽ-C¦đn Ň'Q‡Čs~ óŽÉÇźˇ0Âisf…e|Ń‹ĄO§ge`…ÔČ@#==űěł™)ĚYU‡ ŕuáă2ŢË|öe BíÜo‹í"ˇÝ»wÇ}2d>b¬Źks9ńn‘«pmńů’«MHtĄĹ'žxâIrĐG‹ż5ٰ¤,*mó¶’çÖ}늹ó¶Dg€ĆF&¶qŔWĆ ä“´µbiżŃ\j?MN$[›\&’c·DOó×í’ÇÖqŠ´úÁ‘Ş’O­8ë`gé–<ňČ# ¬3-’«É·(GD@D@ň„Î ˇ÷Ó¦Mc99V×%¨źW-GŞîă-đJeÜkß}÷ĺ}J·!ą0K­˝đ ćĚXYr1ŢÂÔ6lذ2„Ć]ÔC>ŮÖ#ţBG(4,L[ÍÔfÎ ÜÓ°HsXľăF|ŽX7ĚË$[›>;q]8ÂbtÜ폤#%ý.¬Ť¤ÍZ|HDFVÚe‰S&˙XgŹĂË+!" "PçH­«sŹL×,—†'Š[‰lÇn¸ąî–Ĺö‘ďŞtąÝ™ÍA÷ Ď ßŃV-aü™MK™Ýi±f‘J(‰sI€ĂÚěďvbë]{<ôBAqŮ´‹°đ¦ŰţgÝüÇW~;HĺáŐzś? ´Űn»1kď–€Aś2[7ď6ŤŹ^Źá¨k" " "L€‘B˘Ŕ×pfĂ1ç!ą¤ĺ ±ńVe­4ŢŞ©ń’%‡+Κ®±cźţ9!{±c™Ľ¦)Ě-ć̰ăŻft(tC|*˘éYPŹĐ3fŕ˘ŮQꄤY$ľů3ˇW¦SL~†ĹŇÔPĹKô:U á%Ҹ1¨ŤÄĐá(â˝0őŘśP“y>)CÉTu*_D@D NňŞvËHČ}¶Ä!‡b¦2 Śs™fî*>1ëŚ0/¨1âĽ5Ĺ»ĹIeSf}"ůĄę8%m˛*·_:äm?żµÁÖí.»š6(¸¦EŻ‚¶-§mY‹ĎMCX… H:Ý o©sisRńřńhŕp[qýI@‰`™ŢË޸Ś˙ł>ť©˘u®Ź2XD@D@Ş›€­ÇK“(Ńý¬Ď‹`‡ĎJáâĂŠDxˇ%ń¶Ía)Ź“C¤Ţś9sPS™M+ĺq !ußýîwŮ,‚Iµf«-H‡Ł‚C…NGÓ§OGţc’)šKĽáŇŘaţ ŽŤ”¦28•%µŹc‡És80ä  ód늜FFyą$…®źšš¬Pl]Ö‘ŞB!Ŕ02>ĺ 7ÜŔ-ř‘î;Ć-ĎÂaez&î  áᆖ_‰ţß<9Jţüç?gÄŢ}ö\xÂĹ›¤t…íţĆ»íÚí©?ŻŰ´‘ńmęç`Ýb|h¦¨`!.Grm 4@‡ĎĘÁ€3Ě`$b‘‰®|âă’ď…•Č Ř1Wŕ§?ýéűďżźjEŽHUĽ‘‰Śc Ąéąçžă®4®…éxe:4Ă÷5>~ ˘ř0D˙qXâ ťy¨xćŇPŇĚs’ˇý~5̬P:•|ć{š źp`‘y¬˛‡č‰ô‰?C¸"#Á¦~ÂłB–¨°€@ť# µ®Î=2\' ŕ&â,âJ˛ř sI&OžĚĐ´{Ť©şÄŘ)~ÎbŞAl\:ä'bÄXHxěرL‚`͵ Oż˛řűצŞ3Ěßő¶_¶5śńçT±u´‹ÍlC†wn;«â©ăţ˛(2wŮđ5˝ŕŔH;Ľ~N=]ˇDč¶ÚŤćĽškJdč)Ţ?ž+^¬ ,3k†L„·J¸Ń˘-¶Ž´W^!“TXD@D@D€×=Ż~Fő¦L™2qdi´Ü@IDATâÄI“&ĄßźÔńĘćĺËłëp g†—řńÇŹ3,Ĺ©˝Í3gŽŁ…gbΉ%JÝ“„‚Íř`mŰŞ’ ¸Ź±Ó’Öm!ŘĄŻJWE@D@D@ň„€íĹdU†Ę­|ĘŚśŻĚ ŕcCǨópf92ż=ó’ ŻT ĂY’?“97•¨]š [»üŐz^`Jc™Kňŕ˘ŮáăÚ8­ŤĐ’&á#·– /†[ľě˛ËXŐeČ!É|ăÇë_›žśźśÓüđ»=đ›ä|倀€@&PcÇ{îąç`ő âÔl2˝3Ăř%Î̉'ž8zôč‘#GfŇĘ€€@^Ř®äU·ŐYČ(qř¸L†]şt)‹żĽńĆďĽó./˛]čéš© 3&Ě$ŽQŁFŤ3†ó^Y÷$ą#K®ĽeŐ¸'“ó“sÚś{R—ëţ+9_9" " " " śfʞkŘ˝ňĘ+3fĚxúé§qf"˛ťU…3cËÎ"Ňťyć™vÄďăĎdŇĘ€€@^ĐLŘĽzÜęln`ŘąŤ%KFŚÁ˛Ę¬jg{™±ţ1ű9°Ć el:*+Ó±K×®]Ů[Ťą´¶D]lZuh†j%ckP¦€€€dBŔÖ÷`Z+ĺKüŘg†Z µ[°`3 Č·AGś梲C۵ăŐ Üi¶L «Ś€@Pl]>tu9G 0:ÍRÇčtlµ6sćL<]6,cŞÂ‘tÇsĚ!‡Âň.;‚fmäů'^\üÉĽôýlşwďžOţ‰ÍĆŇÓUČśQu83S§Nť;w®íAÁ˝lž@$ÎĚ>űěĂđ¤I{™×©’" " "o¤ÖĺŰWsťs`qsm2¬-ZǨ5švŚ?“ΤgĚůüŚË·mLąĄlAł¦=Ćß^´Ď™Ô¦2" " " "9śßeŐśî%ĽO†Ż&óŞTRD@D@ň“€Ôşü|îęuý'°ţŤ÷]zőÖĺ«’»Ú°}›®w^Ý|đţÉ—”#" " " " " " "P»¤ÖŐ.µ.ŐH`˲•Ëď|pőżžŰşlĄ5Ó°CŰÖ§ÝţŇsuh[Ť «jĘZWYrşOęf °KěęLl}ö‰]®ż"Ăą´u¤s2SD@D@D@D@D@D@ę-Qßž¨ú#Čs [·$“OIu8:\# µ.מě<"°ňçQoŐUČ€€Ôş ©€€€€@5زtůWżľ“Ďj¨[UŠ€€@]% µ®®>9Ů-" " " " uťŔęG'o+ŢĚg]ďě,Z—EŞJD@D@D@D@D VŤšŇöYŰTTD@D@ę5©uőúńŞs" " " " "«6Ľ÷qń¬Ď°ŽOŇąj¦ěš& µ®¦‰«=¬˙ŚsÓž©„€€ä'©uůůÜŐk¨M%›ŠW?ţ‚[@š?UBD@D@ň™€Ôş|~ú껀€€€Ôu“_/YµĆŰ&MŽź*!" " ůL@j]>?}ő]D@D@D@D@j‡@ňÎÉ9µc™ZÚ& µ®¶ź€Ú<#°eéňu/˝é49äG2u*" " yH@j]>tuYD@D@D@D@j“Ŕę “””D-()IäëĽ' µ.ďż " " " " 5K`U°lŘňŞG¶ďć+-" " yE@j]^=nuVD@D@D@D@j™Ŕ†÷>.žýY¬Ĺł>ăjě%eŠ€€@ţZ—?ĎZ=Ú'°:E`ťY–ţjí[/ D@D@D ú H­«~ĆjAD@D@D@D@D ”@ɦâŐŹżW)“¦€.‰€€@˝' µ®Ţ?buPD@D@D@D@r…ŔşÉŻ—¬ZăÖ4ę˛ iű´L®RĆ (!" " yH@j]>tuYD@D@D@D@j‡ŔŞńO{ĂÍőoyÂPNů$íůaĎTBD@D@ň‡€ÔşüyÖę©€€€€Ô&-K—Ż{émły®ű_o(hÜS>I»`GJÖ¦ˇj[D@D@j•€ÔşZĹŻĆE@D@D@D@D o¬ž0©AI Ý5©®°y3ď:éí‚]II˘¤ČWRëňőÉ«ß" " " " "PłV•î›,Ő™ˇ`g%kÖ:µ&" " ąB@j]®< Ů!" " " " őŔ†÷>.žýY*©Î:î‚%)_Źi¨k" " "†€Ôş4ptID@D@D@D@D ;VŹ&˝Tg͸`Gůě4¬ZD@D@D ®ZWמěşF dSń–/—±2bÜNm7ÁŽňܵÓÂ* " " őŹ€Ôşú÷LŐ#Č-[—­ÜőwżČDŞ3»)IyîĘ­nȨ‰Óu€€€€€@őhܵSE+G°Ë\Ý«hĺ*/" " ąL@±uąütd›€€€€€€€@~Z—_Ď[˝ČeRërůéČ6ü" µ.żž·z+" " " " " " " "ˤÖĺňÓ‘m" " " " " " " " ůE@j]~=oőVD@D@D@D@D@D@D@D — H­Ëĺ§#ŰD@D@D@D@D@D@D@D@ň‹€ÔşüzŢę­€€€€€€€@.Z—ËOG¶‰€€€€€€€€ä©uůőĽŐ[\& µ.—źŽlČ/Rëňëy«·" " " " " " " " ąL@j].?Ů&" " " " " " " "_¤Öĺ×óVoE@D@D@D@D@D@D@D@r™€Ôş\~:˛MD@D@D@D@D@D@D@D żH­ËŻç­ŢŠ€€€€€€€€ä2©uąütd›€€€€€€€@~Z—_Ď[˝ČeRërůéČ6ü" µ.żž·z+" " " " " " " "ˤÖĺňÓ‘m" " " " " " " " ůE@j]~=oőVD@D@D@D@D@D@D@D — H­Ëĺ§#ŰD@D@D@D@D@D@D@D@ň‹€ÔşüzŢę­€€€€€€€@.Z—ËOG¶‰€€€€€€€€äFůŐ]őVD@j–Ŕ¶’’-‹—–lŘظ{—¢¦5Űx•ZŰ8cöćy ­Š˘öiÜĄcšę¶mŮşěöű­@aófí/ůŹ4…u©ÎŘ8cΦłÍě˘önÚ§gŐ»°îĺ·7ĽýˇŐÓňčĂŠöß«Šun]±jísS­’ĆÝ;7?ô€*V¨Ű+M`۶m«ţ1Ńno´K»–Ç^骪ăĆm›·¬}öU«ą°U‹CNÓŠţ¸ĄŁK" " " ŐG@j]ő±UÍ" yM`ÓÇsżşîŹŢ|[ńfѨ[çößÓöÜ“ ׿˝«Ç?»âŻŹĺ]˙puăăÓ«u[–ÝV¦Ö5ÜĄťÔşzöŐ_űě+Ën˝Ď:Őńżż—µný«Ó–˙顲ťÚW]­ŰĽ`É’źÜd¶<ţH©uµů%ܶíË+o){¸];ĺšZÇđɢË~mć5Ůk÷݇ޝ†Ő¶-úă–Ź.‰€€€TÍ„­.˛ŞWD ź ¬ëů']˛ţ•w\ŞĆ–…_~uő ÎýÁů G}HC@j]8ş$" •!P˛vý’+nl°µ$öff˙}ý»żĹ^Ş»™……M×]űeyÍ(hެćU‹"PQúăVQb*/" " "u`6VVú©JD@D Ć¬yć•Í_,±ć÷ěÚţ;g5ěŘ~Ĺ_Ţđć–ąö™W:ţř‚*ÚC€^Aن™WB”_˛ ĆňR JJ fZËđŃ"?_#íRsď×Ú¶ac"żaôj¤đNOK6cR…z·Ó:3ďé¶­[·,ţşaÇv…M›ě´Úôh´   }™¬\­đ—!/O‚ö'=ë¬L%ľwN›3FZm Ű¶Ž­–gŃ!¸j 3| m+QËŞOu<ÍXĽUϬ¨©¶­gQQóbËg÷ŹJÖo`qĎ Q¨€€@ŢZ—·Ź^¨.¬XçUwĽň»­FÁi“ŢÝç[¦ĐĎůAŞbĐć%KYnÓÇóŠç.(Yµ¦°uËĆÝ:·yD›3ŹgY}ktË×+–ü¸lő.VOo1bđŇţĽ~ę»%kÖőýô[2oëĘŐËn˙űĆ÷>ŢôÉĽ’uuîиW÷¶çŚj5jX*ĺnĺ˙^5ţYĘŁî5Ůł'Űt¸ě›.¨!& KŹÂ6-»ŢúËĹ?ąiëŇ–Óę¤aXhi>W?ţüęG&Ůió#já™–ŢřѬĺwŽKěnńŮ"~!7Ý·OłýÚ~ëÔ&˝şů˝MdŢÓ­«×~ý›{6L›Q0¬ÁbůĆŃŁŤÎBŤj~Đ~­ÇlvaÉät…úęÇ&ŻyrŠUŇöüÓZŽě®˙Ěš§_ćźÉ拱ďgŃ~}[źvLËă†d®Üm|˙“•M\˙ú»›ç}Ás,°W‡ďź—ĽYJ&mńĐ׿üŽ™×ĺ7?]óä‹+î}tóç‹Ű÷ěvçź–ËOÓ‘Z‚‡»đ;W5ŘV–Ýé×—7éŃ•vüXń—˛E*µËŤµ_Ýđ§âOć'Ň :^ő˝¦{ô ™É/qKĹŹ*>‹Ž?ąĐÚ\óě+«'Lâď0Ϩ YSvřaĂvťŮd·]cŤÚĽxéŇëţ°áťŹ¶,[ٰ]›˘ýöäź[Ńľ{Záä?në^ť¶â®‡ËŞ*,`YO˙׍θč{Wo+Ţ’¸Ú°°Ë W4ęÔ$űZ,˙Ó?ÖMy+ń'wÍ:Ö0m6`ďćCâŻnY=úꀀ€ěH@jÝŽśĹÔÓýžë,H„;o”]&(‰ç9[׬ ŐşU=ĹV[łCöłÄ˛ß? \ľ˘˝Ř8m˙­ţ×än÷\Ď/[o=óDć=ÝđîĚE—]Ă‚Ű+/)Aĺżµ/Lĺ'w듏˛Kh@k'•í& CN-óú%«|bÍă/týý˙[üŁ˙ÝştyYţÜ/VĚýKzŚżµ°Y™ČŁ^ő}Ë˝e1‰<šW§ńß–/—5(,Xń—ńVźŢxŹĺ»üßOŰŚ>Ö23ý2°÷eąµ›fVró=[W¬¶¶._µţµéü×ĺÜć¬,µbŃţŹË‘d®{é-ţCÚłé?+ôĐăüŇňŘì撍›ŮÔ"lhËÂŻÖňß3Ż vąńG™„ł!ҡŚ8X6´ĺżµ“^CXi~pŮW.ó¶Đ}ÜÔĄ×ýťŃÍËĺ§éFz‚Ä·‹ż–Ă8ejÝ”·Ľ›>™kj1‰«Ć=‰´d…;_ó~ńĽĹ Yy´E=¬ şęˇ˛íhÉٶ~#˘9˙ńÇ­Ű]×´<ęĐIüeű|Ě÷ůŽYţÖŻ–­{~˙ wýí/Zť04QCŇ·&˝wă2şÝFDö˛ôô™|Í,]ز9*¤ůgľčňk}WerřSł†˙&NŮřîĚÎ×˙WŞ1«Gź" " " ůI Şó•ň“šz-" it˝íŞ=§?Ę}ޙаU +I`E™T× ˛Z%~ž}u흡T@ţ’źÝćXšm."RÝÖ«^üߡT޵á­ľşţŹaŽĄC©ÎŻ"! ă§‘DëÓĘt%ň7ľűńÖr‘ucý›e±i\j}ę1|ňű–¸6—ęÂŞ•śóŁŤ|ff’ÎĽ§Äß}ń­źí Ő l[·ań÷ŻŰ0}fW–t©Î/!mP•KužĎőŐžőSO Xą˘ä™lĹJueů[KľľénbŁě´_˘Kuމ/ýű­ĺŠĚWżş-”ęĽOÁÓizč±ő -F¤ş°Řꇟ^÷ÜÔ0'UšÉ`·~˝‚¸'»«rm…R]¤ő\{šóě”KĎ÷oőĆĘDg.%´űŻ–‘ ;.Ő5ŮŁjdVâ‹çÍĄIdëY ú‡RÝ-–”,ţÁuľF_"tÎĄşí™›ŠżĽúâ<'L4޵cłÁ˘Xĺż Ť¶»ŕŚÎ7\Ńâč˛X6jCŽ,žý9 "Č|j*§,ąŘöۧ‡Ş™éŹĚzŞzÖ<ţ˘_j1lńM]nů93Ż=sĂ{{z'‰ÂBćY·9÷¤đé Ř­Ľď_vcŰ*hVÄÝ ąó4#†ůi¨Öm,Ő ů÷ľńŁŮ^€Ä†w űňL&Ô'rŞřWČ«KJdĺY0±âîí©Műőć_P;&Ú—Ż¤Éţ?,*šÔx"Ř™)á»ţîĘ–Ç&V-° ;űçVž±Ă˙ŰŚN 3ŘAgyrµ®ui$,z‘Če7juŇţ¶0ÖoYóÄ‹ĹĚřÖ!" " " ;h´ă©ÎD@D@˛I€-źőiő6;hߢý÷ŞhaŔQ‡|«Ýy§RU-˙ă?ĘŞÚZ‚š“ĽÄ $ń+´¨_VVbjŰĘqOxÓ|aű‹Ď┉sźe±H‰Ůµ3fۤZ/‰ę´ŰCż-[›© sÍěńk^&’`}±Ö§ĺć1Ď®őIĂ)łîĹí±'ök–őÝX^ĘngîXŻ'ţhłk[Ž8tÁ9WXţš§^ęüëďgľ4{ć=m˛gŻ÷—É7´Ĺ¬´¶˙q˘5ÚüĐźŹľĚ҉N™ 7¦‘R őé#çŤř–•äłăĎ/¶ĹřďÖeÉOţĎňKV•MAőb–lăRY“@ž5˙zÎ2uŮ…)Éf2—yŢóË·•[K+©ô—±µÝ7Oˇ¦6cŽźwôXVĘłj‹çŃl`?VyłS>÷صçcż·ÍV˙űy‚’üRšDć=¶t[źŹÉĆ,ÝîľÖFdĹâYźŮ-ɱQ±U‘ŮńçßaTűůč˙Ü4s®•dŮDľöUi •Ľí·N#ŔŠ ‹âśćÎÓ$ 3±WĂŽ“Ü›´24-Wk¨­ßŔŞmvęeÎj›yG~ËŁj]ĄżxV3Ě˝ Kđ…aô"[ĎbŮĆm+śLü wKĂ6­h¨°yŠĽµČi_(ÓŤŮĺGt(ůhuŇpţzËřÂŐŐŹlŞe­Ď]ľ™4÷ůŮWžl6Pf—žoi}Š€€€€Z§o‚€Ô(~.~ůß·îzÓO*Ô* ±ZÜÂ?d#b͇bmř*)_G)Ěěţ·mmx2ů1éżf '!ĚĘJ˘ ˇ:ą$Ä:ëa ¤›q /ŁÎ. ~uŰ–ř™bV1.PëĘÂO|ÖżŇŮÔ‚’›çá6Úµ#ÚPŮé6ĎN,>ĹŢáFŰŻĹĄ2ďéćů =ÖŻa§m‚·fôk~ř@VvłXú*˘Ö5+_ ‘´ yFZI¶•°DQ˙í˛lIůŐĐ^ÂMŞ#łhß>®Ö5;¸żÍˇfĆ4»mřٱ&*ýehszŮôdŞe)}WëLtH (?ZŽâű´˘ş˛ćł¤Ë/¦ű†=¶ ľc{Î,U ·mCHZóÄ Ĺź/f’f8»Đ ‹­Á3ů"™TGŐ˛ËÇÂo_iW­×•n A§ăĎľă …‰śzšK~zÓęG'‡ć‘&\±ű˝7°ŻHŮÚjDŐ˝˙é–%K­ ©Mⶨ:‹Ľăę_H•ţâqońç‹ć Kü‹=&ÜR\ąçyţ}¦‰6gŹ2©.‘>÷¤‚˘¦Ö.ŰňD ŕÔ˙°$ţ] Ř{Ýóeł­Óü}kŘş%Şkź* .FenűŤ“×Sb[źz´-°XüłâŰ»ňOš¦D[šo¸Ôşäç˘ČsRëňü  î‹€T/fuż÷F‚V>đ¸‡]°ü\DĆeŢ61(›ć|ľôú?­{ĺW—vz;ń.ŐQxóge!Z¤™˛ţ\l}ň4µµr _ő މś’@Qó剦}{5í·‡ő€it ·,.“ Ă/^ĘĎŰ.Bőĺ/n)Ż`‡˙g¸tšÝ“yOYčÝ›ÁŕČz‚ěšş]­›“.áŢ ě ËFvě–(hÚ$,źśkhŘľ­đČI®¤’_†nťÂŕDăĽŃÍ Ęě'Ç‚ü±–Şu>tŻ9’@ŕ BŠý:2ʎ‹Ô`§Múôó›îŮËO™őĚ*ŠH9•k+śĂčuZ"§žfÄ6;e‰FL†őťŘ_Ĺ—Yl÷íÓY‘,Éú’‰  KŹC˛ťg*÷ĹłJR}Z¸hVžEqy¬(m…QĆlÜáŇsSŔ´¦{íîW•n’Svšöď›jÝ[¨u>Áí\哹·LľöĘ—±‘NÜQˇ?nq(OD@D@D ZWŞş$";ulßhX{ěi}ú±źŤľ¬¸ü0+"UH­c¶Zb'„r©Ë:HxšEEĄęo$Jnë˛íż=đ$Ő˝a~Ăí¶źĆEđmżşcŞőčc––o@™äXPŕ×bé­«×zfş„m§›®Äök™÷4 y‹ŃĹv&·mor§© ď;-›˛@i%•ű2¶l‘˛ÚŇ [YaM6ˇ6Nox5“‡–Óě ĽěÖűœʥYÝ?Ľ‘Öᩥ+×VĂv­“«ŞdNu>Í4&açW  óůžlşňľÇPŹ ąšIŮĺ˙âlŃ:n©ÜĎŰJ“ČĘł˙Ő¶IŚdr° hXŚIôáištËá Ű´˛ťÖ˝6­dĂFvő±ň,™‡ĐO:Ă?n±K…¦iZ—D@D@D@ň€Ôş|xĘęŁ@Íŕw×gŁ.1Ťéx»ýý˙¬íÂfEÍíďj]’‰q_ýęv—ęŘ/˘ÍZ =ȵÄ~©ÁbđŃŞĘ—W·|ěń‘ŘĄMłćo]U¦š5íÓ#9đĘo¬P‚I”KořłÍ^ô%ɨ_ą>]´IĎ®^'ş@›łË–ŤóLK´8ňŕHNšÓĚ{Ú$Ř "y[ŘÍ‹ľňVuŠn)ŕ—2JdO­«ä—agV˛ۦň­{qÂiżLCŢŮÝŰŻgňĐ·—RD_†R]«‡µ<~3Ż™ôýĹŘźwž\˙Ö‡üK´©”ígF¤ęJ·‰ľÜą)iJ”~%Şéi˛=HÉş˛©ŮnB“Ý»‘&®¶qďî¶k͆i±t™…m[ŹVt@żµOżĚéŠ{'ř]>Q´*¦Âś™ďŰ6G—Ň#–-[Ď‚őÁú†_şýÄ n,3` »˘`S/S‰Dé\ţá«|ś{Yřoůź"’ÎęńÍ‘ ’ ÇTşţébjĽk§Ř|eŠ€€€ä3©uůüôŐwě@ ŘLpJ錳⹠¶®Yg ŃR8—°q×2ጠźOZlB±ŚŐ»<§Ç?~ËďmN )NšžéĹ’Ť{l×ĹXIĹĐ”2¤GőóµŐ{Śż­BqÉ yNŁÎ»$–~cXş(>ünçG¬kŇ{7/ĎoéV#‡řéş—Ţ.Ů8hł"Kďô3óž6Ůc{ëlŠşńŁYEűîiő3_rí¤W˝­&{ě0ąŇók>‘•/C˛Ůěť Ë_?őÝvcG[šř ¶H.ź*'“‡{oŘ/ôv˝ĺVŚ=Fb˧ÉäএfłąŠ•Y˙Zâh‡ýŰÉb[ĺWň˙ˇ%•ţ§ťÜ6sí}ż”ä«„×­,ÝcÚçi6;`oбVŁ©u.{±a´ëÔU1µ®ë˙/ŮrÂíMŞňÜ›ôčZ¦–1™—Ý“K7Tˇ~veýę׿·¦™ČĽŰý7ĹšQ‰L¬5µŽ{· Íl°sęQVŻĆ˝ş±äĄťň·®iźž–f$Ŕy¦‘¶ňúČ7…ůÖaőWD@Ş›@ÓľeżÇhčË_Ü\˛qŃ++î}ÔĄňů Ě'nłö5kż“řoöeâH¬y[W$ś˛ĂfW±áă˛ßŢËśµňě„z·=—jÔˇ­IvqńŻg+Ă-ËV~ýŰ{]Şc6hÓýĘ䪸:*śgë7En 3mĘXóä”ĺ.˘T–ßőĎ/Î˙٢ď^m˙Učmć=%Š°Ů Ä úv,şüÚŤ3f“ć·ôÂK~ĺG0]Î÷”(/[Á˙oź\ÁĂ⥕dĺËÖjéP˘e]ł÷=FP_ŃE—ýÚ'E&ß›>_/›éWIěŘŻ˛/vń‚ĹËďzx{±ť}É˝äâÝČŁdżŃŐŹż°ę=żĹчf˝-ŻĽb‰ę|šé-!27R hŕ>ä[É÷i°äďř€ˇ¸•ř+©?©ÚĘ?÷ĐřŐŹM^5ţižţú×§‡›>Wő_ńŽÖóO&ü‹j›v‚µ$ÚÓ‹.»fÓěĎ8eT`áEWů·U&y%D@D@D@DŔ(¶NßČ2Ö§ŹÜđfŮšČOkžy…‹PlBź˛yťŰ6oɰm»6•ŞH”˙âŰW6°sý,‚ĎkȤ¶?8oÉOĘ&ç2…vî‘ŃĹ×YiŢ·őš«’huü‘_^ő»m›Š˝~߆ż™™‹Úö[§±`–Xzí–ţď]‰t§ĺqCXĐkČ$‘yO;^ůÝĎOűO«sóĽ/Čś\‡žź&ň1ą|rNA¬ÉuŮú2DŚlűÍSVüe|ل뒦=ň_¤L†§;}č±ő„;˘°/çççühŰĆŤßÝ!¬/“/ąUNtXňŁ,hVÔîŰgP »mĹv'ĚÄW˘šžfúÖ›z@8C“ÂlĚĘgQ˙=†â¬O­>Słő,؆uŮm÷mţĽl/ţĐůß:ŁÁć¶|É-ť•O¶ÝhuÚŃËďx ¬Ťm‘ĂÓŽ?ľ€]ÓýY aţ±„űG'J6,l{Nüô˙°ĄE@D@D@ňŤ€bëň퉫ż" ŐN Í™Çµ9ë„íÍlŮJuŻuľáŠp?Öí%S§¨Ó/nýjˇO©Ž«¦Íđ2©ü’ •˛H±ćCîpŮ7#™U«Ó/¶+;u´/uËlţŔnžżpăGł·®XĹ~‹Č‰-ËU›Jô%±0ů‡ł¶._I gU©Ší/ŠgÍßôÉüm[¶íۇuô·©„IŮ˝……Ň6}:/±Â}AA“ľ˝šö핬ýU´ĹĚ{šx^ 2żřł…Ť:whşWof醊jE›®ÖňYü2Děd7UÖĹßř᧠۵ivŕ>|F Të){žlxw&S’Ů8¸ůˇ\EŞDŁtdÓĚ9›?[ÄÚaáćż^UŰň:+—¨ľ§Y9{ŇÜUM¦fńYđÜ7/X˛é“y›?_Ô¸[ç˘ţ{5îŢ9MŹjćRŮź—Oço^ř%wüǶši:÷[‘—’űĎHŠ€€Ô<©u5Ď\-Š@M\ÓÄŐ^5@ń\~Ď# ¶–dRwűďťă[ńfR^eD@D@j‹€Ľ”Ú"ŻvE@D@r™@–§ÉĺîÉ6úA€`™ČjîiúĹ^ ĘçN¦)¦K" " " " " "¤ÖĺŕC‘I" " QMű÷íýňŃÜŘó‚Šn [Ť2E@D@D@D@D@D VH­«ějTD@D bX¤/źŞŃ*-" " " " " ' µ®âĚt‡ÔM¦ľÇŇ0uÓöܲşÍšöé‘[6ÉúK`Ÿ'Řł¨ľö˙¤ľvMýJZWitşQę Âͱuăűźđ_ť1:‡ m>h©u9ü|dš€Ô7kźś˛ţŐiő­W;öÇ|•ót&" " ůK@j]ţ>{ő<´ýć)t¶dÝúüérµö´Q—ŽŐZż*@‹ckşoź0§žĄ‘ęĚW©gýRwD@D@D Ň ¶mŰVé›uŁ€€€€€€€€@ f±.U%" " " " " " " " "Pš [zşWD@D ÎX·nÝcŹ=VRRҨQŁ3Ď<łqăĆuľKyÓőë×üńÇÖݶmŰöîÝ;oşíč_|ń /ŰŞU«SO=•=”Ł%t." " " "PwH­«;ĎJ–Š€€TÇüŁŹ>˘b´žÜ‘ę¶lŮ2{ölënłfÍzöěY ]ݎ*«Ż/Ë—/?~Ľucß}÷Ígµ®cÇŽźţ9Ň34:wî|Řa‡ŐĐÓU3" " " " Ő@@j]5@U•" " u„‘Yďż˙ľ{Ě1ÇäŽŐ6l¸ďľűĚž^˝z]|ńĹąc[E-©O}©hßk¬|Ó¦M‡ ňĚ3ĎĐ"ź{ď˝w»víj¬u5$" " " "]Z·.»ř`3ăÝwß]ştiULŇ˝" " " " µH@3akľš¨MŻĽňŠ5ODŇ>űěci–Bű÷ż˙mé~ýúí¶Űn„)-X°€ÁvÝuWÖŹ;účŁ[´h±{ĆŚoĽńĆ—_~ązőj.±Ň\—.]¨óđĂʬ÷Ź„’ňÚkŻ!nÚ´‰ÂÔÖ­[·C=”Ů‹VíO<ęçM,[¶ě_˙ú‡j™óçĎýő×ŮXy«M›6¬×vüńÇłAUhÝşőé§źNbíÚµľ¬Űž{îą×^{=ýôÓsçÎݸqă5×\Ó°aCĘ,Z´čĹ_\Ľx1'§k×®„˛ęY‡¬-űĚÄě°Ľ§wÚz:iŇ$Ö\űꫯĂŔµË.»€š‰É$ĽžLyűí·çĚ™1j #Gu|Â{W­ZőüóĎ/Y˛ţ4ŤÂXôAäSGÓsă›ŕßâ1÷Řcd_¦TŻśyčěXÂúä“OćÍ›GëXBwvß}÷ŠZÂýç?˙iwQ3Íńmä b9_ľcÇÇŻvŕŔ|µ8ĺy‘`» ż¤„€€€@" µ®=,™*" "5h+HTVj—IWś˘ }úé§–Ź.óä“OzDĺ9Ř’âśsÎńił\E3‰ÄŤCLA¦á5kÖ1c\Ý#|ěoű™^’­Đ"b˘9HN¦»Y1‚ő›7onjÝ´iÓ}ôQŹ®B~š>}:úĘť•wˇ ۨÖ2iU޶ěÔ>ŮEôąçžă’ťRŐŚůéüóĎGcň{31;¬ŮÓéű‚ :nܸ•+Wzyd&‚Â8ĐżFŹ=`Ŕż”>†Eg=4ĎÖĚ™3Ď=÷\XČg_<Ż áŇJ"®]pÁȦ\JĎŤG8k5`'RŁ7ŠPČb‹ćřꫯz+|ţň—żśqƨi–™ˇ%<o -¶l´x”Öʬ‡Ô!¶ňeł§ĚŤ§śrJD,v“”Češ ›ËOG¶‰€€T?üĐ«&jÉÓabáÂ…7ai´ł‡zČ$°T–G?ňŘ(ň§L™‘ęÂÂ/˝ô’ďć‡i¤%Âĺ\ŞóK.ŐyN$AÍ©% őÇĄş°<%ďşë.şo™U7;¬ÜÓOýë_C©Î/‘@3r^™&ŤçĹ‹%÷ŕz>Úk(Őy1äO0!̱t2·° jťWîů|B©ÎňáĚćţŕ*a .Őy[$^Ds´´ą>}úXš/ęgź}–TZD@D@D@D ®Pl]]yR˛SD@D ›nňęQčéHůČ;âÚ§Ip“]%śŤY´#FŚ Šęĺ—_ö[}ił vó 6ä9ÓPYóÂĚRd&ZĎcŹ=F”ĺPFIb÷h‚|ËěÔ©ÓqÇgŃDĂy ŘÖ·oߎ;Ň„ŰćWS% ™*‹l„`äeÇŰ˙ý‘&±…‹| Cu"0t†f{ma"}_B™‰Ą™wĚUú衅lrÉ%—„¦I„iˇíŰ·‡'Ú–•¤;S§NĄr„N_¦´A<ž…Hj%aHŻ7nŰ„qىČUćĎ‚iŚÇđazL…&ćŃőYľ-Ä-2¶Ň–`“”ů> ´ňU±ć`…h:;ĺËěĎ‹/ąÇ†¶)-" " " "ă¤Öĺř’y" " ŐB FkŐŞUŞ6Ž=öX–ă*:“Q[¬$:jÝ›oľIľĺ°Čş’mʉ|sß}÷ą ´gj’źć‘ĄiÓ¦gŁFŤbÉ9ËgÁ;,0‡úăjZ!şůÄ1×Jň9räČaÆ‘Ŕ‚Ô†üRl˘m۶gťu«Ş! 2ŘŠaĆĺ—_n–ÓôÝwßmů´…¤H~†fÇ6šŞ/(h~Ëi§ťvČ!‡Ř)ňčţđK٦±ťĎÉőň± ćŰn!ˇ§łb¨Wä‡čX|…ąĘJs®Öţ† ć󽉛gzâ;ßů8Eu™ŚÇzá…˛(uŢ|óÍţełŕ¸J[rŇI'™Ů¬˛wË-·řD…tµ®eË–n›·ë9J€€€€Ô RëęÄc’‘" " Ů$Ŕâhč2^ŁŻ+ç9–@s19ŚSB®<đ@Wë,t+Śh;â#Lđ˘0XÜčjťcÇ‚ć¬ň§žzŠ©‘D`ý„đ‡DEä”]Jő‰:ĺv]Ď7ťŔ6ä'ÄÄT7Zţرc ˲´‡žqŠU.3yýäŁ'˛ŕr[Ͷ#źL>-µůÉ <"çń†ĐËD­ĂH“ę¨ D#˛ÖžŐiŞŘt‚ú`ËBu¨řf%Ăî[ź!7Ď´ŤšTÇ)kĆ9Fž)R™E@D@D@D@ę©uuâ1ÉHl`]6_ŻŤ¦Ń–ÜÚV8ó1Ü|“l˘ß™Nž˘ĐQ-Ż˙ţľ-7b˛ÓiQ¬\ŽńjĂD(±uîÜ9´Í¶G GŇ(Ź.ŐqÉç„’F´bŰŠHy;µĄîŞhvlÍLŢô|úQ*ˇçj]XŇoIN0#8̤N?Ež#,‘§LU¤ÄşPčeR%"Ü"ĹBť7Ls——$’ŃÓ–ŕÁUÂdA—©‡ËHµvŞu. Ç–T¦€€€@Îz9k¨ ę ,¦x+‘˛É˘śŽÔž˘ÎXĐsWŮ‚ †˛úĘöčJ¬|çuF>ë–ü°~N#jWäFNC-‰S_0.ąd“łĂ =ť¦/”‰ôÎďJ“¬7ÇôŢHa¤+ć G,Gzĺ.Â-RgĺN+gIrŹb[Ń…znlaeŠ€€€€ä&©uąů\d•€@5 ţQĂ$łM›6ă«vE¶+eZ¨Ű„C kŐya€[¨ ˇłÔBŁбQ+—± †z•łI+WS‰,lhŕřěZË cĺĽLÔÉV ~•ą®|°ź† Ű-·Šf‡z:\ÎúŐ0'˘™z™H‚eűÂç>,ࣴ>ňČ#ţPScî-˝ccÖé#Ľ1R›źF¸y~ĺVËVÂ’ [ 7˝e˘n†w©€€€@NZ—SŹCĆ€€Ôć*ú˛_¬ýÎt Ř߀Ç\#óą™°ŐĘ}É´J+˙Î;ďě»ďľ~/§ž¶IšHB> ¶GŹçź>Q]4ńöŰo{a¤C„*oŃjđĹÔB…‹X<öo8p •™2eŠ7—I"ś7ŠěZÎRn®!baĄÍŽ5ĂűŔv‹-b}7»˝‰=Oýö°¤g&'¸‹˝V]0 –I“ ö»Ř cO¸‡†¨ÖDµZbYýľ¦^µvG•‹€€€€dť€Ôş¬#U…" " u€B†«uk×®ŤUë­ůŕ2} h¸·ŢzË;Ć6¤÷Ůg6+°ĚŹ?ţxňäÉěüŔäJvpaΊńIm|đFŰożý}bOR´$Wë¸ĘíVĆ?Ńď•ËBadA7ßę”McąPťP iÝËg’—ŐĂ*6v4h­°Ë-+»y żřĹ/*m¶W&Ľ/,»CßÇvܸqçśs‚~řa— ‰aQXCš47˛é-ęb_ř°öŢ{oî e,¤=¸‹÷Üsϡ¦©ł:.U«%|™ÝfĹÖ9 %D@D@D@D nZW·ž—¬ČÝwß}îÜąVácˇz6°páB; sHłDšíÇĘľL#ő˝_ź/="…QLl):¤(n´őÚX6î–[nAD#"Ěoa#Ű  \…ŤY“×^{-·_xá…Çü˝÷Ţk婊%đüŢ %Ă{衇Nť:Őîš8q"Ô’q#ŕŽY¨X‘ˇŮ±6p»ç‡}9ńÄďĽóN»ÄwÜq‡óۧÚ$bĎI“ J.ąZ7ţ¨xŽšíbŮg­0ś7JÍÉë ¦i®—l&lµZâŰc WÂHÝ"" " " "Pë kÝ " " 5O`˙ý÷÷F]¶óśô‰cŹ=ÖS;餓Â5ŕ"7˘4ť~úé&Wťzę©^ý µĺŐ|ä,+@aâÝĽ°Móä´oßľ&ú%K¸=‘ü4§á$StşPŞCľ<í´Ó¸˝BfÇ6—Ş/čeGuTě-–ŮŻ_żC9$Mť^2¤¶S Őyyć‘ę¸J]^8ë‰jµÄěŁ×Rë˛ţěTˇ€€€Ô ©u5ĂY­€€ä„*ʧs#b"] Ë2­Ç.±YÁyçť7dČ/ÉZr—_~ů€<ÇČmß˙ţ÷mŁË<đŔÇŚ«¬g7věXÄ8żť¸‘ěě*Ű·ľő­>}ú0™”öI1bVůŤÉsiýŇ˙oďŽQ¤XŰ(óŻÂđnÁĚ@ĚL 4ÔŔÔHܱ™kpŠŕÔĐÄX0PĚ˙ M33GTô8ę3ÁĄçtw˝_=cp9TŐwú"Ź«{ôčQú˛Ó]Dó4\ׯ_řđáńÄżk٧#ŽŻŰąÜĽy3g}ţ6ä,)5hNęëç’S8ޏvíZŞ˝4Ç$¬Ü]›üdűŽüáN·É˛éÇ­[·Ž_9˝ůžyqz©ŕ™·.üőt‘‡|űJrú§ >=ţé2Ž#rqž´xřX.Ťlß==Ž× @€—PŕÇç=_ÂĹYřuŻ^˝zţüůářŮv ÷Ććun–|ňäÉ!Lßq˙ţý<Ý,ŰäR¸´lą´5 yüYöiÍOî¦Ě ­W®\9_B›ćžÍ4gšŠůÇ6čř”ś# @ŕOĐÖý))ë$@€ @€řű.Ý=>?ą3$@€ @€ P´uFL€ @€ @`. ­›“H€ @€ @ hë Ś @€ @€Ŕ\@[7'7 @€ @€@ĐÖ1 @€ @€ą€¶nNn  @€ @€" ­+0b @€ @€smÝśÜ@ @€ @€E@[W`Ä @€ @€ćÚş9ą @€ @€Š€¶®Ŕ  @€ @€Ě´usr  @€ @€m] @€ @€ hëćä @€ @€(Úş#&@€ @€ 0ĐÖÍÉ $@€ @€ P´uFL€ @€ @`. ­›“H€ @€ @ hë Ś @€ @€Ŕ\@[7'7 @€ @€@ĐÖ1 @€ @€ą€¶nNn  @€ @€" ­+0b @€ @€smÝśÜ@ @€ @€E@[W`Ä @€ @€ćÚş9ą @€ @€Š€¶®Ŕ  @€ @€Ě´usr  @€ @€m] @€ @€ hëćä @€ @€(Úş#&@€ @€ 0ĐÖÍÉ $@€ @€ P´uFL€ @€ @`. ­›“H€ @€ @ hë Ś @€ @€Ŕ\@[7'7 @€ @€@ĐÖ1 @€ @€ą€¶nNn  @€ @€" ­+0b @€ @€smÝśÜ@ @€ @€E@[W`Ä @€ @€ćÚş9ą @€ @€Š€¶®Ŕ  @€ @€Ě´usr  @€ @€m] @€ @€ hëćä @€ @€(Úş#&@€ @€ 0ĐÖÍÉ $@€ @€ P´uFL€ @€ @`. ­›“H€ @€ @ hë Ś @€ @€Ŕ\@[7'7 @€ @€@ĐÖ1 @€ @€ą€¶nNn  @€ @€" ­+0b @€ @€smÝśÜ@ @€ @€E@[W`Ä @€ @€ćÚş9ą @€ @€Š€¶®Ŕ  @€ @€Ě´usr  @€ @€m] @€ @€ hëćä @€ @€(Úş#&@€ @€ 0ĐÖÍÉ $@€ @€ P´uFL€ @€ @`. ­›“H€ @€ @ hë Ś @€ @€Ŕ\@[7'7 @€ @€@ĐÖ1 @€ @€ą€¶nNn  @€ @€" ­+0b @€ @€smÝśÜ@ @€ @€E@[W`Ä @€ @€ćÚş9ą @€ @€Š€¶®Ŕ  @€ @€Ě´usr  @€ @€m] @€ @€ hëćä @€ @€(Úş#&@€ @€ 0ĐÖÍÉ $@€ @€ P´uFL€ @€ @`. ­›“H€ @€ @ hë Ś @€ @€Ŕ\@[7'7 @€ @€@ĐÖ1 @€ @€ą€¶nNn  @€ @€" ­+0b @€ @€smÝśÜ@ @€ @€E@[W`Ä @€ @€ćÚş9ą @€ @€Š€¶®Ŕ  @€ @€Ě´usr  @€ @€m] @€ @€ hëćä @€ @€(Úş#&@€ @€ 0ĐÖÍÉ $@€ @€ P´uFL€ @€ @`. ­›“H€ @€ @ hë Ś @€ @€Ŕ\@[7'7 @€ @€@ĐÖ1 @€ @€ą€¶nNn  @€ @€" ­+0b @€ @€smÝśÜ@ @€ @€E@[W`Ä @€ @€ćÚş9ą @€ @€Š€¶®Ŕ  @€ @€Ě´usr  @€ @€m] @€ @€ hëćä @€ @€(Úş#&@€ @€ 0ĐÖÍÉ $@€ @€ P´uFL€ @€ @`. ­›“H€ @€ @ hë Ś @€ @€Ŕ\@[7'7 @€ @€@ĐÖ1 @€ @€ą€¶nNn  @€ @€" ­+0b @€ @€smÝśÜ@ @€ @€E@[W`Ä @€ @€ćÚş9ą @€ @€Š€¶®Ŕ  @€ @€Ě´usr  @€ @€m] @€ @€ hëćä @€ @€(Úş#&@€ @€ 0ĐÖÍÉ $@€ @€ P´uFL€ @€ @`. ­›“H€ @€ @ hë Ś @€ @€Ŕ\@[7'7 @€ @€@ĐÖ1 @€ @€ą€¶nNn  @€ @€" ­+0b @€ @€smÝśÜ@ @€ @€E@[W`Ä @€ @€ćÚş9ą @€ @€Š€¶®Ŕ  @€ @€Ě´usr  @€ @€m] @€ @€ hëćä @€ @€(Úş#&@€ @€ 0ĐÖÍÉ $@€ @€ P´uFL€ @€ @`. ­›“H€ @€ @ hë Ś @€ @€Ŕ\@[7'7 @€ @€@ĐÖ1 @€ @€ą€¶nNn  @€ @€" ­+0b @€ @€smÝśÜ@ @€ @€E@[W`Ä @€ @€ćÚş9ą @€ @€Š€¶®Ŕ  @€ @€Ě´usr  @€ @€m] @€ @€ hëćä @€ @€(Úş#&@€ @€ 0ĐÖÍÉ $@€ @€ PţŐîŃôX8IEND®B`‚barman-2.10/doc/images/barman-architecture-scenario1b.png0000644000015500001620000067455713571162460021567 0ustar 00000000000000‰PNG  IHDRŹ^‰™>sRGB®Îé pHYsgźŇR iTXtXML:com.adobe.xmp 2 5 1 2 †Ň®$@IDATx인ĹúÇĄ»9tw Ň*Ř}őzíöÚ^Żíµ»[ŻyŤ ¶ ‚ ¤”twwó˙ęŢ˙şlĚoµgĎ9źóüžóĚÎNĽó™ŮŮŮwfŢ)´wďŢýř @€ @€b@ p d@@€ @€ @ŕwhëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€Ú:Ú @€ @€âBm]\j9 @€ @€ €¶Ž6@€ @€ ¸@[—š@@€ @€  ­Ł @€ @€ @ .ĐÖĹĄ&€ @€ @hëh€ @€ @ ´uq© ä€ @€ @€@Q@€ @€ň"í;wOš·î—Y«'/XżfÓöő[vnزsÓÖť%‹©T¶xĹ2ĹkV*Ő©Iĺ.M«6©Y.«śądĂđ©+ĆÍ^»rö5›v¬Ţ¸}Ý楊©R®DŐňż˙U/Ű»MőÎMŞ+ʢ™¬V‰C ?(´wďŢüPĘĽO`ÁĘÍ/ š™f9Š.T˝bÉZ•K×®\ŞI­r•Ë–H3ÁĽ}îňMĂ&/÷-…ŕßµŽď-Ťëç” >dIóÖ>˙őĚ!“–©Ď EĎQŹ–9gôŞßżKÝÂ… …‰â óő¸%R ş<­ËÂ… ]slóŞĺKúŢĹČCxĹćˇĘBÔ|N@JĄgżś‘ÁBęmÝĄY•Ł:Ô:±[]}˙g0ĺ<”Ô„ąkŻyu¬ŻŔűׯ¶Î— žX˛fkPËTîs_:>ăŞv}ÉL[´!¨h›¶í ş…?ň }ş?ţŮôgľümÍĆ.™µÂE>ŇÜíÚ˝Ůu« ]Î^ş)SŤ˘E µkPIcŚłn(ý]A#Iys—Ŕ‡?Îżç?“çŻL6í±O§«Ł8¶síűĎi_§Jé4K1bęŠÇ?ť6d’˙ÄpPâ›·ď’žQżűkMąľ«“»×-R8ąĄv#§Ż4<Č9ĺK\}l‹ Üń‡ň äú…ĽR*ä„D`ĎŢ˝?ý¶ęŽ÷&uĽî«;ßź´iŰN°@y‚€”yBN„„@|hłČĺ/ý|÷~őŞęâ#d>“d×î˝cgŻůÇ;[^ńŮ­oOĐŞĆ|V@ŠOÚĺz᳣/xft˛Ş:»8ÚZöéĹťŻ˙ę™/~Ű˝'Ô˘<;®í{ú§cî–¬ŞÎNAŽK6^ôÜč7óŰâŔé4gxÜ€@"ŔÚşUݶ€رkĎăźNÄü·ôjQ§BĄ@±!ä HrŃsc¦/Zďőő«̶ ß|sŃ ąßśő _ĎLg§9qîš lŮľ[Ë|´5ďĺË»ul\Ů8_ŢĄg¬ZWoŘ~äÝCĄäJ?Gµ[éšžµú•Ë»%kEN6ňţöĚOóV$·˛/Hf­|?ř¶ÁO^ĐéÔőÂŕ@hë `ĄSäJ`éÚ­ÇŢ÷ý—˙<¸i­ňņ’$ µ3ŚśiëŽÝA·ň«?@âYłZŐuă)[Á‘jö˛MýîůîłÜąi•‚Sj«¤ô ŃÔ¸¶‰śüĐđڍęlŽ^´yűo_ÓCGRŘžfÇ€ź^đěOŞts°¤îJu¨2¸ůй퓊H`@ `'l>®\Š7ë·ťřŔđ» ܶ׀ Ź żŰ‹q¨OiđO}dÄěĄX÷‡â CÜ\˙úřqsÖf\ŞÁ–ÝňÖ„ÉĘĚ´Ôj™UŐŮYż8hćýO±/q@śÚşŢ(~#°`Ő–·‡Í+pŦŔ€  Śž±*˙.Ź•LvŻ}Í˙p§žňźćůŢÂ(hŘ [ĐjśňB`żÇ>ťvÎÁ “µĐ8@€@< ´*´_‹ÚĺsĘ—Ô9Ś»v§hQ>žʧTßOY!ĹĘA­ŞĹS<¤ĘŁîxRÉU/[»J©Z•K)\H{J–®Ů:eˇżéUWjWż:vĚĂGş<ť—k7í8ůÁáá—ńÖ«ZşFĄR•Ë߲m÷ňőŰćŻŘĽmg¨Ý-—żřKť*ez´ĚqćŽ(€ĐÖŔJ§Čy’@©âEjV.ĺ+úŢ={7lÝĄŁ©BÎő-\µĺ˱KŽďZÇ75mťFĽR%0kéFŮt3Ä.[˛čY˝^|D“Ć5Ęą‚-^˝E–ćžýjĆ’5[]·ś—Rú˙űÓřÇŹ.Q,¬)=o"ř@ů€Úş|P‰ˇ@|WźýëW4U »ńs×üôŰŞ§żřmăÖ]†ŔÓŻ?~?´uBÜ‚@~#P˝b©a÷–ßJEy đÍŰ_y˝ZUCUľ™ôďZ÷™‹:…_łiűśe›´gP§ĚďŢc2±˙ĂÔ•2’[Ľ(ş† –ř'GŕŁ"TŻXň›;mPmíľv•ŇWôk~âuO¸řôĹlŻăĂië¤Ë{eđ,o§OÉbEn8ˇĺ•ýšűjŮJ—(z\—:ú]<˝É5ŻŽ5K˛xÍÖׇ̾äČfÎôqCŤvë ZŤSŢüL |éb˝[WżéÄÖßŢŐ§~ŽiĄĚśĺ›ň3Ę@‰€áxâŰT/H$˛[ÖĘeKtjRĺą‹»üüČ‘µÖű[¨FĚ+ˇ˛+(©ç;“ć.Q¦DŃ·ôRŐŮ$´7öë;íÚĚt`ńż,¶Ă»·ľ5Á¬ˇÖâľ·ôşľ+_Uť3µ[ä|woßnÍ«:=˝îGN3ĚCxĂăä?¬­ËuJ‰ °_‹:^Ľ´Ë‘wÄBsăA·|ý·ďü}Ř=cÉŮěX»yÇşÍ;4d©^ˇ¤6çÖŞTZ˙e›ĂďŚor‰<59nömşYµqűęŤŰµŻ^Ő2usJ×˙ý™KŇÖ&ţ’! ÚE˘ßěe›´Ă˘Z…’ÂŘŞn…¶ ü·F&“v*a#nQ.Ą­ž±xĂěeżÓ«ĂÚŐ<ą{=WßËÜj™KÖlŃ‘— Vn^˛v«¦îwěú˝őÜőn]­eť ľ˘ĆÜSU0ě×ĺ‹VoYąa›žńrĄŠÚŻPŤJ%eâ§Qµ˛˝ZW+Y¶E›z ¶IxkĘ‚u÷~8ŮěüľŤĄčQWżťőü×3Źzŕó™ÚĽ|ĹË?Eps/}6xď2ýűq-ÎěŐĐŠ2fĆŞ»ţóëÓVzSOÝŞĄŹí\çęcšKKâ łžŮkQs—oúË?nőłß|úAő5×mDn™©ţzÜRgą4nÖÖĺbËüjě’Ç?›6zĆj§ŔN·VўѫjPC§ż×-UűIß°u§÷–|?żcĎ˙7 ˙ÁČů“˙˙űÁ¸×mżçľš‘ăxŢ˙Ú§±ËLŹ+Ż5·kźţ'cIOęşĺĽÔB‰Ł:Ô’mÍ~ťj)ś˘$µ–) †gVĹĎFG‘˝ç"ĘŞt¶ Űí¬yn hŘşőäçżI#lGÔŽąËŽjfÖÂLš·ö±O¦ýu™”8vDŰá4}őč'ÓdčíĐýk\{\‹öŤ*Űa ŽěUŠ!ÓlÜ:d˙ęÇtŞýyđZ$©8Ăä›UÚ.d0äíďçľ8h¦4°®[ŢËF5Ęţ­Oc™B“ŠÇ{W>ÎFŮ®RóI/~3ó“Ń‹‚¬¤I¤ú·ĽôČf…˙PF˙ç‡ůśę+äM'¶:Ą{}×­¬6Â,u:,ÂU űň€“¬v§Łyíňš`6Ś3®ÚÜ´VygąŚ^äňq]ŢzrëđŞ:+®6ÄĽpi—nĽgoŕtĂËßĚB[çBÍ% űĹ‚ÂB ?Đ:ü:UK­ˇ«•H5łgĎŢ7ż›óĐ€©ÎĎ3™ćŐ憐ďŰ®Ćߏk™p…ż35Mß÷á”·†Í5 YěđRA~0r~}ŰÖÎNsŞö­L9–®ÝzĘC#d4Ä fÝ»4ýß$ęęŤ;f. śőÝ»_ŕ8ĚJ_v» ŃT®†LĄ—QĘóWnľńÍq.Í”«D:rD —7‡ÎѧćŐÇ6ĎžŤˇl·¨ s×MPŻX˙ż/ĆŰŢ™řě—3´1›R.¶L-÷ĐÓ$ăP¶0ľŐňOy{ŘÜGÎëpTÇZľa,ĎMŰvj©KPçv©˙űSŘV:ďźçLP ýkG§ŹíÖj…gľüíÉĎ~ RÚ!ĺP:ŤZ źŽĹxî’.!MŘ)dĽÖ2ÄđĚJřltŮx.˘¬J»N˝Žđ•"UťvÎú¶«©/v§Źí^¶vë=L~gřÜŕĎg;ě˙˛+´~gôlpűim.zĘFĄ¸eŠęşMýŠmťŚÜ™‰€¶S)ż®zĺçu›}4°Î`¶[#¨Ľ3QíAÓ9šk\Ó}vAřFľ«ÔĂÇ?ť®ŃWĐ«ßOoů[ßžřń¨…Ď^ÜY+¬uvAĐ(bÝ&źňf©fµs0¤R/l×ěáíkľ2x¶}érĚ_ąĹ«­h|'ęUuEżT ̵®WńÂĂ›H}ě’ÁľÔpT3Oyt˝] €@ĘĐÖĄŚŽ5 řtVćő/Š{é c¤ Šnđ×YmŮý‘ şÂ ©ĆĎ]ŰëÖÁ2Ú}C˙Va:Ą“‹µTŠ8ű'ű\DY•Ůă¶7@÷ˬŐ'>0Üw=]aŢ1ďó_}|SŻ®ÍŁ2§–lĄSËęÝşULű1­yŁ "¦­ÉŹ‚—Ŕ )m,ĐrĽOÇ,zăęµńŮ2ý[š5Ńćbíf™”:Őľ·ů> ÇĄĐłÝ9T(],hĄá·—nݱ«Tń°ăŔ‹oÚÄsn¬Í\k*m·ĺ9ó‰š9NyřuÇ·Đ:Ă<âwż.G[çŞ.!Pp¤¸Á¤ŕ˘¤ČŁ´óqűN˙m°*‘w,bSvRÎyâÇÔTuv"vhfX[„lź ‡¦¦űß?<Uťť ¦”Źż˙űő[Bííµc9Tüż>őSĐ*-+–¶ţ ¸Ą·NŘ J$×ý5˘=ćŢa!Uu¶´j3GÜ9T‹lźŚ8"nQľ2żóýܧö]\ăĚé™»-ó˘çF‡WŐYbK˙pńscŤ_â,EÜÚ}|č?żMAUg Żő˙úhŠV¸„)KîÖZ c&Ůç"ĘŞŚ”ôĽÇ˙KŻź…Há…‘ž]‡NŽş"|WČd+Ĺ=âKŠÁ,IÄ´_úffjŞ:»Z|ň#Ň©Y;© ‡ŽĐŐ$MxUť•ŽÖćk̶mgŕ™ČAŮüSh„tÚĂ$óÜ›5’ ?ÔŇÚKŹjôkTÝ­­b´X§]É2Ú$[B &ncÚ#˘-ů ! _  ­ËŻ5Ką 4&đ×§Gt6ŻŁý_ŽÍĚżľ±5yncôŚUg>62ˇEi:4ĄµT*Ůt’Ş”dĎFxí4$ë«­‹¶I:€Č`ňĚ ż÷–z3Ůßôú§ď3|Ę cŇO'ý’m„‘u6Ď1—Nv–5IÜňŠĎ{ŢňÍíďNÔRŮŃ3G yWSŕ†¶ cCó-łˇguM:Ţśw!üJ ě˙üZ~ĘĽBŕěÇGęŕ iĄó’‘]łŤ;îÝg´µÝ.‡Žd5­ŕ źđRF|¶íčX˛¸Źäšës([Â,ě÷<ĺ‹˙?ÔŇö ďýiťB`_¸Pˇ×®ěfź›i™×oéhąÓ{ÖolŐ%|ŁlQáĄ2‡Ś[Ë4Kë˝;pô›OjíőďSĽXffň^2Ç|ČIx‘R+oxcܨŹđ=Í3«µ–) I•7V٬Ęč ţČŔ©Zí•Ů|§-Ú iŹŰOŰ?łÉĆ*5-éđÓ"HľG©FL[ovó¨FFµkX©jąÚĹ,ĄĚÔEëÍGH§vó‰˙łÉ›©žAĚëßg ç[‘uÇu©#»aPȉ~:[F3¬WîŢĽj÷–9]›VŐ¬a˘{ĂĚZfŇÖĄ?+SČ:›Ţ°¶WGĺčüwŻ`ř@ůžÚş|_Ĺ0źČ”bëňŁ›Î×ůb^UĘ•řç©m:6®,=NŃ"…4zřeÖš÷÷Ĺ/;gţ.Űئ^EW˛ WmÖ °.O×e™Eu[óÚĺô•.^Úć`† łkÚÁQŰhôÚ•…}©˝´Zčg_ú:žř[Çc;×ń˝sOŤ›Ő*§31t˛X˛˛€öâ YťŰ>ýrEÖ˘ŇŐJ!n-łd±"'t«Ű®AĹćuĘK?~ÎÚĎ~^d~¤&Đö´jMü$duÇiűźŐ«ˇlמ=˛Ăĺ© :9ʬ©UůOcŽÚOýÄgÓ"Zţ2ÖsŇőd?»D±Â*”–Çľňíl=ďA±T´Ł +@¶k-#@\2çˇË(«2<–;Ďh{Íq-ěđç?ýSĐú—KŽlzfŻvH9TűÓ.•–Ł>’ČÄŞ´Ný»Ö9 aĄýëWŇJ˘IóÖéHM©ĹÍFîÔţ˙Ú§QÝŞůó[+/{aŚyÍZóZîw٧­VÎŞwşŐIľuMwײ&•K'Ô?ůůô€“HöÓňş§Ż<菩ÁLő ţ8߼JŃ»qŤ˛Íţ@:yÁşôÍ 8Q¤ěޞs±9=zôÂK«su5tÔď±O§kÂu˙úl‘ÓŁEަ]}UÉľ)oŮľK«ö|oÉS// Sî†ô×TëzFĎ4ŁńvȤä3hëňY…RĐHĺ¦[ÝhÔ5eÁú řšţôÖ«”/a¨Uąôq]ô«óŹ·'<óĺ ŰßĺX¶v[›z.żý^űv¶yě)ÝëI[TąÜźŮiOĄ¬şČš;-ÇőÇŁ\uĚźßoŽ;&çÜĺ›N{äłů<©)Ď=´‘)•XŢ«\®řŤý[ýĺFö™ąúŇ:iŮŤoŽßjÜ!"#Ó·ťŇ&ĺ‰h F”-*Yü"“S^ްBk6í(]âĎWa¬Z¦ćŇßş¶{»•ěŇI·uő1ÍűÝ;Ěüi'µu:Ú:=ÚúY™šÍĺhŮÂţőÝşx+âç?/™żrł-ąËˇ%÷śŮöâ#šÚ ĺ´üĆĐ9¶OVAŤ0âÎá±ó;öąýŰ EŞ™€Ćśç­ÓOçŤ)\¨g«ÍżÓ©vŤJN2ů¦°ÜhX«2S> Ö™]­Jzçkë6 ­sŇ DŕĎO”ThŠ IŕŤ«<ľ«iiجĄ2ýhă㊣›;UuN„×Ű ­[é±B­ąë7ŤcS™ě}鲮®rm~ţ’.cĺý4cŐUNÉB¸eÔćä‡Fç-/=˛éőý[…H,^Ad’ůóܬö>«ô"ĺťNÉ8őád =HbíČřvŇŇ»yô¬Aüü#kQ~™űűunZĺü>ŤŽęPŰw^=V-łIÍrď:´rŮ?ÖV‘r*”üü¶;]÷•a]ĎĘőą?˛×!Śţuđ‡Żv^rd3oiF>ľąW—ëż^»Ůßň¦B™8om{Ç99±Ş5o‰ň„Źůą¬*ŁgµuǮ׌§—č¨ÇW.ďćTčŰB6®YnČÝ}Ď}ňǡÁ«·Ţ:G»&íÉ;n‡ąR¤Zíô¬é§ż’NKł5ąĄ5ŚaÖh·¨]Ţ9ß&a˘§-˝PO"yjě~ęAőţń΄í;ý\JöŔnsE§ĚĹÂôn]íýër5ÂŞĺK>yA'ť&­˘V˘§s+a#ڏsĐŢŽ«ú5××t Ą¸Ň¤›ĽB?™C=¨eŽôł†M'†±’*W*Ĺݵ®"”+mú$7ŹQ]Iq ä'™±M“źPäWç?3JPxugvyő l»]Ž Ą‹őď¨é+ZÄÔ“l÷XÚ;kŤaäˇm›ŹţµKUgËsŃáMl·×1mˇÉâµ7ĽÖëťőŘČ ýSVřS{Ô»˙śĽqăďŁő .Uť-łÖ ¸ĄWˇB¶‡ŹcL𦠟Đ~^‘µ(żĚ}ü4"˙ćŽCĎěŐĐWU§ńi™ćĆZzUuV©´n®W÷nPg×oőWu9ĂdŐ-ŰކM=-ë”—0|62îöۢ ż-Ů0wůć+7/XµY»G×mŢ>gH©ś—N·FĚsŕVH­SHv©‚3‹đî'ţfÚ>ťčC–.QDć]ćŰ·mŤzUK/XĺżűCź [wzµş “  ł-*aŽG¶ŻFëź–é4źď[:%ôő·ľ eÚ’D‹¸ť'KdkĄÁ©„‘EX©T )8o…©gřşĎ9¸áŽŐŻ–„ąB[J7őĄćC´-ń´ŰŃ2d¦K)jŰ֯صyŐc;ŐîŃ2'ť)«„µł~ËŽĹÁ獶oXɬ*˛Ň?ˇkÝĚjëB6ÂÜíTą:Uě˘Ă›jËhÖ–s˝71ßż=óÓĎŹéÜMb^ˇ©—‘9Íw7n5Ť¨í÷]ČÔähëňMUR|N@ÖsÚś˝h•\oz™hY¸jËwż.9m•ůsý“1‹t\ŁY# -®ßN\öíÄĄßOY!Ëîäk0%Ł3ěĂhU2(Ś!©GNKJ§iH*â[ÝšU Q!4ޤ­“ĚRČfP[—˝•Ż6:% Łńi™uŞęx8ÓźÎT5ÜŢ“-›ă†<÷ąeţ€yú‹tm„ŻX·Íţz‰O­í /\„y.˘¬Ę™©ĺV]%|ťŇ*°ˇ#ŐÚźđÚş0•âĚ:nî3{5xň‚Ž^©r‹öÍsÂhëśë‚ńs×ę§ĂCe·Nł§TżM=˙ĂŻťSp›w°vkž&ͤÚjC6Â8t2čÖŻSmýt|ąV)޶rÄ”˛ăa>ÂAŁčÇ?ť~ëÉmě02Ü,®Z…íătkĐŇě6·Rű}gN„»€@ţ#€¶.˙Ő)%Ęź´5C§%†)›ŚsM]¸ţÔ‡GhĚ^f¤_4ó_gűž ­ĘKg=˙Ő óč!(qł˙î={ óźAfőÍiféî€Ń ĎźŇ8Ě®˝, r˛ő«• ·nUSČőš4Î1™KV[Tę&R~)‘XµĚşUhë”:ĂżâŇlă˙oŠU­Ą_®Só\DV•—]Ů­ŮdZ“Ô3¨ł¶ ň+ى7˙/0•bČ+oŐŞ\ęńó;ŮÁß–EnŃľç̶˛OgĐ雉iá›öZę'SˇOţ­“Žä6‡Oö®yŹ‚y µťW‰bEdŚX»zmź4!a¬:ÍPŘ"GżOh%Íťą’ÎN‡eŤ™ąĘ°zŃÔKfÝtb+Ű…ć5µÂ1hż­ä]şv«ď1Ęľ‰űzĘęČŁa´uľÜđ„@A `šś/ĺ§ŚČ—´1gč=}Ű50i÷>úqoŮ5OxŇĂozs|6TuĘŃlă#n¶9nxcܮݹ˝NÉ·žŚž˛đmĽ˙çÍęĆo™qů3hŞ®l·¨0r…ŮL«–Y!Ź©ÉÔr ĘŐÇu+Vµ$mlýĂ<‘Ueô”´ßimŁÎŃx}2V#ÂTŠ+÷\ż<¸MµWŻč6áńŁTu’0·hKż¦­ é#úâ—%]nüZ;.ÓOĘ™‚vÂ:/]îđŻr­tĹMç2d#Śmç ÍťNŮşě¨fÚ1ő™c'>q´ôČÇu©­Ura°¬ÝĽĂeŽŮĽV'É„IÖsű»Ďzl¤ódaí)Ö&\;€×Q«R&ë×›>>€@l °¶.¶U`H‹€&ZuđâyOŤ Jeůşm[wěrÚćPČ…«6sď°,éé,I ë JÓÎAdśţÚ¬E—ýç”λ±u—7$•üš6”ÂĽÝŇŃľA‹˛ó28¬ŮĚ[-ÓPŘ8Ü’ŤŞ¬Ša·[j-Îaž‹ČŞ2ť‚¤Wç¤"&Őű™—+•Ä`;LĄÄN˙–4†%]*©ŽŹĐ+F‹}ZÖ)@ĂĘíV #s.Ň>¦síׯęö÷WÇI “ź5wśű䨧.Ř©#ŇIÇ׌Ąh‘°'ŽíÓtćަB•Z^éT+{~_ýkšçăQ žůrĆŻó×™i|÷ëňž­ţ\« Fú’:÷ůž~ŐRMĺ®->¸ˇ§5Z š>·„lRł\•ň%ĚsČŻ’@äW” ů•€¬#›‹¶hŐ–¦µĘ;Ă\óęŘdUuÍj•űkźĆ÷4E'8“˛Ý…öŰg¸iţŞqN6Ú)ä®ăţʧśŇŁľ´źŮ#ăË÷Ě΂ȴ¶óŇĺ9íŠĺĽŚ E9ł r—)Y$č–íźçZ¦-y eK…Z²äÚËoĹ-Pµ–ńŽ"ĚsYU¦ÜRŽhŢ\¶díÖđ)k+ś!pRš”0•bČ+ý[Çu©óĚEťÓOÇ•BîŇ>±[=°{ě“io?wËvÓ[Ď%¶÷ň–·&ônSMęď­|Ě/Ů Ý—ŢŚ®´|â śĐ'd#ĚsťÖÜéŚ]ýd;ő¶w&8,^łĎŢ­«i?uPřÁGK»˘<úÉ´GNł1ˇ­ş¸˘_sýÖlÜ®ŐRC&-űaÚJł®Ä[ 2j6g٦Ć5Ëyo%ëc^rřý”a4+‹Ă¤Z(;‡WĎ8zQś'X·zĹä,»ťŮ»ˇA[çÚ4ݦ^óä÷O1këŢ:űć·&xĺסp—żôł×ßéÓťµuN¸!PŔ ­+`Nq qł×š‹ë<ökÉš-CeKpsŻ uŐĘőŰ\#gľ{÷sŰŇ GVóśal÷Żó×{­éŮw-‡Ě<ţób—§}ůÜ%ťÍŞ1;¤ĺЇ·Żé1aîÚ#îęşĺĽĽţŤqĂî=¬pá}vőÚĘ•4őĄ21^¶¤ic ÁŠťERYQŃc^ĄŞ+-Ő;{ŤËÓľ¬ZľDÉâ&%ŁŇ×e‹ň ĎXµĚäŹOĂWܤyku«}Ü^ú2çˇZ‹[G~”UFž †Ń M­· Zľ4}цÍŰv•1öí–0Ňű,H¨#Ĺć”@ĹŤvĺr%¬M‘’mîňMziĘTٰ)ËCn>Őô^F´uRbj*4č„©rćŻÜ\?ŃÉě~ĘđŮ!ź˛(;ł5í*íßµnH±­`ŤŞ—-Thż˙·©ŕŽęüh4Ő«U5şP ýu١ű×p'ôǵz’żż6Î÷VBϮͪԭZ&a0@ů•€é 3ż–™rA €ř~ĘrsIť†W~™¨µQ"O_Ô)HU§»“ŤĎ{eŘż^Ĺĺëü·ÜjÍť6;ônmÚtđţů_Ť[âMV>ř&ĄŞëÖĽę{פa™Çw©óÉŔ™Ű‰óÖ˝>tößú6ńÍ×0fUřU·›O Ôôľo˛){Jy*Ś]-|sčÝşöŤ*Ą,€"F٢ґÓ7>-Ó)U^t7Ż˝ŹALgd4ę·ĹÓß k§™‡j-n…ÍĐŕ˛* bdé– B}4Ę˙xtŮvxó»9avŘé$"űŘŻśÝ[¤¸(Ű›T^÷‰öž={ÇÍ Ř´©WŃÖČ4¬^Vżłn¨Y.mNÔtŕ~o^/©ŮÍş%§ň­>Mvl\yřÔŔ5t/ šyßŮřƵ<µ#AÇ&dďV”ťY[7đ§EÉjë4ˇ¤Ş1ďĆm™>4hëĺÂgGľ«Ź”€^ŕRúżxY—‹ź“” K+ť óvzsÁČ—ĐÖĺËjĄPŘďµog›÷!jÂßąj`Ąq ę!mü' -ĐS$8]ËUťšVů6X?őÁ Ú:Ťżžĺo»DąČ ž+/ĂeŤŠ%?Ľˇ§ á®3Ú~9vIĐ]ĄsĎ“OčZWňŢ4Íť~úmU»šŻ13V%µĺĘ›»ŻŹÎýxkoß[–§,ÖżüÍ,C€ŽŤ*î&Ľe‹J(LČ1i™!ĄŤs°ŚGÜ|9vqBmťlh®Ţ¸Źĺ »Ľ˛ôtd‡Zöe޵v6Ć G”U$CöülQ5H[§LeŠţÂĂšČ2˝A­šyŃŘ‘b!ަ1mMY–Ěëíxűš¶l–CK¨:4ެß?Ni}ă›ă_<ŰŔľś˝lŁíNÓŃĄY¶î…A3u—N ĘE§lÚ¶+čnVýŁěęW3­/0záUsš«â—×PąJDĘ\WRÇu©Ýşn…) ×»üíK­Ę<éáď:´jyźCÉNé^żtń˘ç=5Ę Ů·“˛¨÷ďZÇľÄ@hë `ĄSä|N`űÎÝĎ}5ăÎ÷÷±eë-s·}^­>ŚBŰ4 KB”ťfˇ˝éŰ>®3aĺß©‰iDőîđy××"hlŞ»†Ť*Ú2`ç›Đ‘Sˇ¤m«^5µ~ńM sÔ˛.w÷ż>ń·NŢ” |ř‘óĎďÓŘ÷“O*łk_ëM0}źď&/Ä<íô JęŢ'/66îÔ$ Ţ\˘lQŢÜSó‰IËLMř\‰ôáˇOť˙thĚż>šŇĄiŐ^­«É,‹Ý'=8<č®v$íŁ­‹GbIĺÎ"˛íeUÚ™Fć8ü€š…  :m@ćĚž˙zĆUÇ´0ČŁY1áQmµ;ĽýźšeC:áVÄ´Ë–2}㌞ąĘ«­łkA[ő9ŻĂÇŁU®ů4j;Űač4=iźj‡·:á]ťáŔ[zkb{ZŤîűpňó_ĎtůGveçĐ·]Ť"… Ö¦]ôÜhl ąiTŻgŤ ˝Š?iro=ąÍYŹŹ4ŕťł|SźŰ‡ÜwÖÇt®í ÖŻSí˙ÜpĐ™ŹŽ4ěipĹŇIíqEçČLo˛|P<Š|C@ĆÚĆĚ\T­ç_że§¬çĚ]±iŘŻ+‚l 8Ł_~ô>Gh *)µë·mC¸áŤń†ó”ŁwtŐłe5%dęNNg>6ňóŰöć¸|ÝÖű>šě,…ËíRAşî&ĽĽá„Vď ź4:Wô7†Î9ďĐĆ4t/”ónšpćĄ=ˇ—Ç7#5u)ă>ăo_RÍň/OţřÝ=}˝ßźJMięyńMÖňě×iőG¬j-%y<; jÝŠ˛*Í’dăn˝ś2Çt®ÔP•ă?ßť´lݶ{Îlëµ´¨ł•nxsÜëCć;˘}Mßťq†(ůřVÄ´kŹxőŰŮ:Ô|ČÇčîź•#‹‡^„pz†ž­r4=9kiŕb=YE”čęcšź×§‘uô“VtĘŘîťďO :&5„Deç …É5lrŕ–aĚÚ÷ö!wźŮîäîu˝O«]ÚŤ[wjëú˙ťjĐźj€ÚłuŽĹvH§áźČŰ>^‡*K=M)Ý˙—Ľ ôdŘîÉ :I±čŤčőéÜ´ĘŐÇ6÷ú‡ôŃńhi6ť­qËÉmBfG0@ KĐÖe ,ÉB Ă SŻ)äÔľa%×!S-ëV0¤ŁSçźą¨ł+Ŕ–í»žülş,ű¸ü]—»öěqůČXĚ™˝&6[Ľá°;†ÜrRë“»×+Zä÷]HZÁ§ăŰ®~elĐć8…éШ’ĚĎąňJęR÷›Oj}Ó›ăbI+Şă&ßy¨ë)¤Ţ2,úÓf+źqdűZZ°¦¸˛kţő¸%o~77ČŔyIůKďyŮ‹?k»ë5ǵhŰ Rő %e˛Zű?űy‘Ž´3'uv‹ͱśwŁlQÎ|ÓqǶe¦S¨¬ĆŐÚiu}›ĘUýZ” ҉{ßŘýŢ@IDAT°OhuzĎúεŹZpŰ;ÍĎ…V(8 «Z3‘Ěńě(ś0}Ý‘UĄoîŮöĽěČf††ŞÜőŞšş`˝ ŘÉ”§VdËGóFăç¬}ňóé ;ŇËŹJýc;ŰĎ•ô٤­Ă=šÖ*'%ŽoIŐő»ç»ţŇľg+źEľ˛ąńŹw&Í)*Á#’\2ič4ś¸đđ&†‡˛ÓČçö÷&iĎDí*Ą$ąćP 6×|Ë›%Ď(;‡3{54hëT@)ÖĄű×G“µOŁÁúUËhP§y˛A©ůlŤd–D«ęä6Ó8«wť6îćî3Űö˙×đ Ő¸vmm>č–oÔá7ŻUľEťň%‹)Q¬° ‘ ŁgÚr±Ł[Ž—/ëjP;ş{/§-Ú ź×?ĽŹ4›áČ˙Î(K™‘, ZDć’Dö8\>ÎË·†Í•A·ú·j\٬ÖđĎ^¶ič¤eO}ń›A?eGß˝Ű}&¬nig¨A[§šźĽřů1ZV§ji-aĐ('áŘôž3Űą”h¶ áëÓXę-Ă,÷Ď3WkĆRŁFgššaÖíŇuzşÜ',ÓĎĺÁĄlfźű䨤2ŇÖ°sm”Toŕ[”W€Ô|bŰ2S+Nú±´•Ďđ§gAFč´d¦\©˘{¤Ëîßň°v˙3Ąu}ŰÖ0X¨”ąĆ+_ţEßź­ę–×Bu&ÓoĐŢCCvşĄ…uŢ˝NQÖZĘ@$|ś; ö(«Ň F–nŘ"ç6Őe:ŔľîZt<şŔĆ­ˇĚ„ÉŞ—a»·!»||+bÚÇtŞýř§Óxjaű1÷S7%=¬zť.-ÍŽ–\IűéEÚŐQ!»5w[ŠH§g8»wgľř-ˇ[)‰† ’9KţQv§ö¨÷úŮ:}Ő\Ťe“Îl–ÎBůRĹ\[Ośµmůż ›†NO_·†¬s–mŇ/čT4ßXNO)}—ź;Ăŕ†ň=´uůľŠ) ÜţqJ×â…Đ’óę0ťÄŞ_Ń"…dEĹť˘ńÚ÷Üíűőî—Ď2FÝOšÁ ‰qWÄ#;Ô<Čo†Ü,áĄV iÓÓŹšL“Üţî¤c:ŐqÚĽS˛Z7gÖÖ%Ě:>®ě×,ýÝ[·¨LŃ‹mËĚT“MG‹[uÔ˛aM«Ö)čxD+Y­µµuňůÇ©m¤ăđî…wĘ ”GL]éô1¸µ;ţé Ü‹|>ĘZKDÍŁEdUi¨ýěÝzćâÎÝnü:Ś.Ľ9Ů{}öbź¶š˝R䕔٤­ódĆwűN÷'+Í(&ś!m·žbtz†˛%‹=I©í,ň#˛ÎAÓ±ŹťßQkÖĚď”4ŃIW«riC"ŃtîňM Ôtµ^Ż×k˛›i“[€@ţ đű3ţ ‚C@:2í>ó-ŻV‡ůú;=“UŐ)îĘ ţ–­î8}˙:ULC"gľf·ÖőÜ{f;sđwŹîX[ćQ áU"mµp8´mu)5\žyń˛EíňŇçfDň[TFdV"±m™™*`˛é4¬n:ŚĎš u?}a'C€doéV»Ű|cEYk)‘äy´Ł˛*}ë7«žzÝΙÍâŢłÚ5¨V6łićŹÔ˘¤]?§LĆ•2j4J§gІܫŽÉ“ű¦Łětřď&€ÍëÓxNdÄkęכ޿Î>Ŕe>Ő&#>wüľýyRF’"@ Ź@[—G+±! ť˙Đąíbęs%eő™aě4~ÎßË•*öÂĄ]dÎĂ÷nxOYy˙şšÖ*>JÂ÷ť}€ˇDŠţŇ7ł¦-ZďLGĹyň‚ŽNźđn™Ô«đáłRgVľze·iWŠ%aÄ-*SXâÜ23UƤŇéŘČtł9)}ůÜ~Úţć0!ďŢ}F[Y# e­Ą$ďv‘UePgŐ˙ś©`RČWÇšźß·q  H”(i_w|K™üĎXm•ý÷5Ýö'¦Ó3HBuq—Ů4Q{·®Ö®AĹ"f*J”ťĂIÖ{őJt3ÚhH©`§ö¨rzI6 ޸ęŔ‹o’R>ÉEŇVîk_+CŠÉE#4 _ ­Ë/5I9 `$PĽhaMŰzŹ%uF’9Ţ/íbÖR9Ă[n­k{ďş2Őě˝eůh›ŰŁźLŰëgvN“ÉŢŘłt‰Ôvšb}ýĘ3˛Ö)»•N?¨ÓÇĺÖFŚŢçň<¶sMĚş<^6Ż]ţ{ĘR~Âáôi[]6ŃÇ·Bj›áW·â=Ĺ,ŮtěđŃ·(;ë4±m™i–+µčןĐJŹyjqK_ËĎ]Ü9}´>Ě”ÂŐ‰6EVki‰OG‘lťFV•É –‘đZS|çéĐ,˙‘NŰŚ”ʉڶ&źŢ˝®G§&©O98kAóť[„iö Ú驡Ôm§´‘Ég¦fw×fUŢľ¶ÇĆmˇl)š“Jçn”ťĂ‰Ýę ĽĄwúö:ěň ř?OmóÂĄťĄ†ł=ÍŽôđyţ}uwŮą3‡L˙îkCfëĚ“ôÓ!@ /@[—k ™!¶ő+j|9ăąătóěEß$¤öRŕRˇ5G25ôîľÚ:Ş\|´^|Aá“ňżý´6fŇBţ÷§®4źą¨“†Úá·iśŇ˝Ţw÷ô•šĚ•Nú—Z×–”®{‹Şî<´eÓa#)H}‹JAHß(±m™ľŇfŐSíS[PÓů&ŃĘ‹÷žÚ‘Íę>ľ©—RSĆhj-} ńé(ÂPu†‰¬*ť™Fćľö¸–úüÖöÉÔrÔâô×®ě–Á5z©‰‘WbEF[ ZÝqčç¶ŻX&uĹJNůo^}ŕ‡™–SĄß3¨îtبŽ8t˙ę ëQ{r5ŢŢJVt×o<ľS“µ “ĘH€(;uő?>x¸¶9'ĄŮô-f›z†Ý{Řőý[ymú†wzßµÎű;í úé¬őÓą†‚ćąrwí¤łČ¸! ¤>[± d$$ c"ŞW(Y˝˘~Ąţř_˛GË-KŃŕ˘Ă›öëX[)|4Ę­ŠrÓ¨÷Śž n=ąŤuŘ‚fw+hĽ¸%pĽhXĹߥYŐѡÉĂ>žj0fďĚ]âth×ŐÇ4—]g§ż×mXŃS­‚ż,+™ÖjÄ˙;Ő›¦íóĆ9šăµ/ĺĐܸ†Ú: đé/űfü2ß6¬đÚýzÓ‰­ŹęXËşÔ(?̻μşĄ°;şc­ű?ž¤*µR¨Wµôm§¶9͸–0a^†Ń·(—0ÚŢ[´p‚vâŠb]fµeúćŢSŞd­w cßNSkLôEdź[§‚Ř!˝-kߨňæę‰eë¶y$ôŃ:}0÷ëňÇ>™6|ꊄá@ĹJńń—C&|Ěť©ESki‰CG‘ňsYU:«5ˇ[]hÂ0ačó[g˝8hćăźM_łqG( #z]zdł4WI§\)!ĺ´‚™ß}I%•fŕČh«ąä¦§vŻwßG“_2'¨ô-Ž:˘3zÖżňć•ËšĆ VÜ4{+‘fµË¸Ą÷”뾻䫱‹g.Ýhwőš ¬SĄ”L"ĽuíÄ”"ŇŠ˛~K`[ŐhĐ·\Ažé4Â(;‡RĹ‹ŢuFŰ+Žn¦ŁÉ˙=lnČÉěR‹¤HRżܦš:dŰ?Y‡ęâĄËşj­č“źMçűyŰvîź‚TŤý»Ô˝öřÚÓ°iŰÎ3éűr|ôŻNďŮŔ›¬Ž˛ńzfĐ'SťjE")@…|·§@přyćęÁ—ÎXĽqĆ’ ł–mÔ©jґխZş^NéŁ:Ô:ˇ[] •\QŇĽÜąkĎ諆LZ¦Oúy+7ŻŰĽĂą}VÓČtÔ*çř.u{´¬šÂ,hšâ%}í¦Ć/™»bóňu[—­ŐnOĂje›Ô,۸fą¦5ËĄo€üˇSďűĐ}Ř…%¤vÂţ÷ć޶Ŕ#¦®řvâ2ťb¦ßÂU[4@¬Q©”»mT<¶K™¶CfŐ}‹ĘTqňYËL‹Ć S®_Ľz«ëúmßµ§X‘BŇP”.^T˙µ­{ă2[+ëYK7ę6yů¤ykuf‹Ž~¶üµ)ľjąuŞ–>d˙2Q'Ťv:QŃÔZú@˛ÝQ¤SÝ ăFS• ĹČFŠ7gÍŕ‰z-›·błZ»ó%ő˘z!ÖË)Ł5P}ŰÖčؤrü_IŮ ”©4٤˝eű®‰s׎ť˝ĆúÍ_ąŮ*E­ĘĄ–¬Ů*·¦w4ŘE šş5Ď‘U¸đ$m é÷ vRrl۱{Ĺúm2]V»r)ďě…Kő/č ďtwoßČŢňÎ|#îô6Q…ŽźłV¶’őŔnܶÓ9€”`š¬ŞP¦ÎŃęظŠvFŘĽŞ&¶ť§ďŢşc×談OYńý”ĺzQnŮţżW›V¦oŘúçd¶^”šáîÚ´ęaÔpĘ Z>÷©ż·Ô)‰Î«ą˛_ž<~ÄY Ü€@ĘĐÖĄŚŽ(@4’޵gOÂŤ´™%˛{Ď}ǮۼSçHhčqî™-K6R Ż­ËFîi¦™+-*M™íč´LEFúx޸u§Véf|Ŕ)µć¤‘%w4U™%á&«ĺK«˙XmWąlqĺLžéŚö®Ý{6oß%ĹŠV*IĹ_¶TŃLťł”Nń“ŠűŮĎ‹Î~üÇ (Óž9F{‚îFćqç m©d¶ě” ¬t‰˘ŇÓ•-™ú>čÔ()kkZ«B™âÚŃTeĆĹ™`…ŇĹő `iڶT'䕦Ľą}đ„e†ěc˛ź1âÎAë˛#kBAđµŢĽv•Ňú)@HkjŤ:N*ă7†Î‘U>TuAlń‡@Á!őńqÁAII!@€ „$đÍřĄg?1ҵmÓŽ+3¸˛ag_z3—lřtĚ"ŻżĺŁýÚ†•\A±đĎEšË|ň‚Ngőj ¬ą(YC1!Šá펀 @€ň(-;vÉ.đŽ]ţżď&/—9¶ ˘ÍXĽáč{†­ÝxÄDłeÇ?  ŞËEřd X@[«ę@@€ @ @0źĚŁ5w§>\B€@"ŔNŘ+UŞ”Ó3>n©}ż˙ţ{[µś~ýúé|Ą<űěł]˝ĺyçťw 'Ř)ä9WŢŞ˛<÷Ą†7_>k.—_~ą4,NĎnÝş]yĺ•NÜ™%ńÇç¶Űn›;w®SHiĘ}ôQ§OöÜzŰ0`üřńŇÓ9séÓ§Ď­·ŢęôIß}űí·Ź=Ú™N˝ző^~ůe§OÂ0<×N\iş5Ü]Ľx±+‘ăŹ?ţ˛Ë.syZ—Ź=öŘ A\·rrrŢ|óÍ ůÔK.ąÄŐĽýꫯ>účŁ]éŘ—o˝őÖŰożm_ÚŽćÍ›?őÔSöĄÁˇ!Ůżţő/WőŤwÝu—Ë“K'Ś÷Eď-ťŇşÜQćĺĘšK䬭Ë+5Uŕä”*A/ţÁďŮł'aáőĺŁáČŔŻąćšÖ­[' O€ĚPýöŰo®45 Ź­ŞN˘ţç?˙‘2Ń)sýúő»víęô±Ý*ÝĆŤíKË‘wUø¤Lßľ}»‹O‰%‚ľ\!ąLH />b ĺ ź=kŢ2j5ëôéÓ]ţšprůp™A!źđýŘÎť;ůĺýw ٸqcçeöÜ/Ľđ‡~蛾^»ľţéxN™2e×®]Ί+演;ažk±t.U®Qj;věđMSzŇożýÖ^–jđľďčqăĆÍś9Ó•š<:tpyÚ—ęÖŢ{ď=o. °`Á;Ů1mÚ4o Hcđ»ď‹Bö–Áe^D +ĐÖĺ v2M@@Í·¸&ŤÄŮoż9sćÜx㍚ċlĐśP¤@ٱ­[·ş ۢE —O|.µ0á‹/ľpÉcŘűu­¸†đ®”cu™Ť‡ë믿–şÜU̧ź~şU«V.O.S#ç±ÔŠ©XůéYó…ď č[ęÜő ůř„ďÇfĎžíRŐ©€-[¶Ś zs©ę”{ĆßJÖN[Wą\% &ß7ű( X®\9WŤčŇ«ç˛ÂhÎŰ;—fÝ šqü裏Ľé~řáZ=ęő·|^yĺ• \4Ó©?_™]©I[çňŃeĆ›´7‹<í“ńľ(do™hQć•IąB€mą‚ťLMÔ}ßtÓMɪꬷmŰvď˝÷şv,š2ă^&D9NM_޵k×Ţwß}šÓs&%[?*Tpú8ÝŢA¤äEĄp–./}4jÔČÉw:ňÖ#–NI˝m)Ź>kA NUŢ?$soŰ ęÇĽ!U¨Ô Ë—/îąç 3.CtaÂx‰ń\ęŃ|«|ůňŢAćb\{śe®Äyią5Hpm|–ż„łÎ:ËŘňQĺjů^Đ]ů/Z´Čp׺%ů˝ út+ăM:ˇ$y+€÷ÉJZÇ9S˘Ě+S2“˘'€¶.zćäh" Ĺů7ÜpĂúőëMŚ÷4ÔĐcnf@zăĘĐĎW\±fÍóĐ[Ŕ&Mš-šÇÖ&gďáňŽ4hP˛dId.S&ŕmJĘÜhSÎ+w#zKšź5CouVR…'†4ąe&ŕe®đŢÇ'|?ćMPŠŮç2‹‘ţ]­ţÓ”dP::Ö©lٲAwSó÷–Té¸ĐĄ†ç:µQ,ßîÂwmݤI“ćĎź”‘ݶîăŹ?ö†ďŰ·o­ZµĽţ–ĎóĎ?tËň—ń sÝť7ožwužFYj' ăäާ/;ț đşůLŹ2ŻLÉL:ž@űÚŚ9FL@űétB7S˝*Ž8â©*W®¬7şf‡ &“´ľië:wîěMź,X¸pˇK5ŁĂéâ°ôLłµ2Ú˛aĂ5m”Vń‹a,˛bĹ -Çsˇ3„w…ŚĎe–.m‚ö~¸¶JĹB•$¶ŹXfyć›g-‹Ż™– \™ňóř$ŐŹyß#2WştéL ”ÎČ‘#˝·z÷î}Č!‡HO— ĽLťĹT§N§ Ăđ\;qĄďöŐÖů®­űôÓO Ůyµuš)שn®(ć…uß}÷ť¬ş˘¸.˝gb¸čŇŰŠä©úLzăcČx_¦·´sOÓe^iŠJtä"´uąź¬Ý´Z^Öm]ľRé¸1—ůi‚şwďŢŁGŹ»ďľŰ^—ZCäőÄ'{";/Ů"ś|ňÉRŐ…‰eř`ö†”`žÓÖeďá’ůpďŢó<Ç'L#ÉĹ0±}Ä2Ë$ůD+˝ú }źKŤxÜqÇ@E 2Ä™{Æ /»ě2Ť–ä/ýŁFŔλ’G{{ ág’5Ţ’xRŇéÁ5VS•ÎQGŐ­[7_łkożý¶ËŔ°Ö0žqĆb%+Âďľű®˝¦ŕśsÎ9ďĽó$¤öM¸4AJůÖ[o RZéS_#BmJő.°Š¬ŻAezîąç¦© ôý0vRµÝf˝7íC‘l© |őŐWÖhUl­Ą[:=íÔSOMŘŠl˛íČĆĂő /Xĺ;v¬W~=e–^¸WŻ^ZýaHˇu9SN󡳒J˙™8q˘S*uPúŃxQ{ŽÔ°ĄĚrŢUvá…¶mŰÖň1=űC‡U"ö‚Dµ=ţÇ{lż~ý|•ňa±ěu)’\¦Úą, 8—]Hl•îúëŻ×t‚츬ięBK~ĆI#ˇ;{ĎZšőî”<ť—·€ę-˝FÔÔ ŕĚÔr«yÜrË-2ĎŻËgžyĆő©¦¤zč!ë®+î?˙ůOÍ‹8=[·n}É%—Ř>ŢÔdzBoCŐ¸š–*×ęů­^Nę'Ůh“)«>}úŘ)„wč)¸ćškĽáüq×[éµ×^s©¨ôvP»rYgÓÓ¤#)] yä‘z äi~|RčÇĽ•¨\¤V+RvZAéFSP˘-{©†‘‰3ĽËmKř믿şnéRű-Űüš(ŇKÇ٤ßćJę#µ0™z‡¦_F»,1y®my ßť°®Áž¦µ\3W‚މ[˝¤bv;řŕeŃĺi]ęe§1ˇë–¦]˝¦j뤨ňÚÓPĘN%¸+Ł ^¦ŮŠŇŘd¶á K:}‘ą·|â‰'ĽăvëÁ·:|{f‰wůĺ—+Ľ9/;ÁěŤm"ŘŘeÁÔ ­KŤ±2O@KÉ´¨Ű•®Ż2ÎFß„šľvúČ}Ŕ¸|t©±‹´`[xs±ëB$k¶đŇK/•!o"ňŃ@\úšň˝+OiŁľüňK˝‡ô-t 'řűá‡\{~K†Őô⻍Wź2XóóĎ?_y商ąt}Ř<ů䓲ᛩ¸4„pU“ZČ)§śbyšó˛#zĄ9¶‰x`cR&–«”s%"Ľ| R¬hű§´6šäwÍzSňŃHZš©Ş:+}˘H+çJPş°GyÄ<"wEŃÜŁWĎĄ Oצ$ĹŇZŻVČ•š.5ŻÝ—^˙x ĽŞÎŠ®őšłr&Ąá—÷+QKáĽEÍZ# /.­p&"·ýŮ`ű« ´c.ĽŞÎЍŹ7•Kę;ť¤Úđ{›çĎţÜu&ĺŘľë(č–jĐükEWÜáÇŰIĺ˘#ă—/ßÚlSh]J0S]FďČXjy‘KËŕĺ ]Ťę‚ÂtÚmęŠćËF—˘ré™ő~tąÄÓĄľĆ˝JL»Ţ˝á||UšĎZFę]gä%"¤ŢÖ JíD{ĂHEňÔSO9ű.ߦčLĘ 9a`ßúÓËé%˘ťJÎě¸}9ź#ąÍűřě\´Ś×Ńň˙Ë_ţb}ç›ß&g§ětŘlŐ ť‹ í0ažniö˝¸ť‚ŻĂ·j|CÚ{3Őć}7'ÚąX2„ ă ™çZ˝ĎµoÍz=}çYx]&M´'Ăő8»aľK8eđÄ›»ĺóÜsĎyź;-¬ÓÚ.ßĹVćͰľíÜŐŘ‚$IŮ?#OJj›ŚĽP2Ţ™{KqöµN¤­{óÍ7˝UsńĹ[kÉćeĹU3űąýŔĆ $Km]˛Äź-ľăe¦A°l`ýýďďßż˙wܡďMzG ±¤wóÎÂ[·´Ë2c]jM„Tu cąH§Ő.Oßq‰+ŚáŇ» W« “U„Yé»Ö¨‡ĚEůF±?lěRhAĆ4öex‡ĆZZ>|Â^µ“Q§Eô† éëźZ˝ř&•ŽgĆ.çŁaLŁv{ྤݺ2őĐE˙€x™¸>xX>S¦LqÝňĺćzÄ|øŇ1\z»őşZŚěúş3¤ŕ˝eW˘÷VOšĄđ>k™Şw ś‘—ŻÚ®J}Űh±łެj*wY$pŢ2'ĺ )·/X;ß ®D —Z:j¸ë{Ëwqóµ.K^°7)i‹ĽşBYڵ֙˞Ő~Ě+­|Ľ‹M|Ůž. ¶¶ż×aUhŰĽ^Ůαrt6ů„ ă[^ů| ÔsÁĺďűř8µu_|ń…łî´ŚNf(]ýąS[§—vO9j•·6(¸˛¶.5 鵢¨žĘ2diżôťqSĐÖą›3µôÝ™zRÂ7oç;1#/”đYűâňöEľ :kÁ÷h`ß)=MKx32Š"ŁŢ–0 ó2ó-ŽŻ§kl“+_Áđ„@RŘ ›.g‘€ďkg~ZV¦i|ýÉS§ëСĂA¤uÚÎ`.·h™ËS—2§%»ß7)yşZ…ťŽ7_ť§ä<¨ÔĐ~”ľ˝%¤ęZťwÝźh[®Ö_'e‘ÍkĚAé8ő ®}|vYäpjT5ŢF¨…uvxoŮuË•B?f`ĄYi+ÔhPˇsW|—ó‡×ľYEĐ[Ëžö›{ăjqŚú[!őÄe°Í+Mß’Úč¬LĂ„ń­+şţó\Ű(Â;Ľ‚âÚOÍ ą˝:@Ż׌‘ó9rťdI´°NëÂ^|ńEŻ´¶ ËdµuÚtďÝŔˇô]ŤÍ›cĘ>|RĚÍŰ)ˇ]śL˝P|ź>+ÇÔú"߲Řb+e_mťďÚ:ďÂ:µ7픲$ĚË i(c źKą2°±‹Ś)@[—2:"f€ ŇťąfB‚ňĐ·˘&÷ô§ýAíŰ·×YöŚŤ3ŠF·2ćô±ÜŠrß}÷Iag]ę,_Ól¶zN­ł3©ű9;÷Ü“×ĚÜń˝3łűîYŮŇRqŞUÁ8…<ЬĆÎ4XCRŐ(éę$¨LdÎňĺÇGÔŹ+řĐ"(w_˙ú×=łŔ ÇŘXŮŮ^VK›~đĚRlů‚ cŇWý#S3ÝŠ7|`L§°eY ÎaÇ=ŻîeßC·bßá˛^Uř!XµwujĐ ôap±'@\Ü ëC©Š\"XĘM-C­ą4•sýŘ% ^B°*·t¬˙ľ]R«ĘOíŚĐŘçĂÚ—UQŹW…xa µčńoÇÇZ§Ú˝S7‘j3ŃŽtŞă›D‰MWąŞ” _ňZ^ŢPQ«®ŞkŇĄ/`ĽĂ—©…Âp•Ţożý˘ÖĎ˝Ś/Oń#VZ`Ôç^©u ů4zpGµŽW÷r[Śjřrç\îS;®Ť8|:xc1&v™“ĽČť¶cXôÍX’ŕH?`d§Ş‡ÜŁĂmşü¤ÄńŮ•–ëIyAîŰĂ…)ŃQ†L…ď1ŚăşlÖVăş Ůʇ{ŘěłPăŘ‘,{Ů~űíI*ŽŻlTëŃčGY^X§2:2Ďp´Çśîěź™ăcač±Y€6¶ue/".2n¶Bb–`;uw  Ő‡˛Ulô†ňíóµ¨Z—xµ$qzźy˛[ÎŮ'F 벉;ÄĹş3˝zôW¨K5§úđl3$6ˇţ•@? 8¶źŤŢI¬Á\}o“Ż:|Áćm™OĐĺ×9ŚÎ˘âá†ÁrÝ©úĂkFöÔ‡_ ľĘµf°ůçĹ5{#E”A°‹E7łčć®Vµ Űf›mŘ;2}QçąçťwŽŁ#{ÜgĘC<<*±zHćYť _Ľ Ěă]+1€űË_ţÂ+%úšâ& QxřcË,#>ľĄ%D’(ß:i‚(Ő…P1ŞbŇÄM¦DeŨV?ÓĄ/®Y,^b«˛ R «§ô0’t¤é¤­źú˛»ă‹ň3}¦¬]Uýěmďęŕ ëÔ©fbŘ‚ÍK”ę`‚X‰ő\ٸأˇ?F©Ž›nşiŚW”ÔłÉëř%…yëi‚;ʴχ}ĄËř´SŐđxv|¬uŞÝ;rˇ‚Ľá”ź|¸Źp%©Ju»îş+_J©Ž¤xßĂĽ%#ŮŠyőm' Ě­!›"RćžH٢T‡'y,šĺËňTEĎěÖüŁš@ŰU/Ľ1zppë/7@OŻĂM†I5żŽµkĽ˛9r”ęH÷rË-—C$¶ŇłGźŞć•6bHˇS}>¤VŢ.ąĐESľ†a×Yă¶×YČö‡éSVIç ŽĚ.•!ډ.§âř Á˘Z‡Č[ŽßV†uŘÔ3Q#¤ţŰ.öV­+{IU$býttj¤ôöÁ†bwę†ŇńkQĂ«eóşŇ°Ž'ź}öŮ'¶ZĂĽZŐ±oŻKCň`«¬Cý! m]č·ĂBň“źü„·ßę Đö™ńŮ„ůw\Žăű0ńĚbaĆΤ1L<›­ üĂÓLőUŠuôĘD… [)íĄŠ!¶féaČRa žb©˛OXÁ?{"bö®…‘EZ6βµ.KÇdŁ#ýhV}©#$ö}áĂlŚhŮ×]NĄŻu”M‰ ˝Hę@D9-U×ňQ2ŤŐÜ]­cZŕ,©jxľ!łQfŞ«†Xx2şT<› ĐŔdĂű¬ ĺ!†KŘ]–ţí}:;¸B^U>UžŐ$ŇŞwupĐ čAČ. š°ü-Ű‚)óŘÍĄţŐ^ť™3ô8ÄH°ł—tŇRGCŞ+.5čMĺ—€>ĽhU{HĆZGÚ˝S7š©ZÁęĘîܰőnuŐm•TuܸÇ7ájÁť±Íz,©aÍBźĚ#Ăťţ2! =Uu·ą*b"”ľKŁW8Ě»IĹĺ?ţńŹ,q>ĹĄ†uM†)T TyVÇwäl±‹PŞ*“V eÉ«šWYÂŽôů5–łĺŢDYŽMÂTŮ:®łöíĂ!"S˙mŇóM7Ý”&Ż$Y‡ Öš<–—ń=•Ď3i"ŃŤŘT¦¶¤}#{F qyšeŇz65$śŞv’4Á{§ť)Ő’SČV6ĽˇtüZÔđj‰ZW.HÇdŘřő˝jX·Ç{¤–’ óŞÖ±oŻKCő`Ó©k:“8ŐşIĽt]őy–Ĺ‹ťX:šß2Ş}q™“…\ÍĘXᮌÎ7™xSISc×ůŇÔ…·Sľí°Ş]2¸yʉ‚ŹłVďîn¸ajëłăÁ+şŁ#5vŔ3›eÉÓw842žäPޏ)rXZ·…ÔŇ—ęjÁxh‹Źz±ŃQŤ’>cťwŢy1ptěµ×^ém;ú TëšŘYd锇4%ď<™?Ź•Ő'ˬZÁ}÷Ý·jđ‚~‡íI©ÖĄëCeąg‡ĽW—ĎÍY‘KĎ&>\!»RŕE:•€c©Ş$[ő®ÎşN ˛˛Ôn­µÖŠu ŽŞ)(}¬ ÉŔĚârÜźzVąĄCŚŔŐ0}ľ¤TŻ`[l±E«nĚK]©Öe%LkÔĘ]­EĆZGÚ˝#7‘Pĺj«4x“lsŐ%Jµ+¶b^ćË[zÚÍĘdÁŘę-‰NÜrÁŠ6—ôjKË ‚…ë<óřRm!€ű`ędb]ąňcjXG°jŐJP%Ď^]Çě«Dą Ej%‚„Jµú۰"éóˇ MrěsÇu«†nî_ęÝÜ7‰ž­Ś-$sC˛™Z<ąŕ—«•a3»Ë]żxňIͦH¶Ő3c6ť KUNŃŕT9NCřŽüíÔH©V6”| o(ýąUëR¶BŐ¶.ýBYÖń`Ě|ü´áćU Ö·g›ˇz°Ik­[}& Z×gtF@kŽý1ÉŽ·f»°–/„M$VŁj]őęŚZW-7óVř•§Č˝|”!ŘŻýë2p+źtAźňĹ€XĽ WăVbŞjŹA¬+ĚG-§ŞĎdeú”*}ĹŞŢů VFŚ>Ő(ńîN1JµŽĹę 1Ílă‹ŕźMŚ{娪–±´Ő¤Ę br’JśY¬ęëYůTťĹŠ‡ŐľĎFG›Ä0m\!ý’vŢ”ą—! ÓŞwˇwvĐ‘×@ :3{śe•EY(ŤgY¨4Ƭ2É·&ë´ŐnÓ·K c¶úq‚‰~Y5ăaąÂ4YÜĹ eM;2ÖúŮŐfŞÂá‹KŐ?z–¬čŠĺk0á«kŇaż™*qeÁ¸Ĺ”;ćN^ŃŐW¸x¶tTŐşpçĘľX°đćöe ĺŇŠ›÷ä4d ŠłŮđÁ§ Ö«ëX«;ZąäźyŇYóiQۻ˶jqŇégź%){ţŮŐ©I˛äŽëömÝđl9‚>ÜzÎ9çś4>BG)9ŚŻx6 äŇ@•ĺ窙DdŠF–ž|> KŁÄ”ů´Ă] üXÎd‹ň2Ĺł4ÖŁl}Óµcš8ú?RĘîMľ­l8ŐÁJ5ëţ\‹Ş –Wˬ­çřpíµ×–+Ö±„NözŐ0Żę¦Ď6tÚˇz°iŇ # ¨ÖőČCF€éśAY ÜÎąÜxăŤ|NgŐžVe ŚŚĽó¶Oŕ,·™tÝĄělőůŻęßÜń"5K)ďR|wĘ‚CâL”+ŤV(¦ţđ|vÜqÇ•ËŐ÷XÂ4SnfeÁĐňŇ0e‚eŢFâT>¶‡Ďfjź4«¶Ť1q&×DwpđŘ×ęSm˛ýaYZ—Ď"1V$)—R.-¤bx<üĄ‡¸y¤.çfaâaőŃ$žŤŽöŤµwôgp…”éxe˙¬–­·˝«ł®#„«JůbŞz,ŐnVĹR†,-zĘ0ék•cź/)Řä–ÓßnŞč!w^Ŕ‚#ţĺ-«j|”Žkýo÷NÝDB}«ź^JřđľŤm ťˇz–ŹXĺÎĺ‚b!.#´|gN/z(Ą7âr5ëŕY*éL”N?ü´‰O•ZC8EŐŇŤ†(*c§DÁóÖ÷1µŕČ ëđl2|š_ÇH°ĽD3Ö¸d%á°¶gţÜł·Ö,@«Ă˛"Ő‹O˙ű|,@™#VZŮ‚!=†q\Gž8ÚŹë4dwöHž”Xó$ÓúÓE32ˇŤ«4Őě“eWŽŁŁ×ę„Ć~:u=&ńňĘSŽ—˝O.h<˘„¤âoGFJol:{Céřµ¨lňa¶¨~‰j]iXÇ2ľë­·^Ö ó*őíŮf¨l˛Z{(>P­ë3:#*4/6pŕÇZ¶h"§śr ›Xeˇ@\ÜćyŞ(mńŘ“±·….hčm éÂꋟš«i2m3LmHĎfŻý¬±ýŤo|Ł|yKŁ´r§I4{Č#Vu獏bĺ†wéŰHUTmőé/$Ë»e©Ö±6Vů¶‹ŃÜQŢř‰›BČ’Şľ]·Qëx-?ó›%Űć°ZÂ,<}»ŹĚłź‡˝\!»†K)¸·˝«®SĂLžď3ΩęOU± ÉÓmůę’Yôô8ÄČ´ł—”R¸!‹ňQ;V–Iëĺ|޲˛1|+GÇÇZGÚ˝S7j]ݵ >5+ÄU —7ľVĚ{썥M¦|$«fŤ'e+7vHŤÇ[EĚü«jőĘČßqljX^˙>˛‹-Ö@ŮĹąÉđ!ńć×±^Ťµj—nŐLśě{óň»Q™TGú|Čš†(ËĎ“Lj Ü$L™égÍ”V¶Ç{hGęŘťă:ĺĐÄ]Ž >eÓ`ů8ŠěSË®h1™+!yĆ®>1šŽ?ţřTęřÝď~—¶q—źvÜă5ŞM‚};Ő‘^DÖ˝}°é`Çëřµ¨áŐ’ZW?Ý…™°,ži\şYŘ!k¦†yőŞŽí_—†ęÁ&«¸‡č3Őş>Ł3bg°¤ZiˇĂ÷“ríöw ¶O%Lů”€Íř"?őÄX8ŞßŔÓ™›‡›r µ,Lʇ©ĺ?ŻFĄ†X}6"ŮbÚHuÜ&ůĆCěLÇłţi§ť–5}ÜŻć•-í‘EGŞă¦›y¦i–/Fzˢ¤‡—\rIzÜíľ2|+ź˛Ž j5ăDĘđx¶QĘŞ…ß` Z•'óoř>O«3ѲÔÂá ®xöX<«ťąJ˛Uďęŕ č’ööČż¬,Ąňstő=6Ł×ă#ÓÎ^RŞ—Í8‘*Ö1:0ĺîčČjýŰ8JhîóXëT»Wiôö&j],m€`8ÖJ­«˛ŞvEŇ/ ĚńLWSKßđłB^zéĄŮ;?úp‰.µŇA€KOŔf'¤\Şuĺ4ŘO|âYQ› ˘T›¦Ú‡ű?ÖŞÉfĹ.«m”6"Q:ŐçCîŐɉYᛄ©–Üq]6q|ĘÄ#D¶BqjXGŮĂ'Ă­Ľ€·2¬űç?˙YŐÚzUrä­2|ufÝ»ŚŐgźŽ”j÷nő`C;xCéřµ¨áŐ’Z`cËd—Ě?|ě/ ëXG/]#5´ZĂĽú_ÇŘ‹ŞäáÁ¦Ď˝ÔȨÖe@<lĚzcŘ,OŻń@IDATWvÄËž3˛ň_ŞuŃ”©ş›jůÎ\&›ú`çĹ­=őÁ˝űî»ď¶Űn™g›ĂtćKőîď(Y"ŐŔé3ź:K«:fClµŐVĂlśJpŘa‡e‰g«ŢTójU°TŹQŞĎv±˛ň„ĂŞŕ×H®FičÉgşŇy=Q™NYAîîŕ-CźjáY·UřĚź5ď˛E—˛á°ý$µ,Ę ®KůÍ·ýŞ–Q’$…V˝«®¤¬,UHc`Rť˝ŽŔZĘ U&Y‚Ő0·&aBŮř[ śfZ˝l¦51©ŕ¸č˘‹2ł–Jź˛`ýkťj÷*ŤŢŢDBeË >J7{óáv¬ľN`DP¬2Ç4›uWłŔ™qnٱąÄat“ĹŠ‡Ő«\óo1ťRkŕ;A§Kn»í¶Ő’°ąôď­O©ÖUď$›Ţ•z›Kűđ)M†@Zľˇ”·{“r6 ëÂM0»ga[‡a]–“6öŢ{ď+:˛`Áż,|Ă`!z5pěEUňđ`«¬Cý$Đň™¬źé] T5ťě±ŁšTőEqůĺ—Ó-ŠbtnŃ,­Â¨YŽĽDń™¨j†úVM'&ŘĆQľT†)”·ź40ĎO٬bQěď|ç;ŮmŹĹ2¸ŹfĄÂz‚OdŃł,XöRCFGYö/.ߢů¨ŘĽđĚ3˘íbîq Đŕ e+ů`FZ}ęUďęÔ ëě)+[®â–ętŚl<¶˘‡:|8,3-Ă”lÓ«DČ+ţ-ĚW/›Ůµ1¦ĆZEeîĽCövmP, Öç±ÖÁvŻŇ¨^üŰÜD®ţHŰßýîwYRçűß˙~¤ĽÄ˛*vuO¤L¨"ěT]Í3ť—GĎŚŐĎÄîr]üŞAPY5j‘ 1|Ę`­®ceČlřJáoˇŞůí }R\|RűÇöůoµ»fčš„)!8®[Ťë´Ĺ›¸Kµ.‹ĹđÉnÇ™m]žĂV[Áň]ĽĽ’”Ń{ôá:™=AUďŐ{kʉ7 ĐŮ‘RöŹÍĽˇ”#«ź×˘2AxfC>ć:ƬŢxăµŇ°nĎ=÷¬Î‘jW‰·WuLWÉÂMŠH·úC ˛·W’3®zK \§Śn¸á†öépo(§vĺ#ůHX˝:— îř7żů eŕY$ý­łÎ:śĘ^BĘĺúnÁe˝)űeňSy—bóÄÔř.$Ĺ_Ę_J-i`lĘg/^ZJi€%~ÚŻW]E"{©‹‹ŽňVš˝ŤTëUť™EšHŠŐŤ˙:bXGú%yűě”Rt—÷fŚ–[ľ‹üᱢ#m Öy(·Ś b««\őÝ·«c§´ä]:–{˝¸sEvMČ®<Ô¨4¬#ť&çůu¬š`«±VK9łŠÄʶw”łćł‹Oű|(IyUá­;Ód{ ă¸îŐ¸nßĘłUëÔ ť.ŠÝŃłśĂOáXyĺ•«ł8Y€¸ÜD"ŤŘ+wf^Wö"Rk%—÷*ŁjŕŽ”Ţ>ŘPžNÝPHŞĽ¸őóZT&=ϧ<ËŻ|Ęš’ĄŠÂŞŁiÄŕnW– q[Ő±Çg›*ů~°)+®ŹúL@Űş>Ł3bgTż±3礓Núä'?Yľ“+{Ćńž¸–•€Ő‹ă’(ŮÔ!$Ćüm´Qú˝‘—¨ňĄLĂ<ÜęĂ»ŻrĘÖ_Ă čóź˙|fN¦NÄmÔNĘUđZ}Ľ*ĐI- \ šĽ ”[›sĂ;őÔS3PYR=îXFGź*M<˛ń]+ŤÎöĐËNĺ[ßúVyCeÂM7Ý4ŤŢgwyă'©”g–r5t€˛F˝í]ťt ŐőSRŐ#ÖşŠĄěfČ Č1VpdŻ(M†Xg/)Ł ź‘ή>¬ş=š56P\ź±˙ĘŞŔaK,ő©B#@ßĆZŰ˝#7*R\«ćܹʤŔÂäýÔ„Š¤ŇĘWNިÓIčŁFŤbi×rKnRH¨|k"?LiŽ:ę¨ŕé±\ĺĘNKáű0 6¤‰qPY—i«7˝ :Ęë8Ődř¬Ú÷Ş×±^Ťµj˛)ůXřłĺť1KŞ}žňT''f96 S…@úŽër\÷Ř ĘíŐşő×_?{Ę*SČ|ZÖwÜqĺ‡aŚyŰ/ĘáRą¸$9˘ÖĄ ™U; ĎNĺş%Yiă!Źëń±?z¶rtp¤TŻęŮ0ÉŠŃ©JÇŻE Ż–±:ŐŤ&âŮŕ8ŕ€Ňçäx¶a^˝ŞcŹŻKCň`«¬Cý' Z׆¦Đ/sĎ=w5ţźţô'¶†dý5>ăđ•†{?ďüđĽě˛ËŞQ>úŃŹF¦ç091Żťżüĺ/ŃPx±ÁÜŚt~ń‹_”ß Ä8>&ó(=©0ÁóČ#Źä](”śč|Ż;á„J©Ž2¤ŰźUźKZÝÝ{ \µâĆP"ĺÉú>¨`Ő7"¤§ÇĽbČč¨ŢłşPýl?˘óÖ‡¬ů•Ż|…'6îĺÜ’ŻľújV) ‰µČ7żůÍę´ÓXŚćŽň˝”űwú~›%UeBlAŠ 'y‰bۉ'žX6=!=ôĐŞX–e4 ‡igH3ęçŕ"©’'žŐE «$ł®’–­Sn H©ÁQ‹˛˛l—Yľ5•Á›%ŘdUÓiŶI`Ö9Â:8mŽŕĆJëŻý+ĆĚ.A»D *ĂźV෠ʵ`ř÷m¬u°Ý;rˇ"ŐÁ’‚âR©Ö‘˝&xçÁ駦艕RÚ~űíÇ q‡[$‹$”_†Bř4ßVäůZĆä\–gĺÎËM“«łśJÍżđ…/”Ý;¬˝ŁÍĺň©dÖĆ$ŤQłĆk”5>ÄŞ6Mő:Ö0ÁP’*Ř”|YŕV>ŐfIu°ĎSŚęäÄěęÔ$Lé;®ËqÝŞőŰř·ź »ýöŰ—qłGŮ4¦ľ\ŢSźŕć)ş\ű’S‡rH«mpBD.J­Ôş4—j÷ć›.ż4X7VźŐy6Ő()Őîť Ě¬ ťşˇtüZÔ«©Tuá…´˛ôĄVk&6Ě«Wx{ <$6)Ýč'Őş~4z  Ç!Ö”’ébCÇŻaűî»ojĆĎTV¬?ʸ<@„g^{Ęůˇ„gů°<0Däy»o9-R1ç”W#&Żń©°´8 :2Óç>÷ą´=ŢQz¸\†Ľ;aچ†¬ÉăŹÔišŃŤL–šlTÚ?vTë’=ĐŻ¶ÚjĽŰ—sčxý;č (ôĘ٦±<b÷űă@Ä,ő(U_}CFU&áÔcíËmćđáĂۇ„ł4¸(yőÓ76âÍĘ>';ě°C¨`•d›ŢŐ©A×ÁRííe3ĘYŠe0°T™dçši“0ŐÉ´š`Ż ¨äUŁ9Ţs®şęŞĐ¦mţf ¶ OUi„ł}kl÷ŽÜD¨HIž»Cj‚ŢÄ´Łň‹».|ęSźJ/S(\Ő;3µżţőŻG¤­čPŚĐx¶ y˛ćCVě÷‡ÎX=ŐÄłŤÜŻ!ť6j]Ő°ŽX%s<łáĎ]ÇŞą÷ah´ŞH–Tű|Ă›T°Mďr\găě˝ýµ»ypB}+¬>f‡`Ő•yxăáĽL‡ëU{©Ž(<ŕ1ŔK‰?ť ‹Ą0OŞeú˝ňችyřŽ”j÷ÎfV°NÝPz•u“ˇZ S^-cuř \Ú1Äłśúô§?3GĂĽŞÁZáí1đ<Řd÷Pý! Z×zĆí¬ŘJĂĘ»ýI ©.ۧ5 »€6ŹU©Ž Ă?<]méJµŽ˘˝\Š(V'Ś[l±čŁĽŁđ†Öę#UŹKŚ,°\k˛u“sÓ7Ŕ2/Ě%Ň—ş´ÁÝäqD6ŢxcVÍ+ŁăçW~ŐSxňXÎęm¸G˙ę׼6Ď"Őu¦zĚ%Ŕ;—x8„Ž\ԣȲ^4h«ěĎöˇwudĐup€”˝˝\ʼnúV»Yőů˛dBô,d™i¦L§?—ŇGEâM¬•ń2Ú˙¸äÎ<óĚíĂdg;>Ö:Řîťş‰”Í„e.Ż4w>ţ——Jľˇf3Η®ďiâHű·0Ě$›Äކá&ÂG—ꩆž­¦ň!)2ŹŻI"ŘŞ¬ľúęŐM†űsk5Ö°`*/ ÷ͱě<\|˛…8:ŘçaRćgjęŘ$ŚăJ˝ׄďŐŹG¸ŞÄO"UĂ:ü[©uěËn°eî¬xŔ·ŐĚéĽáă ZŰ«uĺ0Éňjr^Óz ßÁ‘R“›î†ŇĎkQĂ«eÄË — VŻW|¬ÍŢ}bD ó*ń¶Ş#iöxđlŇ*ë–@˙ Ś^ěZ¦ ľ`jdąjió¤J©.ÄÝn»íš'BHô)VŃÎ64d—°ăD󤸩qÄŮ·Gž“ĘGž€«VnĺűX¸ˇQCu˝n]±:+ĺşé=>•wGč•o#>ôöíť‚QµĎ~öł±„ýw4|>UW$‰gŰ;,ľ÷˝ďU±·Ź8@ghpe+Žg…ŹJhßzWG]§†™ĺ¤ÂęiŘÍPIJŁW^l2}ĽÇ!ÖńKJhD$63ÄcCWm7ŞXb”ŞŁăc­SíJŰ˙›Cŕ‘GÉę^‚jUěrYŐ†÷#nCY¦¦ůbŽWťVĆ*}č®|ÖŠ¶<Őܧ•ZsڞÓtŞwI´2¬ăTŹĂ'¤ßđ:Ö«±Fsł/MZ~Üń’ů·?D\(Żi#†č­:O–xő®”> „đĺuŚoŠ™%WŹa×훦×Yc59¬Z§2đůJZŤŢJ­«ÖµÚ¦†Ď¨Mn€«DYŚÔ¶®ěEeř}ĘáĐ&J§FJßl(X˙o(q-jxµLÁ¶zeŁű±ŕx2s7É«WulňşDůÁ&«µ‡č'Őş~4zp}g×>ŘRńŢÂÂs™U],Đ.»ě˛Ď>űÄĂö^>ţóź§óCcx^KXa=5…§JFĚ(·¨C+':µzΨ>ÄdŹű[o˝uőa(-QXUŤOń©'îŰn»-šĎTÍ+Z,¤Ă¬Ňrňo5 ßßzµöߢ™†Ě”®ÔĽ1+|ËçÉx¦ÉVĂík_ë±Tô"zr“%xÓěÔ=@«ěái-bgčCď éôĐuj€4ڎĚe·AeH Á|WŞ$‘XÓduü’˛F4<ćcŞb\Ŕ_¶ĺ’ŁŁÍŠa2G Ťýkťj÷PÎţßDľî”jĘŔ˛žŮ¶­{îąguaµ,gźůĚgRźŕN¨JžËuʉݴŇJÜăŞ÷Ę2Ç6>Uµ«Ť†›ó`X×jµ&Ă'¬áu¬Wc­ 6ŕm°¤§ŞšW™Tű|urb–c“0UŽëظ帎§š;Ş#éR iVŐ:® ŐqÄZĄhRYa|÷ÚkŻĚłŐaőJÂŐ,jŮŐNŇ*µVţYçl,řwj¤4ĽŞ—…é˙ ĄăעćWË´:­Ô:nOłĚ2K2u7Ě«Wulř„6Č6i­uK ˙ţĎĚţ'g č,°X• j$łňcr–&ÂŮ#öŘcŹ?ńńJÉ7á_˙úץRÓdý ľµ™zĂűŞÓ‘Ř&{„1s°Ů‘NŐ€ď?Yx[=gpKë10ĘÂĐŹüăęŔyě©·óÎ;‡é™¸ĆC[śÔ«‚…RU٤ďiáYLy˙żćškR˙ĚŤ™R»îşki —…ěĂaY`ž'ZíŔ@úěđ›ĺ‚ćĹWY^§Ź>účrm2óě–j›l˛I±bpmľů沺sÖµ¨ojQ’'@«nź˛ę˙ üR[®-aßĎ´jU&ŮđésVl˲µi®™\ëÎ=÷\Ěů!/b&ż0śwÚi'”š_ýęWiĄ‚»Ő´Ä2dôéřXëT»Çöó&Rmʲ™¸PsS kŞĆ¬q0­ň¦›nJMBřÂeźĎT×^{m2¸Y˛ŠĎW„?óĚ3Ëł©v\ľ*sç⽝5¸ĘUďÂĚ~ĹśŤr–)÷Á§Ş5 —/{Ő[jĂş*ól…Äu¬š{ŮâM5LŞ}ľzˇČĐ5 ă¸íŰ|\7éYęjc˝ĹcL–‡Ő­`Yß­zᑲǏÄ1‹ŞZÇYDŔ 'V»wŚŢÄŃ۵:5RŞ%o8Ćç†č5)g5L6ä˶¨Şu|¨nż—wĂĽŞÁZá­^ŽŞóÁ¦$¦ŹúC`˛ęÇ–ţ¤h\ ô“_nyU?.Ä,†Ĺ­ť»2ň ůqź¨š!´Ę—ľQß2öÇm€>Ďű)đî±öÚkó·UÄĚźWV^\űCíâ™ ;$…NÇŽ , ?8‡lüĘ zČč&H]LíY~ůĺY…¤ˇ1ŕŕ’\NAđpĐÄ´)ô’zŚ] †ČV>gD`K;:'o#|¬ă+1Ż”ż˙–&}.RŻ"vvpAÖd,Đ÷e< óíťNŘ|LőXřţş e€ôb¨°é_;¸ĐEŃ„¶ć G¶¤—eví`!ű9Ö:Űîťş‰tź 0ń`f·H^ŚáĎËRű©ťiî¬sĎm1őá"¶fâ‰í×jV&âÍ«;!Rlş3FqBwÂulpu¶ĎP™×Öd›ň‘Ň…7”ćô&ŽCő`3qĐłL@µn›ť$  H`&Ŕ~Óßýîwł |ä#9ŕ€2O»“s±ŮË…7Ć´x̡ĂÂ=őŃ- H@ř`3)´ňZGgÂN  g±%  H@ť!°˙ţű—ÓüŮűŻśŘr˙ý÷źp e®ějZzęÓť0Ęˤ:ĘŮăě§î¬‹Ą’€$  ”|°)™č3!p—‰ ±Ő,ł$  H cX_Ź •ŮŹŤ ă—äÄ•||fżćgžy&ËŐú™€źyzصĘEë(ju­ź®­‚“€$  ´!ŕM8žš€h[75–E•€$  tž@uwÖ5c‹7Dś™fš‰?YČ Á®Ě›ő >řŕŇ_ź®%PŞu¬8Ůă®M][ & H@Čř`“ńp% Z76śĹ–€$  t†@« X‰™íyÚç±ďľűŐ;í ćŮVîĽóÎěÔK,Áţ•™§‡€$ ”€6hĂY쌀3a3 J@€&-»í¶zMoëĚĆÓź˙üçwÚi§ŢF4üxîąçŘl=+€‹Öe@<”€$ š€6tóYřH@µ.˘Đ! H@ 0›ő#ŽsÎ9›Wž˛?úŃŹ¶Ůf›ćQ Ů Ęi°”Jµ®šĆ2H@@§ř`Ó)’¦3´ś ;´üÍ]€$0ô† ö‡?üáÜsĎýóź˙üÄO´*ЬłÎşâŠ+nľůćě,Ń*ŚţÝLŕńÇ/‹ç%}$  H`‚&ŕÍÝ|>ě˝÷Ţ“…$  H@,ůđŘß /Ľđî»ďÎ0Ă 3Žý-°Ŕ -´”&hďĽóÎČ‘#ł*´Zß' ćˇ$  H`B$ŕÍ„Řj–Şuv H@€$  H@€$  t ×­ë––°€$  H@€$  H@P­łH@€$  H@€$  H [¨ÖuKKX H@€$  H@€$  ¨ÖŮ$  H@€$  H@€$Đ-T뺥%,‡$  H@€$  H@€Tëě€$  H@€$  H@čŞuÝŇ–C€$  H@€$  H@Şuö H@€$  H@€$  t Őşni Ë! H@€$  H@€$ Ő:ű€$  H@€$  H@€ş…€j]·´„ĺ€$  H@€$  H@€jť}@€$  H@€$  H@ÝB@µ®[ZÂrH@€$  H@€$  H@µÎ>  H@€$  H@€$ n! Z×--a9$  H@€$  H@€$ Zg€$  H@€$  H@@·P­ë––°€$  H@€$  H@P­łH@€$  H@€$  H [¨ÖuKKX H@€$  H@€$  ¨ÖŮ$  H@€$  H@€$Đ-T뺥%,‡$  H@€$  H@€Tëě€$  H@€$  H@čŞuÝŇ–C€$  H@€$  H@Şuö H@€$  H@€$  t Őşni Ë! H@€$  H@€$ Ő:ű€$  H@€$  H@€ş…€j]·´„ĺ€$  H@€$  H@€jť}@€$  H@€$  H@ÝB@µ®[ZÂrH@€$  H@€$  H@µÎ>  H@€$  H@€$ n! Z×--a9$  H@€$  H@€$ Zg€$  H@€$  H@@·P­ë––°€$  H@€$  H@P­łH@€$  H@€$  H [¨ÖuKKX H@€$  H@€$  ¨ÖŮ$  H@€$  H@€$Đ-T뺥%,‡$  H@€$  H@€Tëě€$  H@€$  H@čŞuÝŇ–C€$  H@€$  H@Şuö H@€$  H@€$  t Őşni Ë! H@€$  H@€$ Ő:ű€$  H@€$  H@€ş…€j]·´„ĺ€$  H@€$  H@€jť}@€$  H@€$  H@ÝB@µ®[ZÂrH@€$  H@€$  H@µÎ>  H@€$  H@€$ n! Z×--a9$  H@€$  H@€$ Zg€$  H@€$  H@@·P­ë––°€$  H@€$  H@P­łH@€$  H@€$  H [¨ÖuKKX H@€$  H@€$  ¨ÖŮ$  H@€$  H@€$Đ-T뺥%,‡$  H@€$  H@€Tëě€$  H@€$  H@čŞuÝŇ–C€$  H@€$  H@Şuö H@€$  H@€$  t Őşni Ë! H@€$  H@€$ Ő:ű€$  H@€$  H@€ş…€j]·´„ĺ€$  H@€$  H@€jť}@€$  H@€$  H@ÝB@µ®[ZÂrH@€$  H@€$  H@µÎ>  H@€$  H@€$ n! Z×--a9$  H@€$  H@€$ Zg€$  H@€$  H@@·P­ë––°€$  H@€$  H@P­łH@€$  H@€$  H [¨ÖuKKX H@€$  H@€$  ¨ÖŮ$  H@€$  H@€$Đ-T뺥%,‡$  H@€$  H@€Tëě€$  H@€$  H@čŞuÝŇ–C€$  H@€$  H@Şuö H@€$  H@€$  t Őşni Ë! H@€$  H@€$ Ő:ű€$  H@€$  H@€ş…€j]·´„ĺ€$  H@€$  H@€jť}@€$  H@€$  H@ÝB@µ®[ZÂrH@€$  H@€$  H@µÎ>  H@€$  H@€$ n! Z×--a9$  H@€$  H@€$ Zg€$  H@€$  H@@·P­ë––°€$  H@€$  H@P­łH@€$  H@€$  H [¨ÖuKKX H@€$  H@€$  ¨ÖŮ$  H@€$  H@€$Đ-T뺥%,‡$  H@€$  H@€Tëě€$  H@€$  H@čŞuÝŇ–C€$  H@€$  H@Şuö H@€$  H@€$  t Őşni Ë! H@€$  H@€$ Ő:ű€$  H@€$  H@€ş…€j]·´„ĺ€$  H@€$  H@€jť}@€$  H@€$  H@ÝB@µ®[ZÂrH@€$  H@€$  H@µÎ>  H@€$  H@€$ n! Z×--a9$  H@€$  H@€$ Zg€$  H@€$  H@@·P­ë––°€$  H@€$  H@P­łH@€$  H@€$  H [¨ÖuKKX H@€$  H@€$  ¨ÖŮ$  H@€$  H@€$Đ-T뺥%,‡$  H@€$  H@€Tëě€$  H@€$  H@čŞuÝŇ–C€$  H@€$  H@Şuö H@€$  H@€$  t Őşni Ë! H@€$  H@€$ Ő:ű€$  H@€$  H@€ş…€j]·´„ĺ€$  H@€$  H@€jť}@€$  H@€$  H@ÝB@µ®[ZÂrH@€$  H@€$  H@µÎ>  H@€$  H@€$ n! Z×--a9$  H@€$  H@€$ Zg€$  H@€$  H@@·P­ë––°€$  H@€$  H@P­łH@€$  H@€$  H [¨ÖuKKX H@€$  H@€$  ¨ÖŮ$  H@€$  H@€$Đ-T뺥%,‡$  H@€$  H@€Tëě€$  H@€$  H@čŞuÝŇ–C€$  H@€$  H@Şuö H@€$  H@€$  t Őşni Ë! H@€$  H@€$ Ő:ű€$  H@€$  H@€ş…€j]·´„ĺ€$  H@€$  H@€jť}@€$  H@€$  H@ÝB@µ®[ZÂrH@€$  H@€$  H@µÎ>  H@€$  H@€$ n! Z×--a9$  H@€$  H@€$ Zg€$  H@€$  H@@·P­ë––°€$  H@€$  H@P­łH@€$  H@€$  H [¨ÖuKKX H@€$  H@€$  L) H@Ŕ„NŕŐ7Ţľęžg޵m†i›{†§›Şzvń|ňů×ţ~ĺ#>őĘŁ^ýÚ[ Í9L¶>ß Í҆Ŕ‹ŻľůďkGŢ=ňĄ»Fľ4ę…ם{†Ąçźy…gŮ|•y&ź|˛,â ŻĽyĂĎĎa3O»Ü‚íRÎâzŘ„ŔmŹĽpÓχë.;çÂsÍĐ$–a$  H@€&D“˝÷Ţ{bą-ł$  L>~Ěg^?’ş°ůßÝsĺľUęŢÇ_ţ˙ţÓ&î’óÎxřGWŘvőůŰ„éČ)îŞw>öRHj†i§\pÎv$Ů>'ňćŰďüčô;~ćÝŻľńN™ČökĚ˙ť=V* I-NľřÁoţůÖg^zŁŚµĘ"łłďđ•™5=uĹ]Ooů­ ĎŠ Íré÷7KĎęnN`Ô‹ŻGě‹›aÚ©§qüżw~ë/·÷I­µó: 6OÓ€$  H@më&¬ö˛´€&*÷?1úß׍|çÝ1ߍFżööŔŐížÇGďyôźÝf©oďľŇŔĺBĘoĽőîÚ_>'d±ĹŞóüĺ˙­7 ŮőřWţpÓIçßß*Ř˙^óŘŹ˝řßom<óôSÇ0ďľűŢ.?şôĽ›žŚ>™ăĆźßđ°óż˙±•ŘbÉ씇ý'đ‹łî9挻B:wÓLíú¦  H@€$Đý\·®űŰČJ@ ĽńÖ;ż9˙ţ-ż}a꧆]y×Ó“W7ärá­OĄRÝ“O¶Úbł­łôýĹâÝűřčNĽ6â@*ʤ:ćŔ®żě\sÎ4M öî{ď}ý”›™›}t 4)‹ŮÇťŁéK@€$  ńĎëCUó•€$ IŠŔ_.{ř«Ľéą—ß •ćťmş¶A@úč3Żž{Ó'_ôŕ‹Żľ…9ţĺň‡×^zÎ*p¦N6Yľ[5ä„âyöŘ)ơ´n±Äa»,?Ă´cÖďĂzßń˝Ón§Îąń &ĚN=ĺ—×Ý÷ěwţv[đç懲Îú»CÖYčýůĽ—Ý1ęă?˝ňŮŃc¦ÇľýÎ{ű˙ňꋾłéTSý—ż‰ŻíbDÇ[,±ăÚ „ĂŮgŻśĆÁ1) ČŞěˇ$  H@ř¨ÖM|mjŤ$  t5v9rĎ•rŞ)&_lîCâ86X~زóĎü™÷ÍÇŘ3!Í÷ŽG_ÄÄďöG_ŔÁ$ÖĄç›iŮgŢa­6]iž4XpŁdýňě{Tűđ¨W¦źfŠůfź~Ť%fßg“Ĺ–w¦ŕ×çÝ÷üËoĆ<ů2vjóĚ:ÝG×](x>üô+żżŕëďöľ'^^x®n¸Â0&çůŹ;B,ÖŹűܶKňő7ßůÚÉ7…(”ýĺć:ú_w]xë“Lľńč­‚˙Ó/ľNanyč…Ű}q†é¦ÄhnŐEgŰu˝…Ň9­×Ý?nۢ|mçqRnöřňŽËťyÝČ›cGĹo~đ…Ő—7iFkGö 8盏SüÖ]v®óżµń˙ď?o˝ó.‡·=ňâo/¸żÍ–{˛3Ţ~çÝß_řŔ5÷>{ű#/ľřĘ›óĎ1ýóĚ´÷&‹•Bßy÷Ý_ť{ßw=PŁŇ.»ŔĚ;xëĄfš~ü¦"çßüäů7?Aá¨őWwZîę{ž=ńÜ{±(DĹfpǵŘuÝ…ÓM3ľň‡CMÖYzÎu—™{Ě‹n{ę©^źg¶éV\hÖĎm·tÔ.c…˙uÍcg]˙ř폼đřóŻ-·ŔĚ«.6ýçCËTDaÂüů˛‡ůK/šiş©hqúŔÇ6XdúiĆ<Źa«HiŻ˝ďŮňź.~ÜédzéOźőľüJ”Uť-kŘŤ{‹"¦ŻC€$  H` ¨Ö 2pł“€$0©@˝ZiáYTŞGžyu ‰,1ď8ńŽŚîµÂŮ—~ăëoŤß~ŮřwĘĹ´Ő’ßÜuĹÔjěţtóĎţ}wŚűŇko=ůÂë×ß˙Üq˙ą÷ÄOŻńŃućű¤éŁČ|ăÔ[Ř( ¨u×ÜóĚn?ąLŤţţ•ő!L`~éŚ×snzü#ëŚ ĂŮíµę}OŽn¤Ăŕ¸ęîń[ë~mçĺR©. :»­żĐ.|0B 8:ň÷ˇQ/ďsěU×Ý7>MşzúÝŢ/vô>«Ĺ\žxţ5B^~çřyÍđ䦔»üáß~ví(f!~ŃF!"“Iš4âýOľĚśßż_ńči_^/šUĆŔŔůŢi·Ĺ=CF>÷űăEţď×FD%Žüů“®˙çŐŹĆ‚]|ű(ţˇŇţŕc+§ëúaňvüî=üÔ[hÜťńě˙Á?n?ó° ‘o¸˙9:L<‹ă„sďă/ ŠZwóCĎÇ^’+ŘĽ÷EZÝ€$  H@I`čgŻ fmÍK€†śŔÖĂç»ä{›…Ç°Ć ”ë¤Kśéú§KDđJĄşDZgÝĂtÝčsÚʤR]ôŽŹżö®Çƨim~lôąÝ÷.ŽR] ‰Ţ¤şč“9~űß‚Tý±ŔúŘ1WŚ—ęâ‰|őg“Ă˙‹hüR{´}Ź˝z›ď\ř‹łîľőá K€5–śc÷ő ˙ćśyZ|}ć4©—ą–[­6_pg÷±Hôąëý pŁOźo˝ýîßż$•ęҤ~óßűO8gśčFČ­ľ}a*ŐĄ!őĘG\H]RĎŕNĄşxöü[ždÜxyQŞ‹žpÜŐ ž‡üúşTŞ‹Ásýĺ?ÜôżŹ›kŚ?đWţxS*ŐĹŔĎŤ~s·_öâ«ă­2ă©˝ęĆij˝B‘FÔ- H@€$0Të˛YH@ŔĐ`Jé97>Ž=TĚ~…±f}Ż˝ůö·˙:~u¶á‹ĎvÂküîłko»úx} yčľ'Ć™žýń˘b „Ľ˙řínůéÖ[­6ođdę(R¸ą˙DbHlĺţüĹuŹŮwŚEbßkoŽ3âc®îÖĂçýÂvK§jZŚŐĘ1ĺ“Í5VSĂ»Ś©»Gě¶âˇ^&ÚÓ!Ő1·7śÝrŐy'OVâc*ĺ×NľyÝŻž»đ~§ä¨KzĆ]Ź?÷ Ó9 Í9}«’DC<0ł8JW­Â7ô?éüűxęĺ+BŚéŽúÄ*a~nđ|Ă0ĺ“Âö=öŞż]ńaĐŕĎxě~«ăë»…0C›c¦içřŔPRÂć!0Q[ĐC0ţÎ5Ë´[ŽUôĐł˘‚†?" ±ářÚÎďîţ“Ë™ĽŁTĚä=áŔ5WXhf ‰a]´)c“ÖËľżY®»ýš Ă…čěăń?»,ĎÔNöÓ8ň+ú»q ±ĹÄ)6™ňI‹Ąîľ˛ÓróĎ>F›{áĺ·bVĺ‹îĚhtČ.ř#A˛a@˛0}8üĹY÷ÄXG~|•Ol´(‡{m´č2ý;"ž2]ňG§ßCžtĐZŰŻ98ÜxĹą×úŇ9AĘ cÜ ß€•řN˙ęúÓM=ćᇹĄŔţQ– ‡ńď±űÓ‡QâřúčŘ $»Č°˘­áŹŘ}Ĺ6ł~ß>›,ľűO.;óş1ę-˘áéW?úń ýçUŹRňěbsĎđďĂ6üŕŘmyQ ŮZ7řŁýíĽÎ‚řŞ{ž â/ţĚxm#éö¶‡ŚÂßޢHăę–€$  H@hŞuMŘô%  H`P  ˛EĂ«,cÖËűř†cfq24žbS‚tu¶/lżLPëŇ`(Da#8Uę>ÍTSülßáw?>noVcN1˙BĘ‹Ď3c”ęđYjľ™¶Y}Ţ]32śeźŠL­űđšó©ŽěË‚ń÷Ő÷['úŕfŞÉwZkÁŕô í¨Ö˝úúMöţ÷WýĂ=÷,ÓB8^x®‚żg\;µŽ ŁĎ~›-¤:|v_á7Ţ_Ć.µXŚŰ;zŰŤÓÔz…"Ť¨[€$  H`¨Ö dł€$ !&0Ĺä“a…4†úCQîy_ýÁ˝ü‚3§…cn)Ăľ¨lÝN±s(ŰnĆ`,îö×Ëć>L'üî+ _|öx¶t<8jĽÄ¶ôüă6 ÁČÁ+Îl-ă.5ߌQŞălŞű¸2 >O=?NĎÂÍ–ü{óíwŘ®á˛;F±)*;®¦ öˇ%őŹ;ľµűJÔ=¦ë}Ć$űÂkĂf™näłăĚÄđYpÎéS­3 Ü+7űKÄđldÝ8¶Y}ľm>0~†2Ugł¶Ăi2Şu´ňɬRÎ.=ßř¶NĄÉ`ęXbžÓ˝bg{šmnçíâó‰ź^™ĆŤná~đýľ¸6~Ď“Ůfść‹Ű/÷ÖŃŰnś¦ß+iDÝ€$  H@@@µn ›…$  L̢ń+ ›yZĚßV\x–ÔĚ*Î`ĄXŃĐ)†EÓ^~}Ś)’Ö;ďľ;Ĺä“~»ĄÔ~zĆÝĄy›¨núŤ ţzčş›®Ő”“˝ńÖ¸učĘŇĺŐ8[Ý\˘Ś…ů[扦¶ÁňĂř‡?†lçÝüÄa§ÜĚri!úŽEçž!*•(’ŻĽţv ç?7<ÎîßŰseŚÎbâĚëŚîţ8žzß\ŽDfźiš6Iµi;bĄŰŕľň'AsvĆé{ńŘ3ătSµ)=፷rČeř·ĆÎ~jěžżálűÚ•)´ńi˘ÚŤÓ¤z…"Ť¨[€$  H`ôâ±uJc€$ ~`«6^hźSśEĄŘ˙ňŢ R)0ă5 Ç”SLţĺ—Űg“ŰŰBçbĺ¸T(AČűňnlŁÖ-4×řٲw<:~.)ł˛^{Ńů,­K:Ëň.ĘžéŮč^oą9™Ý9âëç»°˙ľQ´›vę)¶]}ĚśĐťŽĽ$Dąwě~(z,Çq;ú_w¶Ë !ŔĄwŚúřOŻ`KÓ˙÷»>8Íř‡‡%çoŽsďcžY¦‹±}ú˙ě}Ád¶SgçišTůţî·1.ł€Ł»ÍF1LźLFH â)@NüôšŐ¤†Í2fEż¸n6«Ť“pŃ‚Ł7Í”SôVČëm7®–PO H@€$ .$0ţ» g‘$  H@A Őţqĺ#ĚfŤą°!@t‡`÷>ţRÜU–§~q]vŤ`a¸?_úPÜĄôţ'_fˇ·VÖX‹ KŐş—®˝÷ٸŐéŻÎ»/f×ÄÁŽ1ŘŚÓMÉ,Ńxx˙Ł_~ý5¶(eÎ/’>ůľUץwޱÜĂşřcy¸čŽ‹¦mľĘ8Îjňĺ×ߢ?„XÁ 4&rËC/|řýfŮŚsĹpŠ…ä~Č:1XGZÁ»q“ # H@€$Đ%T뺤!,†$  äľý×[O:˙ţŕËÚp{ŚłADG~[źď¨Ţ’úÝ…°w*»ÁrxÝ}Ď~篷Ĺ,‚†óÓß<ϸnäF+ĚŤmćQ,švꥍ~mŚŮJ˙˛ß¨÷•2ě°Ö^jŽ+ď~†âíyôĺ‡î°,;$\pË“?;s\ĘYÜV‡ËĚ?~Y˝Îąo“•ća#Zźó“ýŃĄa󇩦üÁ·G­cc„¸»č~ż¸úÇź\mć˘0ha×Ţ÷ě{CĚeµ±[RpxŘG–?ëş‘Žť!Ëâ}Ű÷â/í¸ě¶«Ď·Ü3łOëÇ_ŁŕřäF‹-6Ďxő0žb˙ÓoýĺÖx:0«¶#Ą]aÁYn»űšŕçOşţ—¬Ž]á߯|4JuXM˛Ź> )†zaë·ß/ŻFäâÔ[cíţ}fśmÝ‚sLĎôç4뎻)0ó I–6Ý˙¸«sĐÚLĆđÓ'\sÖőʇěCýÍ]Wľřř-Ž=ënşý3ŔăĎą7–ŠÝŃ»PôI˝ęĆiDÝ€$  H@]N@µ®ËČâI@t ĽđĘ›q'ÖöÓE{ËhĺEfÝĺC ţőňGHĘ{ýěĘŻţń&,ŢÖ˙’óÎ6]fţ™1C{á•1{¤˛Űěj_<{ýĺćBHBÚ Rţk,1;*A, ËĆÝđŔóĚE]aˇYŽÝoőoí¶â¦ßĽ€ü°wK•˛ŕŮđ/›<|a»Ąxúť„'—˙âćť0n¨Š˙G×](Xů!´]pë“™îqôĺśee·8Ő7dĘJűo±DpcC÷ËÖŘň[†C6™ey;ţ…Ăěďs/żÖőËüź~éŤ˙ď–żŤWVUëÉ\ăPBÜlË{ćő#™«›®Ó÷Ů­—BŞă,0Ůa#ěrńíŁ–üôż€Ŕ”Ň´^‡ďşBG¶ż(«}Ŕ{Ú•Ź„.úźžXčS§/·ŕĚlD dż=ÇJĚ[®:/Ý Lľ¦96úźóçź}ú‘Ď˝l IIµËôÓŚŮ%üţPuŃűRóĎ÷O~ WÝ8ĆŇ! H@€$ĐýĆ/Ýýeµ„€$ N@I·@Ĺ,•ęPOŘ¢uSM9ů/ö[#ć‹IÔź.yą±w>öRđDžűöî+7+ÜŤX~®ř¦ź{®±ä‡t…Ňţ.]…-Ćjď@ŐZe‘YcŠťJumýŕă+‡łLb=zďŐ˛LSI‹`ȎǰĆbsŹ7‘[gé9ŹüÄ*Ě{ŤY´r`řöńc®|ă­wZč•?–Ś›¬4wŚňęď¤Rö}źŮjÉpvÉůfbiBćÆC,ěyšÖ )v経I c®™§=fźŐb1éhî(ŐM=ĺä?Űw8Zą#2˛;»—Ä’Đ‹˘T‡ZzŇAkĹiÔŻ8ş'&™?=n^mŚÍ»qŚ˘C€$  H ű ¨ÖuYB H@-„°6u›â}9†0lśÚ&dNÍ7űô}w“˝6Z´Ś;bąą.˙Áfk.9~f"BŇ?·“+ËŔ=ýëë#ŇŔ_Ůq9ěňĘ_Ü~™˙ýÚ©9Çîyşę˘ł~e§ĺN˙ę˛=Ť4ŘąGlôÍ]WHw{ŕ,şŰ—vXöÜonu<±ŘşęČÍwxˇ´HplżĆü×üp‹tń»ŕŔćK\űŁ-¶ZmŢ,<‡dzŕKŠCěĹŘ:ą—{ëó·C×űęNËEý+DÇ\sBř3[6&xđÖKýű° Ř$úĹűů§†˙ę3k+<ö"Fs+/2f}ŔT§KäÓB¶{ŕ©—Ůw•Ĺő›g†`™÷#OżByúUöë`>켳U„]ŠA~újGá¶Ę˘ł¶ É6¸ěVĚš‰ÓN59aXŻ}-šwăöéxV€$  H ¨ÖuC+X H@Č löÍ˙Ć5ř~ţ©ŐĂ2dh7ź9ńÚS.~(Tž™žĚ—śP@ ä±[E)DN(ĺ·ś€$  H@čZ=|ŞíÚr[0 H@ŔD`–N}ő=φďđ‹×YjÎ…‡}đ†űźc'ŠX‹ť×đĄÖb^ýwP#ţő?S€$  H@€2Şu%  H@ť'p臗˝ěާ_ycĚoěźpţ-Ofy°Ş›BdžJ@€$  H@“ gÂN‚Ťn•'9Ď<óĚqÇ7zôčI®ćVx`l˝őÖ#FŚßa`2™S˝îľgŹřó­—Ü1*«Ű°Y¦ýé>Ă·¬mé…ôPÝOŕŚ3θôŇK»żś–°k Ě8ăŚxŕsŚßç§k‹jÁ$  H@G@ŰşckĘčHu‡~x·”ĆrLřć›o>Őş>4ăđĹg?ă° Řd€}îµé¦™b٧_rŢ™f»El4ŠşŔĺ—_ţĂţ° f‘&,˙ó?˙3aŘŇJ@€:K@µ®łůä /Ľ|\pÁé§ź>=«{ŕ|đĽě˛ËH˙‰'ž8äC¦™fšËË”%  H@€2΄̀x( H@#p×]wÝrË-!ąM6Ů$8ţóź˙¤R]Ç23ˇ‰‘ŔUW]ő‡÷ČFc»´NkŻ˝ötÓMGáPKĎ9çś.-ĄĹ’€$  H@)Őş‰´a­–$ ˇ&ŔěW&Ó…RĚ?˙ü /Ľpp?öŘc±hłÎ:ëňË/Ża]˘C]B`ę©§^k­µBa®ľúęgžy¦K f1$  H@Ŕ¤@@µnRheë( H`Ü|óÍń ˝őÖ %xë­·X«.¸™[÷…/|a÷ÝwgI»˛|¬m7zôčŇżŤú ż6:{Š÷z•`ĂđTá˝÷Ţk’rĂCRďUřVhR¶Ţć5¶ÝŞáš¸UeŰű·/vĂ|I„!Ö>Żpöí·ß~őŐW›„$Ě›oľŮ$d›41Ż›bŠ)H„şü÷ż˙m’ša$  H@€:B ň‚Ô‘tMD€&qaŃ+ `¤łě˛Ëâř÷ż˙ť*ČvřŕżŃFÍ8ăŚ×wÜ!ĎSO=fË2oîąç&:KÝO6Ůd! Iüľűî ‡l^që­·^qĹĎ=÷Ü#6Űlł,:Hí_˙úW8ÄĘŹUó™¨K”…Zh‰%– }DĂ+ŻĽňî»ď~đÁ ‰= łwYd‘Ž_|ń‚ .`15„HôÄi§ťóŔe–YfµŐVĂBRÇżţőŻÁMĘdwţůç?đŔ„g-0ŞłÁ”ËößpĂ ·ÝvŰÓO?ŤvCÜ™fšiľůć[iĄ•–[ną´âśz衇('&Š„śyć™Yp‹-¶`}ŔŔ–;î¸cČťżŹ?ţřE]ÄRjŠň2ďĽóR/TŮgź=†&i†Ă­¶ÚŠ˘BĽ”–ňŻşęŞ,GÁ.żüň‡~¦™cŽ9–Zj)8gF‘MňşîşëHśĽ&ź|ňí¶ŰŽV¸ćškŘÍ€:Î6Űl4ôúëŻ&`RV<Ś# …źk®ąBiÓżT061-˛Ŕ €ýŃGeź“y晇VŢx㍩QŚB;>ňČ#ápË-·6lXpS`÷â‹/ľîşëânßßҤvŮeęxýő×Cl†f8}c…V Ćżt†óÎ;ŹŚ5 ˝ŚęC•rŇĺpÄ`ÁÁ\TÓ-é~g´ă,łĚBßXcŤ5hî40‚ě%—\Â.tQĆÁhnjAČ4î&iR~:@h/¦´Ó7â8ÍRóP€$  H łTë:ËÓÔ$  H` ¤“¸ĘrR°ĐAĹHŐ:‚!ĚńĄ Í‚%íÝĆÄ˙‡¨HÁďŢ{ďýČG>ŐÄ$‰Šů¶7ÝtÓű1ę˙“/:`8‡Ś‚ö­™îűCÎC1AŠńÉô¤“NÚi§ťVYe•ŕ‰‡ G‘b×_ťjňC>Ű{ď˝Ń×8…µTĚ m‹Ľ˘=ĘQČAmřđá!Jň—żü%F ž)ü«ĐzvŘa´­ŕʍ÷Ďţ3ZÉ!ßÜxăŤHZAă#L*Ă]xá…DQžÂČCüĐČ>ń‰O ăöýą“ ‡ÁhHiĆţń´ÓN‹¦Ž(•üőöߤظa^4\Ě‹‘˙BtţŇ._|1U>řŕѡşG d#¤şŞZ‡8»śĎ<óLęâŽm˘'Hy·Ýv‹3˛Ńcx¦|FµŽ6Ťţ¤Ôşöý-Mę”SNˇç„|_~ůe’âGϡĹc#˘!žzę©´o¬ŐçGin”¸x Ő’…űb]đ§ő‘‘iť8•3¦QH–ĘƸc;Ń Hśh»ţđ‡cš§Ő:JHĂ­ąćš1q€$  H@GŔ™°ÇÖ”%  LşbĺyáŹî6LŔ2©. Śä ÖRÜ=JuYx4‘(ŐĹSdťJuÁť‹őőŁ4†”Ju1.ü˙ńʤ>ÁŤŞĄşô,F…¨BÁ„_z6ucĄ…Ö|bPÍbyb°(ŐEwŢy'Ba”ęŇSYżúŐŻ˘*—ž*=QÁ~űŰßF©.¦0…á°oyĄR]LÉ Í.öÍA-Ry+$BPE˦ďmíű[”ęŇdŃXQÖ‚ýž©T—†D!ĄČyÁ“~őç?˙ą¬K8‹ MČTŞK“E('ŮަIřtđ¦:M\·$  H@@Ç h[×q¤&( H@,űěąçžh żűÝďÂ!óě0—ĂÍtNLŰ.˝ôŇŕĎ_¦†©©čAčtÁó:l‚Öe ˛ÎÔcÖęŠ+®|Ś’&‚q“11U#ŻŕOÁ0Fc>,:BRđÄÄŹ©…ئˇ71ń0xbF‡”MĺMaň&’V°ĂQŃŮš¸™ĆRŕď’K.ąňĘ+cÇ„bĹÉŕŹvĂÔNÜŘŻĹXxÎ9礨dý}m1zbpG}ń„'ţ2đŹÁ‚„gć#Rc%$ć¨gĄÁb",áŹŃP<ěѨ¤:BbŻŐ:V4CŞĂM˙¨Ö™#( F!»°PŞG4Á ™Rń2wdŻŕI˛’E-Ř+a¸tÄG„,ކPj˘EaL˙>6něĆN!zR6©GjG}cc „ÁN ý.Ťţ‘Ňh…hí…µůBp¶ĎyaĆ€“Z\Dw ˛čŰ_$ł e>4ATëŇŇö-ńöýŤN;<¤$q,5‚l´¶ĂŤ€Ë€t‹‰5\đˇ«Ă$ éo?˙ůωEGEőĂ(ŹÄcô´^´ňµ×^NŃëbL;é*ÍÓ ŁZÇ!uQ­‹ ĄÁščĹ1|šŁOćhß߲¬ł¦iÓä’5+>ŘÁ}ň“źÄŇ3+‡´3mŹ?ţxř3Ͷ Pú„Ş5L3F/őŮxJ‡$  H@ŔČm(“•€$ I‡SçĐÂ|F¬~Đ2͢DÁZuq—L©±2Y ŹľSJ<=Jf1zßA“”)–‹9ć0bŁÄBţ,vEč[âl^‘ZB-żüňěŔtT ââv!eŚ‹Yd3‚S붆ßb`&±˛]ó™Ď`sÇ.%üĄc¤ĺ! V™L§TQGŢcŹ=Ň0Ń'€7I“™¶!b*¦łhc˛:$  H@€:N@µ®ăHMP€>Ŕě<ćýĚżCżk…Űâć•ěn‰bĂsÝC¸fkÉĹb°IEĐΰoĘÔ“¦ˇ#M–ÝvŮe—ń¶ŰnËRH…¦C˛cŔ*«¬°l8…8•ňd­˝(NE}'‹Ţ«ĂAË«ą% T±UŚúfś^J˝˘b•ÎPNş¸Â]Ż ÄŔ4ł_Ă!łnY‹0ž˘<)+NˇĺE»9D1ô¸8„dsبoµŐVŰn»-MĎňsl Ą=ŇA GďŽ.qă,c‚±%EH6č ÓŚ% ógĂa¤Ďę€$  H@ŞuAŐ4%  Lęx«Źj+jő¨Ö±?ű6jçź>»(`.Äöěi,şŮ‘j+(/Ř b—®)Ö‡"ĄÉĆ)Ą »ôŇKcjAĄBe]ł¨ţś~úéh=•b1pp¤‹ý±Ć;¬±Ć¤sÍ5×°ô^ üŐŻ~5şűŕći“Ĺ‹úTŹEeÂéźţô'¶ÍĹH“­oă– Dd‹†=]Ž ,b8««ŻľşÇôŰ`ËWĚâ^‘ĆŇĺ±6Ec-»Üžzę©»í¶ţTíoű[TQ)[Řîˇ-ŇÖě¦Bâl#‹+ćĎŇ Q­ É"ŘŃCŘŔűÍP`úÉ6O3ÄJWÄŁ¶©»§$  H@€:E@µ®S$MG€Ć`ĎĘx 3Q4tĆJ\ěŔ„͸÷ëcÉů1NÄ”uÖY'ó„Ă IaŻUŹß˙ţ÷ě׉ć’N¤$}ŘĚ4Ú@ťę3ŻÉ&5¸Ă?XŔQŚ-¶Ř"NŹEşüňË[UK«µÖZ ĺ(ŔśęśsΉIO îâtËVé´÷d4ŻtŃ4JdÜvŘ!nPۦxhR¬3 µ¸—.]4 ÁlžpÜqÇeű|xŢŘ_ťć´1‘űĺ/βsȱÇ›…äť[ĂŚo¤˝¨Ö]rÉ%(ŹL§ĹÚ.Ý•%ěz4‰i^ĐűíŽ9挣üGšŘß!óáhž&‘±ćĂÁĄŻ\Y/śňŻ$  H@@g ¸ËDgyšš$  Ś!°âŠ+FQ¶‹>UÇ6Űl“.ř•…AĽŘqÇSí& 0Ї,Tł@ż@ɤ:Îöa%šQś]í¬‚T—®ô‡Jv'XrÉ%ŁŘ Ł*ş!íĄó.‘ü‚ę"˘ź~řĂNéŹ{ŕň˘Ę±`3"«E›Íčßܱ馛FVÓˇ[•qYú÷LJŽ=bÄ:ďFmÔ&5vz ˛a•깨{LdfňuśL˙ §XŢ1‚Ňd3©Žła9Čći’ZÔ qŻ°Â iúş%  H@€Ž€jÝŔ±5e H@“.t˘hO—ľđ·!Âşl|đJ+­T†a"çg?űŮtK„tѱ2|éÓ[™ŻLíµ×^wÝuSŤťF™™¸ĺ–[Ćě‚­xÓ`ń,Ž´!‹i§ť–=REµ#¦Ď}îsś qѧâŠfčb˙řÇ1§ ;“˛Íņnř±Ź},ć÷@ ý:a(ł‡"}6%řô§?ťNŤŃ{t¤U›çU‚ ‰PČ(“ĄaXĘj¦1÷Ň€E¬´‚4”hÁ!I§ŠÄ8…ř´Ô'„O‹S¨:Đ@ŮĂ!Ö…0Ř0’fZM6ŮdŻ˝ö*§‡S$45Ę @ľ{ď˝7â]ŮŁ`BuöÜsĎ˝D<đŔt‡–PB´Âý÷ßăľpŘ«4ŁÔNŤŘĄZe=%  H@€:N`˛řy¶ăI› $Đ%ľôĄ/ýđ‡?<ôĐCŹ:ę¨.)’Ĺ\tŃEçž{n¨)Ű2 4¬5+Á1•ŹK‘±† Vę “ęx0&˛»`!…™Š2ýÉ «7ć c9…¨(ţ6I ă© "1'÷ÄO Q·öÝwß4zŕ‰AĄ&H›kOi:MÜ”5eú'ý= 㸨c¦EÂńç?˙yđA CĹCẺÂtÝRđ I–¸dAľíyzňÉ'ßqÇ!5de:=„LĐÎZµ&`l…A0Úť‹Dé-­nŹcö+Ý/ěŮB9iĘjĘ1YcpG˛Ńxł·i‚îűß˙~XN±ěWYjJ #|béF‘€$ ‰€€ëÖMŤh$  t#5×\“˝JĂ& , Ö\­cŇ+ÖIüş°V­´Źţ”Ť†Y™Ő‰™1Y¤ź#Ź<2NżĹ†kŐUWĺ,2ë¤Ĺ`4ŃÉs€ňB^Lgőflu<פˇbĽŮ*‘ľůcI‡ĽŐ>.â)VoüÚ g¬jÖÍ“í1Möx‰;źT§`7)ąa$  H@€ú@@µ®ĐŚ" H@=Ŕđg˝őÖc[‚˛:>DĚuí9š!Z@{BŮyřá‡ĂůÓN;Ť­8đa—Řt×ÎęTâIę-–P‡ăĆÄLÍNlÇ€$  H@"ŕşui2€$PŔ'¬ČĆ›íŠ zô‚[…b#°žÝ}÷Ý—Ju,®Çîş1€ ô™ŔM7ÝvžĹđ“}xűśŽ%  H@€ú@@µ®ĐŚ" H@Ť -í˛Ë.a)®[o˝•%·E3P l.Áî:•çŮtâŁýč¶ŰnŰ©ĄôĘ,& źVKÔ B†0ëÎÖî / ˛ŹJş Jgs15 H@€$ *ńźč«§ő”€$  ô‡ŔĽóÎűŤo|#ěhÔŰť=ű“ďÄ—ŐĐŘß“iĹŘ=Ť=šéĆčt) 5›X±P/ćYď·ß~ˇ‚l×05ÝlłÍÂnłČÓŤ°ĹvˇĂv0ű’yI@€$ @@µÎž  H@K ťĽ9°9M2©ŁLń›dŞŰ¨˘ěDŃ~›ŽF©ô)ĐDŁĐĄµW¤Kič–€$  H@LŔ™° Üě$  H@€$  H@€$Đ’€j]K4ž€$  H@€$  H@Ŕ P­dŕf' H@€$  H@€$ –TëZ˘ń„$  H@€$  H@€™€jÝ 7; H@€$  H@€$  ´$ Z׍'$  H@€$  H@€$0ČTë¸ŮI@€$  H@€$  H %Őş–húčË/żÜ«Ä O¬^E1°$  H@€$  H@G@µnŕŘš˛›Ŕ°aĂöŘcŹć‚! O¬Á.¨ůI@€$  H@€$Đ‚€j] 0zK`$0őÔS/¸ŕ‚[l±EÁŽ0„$<±&ŔşZd H@€$  H@ŔÄI@µnâlWk5ÉŘkŻ˝.żüň» Ő’đ“,++. H@€$  H@čBŞu]Ř(I}'°Új«-żüňí»ŃŁG#熄ď{fĆ”€$  H@€$  H ÓTë:MÔô$0Ô>ůÉOR„V‚Vu[ną%g BuyÍ_€$  H@€$ ńTëĆłĐ%‰GL1ĹÔ%vXŇĹzE«:|CČxJ‡$  H@€$  H@Ý@`Ęn(„e€:H€=^·Új«3Î84ě°¤>|8î7ß|3ZŐqHwí v“’€$0I8ĺ”SŢyçťXĺ…ZhÄńp‚pü÷ż˙M?h±:Äâ‹/>A”ÜBJ@€$0ŃP­›č›Ř NŠŘ;"¨uTÁÂqÚi§Ť92âp‰B‡$  ô–ŔľűîűúëŻÇX;ďĽó§Ö|đÁwŢyg¬+şž}öŮńP‡$  H@B΄Břf-"đ˙Ů;x­ŠăďG)JG¤÷ Ň{Ą±÷‚˝$¶ÄŤMů+±%ŻŃ4{AEŤ%Ć]A¤ŠéUޤ ¨Xđýâ’aÜłç<Ď˝÷ą—[ćůđąŮ3gvvĎďúčźţô§„ÁąűŘcŹ%(Ř-CŔ0 C ¨"pĐ÷ß_TźÍž«8 đţűďŻX±Bž´}űö:tŕ[MöÄčŃŁ/^Ľk×®¶mŰvęÔéČ#ʤ!šÁĆ·ß~Kµ>Ó¦M›5kG1†ÖŁGŞĽtĐAS¦L™?ľtlĐ A˙ţýĺ˛66lŘP§NŻňK‰%8n˘FŤpÂ6%CŔ0 ‚@™2eĽ3a_zéĄÝ»wżřâ‹ďľűîŞU«h·k׎ő·sçÎüM~®Í›7s‚ůÂ… ýđá’uŠ%¬aƧśrJ—.]’»s—%oňäÉłgĎfůĆNąrĺX¦é+ŕĽÚRĄJE-´lŮRź {ôŃG3s­¶~ýú™3gj m&ćâÓ_{í5ć)w+UŞtÚi§ÉĄkprĹ /Ľ" oĎ,‡‘! Kc۶mĽ íŰ·'O`9ÚľrĺĘÉjv×0 CŔ(jŕ×°Ź!Px¨RĄŠţoň–[n™3g>;-”öŐW_ýĺ—_Ć=,ś›:)˘¬GuÔňĺË=gżâLů‰'ž¨„6’‚3=›‰!`†@!EŕĐCŐë 1R5j¤…Ň>묳vîÜ÷¤ŻżţzőęŐE9ÚhҤÉ3Ď<×ůSO=UˇB…hG'©WŻŢ_˙úW|‹ž…-Zč.xë´ÂÖ­[qçiÚlÝ=űěłNÍc LRwwm6˙< ¤vŠšg!7Fl˘ĆC=äw‰f!z.›Ş!`†€!,6ŽĽP"@ÔرÇűńÇg˙ý÷wíÚ•€»čÝ%K–tďŢÝ•7ŽŢeĂ˙ä“Oţâ‹/˘· ¸$šô•đG°é†€!`|–.]ĘŽW´ú›ůż˙ýo"ÜŁwżůć›+ŻĽ’m¤Ť7&<#kô…^řđĂGuĚ:çśsXÚvěŘ˝ë$úýú׿ţŮĎ~§•3±ÓO?]Ô;ť{îąçĽó΋ęgD’c“‘ŃóßČ1cŇ4}Í4 šš!`†€!Pđ0o]ÁG6Ăl 0lذիW't ň.ÂŐ­upĂőîÝ›ZčµI®á§',ř—'śpůĽ2OÚHä҆€!`†@F`ź §X‚)–QĽrd†jJ’=ňČ#Z×fáľęŞ«&Lŕ)ŕ§#ŐÔ/‰‰Ă׼^vŮe¤©zň›nş Żź'ĚŕeÎ8L'Ϧ֮]›ćék¦iĐÔ CŔ0 ‚Ź€yë ţ;˛fęÚ<˙üóÚ(ŰőԦђ"Ó.]ş4E÷äqh#‘Kk†€!`ů†ˇjzýýúëŻożývotRMëÖ­KĹ:Oî.˝ř‰'Ž1"¨ânŰ´iSđ–ŢvŰmÇ×Ú—\rÉź˙ügO˙—Q“˙sČÔĺË—OÓTúši45CŔ0 C ŕ#`Ţş‚˙Žl†ŮF˘O‰ş—_~ůńǧş\´˙Í7ßL;'§Í_ţňO§bĹŠ—_~9ł)¦síµ×|p!ţ/E§ľę¶÷Čvi†€!`äúőë˙ęWżâ §{ď˝wŕŔQkC‡ĺ@'''ÚÝŰ*;â#\Śaň“}ŕpŢi#Ą/oĽńF}I›# îľűn,SőâÖ[oő–o"űĆŽëuń.)GGOxŇI'ĺŰɤŮâ0Ţ< ×eëÖ­Óśpúši45CŔ0 C  ‘ęwfÄ8PxšůOî°Ăă”X=źëŻż>úź".N'ĘżůmŔAoÚÂ;ďĽS˛dIĎHˇ8eÂ='Ű2yţꇲ¶!`†€!cĽS&XeŞU«F2¬6H<š·trůöŰo;vÔĽ»O<ń„îNŰ ˛kܸ±(Ľ÷Ţ{^w–ď‘#GŠŤß˙ţ÷žeňD!zĘőѢč˝ző Qĺ1Üź2ÁTłËaäY c8AďíÄ]˘YĐćl†€!`äB1·˘›Ľ#đä“O˛·ŻA t®iÓ¦ZBű“O>q’™3gz·®ąćď(ŐÁ_pÁžZ!şt!uXW^™MŐ0 B‡Y®Ä…éis¸“çăî˘E‹śČţáÇźłĎ>[w'Ľ}ÝşuZňÝwßÉ%tŇv ‚â ¤…—^z©ť­|'ú ,8í´ÓČĎ ŽgQפÖÉ`;»&Cçż©nÝşüń)ÇEÍ”j¦`†€!`1üpˇ"öxö8Ĺ Ę•+sx«÷Ô0ő+®¸Â‹°“##Äm'˝N=őTiKÔ8´\®Řń(+\hŘl CŔ02ŽI¬ đĚ–-[–E/–˲ŰÜÚµk׬YłČ`ýôÓO9÷iúôé .”»Ń†Ř‘[řÚ¤í8gĚÁŻ"ŻPˇ‚´˝F𔌷Ţz«RĄJžf]ć€ĂäŃLňÍ,Ń”]ştYąreÜ 4@'î®É CŔ0 "Ś€yëŠđË-ŽŹŤˇs(uÔQÂň—-[ćÝŠ Đ¬Y3Ľ~˛zĘ…â’:>˙řÇ?ř[(fk“4 CŔ(ttďŢ=8çćÍ›{rYťś$S‚×ţýďă“’˛^—ŕĄgťöíŰG5¨Zś„Yq>lÜÝĚĘsŔa2;ü·V˝zőI“&ť~úéS¦L‰ŽÎ—ŠčDo™Ä0 CŔ(ňX&l‘ĹĹëń©¸V­Zž|Íš5H𾱇Żo±łä…dÁxjtŻ‚ßη ›ˇ!`†@ƨZµjĐfÔ[·víZŃ$z®C‡$Ŕr0T¶\uXzë(ú&–3ŐřÝď~·uëÖLYK¶“]“l­°ÜĄ4á‡~ř /ńĘ·AřK Ž<Żpaay(›§!`†€!{,¶.÷š…„@\şŠś@'sĄ6mÂĺpĂé~- =SżŢÎť;Ą»5 CŔ0 C@đĘ˝‰<šyęÖ_¶lŮҧOźŤ7О×ŔÓ— ]”˝užµś]~öŮg”’ŕtÚśuŹ%h-»&h¤0 yqxlůĆÉŰś CŔ0 ňČ#üqJSÁZ”áKŮQrŔa¤Ż5 CŔ0 C !`±uEě…÷Ç :Úeüřń4ňkoťÇ§M›ÖşukO˙ťwŢń$vi†€!`Ź>ú@őRĄJy€ ÷$˛ţŽ7Nß*Q˘ÄđáĂ˝‘V¬Xˇut›ĺ›LI-á ď¤ ¶Ů.ąä}’,‰·7ß|łîĄŰmÚ´ÁQ‹pÓ¦M"§űŐW_=qâD‘¸†wPěŽ;<.çĎźĆIrŔaâL™Ü0 CŔ0 ;[WŘß Í˙G,_ľśbŐ?ýä'äˇ<ôĐCžPöä9Ćλőűß˙žH:-üꫯ†Ş%E»˝gĎ~t‘dÄoůŁţÁS´°§3 CŔȬ›óşPY"şţrN+j¬2ŢY±8Úřŕ™gžŃĘ´˝j¶ĚÖ«pG´]Âpž5.sŔa˘FL"€?ß@ŹĚŕŔŤVG‘.Ö0 CŔ0 ć­+8ďÂf’.˝ôR]ÁNĆ ëÖ­ÓÖŮŔo×®ť“xűđQ>óĚ3٢wY-K—.íŐ«W\ŽŹ6[dÚÄ2ĽńĆ'ťtRßľ}{öěÉăsĚ1ü ›7oλ"óö †€!`Dছnb鬡żţőŻ˝LزeËöë×Vjݦ[4Źő˙ýż˙'Ö\Ă­Ë®Mśw÷ŃGőá ÖótzôčáIä’áÝáé—_~yôtřßüć7Ţ čyëŘčşë®»ÄŤßţö·¸ů´$e;»&ĄÁ⬰}űvÜŻ0şţýűĂdŕ3ćKÂKáUęďRqFÉžÝ0 C Ŕ"`™°öŐŘÄrˇŰ¶mű‹_ü‚lVÎ{}ĺ•W8kĚłuÁHlÝ ApŘŤ=ZëđŇľ}{‡-W®{ÝúVnóĂiÎś9P-ďä’%K*tt–ä&$GÓuů©ÓŞU+ŠarČ!E {4CŔ0 l!Ŕ^WďŢ˝ŻĽňJ˘ç87€UĂóťaíg?ű™;e˘víÚĄK—Ö»©S§˛ĘtéŇ5âˇţö·żÝ{ď˝Ţt÷É'źÜ´iS]Ž‹č<^G}4ŰrO?ýôkŻ˝¦-°–Ąs”'Mýĺ/9á„t_˘ü(´wĎ=÷ĄĐ«łÁ]P@ŘĽy3yľµŽ ŤěrSĹö_*IÁĆS̆+ůĹ_|ńßľ|ĺŢzë-ęźŕ°ă›Ć•3g˝Śćb‹›=¸!`†@ACŕ ŰY*hŻÄć“-?üp•ËV¸äľAŇkúôé¶ěţ·pĘ)§đSDŚę‰!lA“Âóß˙ţ÷±Ç#ť˛K€`Âď.>üÎÁ}yÎ9çv‡»ĎQ…úÁmň†€!`9C L™2ěčd«/ë/)Ô­[×ő"Č}öěŮž…Ž;łĆşěe•:5vŃ6lŘ ]^|ńĹ!C†ČeĘĆŻ~ő«ż˙ýď˘Ö˛eKťŤ‹ŹďÝwß•»lć˝÷Ţ{rIEŕA »#ÍÖóčiĺ¸6ghÜyçťînF8LÜ@ĹP™Á1ÇŃ%ä<űěłlŮr ™ Çg™9řŕ+V¬xúé§mÇ©&d@óećV1DĚŮ0 C  #`™°ůíŘÜňź˙üçÚUÇť:u˘V]ň`•+WNV(ĽwŮpf šx‡ăŽ;îř±„5ŕ­#‰[îC›C°^y÷ÝwÁ äŹ9ňË/żŹ^áEŔfn†€!ÜpĂ âŞc¸`ŰŚ3đ‘]uta Ň[tgťu§F¤9sńn˝őÖ4•Q#P·ŽÖgĽćškD2pŕŔ®]»Ęe°A_Pžca”ĂäŘTŃëHĐÉȡMnµ#3Âg™Á©Ç‰Ł~ÉĂŔۋוÄXçÔ+z؆€!`^~ÄB ďcŘĚ ‡ĺŐŘ–ŹCÚ SŹfÖ űí·Ź1â°Ă öe;ťÚŐ„•ď^!żyČ{˝č˘‹H ~˙ý÷ÉßI‡­âž#UgňäÉühćâłóĘ^@l憀!`9C€(3Wô-ŘťŔ%rK%¦ĚéPçî¨ŁŽ ę;!UĆ®˝öZ­ŔD/‘`–lSBÝE×`—ŽŐ*n•ö"ôŹód˝[x˙óź˙8!ĺ HőĄř†§#—Dl®žľĂ.ÇFF,žŤ]»v#yńĹCf† ™Á+— ľK8éčHÄĺąçž‹ó®řT>I Ž)†€!`Ě[WŢ‚Í!c”/_ž=Ň3Î8#šŃ@i’·ß~›ŢĽ­r› 8l铢rě±Çşź0lř=AddÎöéÓ:(Ę4*T¨ / W›jóAjźxâ ünP[žašOAŔQuÔź9s&ÇäalÉĄMÇŮ—ć¦f†€!P V,« ţ¦čúKĺŽd%°Î{YŽq'ľ)ęĎb…˝ĺ–[(1M5Ĺ”¶ŽŞ}Ç•R%ý–!¨Ęę…Őc„[ÚT´ÍN^tَh2:N@ŞCT­ZU„®A"íÜąsŁţ>OM_ć†Ăh;ŧ ëŕ[Ç)X=Ěî#gdO—>™ˇ;qväV÷ꫯr_Hj‘W|0´'5 CŔ(°XÝşűjlbi!ŕŐ|ÁOG=Ů,…Ŕ-[¶Ś˝SŇd¨KĄéÉwĆŻ˘ęś…Š›4i˘»ÜxăŤwß}·–Š6Ä”JCpSütT©#,NŽ’ČÁüůUD"!čŠ+®ČĘĘâÇĹ좿Ör`Üş†€!`:8ˇó"ŘbqaýíŢ˝{BĚť{:şŕjY´hů‰ś>AĘ*űg¬&Ůzv†céÇAĆńĺÄËVłfMßN<ńDŽEĘ–©ś)S’ŹS2pRŤG ZJ;yÇaR]ŘpÉÁgôňÉ'ÇŽKAŹÜ”怴ŕ2ćĹÎ ™1ňjř™)ěß›ż!`…óÖę×g“˙IÓMč5çźj}~WPyZKhłoŻ«Ő ůë_˙zÝu×yj˙’Qř1I^łf !r™š0‹„PĎŽfDĂ.SŔšCŔ0 ˘Š@î9LQE&ĺs±‡:eĘŠćOŢ+[ł)»¤Ł€{2Ă©ľ¤Y@iŚĚ¤šé†€!`ä%óČ®™5 dÎR˛DĎ–ÓčĘÓ[ńě–“’Łuh7oŢÜ“äK‚đKR3›gá¸4"“]uDĚK8`ŔĘî°_Ma B˛KH'!ýdřđáä’pŰUW]Ő¦M" âňŽ 2V67CŔ0 CŔ(€ŕ#Ý2ĂiÂP5‚1“É $„8GĘ#â…ĂP˘2Ă‘YqŹ†×Ź˛T'dk“‡Ů”%ήU«VFfâ3ą!`†@Ţ!`ŢşĽĂÖ,Č‘ńĽux˛zôčqĺ•W’׉ckúôéĎ=÷ěM?UđŽ>úh-)°mč)Ź©%¤ŽT#BęđÜ%°ŰC=´V­Z8Ú\"n;,yä‘ĺa@>˙üóŕĂâ°Ł`3ĆŃÇa»%D©%Fs™Đ0 CŔ0ŇAŔ‘™uëÖQuw„ 4 f dĆĄ$7kÖŚ­ÇFŤ%KéÖ­[µjŐ`2ź~ú)Ś%‘‡î*W®\˛¤ýnJç]™Ž!`†@f°U'38š•‹.ąöíŰS`X?‚;#LKĽöĺ—_­ŠíéđK¨-tFË8ěĆŤÇQAnĘTÉţ໥ĐaqÔúŃ5wşté‚|ţüůÔ˘DŠě™â’ud‘šß‘ÁŽ?2Ĺ_°l>»ţ•° †€!`… ç>[ż~=dzĆ_H¸§€l@9Řb¬[·.9­:ĚżS§Nxß\%ţ’:ŔPmę.ó=ö)Š™!Ó‚A©ĎKF»ŹxýŚĚh¸¬m†€!wXÝşĽĂÖ,ç©ůBŠhż~ýpBĄ9ăăŽ;nÄrEš˝ň_ŤJŰě?szŃ‚đŃjËÜ©’-B4 ™­ÇbqŇář#1ŢŚ+PÔ˘ çţĂOwţůçsJ –I1ŽŞ™Ä0 CŔ(žd„ĂyčHwĺt`Č ţµ”dnĆaÄĐá§^ Žć3™YłfÍ1cIđŮiµh>MN>Áě!C 3H˘j&1 CŔ02‹€yë2‹§YËo2ĹtI=묳đC%?@éŇĄŻľúę;î¸jnÉšđ.!u®DÝś9sČőŘĽysBŞód—TĽiŻÁîqÂŁ9¦Kôɰť9s& )‘IxX-{Ńmܸ1ÉĹxE9§Żŕ‡%&<‘Ý2 CŔ02‚@¦8LF&SĐŚ°ĹČQŹ=ön5ř ‘nÉ|ůSÁŁuëÖ-Z´ °ÎÁiť~@ä8ţŃŰşu+©™”ě>Âg‚CcűöíË»łÄX ©µ CŔ02Ž€eÂfR3ŻqÄn CvěŘQÚŮjPÓşFQá‡~ř>`˙–¤Q±çŁj Agçž{.š"/h ¸&nGňU ©ă)Ă­–RG<ÔWž &ę\uqěÖm&Ó wi&¨áľ„Ló ß ˘sŔÁGŠŮá=$ďzvŽ ę›Đ0 CŔ(&dŠĂ1¸ŕ Ž|ʼn6fĚ(áu d†x:6ˇ$«’蚼ďč°‚Ď@cp·ń·]»vXX˝z5¬‰‚`BfvîÜ Ëbn/Ľđd†w׳gOƲ8» b&4 CŔČ=[—{ ÍBŃDuńÓ‘ňŔß‚˙ě3ax- #Żżţ:™K>q3‡¤ňhTu4 ČHŚćĆ˝ “†€!`Ĺ ¸Áű‹/6lŘoĽá6ăŘŕ@fŘk$9ŕ”SNiذaBĽ[Đr`)±ś3K‰:&€Ů 2rH Ô…‚Ľl=^sÍ5(˘‘™âö-µç5 C 0o]ţŕlŁyÎlůľúę«÷ß˙Š+đ %8δjËą·î¤W¶”‘xó‹ňÔ¨„.ÉL!oÝČ‘#94–mgĎ”ľ„FšGţµ˙.ľřbřîa‡¦¬m†€!`Ĺ‚ר üÄOŕ­Ű°aŚ"Č=88ÎH€Ěp¤t"Jf‚}ă„Ô q —šđ Č0`8ĚńÇŮe—‘ť@îm‚ľÝ2 CŔ0r€€yëršu1 ¸ÉnăĽ×iÓ¦­\ą’şä*upJňDŘ®S§DşéĆăŻŢĄ÷ŔŢ]Ü…®ř ›Ňä’pŔnÆ^ăłĂaGńI`ş¤Sż9ę1ôµKCŔ0 CŔ(’@f–/_ţüóĎS–2©p1nqK0]ýúő9°2ăŽjMˇ(Ň[^ĂSŕE.L†ş"“'ON 3Âg‡“ŽZ"5kÖ<í´ÓČL„VycŮĄ!`†€!]¬n]v3}C @ ŔQpĘuëÖQkŹ*uÔv!Ż™G=e®řČČ<…Vâ #ű•ż„×!Ż˝g™Ž.XÄŮ‘B‰:öĄ ¸c›Ú3Ë%v<{ćĢF/\uÔš©\ąrň”˘¦Lb†€!`…öń­Zµ 2łdÉř d&ů4 Č ~¸ę8˝Š:CÜn_”É8 âř úp>Ôäe[‘s-`YLşDÉS¶S©R%¦™ˇ®˘řěâ†Ú1ˇ!`†€!DŔbë‚°Đ(аá \¸pá3Ď»ä}r8.Dhw·n݆Š?‘Úvz,k†€!`†@‘AÂ@Ě 'Ą<8ő59ç”'ä 2CŢ+ľ0|v™ źŃTDŕ ÝÝč--˝01ŠĄšd†!"4@@IDATś±m@f`YÖuíÚ2Cá’˘j&1 CŔ0ŇDŔĽuiej†ŔG€J.‹-ú׿ţ5}útŠŞ¤¬ęR˝zuÎGëÝ»7 °Đ\ÂÖĽgĐ”4ĺ-OŮ»ŚvDZČ^4‚KśľENvóÔäÎÍž9ą$-Z´čßż«V­Ž>úhË%|¬a†€!` Č0Ą*ÜŁŹ>J‰: bp4±„G+W®µázőęU«V-6ó  Qĺ8N•{ďŇłĚ]>ć z‘±KB§&—Ňra/ SVŹ“jąŚËŐ•ŽÖ0 CŔ0˘”`ó'*5‰!`SÄç…“ŽŁ$Ţzë-Š1łÁ›”AUj¤ÁíС~:îŢmč>y´˙Ű˙żžYn8[Í<łĄÂ ”—¶§é.QŕˇÇs Ř9s¦/SÁ.&4 CŔ0 ‚Ĺ1Č{ť?>>ŻW^y2CˇŰ„ٱ 3ŐŞU#ž®eË–äŕ§#_hGFžZ¬IĂ3‹2ÇŤÉđaŁ–BĚd&Čgşp<·Ąę:Âd\< gÜ. CŔ0 ,¶.»ex ¶ř°ŘŃýŰßţFÂάäu.uÇwU]ŞT©’ü Â5ĄˇőB‚ň P”©˙2eĘ^ŘE§ť ©ĹIÇqołă)ŘKçěZžKOĚÚ†€!`†€!PXp§I¬]»2óá‡â°KŘ˝ăˇđ‘Á 3ýúőkĐ »„'őč‡wIǨÄY ĘB1{ĚLš4‰Ô*~$çćŁĘd樣Žj×®‰±8ţÄn†€!`óÖi4¬m, ‚xčHyîąçđÓáäŠ#‘nŢě9L#ěŃŁ4¦č’/Ľ^ŢĄ÷Ěqwł%Ź*#Ô˛‹NJěÜąs'OžěŤë]2s˛w9»źăţđŠ=mOÇ. CŔ0 C €#Ŕ©©ÔŔáőŹ<ň#3 ńt< ‘ő„Ô‘úJ‰: |€rŹZx—qwł%*łiĘá­Ăg™IpŘ1%fÎ#î@xŕő×_ďŇ gŢlíŇ0 CŔ"`Ţş(&&10°X*¤P^ Á…Úr$»Đ Ó"Ă‚")P[BŇŘĽĺrezBďŇ"înP®…ş­mş,W Řąâ/<ehŻ Ç…µ7mÚ´Oź>}űöĹ éÍSłKCŔ0 CŔ(P@fČ]ĽxńSO=E0ÝŠ+V­Z•LfđmáŐâ”Âꩽˊď[QRˇ%şD A!zKKt[[†Ěŕł#W2ĂĎehŻÍ*ő=8ď Ó¶mŰÓO?]ÍÓ´KCŔ0 C@°xl†@@€MZ*ąđŕN0jKHĽ0nrřł(KG®hóćÍńjŃÎVžEp7ŽžĆÍ!*Ź3 ‡°2gâć ąüĹĎĂŽ§Ęłó™9s&I†Ą;ŹY»vmž18Dt&&1 CŔ0 |F€eť"ěÉQoבgH&3DĐs()|H ĹĂ•ćśăř@W¤iÓ©-c6Âlń'Âg¶lŮBA=$®VIđńQâÝ›={6Ě­[·Bc 3x$1BÇlMÉ” CŔ0Š[W|޵=iAGźíÝyçťlŐâ­ă2kB"qu5iŇ„Ä EÉłŕ úAaś˛“ô•†V ă,G•)ÉÇé#FŚŕT8´qÝća!µ¤Ć\pÁ_|1!„Pd_ëXŰ0 CŔ0,¬ő,čěĂ=řŕ”xŁJ]2™a¶8ć 3§0`dĆ9°˘ś!*‘'M¸ĺtDAŇ—FP'Ź*ă‰#rs3xj’drc!3l7˛Ăzá…2¤aÆCadFż k†€!`ć­(¬aH8AlÎś9|đÁcŹ=F>…;J,aBnS·wďŢť:u*_ľŁhŇ@Ů»Śv…č­¨$A™[pVH*ŢF¶šůŕĽŮÇ=> &0`ß ňů5¤“pč-»ôóe˘Ó3‰!`†€!`änČĚŰożýŢŞîr®kz‚Yç®"? uëÖȀ窣ŻP ¦Ü-OŮ»Śv…č­¨$A™[ŽĚŔÇ(H3Áyca#6j ÜŹ[J‚ŔdřP$Ç%ÎĘ ľ CŔ0Š'V·®xľw{ęt ®¶yóć©S§>účŁä„ÂŰâUĚ&LJH:üt”FZ¨x©`Š($läĘ;Mw™]}7‚łeŮSćŕWR`(ŔĚ ř삹$ Ť«nĆŚl_/X°€P;*RS†\YÓ†€!`†€!°.RGް>|8«3áu d†Ĺ2gŞU«VřéČĹOçÍ3H3<!ŮRvFč’d†r{¸ę 3¸©gÂ(DĆ‘ »ł¤S,\¸}NźpŐ‡ÁGÍ{d»4 CŔ(V„u+ěa …ŰÎ/żüňsĎ=7věXGć’g Ş;öŘcqNAědÚÁ^A!]‚ň 0¨ŚfÁ  ă,»'‚ńs¶ĆčŃŁÉ( Vkvjüe&ěcwěر{÷î7ÜpîK~Č]k†€!`†@^#€ËiîÜą·ÝvŰ1ccÝŹ[úÝLX¬á3ś‹ ™ńVí`Ç\ 4jI‘ŽťĹµk׾ńĆ™ ĂNŢ 3aó4N=őÔ«ŻľšÓ'˘îKQ¶†!`†@ńAŔĽuĹç]Ű“ ŘPýĎţóđĂsbš‹#KŽ9âé¨ę‚[Š=[8ě6J=±:ËŃ[QIś¦¶LŻ8‚ëş§cDkjăNΆ<ĽŘmć ąM›6qś×E.ťĂŽ-z¨˙ŮgźMB Ĺě8jV¬a†€!`y+őkŻ˝F<Ý’%K8`8˛„QXŻ!0ŠxËÂ]´É ŰŤ0ĚP–—żřďâ¨ŕRG-©Đ <'@j· CŔ0Š6V·®hż_{ş‚…Ô ÷ç˝Ân©í2sćLŠ•?’0Ëşuë6jÔŘ1N}e»?”ŽŞó:ÂęäăÝŠ^Š&Ťč]Oâ)»KtâúŠľg'xé)ó€pV8=qsä·ňÔ°[ř.či.lŘłc{ź˘9ź}öYŐŞUḖKDŰ„†€!`†@. žĂ^!3ďľűîôéÓqŐĹŐhs‘"JrE< 3®xEÁ!3Bi˘xü$Ş %ž2—đ NŇ$ĐČ ÝѵJe^’ ŘŞd‡&ÝéŐ7‰!`†@‘GŔ˛ĆŠü+¶,/F­eW˘îť>Tu Ň57]X,ŤŞĂÍš5ŁJŹ= kúI„şXZÓµEźËä.ŮŐÔúÉƵfĘ9 \ó‡ä•gÇ%·eË|vqżŘáçD] ÓÁiÄ!âł«\ąrÂď(J&1 CŔ0 8X»ÝrŚ‡ÎąęđÓ%”¨c)ç$(6 ¦ŁČlż~ýĽO!ɬ@ć#úH’»¤ŻéŚkýdăZ3yŘAąú褎K—1GfŘwś7o±Š6,©ëGęž>#3î5Ů_CŔ0Š– [¬^·=ěC?ݬYł¨ę2eĘÜvřé’U]Ş;˙üóáx¸íĽyÇőÍ–<Ź”ăĚňÁ[AaTź‰$ü< µ‡†w ć·ţM>×]wHjbí)ŰĄ!`†€!`¤‰cśĹÚ ™a˙Ś}(ĺż 2˝IŢ9‹ł”…Ś”…qĘ"Źë…‚ţŐ‚Bz99N:W¸„( |FôÚś>źĂś{îą}űöíÔ©“śčéŰĄ!`†@QBŔęÖĄ·iĎR° ŞËüůó_|ńEJÔ‘×@=µäulś6iŇ„MÔ6mÚJ„c·\ď“Îsę.)ő3¨¬MévĘ9  Ď-b mĹ GŠ+쟂ͤä-Æů- ĎO zQżŮŠŮá2ˇ!`†€!D€ä€Ĺ‹s~ý›oľI;&ČLśC ¬¶ś#A˝]Č n&Üvqd†•=8˘&­ćÚZ9Ąq­śŇ”(Ł™KË !d†WĽoČLRR1Řô…Ěŕŕ#(2“~ť¶I CŔ0Š~†]Qz6{Cŕ€ ß"וă#ČŮd úńÇÇ[”śď@ć&ľ§#Ž8‚ęËxëtEá {ÓL‘¶čH#îÁuÇĚ*3˘Zöîz—qvr§ŚY8.$µK—.TŔ!VqÇŽ”˙ČFi.Ę|`·'N\°`nP—}Lf1LŔ“G´»†€!`†@1G2ñő¬ˇ¤mŢsĎ=¸í˘«­†Č•¨#éµ[·nÜv¬ÚNYkJ[Č Ń‘†¨y é…<łĘăAËî®Ě6Y9aÚP(,ZBN1ž8˛˘nP7x”±ďK8žŰtdĎOź‘a»4 C !°i,bfŹc(`] .üío‹·nűöíÉ~:& Ů"Oä‚ . žj‹$Hł+ ă,ç‘rśŮ¸iÄÉńľ=‡3ţşlŮ2`G3îźf+›×gžyćgścTv\“†€!`Ĺ\uź|ňÉÍ7ßLŐ]âéâ"Ůs”¨;őÔSŮNĂ—„účkŻ˝–†łÓřXŰ0 CŔ`÷ 2C)N}ĺČWŔžKĄJ•¨´ŰżČLůňĺq'IHťîĺ­ŕÜň$ŢĄîU–»Á^AafŤÄ !sŤ š'äŇUć%]€:ś¤dĽzvô%Ô…[Ľ™Ë.»ŚJÇpH­`mCŔ0 ˘€Ő­+ďŃžâ#@Í-űĎcÇŽĹg´hŃ"Ř­ÇĆô!˛U«Ve˙™¨:j0Cs‘D]uşKB›Žú“ ™ă[´ŻMévćFw"ů7ÇŻ 0g“™`ƸW˙…Ťkh.ą'\bxFţć`tëb†€!`%đ‘’Iqş1cĆŔdh$ď;B]ČÇä@'>­Zµ˘J®ş/©tô>ÇVŰĎĄqmJ·s`–îŕć>.¶ “‰K΀˝ůíĚT©RMúęĽăĚÁş†€!`@,¶®ľ›RaB.—ť9s&ÔöľűîŁ0*!¤w"ĽŽ9ć^˝zQ… g“÷ŔA7_PHǨ<*űq·‚ň 08bś0Ng9:Ď8Í śT>~řáŇĄK]ń— ŁŔŚAľwďŢĽcÉŮécdJÖ0 CŔ0Š*ÖMÎ'}ĺ•W 3ä¤If @‰:6 Łg•—ŕ Tň 0N9Nž-#Qv_Ď”wét‚s¦> d†Ý_‚ě؆äŐÄő…ĚĚȦďĹ_ ™á-@)!™b܆€!`…óÖę×g“?Ŕ@mŮyľăŽ;§#m}Î8Fĺ& …"O¤}űödżŰ…‡¦ĺnĹu ĘBěDĺQ‰@ĽfÄrĐĆ ť< r ™|2ańŮ]qĹ™Ž;™|¬a†@ˇFŔĽu…úőŮ並NťJ­´ŃŁGC¤Č„e˙3a6ÓQa¤Oź>-Z´ Ş‹K\Eš®évĐNśBP.Bim:aśNP.Bi$XćVT-* rKr+Úę8 ©^·iÓ&ŽâĺçÇěŮłÉ+‰‹v„ć–)SŽKJ2§ł]zéĄŐŞU#µ$:śI CŔ0 "†ËĺĘ•+_~ůĺ÷ß2C~űŽ ĎH©ŻnŢĽ9µwŁd†ľŃŐYŚ»”kˇnkŇŽSʵP·Ĺš×ę…ttň¸»é[ćíŔ6!3$p@fx5q…>°Éîc˝ző¨¬B¨#d¦nÝşFf<¨íŇ0 B‡€Ő­+tŻĚ&|€` š2Ŕě?s)Ţ:Δ`aÜ´Řá„Úââč®.]şŔĄ`TŃmOÜFŃOśÍôĺQ›"IßHPSěxŤ rv…žMąLÇĘ0T~B€3N:—E‚¤ž`w¸ď–-[ ĸ\‰€^Ó‹mj)ěhBCŔ0 C "Ŕb™!t‹®·ß~2Ă:·Pňڬ‰”HĂġęř(TçNÇŠ>ľ,ŮŇęä@"Ö˘ŤXÓ]˘ťDëä ť{ł |’ ™áđÖČęN2C|§dž‰&}ŤĚá2ˇ!`…‹­+ŻÉ&Y €-A}¨'ň /<ôĐCĐÜäęËP%訉ַo_ÎJ<ńq{­AyPg$[Ę11}ˇ{©Qý¨ÄiężžŽw)O‡|۶mT˛[ľ|9ŮĘĽľ¨¦…Ń5pě±ÇvëÖíĽóÎĂÇĘá°mQ°†!`†€!PŘ€ĚŕŮÁ7™yę©§–-[F W\:ËâźáŕWňȲ$EaÜb”…qF˛ĄěŢE´KT§7Ť8yF,»ÉD‡wBČŚ;÷ďŞsŘ•± o!i2Ó¬Yłź˙üçřX!3ŃMb™5 °ÂOĚi‚NţßâㇽꪫÜ/‹üź€Ťhů†€yëň j¨Đ#Ŕô#^}őŐ… ˛u™@mݣ“؂&a„u¸í˘~ź8¦”… ”…Aĺ8ÍÜ+;‚öÂtFŚë<?K›ŁZ3iËśv—Ěş µles\ď/~ń Ţ]Ť58űö×0 CŔ(ě@fŘľúŰßţ™qÉÉk+É•‹8őÔS©Á‚ŤŐŠë”…@”…Aĺ8Í rś0»ň¸ArJ႟ BܬlCfŢyçÂč8 $ŘÝ yS|…Ľú꫉…äÄ^KŚM€+z ŔůÜvŰmüăŁw ‚dčС·ÜrKôÇEA›ÍÁ02…€yë2…¤Ů)˛@‰V¬XńúëŻsę+ Î.€Ý&<-gG°“év5©ęB®:Ńgí—¶nĺZ¨ŰşŁ´ă‚rJCěDq:éČătd”¨BT┵\·Ĺ”nx ¸Vq°’!Â9kÄŮqI%žŽt‡ú@jqصnÝ‚;dČĽ®ĽVQ°†!`†€!P¸€şđÜsĎAfb)d+áđĘO™á¦Zµją}GŃŹ[@r-Ôm±¦q AąĄˇMyí8ťtäq:2DT!*‰*'č8eOKJńňúµ[°`d&yó‡] x-[¶Ľě˛Ë8V ‰ůwäE€ĚŢ{ôć›oţűß˙^ˇVëĘ »•pۧSw¬›{Ýu×Ý}÷ÝüwĘ µwz@^„ jäöű3@¶! +¬ÓśôJęűĎăĆŤ›>}:¬aÜó8j »…á塪 ™•,ů,˘üŤë•¦<şçŢ&CGÍşůdÄxĐ~F,gwÚĽšňĺËSd7ÎSv¤ńş’űëŤâĎ Ůľ^˛d pb¶¦ů‘CĺAşCsŁú&1 CŔ0 ,ř+gł >ăČ kQçqvd†0s>ČLť:u¨éá”sż‚—ď<2›©9c':íÜĎ9h6yÎL÷Bdv…ˇŁ¨…ŠB^łëčý%g–Lg¶*!3$|Ŕj 4¤OZśť”ľäÍ‚-˙đqśWÝoĐ:¶˝ô˝{đÖńß5…&ŮK&Í9úý<°3´Ń C S·.SHšť"…Ë3K >ťýë_lDRb]Ś{H–IÖKütÝ»w‡őęŐK4Ý ęţ ÁÂđ¤˛,´A! Z.ĆuC,xĘAyP¨­évśr˛<ĺ„ÝÎVN6ë=ťž'méKClJ!™­4G1;NXă§‹°1Ďß|µü™2eĘ‘GůË_ţ’^Äŕĺ%zĘvi†€!`4ŕ-¬q¤Ľř⋣FŤbáK.QÇü™!w—ĺ Ľ'J^dQYyµ¶–{ĆÝĄXđ”ň 0haśrJyĘ9‹q­g6¨ěÍYúŇĐ6]!:tŕd^Ž‹%7–7 ku®%ĎBĽu|®ąćČĚI'ťtÜqDZťŚĂ2#y˝Ší%»˙jŔ“$ ţX(řOŰMŹ—č>9žęĽ•Ű6l˙*Ú˝T‰T+W÷đ˛|S˘w‹Źäíék§˛ůÓŤ»VlÚU©\©F5*´iPéĚ#ZşDS6yŃg‹Ö~ľxíŽ2ĄJ´¨[±E˝JýÚÔhX˝|´×Ěe[¶îÚw€L÷¦UËb.š(HĹTb_…búâí±“5k‘t>ř {’.Ë ÁU‡)ś88é¨ęBŢ+ŢVMaW4ĽKą´E?(D-*×ÄBPŮ $]R*5SZNi6΂ ‡Bśą§, 4ôGôťe.)ŔŚG•jŮ8d9 oţüůAB†>bĆŹ!ć-8˛ľä•đ–őÖ6 CŔ0 ě5r(Áźţô':¬e¬tÉd†Ňőm۶…̰ŢáÍaądÔĺ]ş[˛Čr) A! AyP§¬ĺ2śҎʵ$#ĘzÎ2bPč Tö¦ç]ŇĹ}ś}ą ™éÚµk»vízöěI1;Č [Ë˙ÓÝ˙żNź·?iŇ$ČĚý÷ߏ2ĎN˘&÷kďXáßĆ«ţďô(đB™$_ Ľ®ątĽŢűę‚—?\÷ĄK|^ź†ż;ŁuőJyN}7n˙ęłĎw»™4ŞQ>Ů7á ʧ˛ĺ7Ăg|´tËŹm®çňΗćýöôVőoôă[{ŻVnÚő»g?~}Ú}küü˝…&ó×'·řőIÍ)ő#Oß-ĎÍv č<ýQÇuŞŁűZ»8#`ŢşâüöíŮ}X•‰Ą"žŽT‘U«VAsYŞ}%uMđ9±Zś÷š••Ef 0ł)í¸”06¬ýîŇ5mRfö6E_ß! AązĺRŚheĆYöäbM7˘F´D[“kkŇÖĘzÎ(¸[Zč){—bÓ5ô]ňa+V¬ÓíŚ3ÎXşt)Avü!©Äëâ.ˇDÔáË@˛ őąů%C˛3ˇXĐ6}Mh†€!`ä'¸XΞ}öY\u(Á‡«N/ťŢdXČj֬ɢĆ^uZőŃXzŤĂ‚wéŮáRôp"D!(רM'#ZY„q–=yĐxÔ–xô-=“4-;5gDw÷Ěz—žq}×%B’­|ňÉ'ă¶[łf ›ÍĽ}m\şCfđCńeŕŔ4hośťËÎť;SdŮŤu(›‹­+řŢ:çRä Ŕ'řşĺ˝ç˛ńő·{ž˝ě•É«&ýypťĂËćŇZr÷ŢZü÷×:ťqwjźuX˛~žŢýdÝŽ“ď»ăËpŃ€u[żĽćńŹö|˙ý%ëiLżńŚ˙7á«oÂu“óĎ/ĎűϤ•نöŻRáÝŃÚ†@óÖa1a±CjKQ>DŐąŞ.řeĆÁ.iěI’† «ş$Ż—Ž`iš…ýä.qĘ=ł™˛5ë†ÎČ´óÓ8f8=m^"Ţ:8.r>\ÂVńĘá´ŤF ˇ౤ńK†J1Ä ŔŚ© CÇčë0‰!`†€!ĎŔ[X¤pÖPę¨p\ul=ň«^Ż}zJ¬_ÔcĄůT{`A$Ş…8}Ý—uS_FY}7ý¶g–ŽéL&Ąý¨Y×%#Ć1µźw–=Lš—Čž1^¨)_¤ľÉ łÂg'¦9"D@%»ŹôJ c‘Wç­%X˙íŘGfnÎýĘ„3őeKxŘm»ľůĹ#ÓFü®O‚N»uŐ#Sµ«ŽĐ¶ +/۰sŮúýçóÜđÔŚŽŤ«´k¸Ď«¸eÇîˢ]uĺ-ŮşAĺ]_}»`őöożŰŞĽtÝŽëźśńä5=Šbö8y€ý˙r^ j6 äD0yňdj»|ţůç ~:÷lxy8`«[·n¤Fę5RčZPH_-Â$<ĺ <( šE§śRžrÎbÜÓL¶ě)§-´˛é’Ž<Ů2wá¸|x›}ôŃčŃŁńÄAŃ‚˝ D|=8 'pěr‰$8ě‚Ę&4 CŔ0ňbŔYČŢ{ď˝Ç{Ě‘˝JFgBş+îącŽ92Łť5˛Îęî"ÄŽ–GÍ"‰SĘ ŮěZÖú)ç§7='OǬXÖĘÉféÂGë;‰÷Wa+‘[ČÓ¦M9r$.9Âč<}w ™Á©Gµ;’g‰Ĺűý–âËAĺb%pŔáWŽ0ÜťŮ[ç&ÉßĚzën;§í ]ö¦a~óížn"¤nÂü}y'cćnذíË•ËDżিŠQ…B'Áď6eńf7íjyé7˝:4Şâ.?Yżč9Üv\â€ŁŞťxëpđsçÔJ–8čÎóÚ]1¸‰CćËŻż˝nŘŚç'|ęîţwňŞ»Ö9­{}wi 8Ě[‡ŚÉ‹,rl;súç˝÷Ţ»`Áâévî܉0áᡶ]şt9ńġD¸lĐÔë“đŞ P+‹fÂXŮ2UŽJd¬¸["×Ó!ݵ\¬I#ASn‰‘DÍFoE%nĐ”rN&m8#ĽYňAš4iB%ŮCD%Yˇżp8Nź>|řńÇO˝¨M“†€!`ůĽŰĺXĽx1{N)÷‰%§äŮ A§#W]p= y(‘§żČ:(´~ĐŃwĘZ"BgMßĘeg$ř7Ąe™IúštIGY,k}ýtČgśWÉśç ˇť:u*d&¸‰A 'ŕŢĺ85 8ďĽó‚f‹•XřĂ.ůÁEĆMŇąęs¦&CYăšśµću+]Ř·Q×ßqž)„‹ÖěonÂÇF.ť´đły«¶nV»J™–ő*‘»úËă›U,[Ę›ľ*˛\ÇÍÝ©í_|]ó°2 «—ă †S»×-]ro·ą+·˝7ký´ĄűdHž·|ěÜ §vŻÇIÎÚ‹WŚ™łaƲ˝UäZŐ«ô«›ýÍw/L\áî^vô-ęîő8ż:eő¸yśđO´g†÷żµhÉÚż:±ŮOáäŻM]ýÖôµݱvë—">nP»ZGµ¨ćîň—ŠuŇ>ăČúâŞC>wťß~Č˝ťÂÔ%źąĆ’µźż3cťôzüÝ™Ľ\–)]ň᫺–*yĐÓc–;á OÎ<µ[=ý˙ ˘l C@0oť@aŤâ… \–ýgňD ¶ÄImŢĽďL‚Ǯ#¤6++ DmŠűFS ĺ˙sě8 E“†(K#ú2D?AGzĺL™î)Ť‹ĺ”ÓÍl™Í;e7á„Yq‹Ih.%í8 Ź">¸íŘ\Ťr5ÇŤřţŕ°#{¨S§N||k†€!`ů†~:N 8K[M™ä*u>-Z´ŕ¨%ŞÔQŐAGŐąiËZ™]Vŕ:Ň‹F°oú–™IΔéZż±¬ç×K”SZÖšŮRŽZć¬-Łě]Ššk82ĂŽ2á˙ÄNBfřJD7 !3 ˛ăč ˛¨Ékąî­0ฏ‡mÁąt“ä/źĽ›U©’{Ź…oÝÚ-űĘyAöÓű'°`_ŘX˝ů ţŤüxÝK¬ ÇS»·pcť|׸5[öGzîřrîłQŻŕ­Eoţ_ż eJÍřdË­ĎĎÖňČČĄ\Ö:¬  ĐďÚaÓź·ĎĎ…|ŃšĎGLY}R×:üu˝ŽéPŰyë&/ţlŘ{ź8!’U]{çč¶îüúşaÓ_™˛˙TŤqó6ňŹzyľ ý•Ç4uĘd°ş?\ôŮÎŻľ)č~dß6Őş˛‹S÷%jŇĄ]ĂĘÚU'ňNiůŻqź~·gď+ŰĽc7‡ĚŹ}kűż†…!PL`őĄv,[Žś*@ ć9sć^‡S&nµ± őiذ!ÔÖíXj¬â:ŠN2©5ZSË‚[Ń´~ô®¶ľ¦ë%úÉf=e="í`ßlYĆÓšň†Ë™e1Â8ć`®|Cŕ¸UŞTá{âÂčŘ5hňA«—ŔL–Ĺ{«¬m†€!`ä),U,Xüt/˝ôŇÇĚ’”@f [ڏc 3l=}ôŃě>zg °´%ĚYYtŇŃÔúÚl´ŻÖŚŢŐ}i珲 š07“1’­9Ë3¦cY”e,ząď”†×Mŕ$ß îBi<2M„lZŁFć,d&ş-–‹|ĂÜ»,ŕŹĎlő×,Słýb÷·:ŢÍ«ÄwvÜíctů6=ÜňŤ»ŽůăŹî=¦^Ő˝1qß~·çüżMŇ®:­<ëÓmřÎżş»FŰC_­]uNr}⪋vq’‡ďsՉ¯˙čŐ©ű|"¤Á˙ůÝôôÇ”ç»ůôV\¶iX™‡u˙Źřńň­í®}‹8¸~mjôh^µJůC”;·w–îN/ˇHÎďëßu·đ<önYťśbwąpőçć­ЬDŔĽuAXLX”€Ú~đÁT©#Ť‘E–7> ŚźŽťIJş0"»Žş‹¬ŽA!–ň ĐSÎJ†ó”ňô…n,§źćܢĘÁ #”i¤c9gĘ ± …zžśK>đZW™›sÝqŔlJ“K \şŃ;ž…’‰'R›ů¦›nrFěŻ!`†€!°6}úé§O?ý4d†#X¤ô ťaăxdN9ĺ”82C—貞r=ŐĆ)G'#cą[)ŤÄYN)OiYf˘5vB7˘VÖs@'zKKd8gMni#ÉÂ8 Î éN0Ţ[ţ˛-Í÷„ÝG\´ě>Bf˘;ô Ϥ _¤›oľŇ+¦ŠmLřüÇĎëyR íŃ‘Kw~µ˙¨Ť6 ö§đÄčOÄUWŞÄÁםԼcŁ*Ë7îĽű•ůD®ˇŔ1 ·˙{îŁ?ďFűŁĄ[®ůÜŮ«eµ?]ĐŹ™Ş—?8ĺ‹Ý{K˝=c-=a/\ßsře\:e’XłŞ—o—UůłĎż’X9n5ŞY~pűZôĄG¬:帿ň‰•#‚oüĽŤâŞ;´T Âßş4©Búę¨Yëśćß^[řóc›’ÉK$]żÖ5ŢźłĎ­öŮ绵” Ô˘nErfŹn_‹úżÜiKö§ń6¬V>nJ k”űÉÜ}79z⎵ă4Mn€€yëěkP\€ČBY(©««ş$/Ćě9sňŔŕÁëÖ­KÚf0ú˙ťĹHPľAyP§÷’’ŤČÄ\÷ rJ!}ĹŽ(‹$łvóă2śžC¢/ŇTfĂ™*?„XrżyŘjć'MŻ^˝xűT'ÄE;fĚ 6Ż^˝š»n’nJ|©–-[F ’­a†€!`ä,p”!Ě<őÔSŔ„«…e+yDJÔQµ}űö8n ™áŃŇ_Öµ&…Ä}­é)sé}´˛Xp:rKä"AA„ž˛ľ%úZY„Z“¶ČQĆGŤb-©îÂî#ˇ—ě&öčѬgjňV®\yěرT˛ęp×MŔYăű˝ˇÂÝ 7Ü rkOţďąYwŹĎłýÍ2[5U+‚Ł É=#|ŘŐÝOîV×]h[łűoŢ%äŤKjĚýßY­ Ż›őéVQ>¤d‰úŐĘâ ;±KÝ_żmâ˙i7}ľMţž&Ţş#›WŁ }ÉQýňë}%ĹqŐŤżs~7äçön8řŹď‹ń¸ĆÎl}Aß,*ĺˇpŢ_?µ?žŰöĘÁM¸¤ÝąťřćG{˝„řGLYuażF´‡ý˛űŔ[F˘N€u}¬ţśŹŹú¤ií 7śŇâěž ťś¸<×ŕoťĂc+äÔ®˛˙l:aén C@0oť@aŤ˘ŚôRËNă„ ¨ę)I®ęťĹ_ą!ő•J˝Đ6Ą5mŇ`iޤĺÁvΔť)úĆÍg9AAĎ'Ę®{˛}y:”Ńô.őh'ßÍeÜm”ř!’Žx:r@řÍĂ»ćŐ7oŢśSŐŘ‹¦ Ź;}˘|ůňě}úĐŞ.é9č÷|O9¨ŁŤhýdĺô5Ĺľî"Âŕ(˘Ľ+}]#gĘôĹOG%ś¶Ë—/ÇŤ»mŰ6˘ ÄEËA,.ZWŔ…:Ü|ໞ·Žb/7+»4 CŔ02d†Ú,XsçÎ}ňÉ'ŮwÄ˝ÂÄ'8 ‹#®şÚµk㚡DYŃś¦¬›\Ću›y¤¬ÍĘXn>ÜŠÎJëGďj ékş^ŮŇ×ĘzĐŕ”D9xWw×3IGY,Ó2Ă*BZ4ß vŁá$ŽĚŕˇ#°2‹ÖQY8-NÇňĽu #bĂ2ťŃŁ37I‘G€¶ßťŃĘ›°XůÎZ×ß{«ţ´ŞWYĽu‹×~NšgĎ–ŐĘ#“Ô©}óÝiĺßO~˛ŕ°ňĄ/Đř¦ÓZRjď±°qźĺvĘ-Ž©•6ŤvY‡%{ëúµ®)ú|˝ĺ¸ „ýăCąĄ¶í? ŁRŮŇż9µ%˙VnÚőţśő“mžĽh…ů´>§X*Čł4Ż[Qr~—¬űg˘VŁŕ·ß}O\áŞĎöG,6®›0«űZ»8#`Ţşâüö‹ţłăc›‘Ô×aÆŃpÔ6á±a3d śsÎ9śdĎv´§©IŚPĄ ŽQą–  rŁěÍĐ3´ěş¸ÉÄÍAŰ N[ ăŚ\+»ŃŁĘ"D_yP§ěÉaĄÔsÁŤ»hŃ"ütU«V%ž®oßľ-[¶äŐOťdTÂ`É|Ż˘·Lb†€!`d‚¸a2Ď<ó Áŕ¬Yzů‹Á*I d¦]»vřé<Ý7gëiĐŁĺAˇ§ěÍĐ]ĘÜ<ĺ <}ˇ6®ç†\ŚĺžĐŮńţ-emDäAaś˛'LJKLŢ[Č ő^8ˇžÍĹ~ýúµmŰź]šÖ3ľcTńÇ.‹!ÔbkYoźG¬L齉« Ş•ďŢěđď ‚ŰţĹţ|ĎręŕT‡•>Ju×eéűďÍ˝o|jĆ”ĹűËş9eŠÜÝűę‚I 7˝ů}Ĺ~ó_îo—V8$Uh^• ĄE×îo‰“˸Ć7ß¶@ęW+wq˙ĆüŁ.ż‡Ţ^LE?g›łWlíÓŞˇ…b“oĄM㫯ż;ű/9(ôAşŤkVĐjÖ6˘·.ЉIŠřé8Jâ˝÷Ţ#¤Žł®`3‘䣪KÓ¦M{÷îŤă&č¬É%Ż’înÉä,[Ę ĎĄíDGŚJć–qĺŕ´“'ěM/[ĘôEźÝă]»vAj9;ĎĹÓ}@5REđÖQ -čl,™ŕC™Đ0 CŔČ™·ß~{Ô¨QÔ#Ě@o’ś5xj(ą ™aE‹*K§¶#BôSĘóN9:['IQOý rúBmA[ZČŮ„]/1g9AN¬Ą#3đâéřbPŽ&á®Ý»w‡Ěp©»ÇÍSËe>Zhíâ†ŔiÝëťÓ»aÂSëp°5?.lG/]­Aµ}ÚÚ5N[śt&L ¤2Cě$é óĘ–s›6m 3Zß×. "pŰ9m ŽĂ_†Íqó66ýůkőŞ–Ý°í+8vË6řőPŕěWq„]ýčG#¦¬nX˝ łăçíÍ uźţ?x»h—=d˙qxĐHĹqF’逶5FĎŢw~ë‹Wđď]ł÷żż9­ĺ>\‰{ŽnďĚX×ಭęWâěZÎľp†p˘ťß'‹6Ů»'w­űęÔŐNţÜřOůWşäÁxëDŮÝ"ě˙ŁkăM{męę1s÷MuěÜŤüs·Ľż8( K şŢdPŻ —śěŐ4I‘AŔĽuEćUëů裏¨°űČ#ŹŕŽa§‘˝GM˘Đ¸Ş.Ç{,ŃU.ůQSÝWäZ5č$˘ĚĄč…(DĺQ‰ wKäÁáô4Ä”nH÷¨¦»%fQČrś‘ëőTĄ-šŢśŁrÂ*ˇ¶l>óáŚ>P[vžqÎOçB)‘ĺ„FĘY%ôµ[†€!`†@:L7}útö)×@¨>­Ş»ËmkŢőźy®˝éóÝü[±i'‡«Ţ{I§!÷L”WĄ/ŽżO|B«Ü 6($÷÷źvşäź“ÝĚń»}Ľ|ßÄĐÇ÷Ďźu–Zr^ŮeéşşĘOę™í|D jáWtąčźN[˛Y Łí/vwŇťăžżá(|‘Ń»&1}ǻȵ5 B„î¦ČxĹ[7sćL\uyaż1Ž@eŘ‚¦ž AUüĄN—iúkŚ?˘‘†"ă3nÜÍ0ăfµA×N ľüČá»±~ýzx-{Ń”F¶ůAlAă°ă‡ Ż>ť%0Ĺ'ÍqMÍ0 CŔČ.¬2,RsçÎeß‘‘STVMvŐ±„Nť2v!3*TpĄ<˛5tt‘ÍÖR›ÎXŢétIÖń f|ÂŚ®‡HžLúwµÍôçĚĂŤ“áæ#Äę"d†*u|Ň)ĺ±—Ę™I˙…3Í’%˛ířĺńÍŢřCß:UĘxPqzĂ}—u~ěÝůž»[ĄJüźßôľbp|ažr…2%o<ĄĹ°«»üżLŘNŤ«\{bóŠe~tđ+˝˛j”sÇŔ«ŹkJViÉ‘x‹Cđé_9DţŔ@űF,±˙d oD.OéVoü]z4«ęÝjQ·"C éŐPäśJ1öν´cô1Ń©YyŻăďÝ[űZz< ň:‡—5´? čăhĹ&xŮ #Ü%gÔÎ]±ÍµąŔŇËĹ´âJŠ3@öěçŽÝŢzë­8ě`0„ÔĹÍ–5B”ó ŞËŮgźÍiYTxŃĘšÄČ‚ČBmÁk‹ľX@A„Ú˛–keĎ \:#žf˛eOYL顱 jŇH6ëě˛6«Ű)Ťh qĘÚ ´ĘřpÉ^»v-ÔöăŹ?ĆU‡"YYY=zôŔUÇ«ę"ZĂ0 Cŕ"™áł`Á‚ˇC‡BiÖ­[—Lf(±Jd椓NbE«Yso˝$ů¤\Oë¦tŹ6D?Ąeú•Ł6ť$¨,Bt˘#j‰6ëőň.ŃŚJĽ9xĂiăŇNiDO/NY¬éFPk8 űŽěISÇzC.ZňŘt$QŔČŚ†ŃÚ9F€ÓQăHM°Éˇ óî;BuóWm_¶a'UŰZŐ«Ô¸Vůű^9EᄄĂM§¶\˛n§¸r:DµJ‡’<ŰĽnĹJetĚ˙-µwóé-×lţ’ -upí*űĘ´•=¤äťç·g>ČĂ·ĺ|o|´ZfX˝ŇľtÔŰÎmÇ?‘G¸üŢąµ˙ĘM»¬ŢľrÓč‘+i}’y:đ‹ú5ZľaçŠM_č÷íwߣ߰zů¬ĺ\ŞŻÖwmžâÂ~ŤÎëÓ¸?jŐ-^»Ź^ăĺ9L¶ń‡Ŕ¶¨Wńú'g\r‹_×Ěuń»>Q;&1@ŔĽuö5(|Ŕ`ČyüńǧL™ÂŮŻ¤ľ&ÄÓąÇă´¬Nť:ᬡŔ‡‹¨â˙IÓáUBˇR*5]ä´F‚B­´ş‡•[bY$Ú¬Swgyś‘kS"¤cPĆ)‹<άLŹo! Ó¦M#6Áź‡[–Ó~ ©ëС…· ĄLyš„ž–íc†€!`äl4BfpŇ˝öÚkŽĚŕ‘IóXÎđÓ±˘á¸ÁYò¨×¬¸URäé+kM¦$hë[" 㔵\,h!í¨<*AŤŹÚIäŻë˘´ÝWäQŽ3"rN϶“ó5ठ’úŠźnqєݻwŻT©R:dƳ̥} Ě"Ŕ×µ~µrüKÇ,>;ţ‘ÖšRąLé’’ŽŠňK“VÜýßů®޶'~Ůõç­Üć»ŕ’H>‚Úś<ÍżéĎśŘĂ&µ+ň/MËN ŻeăšřwÜŹ2e÷ŢÄŘ­iŐÖő8’-ă¦\|0o]ńy×EäI—,YBU—gžy†ň.l9ňę|Bčlź>}(íA-^Ę|pTÓBˇPÚ˛ŃLG® J;hD„Ú,]D‹|Ť$@IDATîŤ(Ö¤§)rmY„άw)6]#înPzĺ2N9Ą\?‹XŁ—uő\ćÍ›·iÓ&.ˇ”¤uéŇ…ß6d ^—ݬg±ďŤZÔ¬a†€!`¤ěeěرĎ>űěüůóńËäĽÄŔ^(QÇůHꮦs¤€¬§Ú˛™d:ň್…tŹ“§oYŚÄM!ä–4´ý„9DoE%ڔ׎SN)Îăľ „X’°qăF-©I׼ysČ °đX·ďčM#ÍK7hÜĐi15C ź8˘fÂÓÜ 4fŻŘvdłj;ľü†SYĺLŘAíjU.÷Ł0˝|ždv‡3W]v+¶úć­+¶Żľ=8Ü‚P)ę.SźnňäÉ'NääÓ$ŕ˛l?’öŘ®]»-Z8gŤć(šKi8´Ž–§ŮÎ#łnôü7žK4vpÎ4KU>°[ 0“0B,Ćů=C=Ţ;5 F€ě&ĽľÜO&Á¸Ý2 CŔ0âéV­ZµbĹŠqăĆAf¨·›Lf(L™!ă•8q`9Y‚˝lY†Ó:2zúŤ<2+ÚĎ儝ĺ¨Y'Ď#ă4Ë×€śhܸ0vů`Źĺ˝;2“rË9#ó‘wd C  Đ>ë°SşŐĺ0Y7™%kwđOO¬QÍňwś—”úŞ•­m.Ě[W¸ŢWqś-ĚťF\uřéî¸ăŽ… şÍĆ8, j®Ş ž6˘Ź<ňH¶"EYÓ¸”ś&N9Ą<ĄećăŚhÍ8łAey"ݎŤpËŮ×ÂŕZg#˘& ”ĹxP(sđĚęK±ŕ)‹Úŕi ő¸iv15C ŕ ŔAśDqD­yOŽ^¶yÇn=1Nś8ˇsťű.ëR±lŇ®ĽîbmC p!`ŢşÂőľŠălŮf5jÔ믿>räČ4«şŔoN>ůdJÔQ‰ŮUuŕ4eţÄݨ\KPČ˝rĐ‚ęi\OC„Z“6ź¸[NžŇH\w,ëľ? őŁáôÝ8#"Ď–˛Z,h!Öđár| (Áz¤ľRGIr…DHާ“gŃłJĘ]k†€!`ŮB€t×Ĺ‹?řŕ꫞ěŞ#¤ŽmČ!TÝeuĂw\ ™CJą^ćrŻ,´ŮlMC,8ĹŽ–‹Đé¸[A! "O° :Π6«-ĐŽ3"rmJ„é *c .µ É  Ć d-ˇ””pĚP{7ÍÓ~ő¬ÜÓySˇ5 B‡•ăţď¬67ťÖrĆ'[×lůâ‹ÝßV+pV¬[čĘ&l¤€yëŇAÉtn úÝwß}ńĹ—.]şfÍÜv¦—íŰ·/ÎJ{PŐ…ReNY3 UBMäZ9n,§¬5Ą{ú#Ťk;Î~Tâ:ĆÉÓ4ë‰{äÉĹÝ ĘÂŕ„SNŹĘt|%·tŐ— @ O„ŞŰü¶©WŻU]\ľDYr„=)|+ ˛l7’řŚ«ŽÓ±ŕ6 Ż5ÎlB»e†€!Pč0o]ˇ{eEyÂř Ž9Ęv° ýć›oÂ`’· áF¤»˛Én$ #řéĽMHljţ¤ůMPAך(¤´ŚŽë˘5–ť0ެGÔFâäAăAĺ P&ěěčő ]_čHC QĐrgŮűËč¸ď:~öúJUr])N׾}{ęşŕŞó^˝g$ĺetQIJ#¦`†€!`°`±·™!ĂńľűîĚúš ËŽ9ÂĂYË~öłźá©!B\볥\dŃ—e+nY×6Ą§śR.É©hĂń4Ĺrś;Ţ-ϲXpr§¬…ş{ś\ŰŇWhŠBP‚–kËŇv–QăËŔ¦ă”)SČ~ĺŚ,RCŘo&ŽrŔ€¸ęҬă!f˝FpAˇ×Ń. CŔ0 ć­+ho¤Xχ=F2H}ĹUlj$$»ę 4PŰźţô§$Ś*Óut$”Ůh­&ň 0#ĘbDĆ >AyPč)s)Ó}‘ě5ťĘ¸V ô ĘEHe}ůĂP?NîĆÍ!(×s@#lAă§ăë±hŃ"B ¶ůJÖ3§IOG0B˛«NOcďüÔ'x+(Tť¬i†€!`„`‘ ó裏Bf 6T¬K&3¬_ŐŞU»ôŇK‰«˘`™ÄÓy+‘ľÔ«dP2ݨ\KPHiY *§/ô†Ó–ĺV¶¦§•ÓłŢXŃK$|ÄH¶,ÓQôĹ‚ňÝ _döěŮ1„Ř Ä3 ™á«ˇJ]2™Ń–i돌R¨¬m†€!P0o]A~;ĹhněB“÷úüóĎĂ`¦Nť Íeă1Č<ęC<U„Ôá¬ÁaG1f· íXĄŻ4˘h …Ň:"D?*×’¨A‘$Ń–µ¦–‹)ÝĐĘŢLÜ--LPÖ6];NYäAËÜEît\C«Ąi5ÝËŃĹÓńÝ Ş űĎÄÓńĹhҤ ›ĎŤ5â/Ô§mJv}d=¨Ü e†qwĄ»5 CŔ0Š9,X&L=z4Ą< 3jĎB‡ ÉŹR_ Ä_.u·Čşľ,@úRôÖMwK„\ęĹKäZ¨­é¶(Ťx┵A×Öš)-keoÄdËZYŚ…n˘ăMÉŤw7ĄÜŤčČ ›ŽóćÍŁpˇ+đB0ÎY˛žá3®„‹‘™č;5‰!pŔx~ü§ßíůžipňěI]ëđůŘŠć­+VŻ»€>,T†J.sćĚ™6mÚ‚ `·$ĂĆÍ•=gÂč 8m۶u °š{E{i"Ąď&÷Ňš í ńĽłĚLňČxîÍ:(<@ri–Ş.۶mă¬4ŞşŔqńÓá“ĺ÷ YĎřéřP®ÎQż¬\Ž®MYŰ0 CŔH‰ěeţüů$ŔňI&3,gTYĄ<d†s±8()yÍ .˛Ě‡^ÜJî›<í<]FăŚçfÂň8Qă1‹}Ďr.A&'š:řŚ+QÇľ#o?YĎĽz6 ‰¬dDoPyĚL=”´†!`Dŕ?´«÷†»ň)hÉúŐĘą6ůŘGß|·wÓĺZĚ['°X#0o]ţŕlŁ$!€fÝşu?üđôéÓIIpŐaĄFŤ)»č˘‹Čp[ĐÂo4ˇ!]´<8Ź8ĺ¨<* ÔB×Ĺ›Cśť ˛¶&m± -‹µtäbM7‚F‚BzĹɵAiÇ)‹\Ď™6űĎ|đÁúőëůz CĆ+Ľ¶˙ţ(Aę+ɰb9ý†B÷ ĘBÝËÚ†€!`†€C€tWbŔ‡ 6kÖ,Ş’%“™ňĺËwěŘ2C~@ţ“&,+/ít;Ńe‘¸Çą×§üëěhem9y‚YwKŚäťeă2śň­Ŕ‡KT5^˛ŔpšDż~ýŘzäÔWM|8ˇEëDĺQ‰Ö·¶!`€Ŕîoöô¸é]Ĺ1k˝xC/Ĺ(ääçnA·Íˇ(!©}ŕŘN¨íBvΚ /ĽŞ.DWAsŮ™t  ž„\„´ăäA ă”E.–E’Î4´˛Xpĺ–ČE‚‚łE§śR®-çťrĘiG§A0…~¨ĚM %Ů"¤‘éÜĄKB¦äkúŞ­yCÇÝ ĘBĎ ]†€!`‚eČţńŹLž<™•‹mH‘ë«-«Ři§ť™!´ 2#;O˛î¤\‘1(ĘÚ¸n§4˘-dVY¦gVĎSÚqĘ)ĺq"Ó !Fâ”r-”yzŤËäFGŹ… ň•ŕ’ěB)ł˛˛:wîĚ×?]BękÜčŮ’Ç){Oa—†€!€@É}ó]Â}»eä!ć­ËCpÍt:¬Ył†-ÇI“&ÁiđËD‰l†Ę»ś–ŐµkWĘ»ü»Ő–TI+č¶(‹0:˘ÜŇĘ jN?}ĺô5±ě){—2ŐěÎ!jŮ3ĺ]&ʧL/ÁMqĘ(đó†Ă^ůJ°˝|ůr~ůőĚ.4~:*ńŇ:vëYHľŚ7Ř+[ĘA &4 CŔ(†ŕŽáÜŽ,w)ŃZuě3Á^(ăĐ­[·:üHÝU ”¬łé¬D˘ě,čŐVŰ”»"Li\[Π˛gV.CČ]¦Tǡ‘Ę Á4Ü@®ť•žd†0şM›6Ai8‹ HŢ>-|N ••łDôł$´Ł#fJ9ÁŽÝ2R" ˙i¤Ô,Ľ sţqüW?¸ëJ•88î)ŠqĎnňýăZÚ.`Mę±gŹýÓ/^~äoo%ĄUľ·ćŔ_}ď9Yk&ÂçVńçGë*ţôžkţţ= ňóş ýűăűDáŐµ˙řó—ô ‡Łç·żzîOüĺ˙Z˝jÎHŃŮöęYŐĎËÉţ×_íŐ÷ź¨űÍÎ÷oŞüů_ߤ˙ƵíčG˙sűŮÚć.µŞ,B{?Ůp÷î˙›› ´iőŠSuřĘZTÉá3 „ŘßýáíÓżřĄČżđËÝÇÎ5Ş1˛żűń ÓF—I´îŰż= §Lh´îxU#fźŢ}Zk9ŰŔź'v˙ŮÓ‡ľóŃ‹§ ÓWÚµt  Ö§î{ţË5Ť­'Ş›vě?‡ťo~dů˝7NQËVč÷X´®ßâľŰAćźxŕŇî© q 6‰0˙ĽrĺJ&$ÉY&Y]ô?ĐtÉŐą+AÁ«¬Ât”˝Ŕ©ŻqœǨť¨5Żfś0Ąîż©q·ă*¤ŽWîĆ)»ňô-ł¤Žetü KŰ84ŤŘ‡HŔneŁÔÖµęžëˇľň ]÷TS qú!5{4 CŔ0ĽüęWżÚĽy3 ©B aš{ď˝—)¨4É ö]#î¨rŻŠqrŻĎqĘ"×¶Bf]÷ĽĽBq ú**ńşŞBŐŹsĎ+÷ ÝŽPVË®Ü+t•Ő2ŇąŔdHâAśb™!Ó®l|fë+«)5Ű2B—Úqĺ^! ™Ę]›V6Ľhű›ěôľ:WŰňŢ/l\˙ŹwĘ‚µűÖ$FćŐDř•G_a©Ýçßż$¤@¬-$á‘řׇ˙ý™çżô¦ĐŠ9^ąˇ:­řä '~¸îŕűn™†äĄĂŐďűҦŽÎN}«‚Św|ú·żţűŰ& /AŘÚÖńöĎ­?p˛NÜ·»ö„AzĂLWNł÷|v-ëéĽĘOŐßý™µŰżp÷Ä–Ít řů¦Ăn¨.ÔÄ}ŰÂ)CgO¸? )Řc?CŔ˘uýěľnşŰ`aÝš5kŐ1ýň›HŐq—ü»BMâŠÔŤ#U!Ëé+»]#=č†ëL˛YW“r‚rČíM·SZ+}UNö$äł«L+§«®®†×˛ő•ă_ůkŁ%3Y]ŘýĘh~޸Nj9'/MYjed_˛‚!`†ŔD€4¤«#i…P÷ˇ1śţ©d†·Ś/Ý1—?Čşn¸ÖTž‘â¶ÖőÜVş5ŽŃOĐt J‹ Ęę’ÖĘH™ęÝę«eW™Zě€É°Ý•8wlhh Eťś&Á×=ztQQ‘[]˝uMąBoą[ٵ.ˇJÔIú=Ť-m˙đł—´›K¦ }Űő«ë[˝ÉR»ŠSőÄ޵ršźýéEÍëf űwÎ(ĚĎ˝óᇷ Äż>|÷ĚcËŐ Šňs?ô†„ĆžxîÄĎTŠ5n‡N×Oýštäňę†Y#޵b˝Ď?¸[ĐmŘuZ˘u,îÓPűpß{ó”şĆÖ®«`˝ŐYŕĆFÝOß;źň·ž|UCuĹąď˝i >ülÓáműÎJCß|âU˘u_űĐrşü_Ţ,B@ř«·Ď-)ę:ĎP„îťnj¨ŽdvËl6áE´îÇëévQ˛ł=öé[ ň‚xëţč+[Q&–DĆ·Ż|p™TÔűW>tÝď¬ rŔ/;đÉÚç+Şĺ;CŁŃşů“‡<ř‰›‹ 7Čm÷»˙˙Ó]ĘÇk)°°N÷źŽT¸ńswÉŢŰ·^?ńĆOD—×u …‚Í‘‹F *‘•őą÷-:ßĐ5!ČÚşú=­ë÷ź¸Źvmś˶o’—_|vK(gőęŐđḳ“ţ(Őđ’0Wľ({…ĽŤ“ë+mKšŽ»‹Wٵě•{…Ř÷Ę˝Â8ĺÜëł×=ŻęÉr×·de4™‚ć˲śÜ¬Żäă’}yٲeě~eU]rś.Ôö+*ŹJD9N®¦ÜBFĘnE+†€!` ŕ07nd8#f2 3d1#ďÇÍ7ßĚŚg%IúdeďŕëĆ)»ň¨‡Ľ ]b<¤©-zĺ^ˇŐW^ *DY5)ÇÉC®ĘŁWŮ+L°¬úé¸2j|VH,™—+** 3!3ÄéČć±hѢK[Oç¶®ťő y'׊ZH_S«Xaŕ @Ž6íěďš!ˇ:$ż{ó”ć i즌 vtľx¨+ÄF™$T'u˙ü­s$ZR“·…ů9ďĽa’”ů—BB7 H54]Ś‘‰÷·]?ABu”9;Bĺ ÍÁf¬ýÇ/î?ĹÔF's‡câ –בJďÚ Yľ'Ő‡”ćK¨ŽGÖ~ůŹ®Ű{¬F^eúäÔů&ţH]Vj¨ɬńŢĽlÜC[»Vr¨E(Z—$ÝÓ#/ŢńOëÇ+^5gÔĘŮ#ľţáĺý!íÚ}ŕ `Ńşó­űVOŮűđĂł_ ôźHR{° _ŮSpäČć*Yl%Ůy ë(ťŇθŐÝ·^ąW©¨<*‘]ąúŕşőÁµÓăĘ®{jÜş®şeݞ ŃtŤ¨\…* iň¨ŻP†Î>űěłňe«ŞŞä”´yóć-_ľŽ µŐcň\ߢ6ő­: ’L•ÝŠnŮkŮU°˛!`†€!ŔüÓý÷ßĎ$‹ě\4`,lDÂŞ«ßţö·»wďć  &ĄfÍšu™d&4<é K[î+•{…!e×s)kő¦WîĆىSîVîv$ęp¨9W9#Ëé(3ť ;…Ł’Ç2Ă,#‡‡°ő2CŹÁCf\;ę­ë• )xĺ^aś˛kÍ-Çqu¬<Ŕ8čät›6úâÖaĺ…ńÖ9.8Ż\o!ś7é5yÓŘŽš›“-kľ8íÁ­EyćŘr79ݰ˛đ™­!ýŮă/VVŢâ˘}ŽtŕO¨ş<ž¬j*)¸¸••##\µ7/˙ć¬ń®$ýň+G»Â|T á€dîÄ!­±»—ĽfŤ^:Pp.‡íŞ?ĘńÓ§ń „˙÷ď-ĽnĆp}k…~Ź€Eëúý'îŁ$pĂńö!v‹ŻĺĺĺK–,a tęÔ©ĘĘĘgžy†ĄXS¦LăĘ:;Č4H(ˇş%%Şśľ&.%(«Aĺ}U“ŠéhR%}eő'β*¨'qšŞ ·brW“ş(ó•ů=ĂŹ™ýű÷s „du!&Ë4űDŘýĘťČ?`BŤ&7t9ĘR7}ű˘™ľ~Č7{4 CŔč—q•leŃô»Äk„̰řîСC,ľŁűP†BĆ>:˛ÎˇŚ,îĐ™<Ö¤Ż)€«~śYU} 8}UÓŠÝjşž¤ŁśŽeŐăéEÓ­Őm•2d†Ô„pč+q: |Mât°S( Kę$ŹGtޱۆR )gÔw5~ M¸Ząź!p˛şk™ý>¨0ˇwş]‚'úăČ W׬}#e[{GGnN×ɰHĘ‹eĹé_ĺ%I Mc—lśw'/¬€C3ąkɦBop@ł,µŹXŞo.T7(Č‚Ç^Ú}xo}j-ˇkaËŢ3wţÝšźţĎď\4Ö•[ą#ôʎwŰşvŐ€ż;v,­#·bĹ ô˛ł2ĵk×.6’ ĚÚ+bv˛‹Ť$°(!^Ú!Ëű*Ú÷!‹*¨$MŐˇ hAM… Z ů•Tµz 9zLG™¬.¬ $ŢJbÖ%*G*Ří 7Ü@śŽ“%Bf»}ě×BT9*IÖwßZŮ0 CŔPÓ±Ć*­ă@s!3ä5c$˘·oß>4™‰$N™áXtdťťŚJޱIÇYď[uC ŞĚc·úÝ*«ך[9ŔŁÖę\űÉ–CoCŹ®ťh9e>"ÓĚ|MBuX Č 3Ž|h |&j9Y’Śd¨nH9ôRć±[…h“ LŘw©ŻIňfŇÁ<˙üó¬Ě"©Íd!Xj$Ę·˘A-Nµ©©Č=ÚśJT'ZĐ]eşf)«Ľ÷”C-FvÝ)§ď_FűôÓOł @˙eţ™ĎÇîWBuüJ!ęęmÚí¸*x…!ßşUV…h!j?*‰Ö2‰!`†Ŕ€E€IGËŠN=˛;RČ 1ťůóçCfvěŘÁj,łÔ&CŔN6N2¤†FU}U†ŇĘ·}­ŽĐµŕZÖW®˛ńŢ“-»F´EŻĐëCś0My‚ĂňĘë‰W¨-ň–ď ‡Ů¶mk$™zd…d• ĐTČ QW/™q͆‹{•G%!SŃGoŻ0Z×$÷‡*Ş9V@xdű±÷}i“”I$÷˝Ź­ĽfÜ Ĺ盳+S9ŞBË®š {°0sÜĹíşĺĹyěiUăűŹ×Ö]XŹĆŃ«“G•fgó_Ńŕ=¶Ö6¶ęҶ{>»Vw›>óĎoČčŐicĘX3"GIlÚsćDUă ϶öŽ_mďJZGŁ—Ĺľc5?xę ô„ü7vtt’ď'*8ľVäűOĽ¦/"´{EŔ˘uýőËöő~Á˘sŃ®Ól%`…Ýí·ßŁ%ÓKířH˘ť;w.^Ľ {I8K4™*AQ5iEĺnŁZv•CšňĘ&(«A-Ä){ĺ^ˇš â”»•»} ŮÔG5â*«5WÎ#Y]XÉ:~™Pŕç {śůd$î!•4W¨ýäBȸ*{ĺ^ˇV‰âôăäQ &1 CŔ°$“;ĺČ,Č Ł!42ĂR;îĚA˛[–Č» Xp§CŞ;úĐ•€łjR˝ }W3¤µě*'›MđÁkÄ+ ąŞŹqĘÝĘ»őŮuŰUN°Ězşşş:ÖEBf}d_qXfŽąXOGŔ..EťvÇ-¸Ťv+ŹSv+şĺ8ý8ą[×Ęëf\<Ćá+Źî}ÓuăY^DZŻ˙zźÂ˛"ăŐ??°K„ß]{`Ĺ쑜ËăöWĎţĂO_Re7|¦Â,Ě™p1GŢ7~ýę Çr˘+öź|ţÄ˝źßĐÖçňss~ó­ÄććOňBępŚćÖŽŹkÇ×>ĽŚüz÷o®ÔPÝвކąwĘŮzĹ# ńްxěcĎŁÜŇÖńÁŻ=C(;­můÝg+/śk1iDÉ‚)C˘Ő“%Ť-í˙ú«˝˘óđöŁ·ÍSTË!AŢŹ7TÔ6ë AňÇ®‚€EëȇîsÝ„=Dç˘ńÎ$´ ‚ËbĆË!>“şXj'űGČć [b; U0(÷L»*ÍEkőż żd'Cî…ĚĘŰËw¸GĚĘn~“0˙LŚ•€f‰«ň)ůMžÂvˇ¬.—ďy÷±WŤ» YŮ0 C` !Ŕ™ń4:¤B`¦br‘ˇD%á2Ä€8 É=Č}Ć ™đ`ŠŠ^ÉŘjs!µK0˛ŔŁ×řĺ[îËféˇ:Ұ°yYv1#!TÇŽW!3Ě;ňčbuů€¸Ö˘ĺ޶mŃ$7.7ňŮâJHë¶O=9axÉŃsŘŐűáĺ…ż·z*‹¦}÷ŞI?}ú0e4˙ŕË›?ńťyąŮźB~͸ňßż5Pî˝kôâ?Ëěyp7Mśîmź[7qD Á+=ţů˝7N–etl)ý˝/>-Îpjí#;ŽrÚ¬›ůîŁoš%˙!˘#Äř0ňłŞVň7Ŕň•.“şˇű˙÷Ţśn!§j¬{ůÔ5yŘ8¬ŰŃ˙ô{ćg´ÁVš3a0Ç×V×'Ű8Q·ô/»yî("Ś„D%T‡|ůĚáeE™Ąăv="`Ńş×ăWë?>wË<$`ÇöI6Ʋ2kÓ¦M˛§ríÚµLP“Đ—ůj¶UýăĘmC6].čľň*{‘őZđ ©'ËňVu(¨KZpŤx…(¸r±şk!eŻÜ+ ÔÇ8eäübáGż@X/°aĂRÔq¸??ŕµ|#0sžÚI§×MŻÜ+Lh%Nß+ˇ÷UBöĘ0 C` Đíč™ar‘r,¬î©\ż~=ÇĹ­cŰ,%Á;4Oą°©fytaT9ByĺJ\ÍPٵ#U˘©'w Şu@ hŞ‚W‚+w-kY-„”˝rŻPM… qĘČ!3\l€Ě¬Ył†ťÎla†Ě0Ý8yňdvżň˝[_CMčc\7˝rŻPME qú^ą˝Ż˘–M2@ŕďü?ţ?‹Ţý/XŐ%]v3Ż *Î˙֟ޠH˙ţ= Ř-»ç¡¨Ç«]”ëŢęŐ¤uŇ18Vұ?TÝp!V˘ýÓď/’W,ô»cá”屡ąť?Rćţß–Ť˙“{®‘G˛Ĺ­ž7J5w¬:_ߢšˇÂ5ă}ć˝ >}ß ˛–věNuukľkEfżz¤z~^ÎW?¸\#Ś|‹űÖW¸– )~öwş+÷o,Z׿żočŁHji]ţÂ… §M›&§O@páO\äANňćĄá»(s)Ń‚Á+)¨\%ČURv_©ľ«¬BW“˛ĘU™B}”†ä®Ę®ŻĐkٺґ»ţD[ŚJ°)—ű j{öěŮíŰ·łŽ¤<ÄéX˙8qâÄ[o˝uŐŞUŢ#_1â6}ÁŞ_(o˝úŮą| ę§ CŔ0 ô ÇąDĺ¦NťĘůÜsĎ­[·ŽH«í,XŔ´'Ʋo›îËŁ;xąŻD•¨Wúʵ ö]ˇjĆ5ç*‡t˘Íą YîVٵLYő]÷T¨ĘQ Żä ˝âsČ©Ż,©ĚđŐXOwË-·\ýőđLÖHzCunë żć«©‚W9Nž‘˛×Hś×%+dX˝őÔ?ÜÁZąÝGj\fŚ-˙ŃÇWş9ÝĆ/yęßń7ßßůÝ5\MĘ«çŽúĆG®wϬХj!MR*ÉĎëúiVŕő-6}j’8 Ę+,<ń™Űľúč+˙ňŔn÷ŕTÖ ýĹ[çüő;®%ô¦F~ö?obď˙ůĹ.‰¬‰ś•t¬Şűô˝óÝţ󎹇O׿r¬VëJł­©źëäź˝iÖ’iĂţÇW·=÷šeia±Âßżušk$#(0ţŕ˙]ůÉîtW Š52ŮýÝ˝óŻżćbĆ@·+÷Kü~ŮUëTźB€pŰťwŢÉ–WK—.ýĆ7ľĘ#lĄ[Ěv˛z‹Lv/ľř˘dF9ŞcÖšDÎ0]ŮKµŕ%+^!uCňĐcȸ÷­WŘ#–ŁFÄ·E·ň6Şě*x+ŞP nҸ°7™,<śŢËž>D–)h.˘«¬dÚb$d0ô¨­d*—ЎZˇÇK0Î/«?űł?ÓŠR€ÇÓMş’ŰŁ!`†@żG€Ů)âkQ23vě؇~ŘŰ}#Č É=:Ů Ë!ZDî`52ܱg–ĚĽâzHâ,„äé pq:jĘ«ŕR%$=ŞM)Ä˝őĘ]ˇ[ŮĽË^łśÁÖ×={ö˘ŽÍrÚěŮł ž’Ą2#é˝n tmşeW?Są·Ź™‰ęCžßő®wąŽQ&fÁF”p¶Đ«óVň×€›,ŕćżřĹ_ţň—WüáŚ;ţ˛ďŕđꓟŻÜüí÷Ľç=źüä'ůŹfŘ”ÍĘ7đt ŢŇýC§ë÷©9p˛nňČŇĹÓ†Ž{¤i}S+ěvUV7µtHîÚI‡•^BŁ—YĄˇąŤăž#çYŹqíÄ!łÇ"Ë›×f]S+]Ű}ä<ëŕM ŇŔćű59.–5,+ĘsĎ˝őš4Vö‘ĐTÎť8xúزY]HŠ…}Çkw„ŰßžÂ-dS/żŹjĘ-Ů^2î6dĺ×#üs›2ŞŚ?é8_Z”džSţ¤ŁÜ{:%…éşA˘·ëf çO·Îp^şU@›4˛”?ię§ŻF†'Žżž€‘ľÓěX´®|ÇŐ Âp$aKěŠ\,Óc{,;ȕƌ(r‹0/MŘMĄzZpiŠ A0ąhŻŻęqr±z‹˙ę•\#^! ®\,‡îˇ†ô­Wbź8)t–„;ě~•Yh˘ĄS§NeţyĹŠÄéäwZN.xö ±'÷6§ś©ÜkÜ„†€!`†ŔĄ!ŔŘĘÎJH ˇ:âApRI°Ű¸q#c+KöČúJ®‚w.™ˇ-”ÝQ̦QĐWqrŻĂ®˛×‚ Ő±ăĘE"¦äÎŰľLfpŹŮß˝©‹yGđ‡Ě°ÂĂî×)S¦9%rçE,*ŚBŽW ŹšMPîăŢMh†€!pŐ°hÝU˙ćŔĄ „?Á¨Čó—b&sˇĎ>űěÉ“'yä¦@ˇą÷ÜsA=]ŇOá4BĄU—ĺt+żĘnxč>zÝó ©•G%Š{Ü+‘»>¨eŽHjâtě©©©Č˛¤ń¦›nâspJřCÍŐľBvômT•djý8# ŻĽUĽBuŢ †€!`†Ŕ%#Ŕ8 ™áâ(-2˝rŽk»¶lŮÂ˱Z°š­[·ľńŤodĹ:› B­ÄŤÝ¨Ĺ˝JÖŸyjA%ÝšEA•)`Á}űqF´9×HŹ(»FÔĘţ€Í›7eó#a;2«Ü|óÍ3fĚŕs€y̸0â^ŃWQ‰ę{_Ą/;^}^yĺ^ˇúc…dŞ+¶˛ů4YçJľĹź+ŮśµeW‹Ö]Eđ­é@€˝$Äă|f^šuv;vě€r±+–EvÜ![¬ö"ź]\2»n ˘Ëoâ”˝ÝSöĘUHA[¤ŕ>ş­¨ľ*óV…”˝rWčZsËbÄŐt͒δtü–^vîđsM`'TGV Ä顆حk_ËnÉBŢz•µV¨§ś©rât©cx«%« łĐŘazÖ¬YŔK´TÎäkqvܶ.§Ü«ö{ŐřĺôÚꆀ!`ôKO!3\ü'NÄt#Q9.ÉĚË©p^˓̼Ľ áĐ##W”\ľY±˛|ůfĄű!łŠIś}ä Ir@¦…Ě@ Ő±ő•ů]B˘„ęŘ–ˇđĆŮц.łĐ«ö{ŐřevĽoVýuâńî»ď†ý˛‰„ü=ąşâżbřËÉj\’Zľímosa 9ᄇ˛!`Ľ~°hÝë÷Ű™çŻAŽK´ý „Ť`·Ű¶măN楉ŮqÄ“ĄČÉBÂÁI uŢ!ÍęxěŇpśü5>]xSVą6×­e­‚&µBŹěrĎ5Ű­e­Ő„ @VČç’LDsšíň^»zőjND% ţ®…¸rČ%UóĘ˝B­-xő˝BęĆÉŁfU9Ł*^;&4 CŔ0€˘°c`ŐŞU¤ß…Ě<ýôÓ ¤´#µ; *±m2ĂŹv—¨MW¨Ă–WH•8ąZs qĘ*×ćşµ¬UФVčQUyú–µ®ÔŹ*Ęb:y—8±Qř!ě`9ţ•ý! ŢGןBôUTŞzôę{…TŚ“‡lĘŁ(gTĹk§ ů;ĂĹżD.~YĽóťď$z f …®bßń‡żź,M€uó_ 2Ď oŻ˘WÖ´!`ô*iýŔîU̸!Đ@^9ĺ€9RfGŮ­ÉÄ)&˘KŹ>ú(“ĄP±;î¸č’ËĆçÔe0*T :*¤ě•{…=˘¬FÜ&şWÔ=W‚¦[×}ĺ•«jKŇĺµk×ň;2ł‹#FŚX˛d ˇĎyó汪1ôA+şľy…˘}•¨©¸WQyT×\˛ś·q¦Ô++†€!`=+¤…ĺ3 µĆ_Č ŃĄ5kÖ°Â#d†MÚ¨wXWˇ;©ş^ąWŘ#ĘjÄmB» Ż{^!úÉr·B-ůúÔSOýdsŹ LśŽýP!3Ä>Ä·bČ˝¸W^yú„v˝FĐ÷Ę˝ÂăˇŢŮ#ُř›ŔżA~,¤˛JŇ$Ŕ›€pŻ˘'ŽáÎW”qÉv˝ »7®:­»ęźŔča·ĆqZĽx1‡ĂQÚąsç /ĽŔˇ±lääÎÔ4L 9ë¶mFGŐqGhŻÜ+ÔęˇBśr˛ś·ę†B–yT#®Ž QĘ]‰(0‘©ešĽ×,©Ú2íĚÖWćüe•"żş]R2«®zĺ^ˇV‰âô˝rŻ0jS%™ękE+†€!`—‰C6#¬dće®2óâ‹/r¦›ň¸ź?ž4văǏ玎;ľ{ŰuÜŃÍ+÷ ˝fĆ)'Ëy«nh!Ú„quTľWî Ńa˘ĂÖW‚ždd',ě…Ą‹śĆËÎb& Óٲ©®zĺ^ˇV‰âô˝rŻ0jS%™ękĹYŕo—Şc!ě(ŤQ¸ş`â›%·?vÜ€ÝŔü^ÖkC ß#`Ńş~˙‰h™nbźL—9("tl‰eRŽË^x-ŁŻDšx+łR“KEŇ#łk¶G ĆyŰS>łÔRÂŹŮ}ĂťČÁMH-K‰R€%HsÜ{°Sjł÷ĚşM\±VBŤÚŁ!`†€!€€0îKbĚePć|'\îŚËäŁ`°5jżŘ!3Đ%Zpí_ţHíš˝|kę›kV…=b#ó ÷cŹyQ¸ČXn,Z2Ăň:µQ =Ň®kPĘ˝dÖmč 4á6×_Ëümäw?řgĹŹţţĐSaĹ”Ż.Čř&ޱŔVv8‰Äý!Ó_ż‹ő˰X´nŔ~úţÜqa~Ü̸XƤ4{I^zé%ŽW#Y ;JHE±|ůrňټ榇MwŔVąWľWî^ޞ· ę[śe•«&Ś„Ý"¬§{ć™g…ć‘ßląĺ–[¦NťĘ.cȶĺöB…jÓ•H9Sý¨…LŤgÚ˘W_„ŢW^Mh†€!`ôŚÎü8ç‚ĚpĆ=!§ 6@fXa™aëkÄŘL@ŕ “N‹:ÜŁěŽk*÷ ݞ· ę[ś®\”‰­pň)w·nÝĘÚ:VŘ!'MĘŠ+ŘŔXÂjÖí˛ë@OÉ]›ZŽ3îöĺŇ”˝TĐ®67` ü•h? ČýÂ#Od…Áń« ťř 'v/˙MŔI‹Ö Řż«Öń‚€EëȇĐÝdxcłS© ,ŘłgP°!‚‰ÖGyľ{Í5×ŔŢŕm ~h¦‰”jş#· 1â•{…qĘ®Ľ[Ë®2eď•lß "UUUä´f÷+‘Ř…őtZđYşt)ëéŕDîĸŰmÎ+LĐçUB5{ ĚĆ˝ŠĘŁ’Köh†€!`\ÄYIG˘6ĆBfzd¤fßŔcŹ=Ć|$‡ł3ɤ?ŕ 7¤é’wĽS!FĽrŻ0NŮ•wkŮU¦ě˝’Ťŕd†Ě'Ű·og;q:Ž`sŤ@Č 9=ŕ{݆ęÜ>şnd*wëj9}#ék&ŹłŁµ¬ đ· ˘Ë_™Č§Ěß"ż}ęLXÜĂ+<äfîţٰOiý ‹Öő§Żi}‰E€á–9gƶٳgS>tč)hLܱ[–dv¬ł 퉍Qşă*D߆ĘH™şŞß­eUF3ťZ˘Łf!"ě¬!lfł0X‘4'®ş+÷–ݶĽ *L_óŞôŞqőÇ †€!`†@Ż"ŔČNśŽ]±˘QěŃŁ9Č q:.Ćq¦ŮHaA†Y Ky™@T7Jşšq:Úß^RvÍj[Bţ™!vyŕŔŽ*˛A8XRDzDMBu÷U´j+Ş ’ô5/­J¦ö3ŐWŻlż6ü^ŕ.a;~,pc_@ŻÄ1|ăÂOîHěDzŽý‹ÖőűOl|  i\¨óŇ×]wÝúőëŮNB´bÇ2G|Š0l›eÎĘ­IĹnÇiwĽt•UîŇJTîJPP ^eWčjşrĘŃ‹VČäBĽrÝşuävˇ #âĎť;—ä8ěq«„\ŇW^ąWH•8ąZs qĘÉ3RNđ;q¦\ź­l†€!`ô6ŚőćŇb\˛d ©ŮQ‘ĂŽscÍ·lٲrĺJ!3ÎS¨ŘíXć WYĺ^!MD宵ŕUކä<†.Z!@)d†¬»„,!3 Ă–áoĽ2CPĂ­ňJ^Ą/Dß«ě6á–ă”3’g¤śěaś)×ç\ćo©\Â$N—ŚçĆ ßh‘»Äéäń ű`͆ŔCŕ5ń+ÖŞ5d\uƱjěMoz4nGÎf¦¦9:ö׿ţ5»'-ZĎ›:uŞŇ\ČŤŽéݞ éľkDĺ*TIH“Gď+Ż0NYl2í łgšUu”™„2U“€™ąh]O§.Q+tE_E%R%N2Ř­rśŻ<}!íz•»őÇëż CŔ0 ŢF@†-~±“UööŰo'ia©Í›7“ÜăěŮłżůÍoHmAN^2ĎrNCĽđj)aHřÔyݞ QsŤ¨\…**çŃ}ĄrŻ0NYlB`Óqŕ†l}%0™ fd™‚eňUBuÚ„ÔrďŃWQ‰ę'ĽR-Ä)g$ĎH™¦3ŐWo­ŕ"Ŕ_E.ţ}%@ęę_É2Ž]Éć¬-CŔ¸ŠX´î*‚oM_e pd©c; '+1{öĘ+Ż@pˇą„íđŚ0Ź0]BWěŤőúš0^Ʊ%µăÖMVN_SŚ«~śYRŰ;vŚăäÓ‘‰™¬.’Ď…M"äő#S5´pâŞkÜBď)ÓJFĆ3ŐĎÔ¸Űk+†€!`WĆk2ó2ɦĐ8  ÷$ú` 'fGf^ť‡‹:¬Ě!ú*y”t+&kbąg•I`™!Ů.™!oäŢ%N‡aI‰ę¸Ăń€Ą[ŻÜ.g¤LĹŚô3RîmănŻ­śŚ€ű÷6YÓކ€!ĐłX´®gń4kŻ? s\Ěľ•ŕ>˙üó0]ÂXÜICŹAšŁQYdG‹Ę]şÇ˝D‡·é(+j)«'q>¨Y-ĐbsLDĂn7mÚ‡Č2ůĚÖ`fˇ™ź‡éŞr\!ýć°UŽJ܆’ßşš^ă!÷1#Ë®q*ň]2­î6meCŔ0 C W ™*NŚĺl(ÖšŃ4†`a,v†Řâ„w¦'‰ë1˘qˇ wń*aŚCMĆAŃäž ,:iZVŞß­eŞ LwDžcޑ儒ÖAfqd!!ˇIřŚÚÔVB…tÚŇ*Qĺ¨D•)$żu5{U9j<#ÇB~ÚŁ!`†ŔFŔ˘uWpk®Ď! |Ž€ÝÂ… Z±”„/¤±#T·cÇ6’ a…Ý 7Ü@ĚN”…ëHŮĄÝr 8e׬äUN_UǸ3ŮNŠ:2ôqąŮO™2ĺ oxň˛ÚźZq˝ČH§¬˝ Ľú^a‚‡ŢW™‰Ó9lʆ€!`†@ßA@F|‚qÄŞŮŮ ™ačÁ™†dręÔ©$Ą˝őÖ[Cd†.PWŞKwşă”UîZP!Ć»•'+ku˘dč#›ý‚̰3€^żímocIQKý(ŞŻ’®ÜűĘk!TË}ôę{…ŢćÔT´JT"ʙʵ +†€!`ô5âç—@IDAT},Z×÷ż‘yx…€#˛ĐŚ=ˇwÝuŚ–ŔÖĆŤ™ †ćÂwá…$…sŞ,EńI’’K-¸oăĽe5‚ZBuď«n…ęF}}=»zź{î9zÁ4;“Ҭ%$5ëéXLÇîäÄ®“nw˘ň¨ÄŐ÷–ăŞDĺQ‰Ś“óÖűĘ+ŚSöúlBCŔ0 C Ď"ŔŢX¶ ÜvŰm$á…̬Ył†łtÂ[–žŢr3óŇ%Z@7bjßUŮŐTaČB˛ÜµŕúŁF 3uuu^OśŽ<˛·2Ă1¸Ó¦Mc]aňľ×}í‚Wîj•h!Nß+O_( e¤ďUŽ:lCŔ0 ľŹ€Eëúţ7XB2B<Ăĺv˝Ťm·’CÖXmGF Áe÷(|—·0]2ˇŔq™Č… ëz´8Çâśő1Z=T1#}U¦Ŕ)iLAĂÎOť:Ĺ9qě%NGxŽůgÖ˛_†ś}˝—˘N=‰v0N’Q•^Uć¨}-ÄąmrCŔ0 CŔE :p„FvWągË4ÄČ™!zĹü"»D!3¤±cŢNČ L€|vBfČĚŰ{d†~ą˝ŽbâvŽ€Eëúř2÷’ČŤR˝Ţ€‰©fhîĽyóXLG¨‹=¤[·neRwĎž=LM“᎝Lę’łYZV$Ô.Crťtĺ^źă”EîVŹÓĬĽ:yň$q:v‹@Đ[ZZŕëS§N%a 9ĺĐŚ¨«nG˘îą­»oă䮎–ă”˝rŻSÉ3R?Zrw=Ź3Ą:V0 CŔ0âDÜ=®î%Ë1N0 ŇB*Ň_đ‚ĚđbŃ=Dë8}bůňĺ—¸eiÚu2®#ędś˛Ę] *¤şĘU(ëׯ_™aŇ‘YF†Ě@iXRGśW©ĄŐ‡¨D^e*Wn!Î:ŃWQ‰šňľJ_čmNŤ+†!ˇGŐ·‚!`†@_CŔ˘u}í‹?} x!3Ň,µ# ‘ͤR—KďúëŻ'fÇB<ćĄqť™jî0$/IR!:ݲĄ¨rT"`ąrYO÷ŇK/ŞłőšN>śg=YůÄU·Š‰ó'NžNÄr˛fśý8ąÚt qĘQyTâÚ‘˛č¨¦˘š&1 CŔ0ú>6Űşĺ–[ŕĚABcHfÇ‚5Ň}˘2#ëěXvGwz•Ě`_IHh„UଧĚ0EĘ©_GŹ%*Ç©_$Ű%Qǿҗ¸=Ľ!›úu2•kE·©‘8}צ–ă”˝rŻPMQ)„]M+†€!`ôM,Z×7ż‹y•™2eiYO)Q…hkÓ(’˛TŤŤ±Ě÷#öĚR †WúöŃôęgÚ5ěŔ­kkkŮ$ÂŞ:˛ş°Ű÷p{üřńÄY!ČĽ:ß.Á~·ťę ›˝çmo[î.S0 CŔ0@ ŁŃÓËş…‘Zěŕ0ĐĘ썅ÉHf[ÖٶcbŢJ ŚĐXF Ĺ)gÔ5éd—¸Đ±i—`"§IŔ^„Ěŕ«ęč´x ö»Ĺ*Ó/’ŽAŃé%oĹaé=űé÷Ń4 CŔ0z‹Öő fŞg˛Ť8Ř3íugEfтŲŽ˝±l&]»v-á0ć{)°ť„i"b썕Lv(Ó qŰuŢíšČ]I‚#QĺYfˇˇłĎ>ű,Î0Iδ9q:6‰ˇ»ůć›e·UâšóĘ˝BéZ‚«ˇW™‰Ó™•Ç8eŻ<*ŚJÜV’ßşšV6 CŔ0Bxwěé_GqIČ 1/x˦M›*++‰ÉVSŘ»e!3,Ä#x‡KTź]ĎÝ®©ÜĆőE”]M­.m‘Ą2Ă’:ĽâË"NW^^Ž««WŻfŢ–%[_˝M¸–UÁ+”ćT§ŰB¦Fâô˝ Ĺ){ĺQˇH˘ri+NîőÄ„†€!`} ‹Öő©ĎaÎřH .ĎóWv¤—iGŞC‰Ö‘Őąh6hlßľťuvdkŢąs'yaئAň6ś*›¤NŠźrÇ#őD%â¦Wž,¤"ŮôđaÝşuĚBłž›¤^& \śąhh®´˘v’¨ÄőMŐ¤ŕUŽ{§ś‘<#ĺKđX˘MD%ÚǸW˘`wCŔ0 C ¸q$DŚÄY*éŘ ă8/ ’ŔôL†‹DÇČř™!fGPŹ·jZ”ĺQî!OD(nč«n…č«rssłĆ Ů+Ŕ\)‡bqä+w˘u•«/m…ZTˇšUIś¦*D«D%ÉFĽú^!vâä ŻĽUąÜú˘ž{ŤhE+†€!`ô,Z×wľ…yŇ…€pŽ4áHŕ.GLÓZ:j…/rP4— rÇŽLĂq!»¬k#©Ę‚ `ş’ü›ę¤ş¤÷-ĺ8yÔ14™‚nhh`ň™Lz„ń˝!äŁa=ACŘ-;s5«‹ú ¦BŹ!7BÍE•C ú ÷*N®6µ§'§b«čŰ8ĺ8ą:fCŔ0 C „c‡;¦‡Ţ†šôŤ„lvű™a +ńIÎËŽĄ"Ý-4†säađ¸dŘÖp’ Ä%ąk+ĽŇ˛űĘ•«B¨ŔľWYIÇť¦qŚS_™%ß.Cɸ§kýÜşQăQ‰ę'ĽR-Ä)g*Wn!S#qúbSŢŞŽÜ)ÇÉCjöh†€!Đw°h]ßůćI,¬cĆ6 s)`l…Ě_dJb`ŤřC8ŚM°L‚b¬ącoě‰'†ű’†EvěĐÁíĚ=şX#Úe&ś‰Ó±[„u’Ő…v©©ť>}úŚ3X[—< }ŃzćĄL±Ę¨…^2ŢKf3ęš)†€!` d$g…l2ŤŽě=‚L¦üĆÂ,#w¸Ä'…̰Ô™!UŚ‚Wř|9nGëâ-ŤÂg$E«üŽ9ĂaC. Š ą’{ătW®ôÍôC¤ią—̦ٺ©†€!`\a,Zw…·ćŇB DGěe§'ĽŤ™^H[”đyŤ†Ś¨NšŐU?ˇÍ…Č’nţüůPĚ5kÖ°…¤¦¦†D0ĚN/[¶Ś+,ľďŠŰ¸$­»>h9ä°ČCB!˛Ä÷íŰÇü3gş 4$ˇŢ­·ŢĘ’:\ ŐŇ.d$ŹSVkˇ‚Wß+¤bśq€S_!3L@"q›ĐrFň8eµ*xő˝B*ĆÉC6ĺ1N9MyśÚĄ÷zhBCŔ0 >…€EëúÔç0güTUU±‚ŚÉ^VŤ1ăĘ4/ Ů\U—#şro9Žî\š¶ŁŇ 2.ëÚŘÄAśnëÖ­lŚ}â‰'ކćŢpĂ Ě ֹ͕ÓLÝuFđ i…8Lš°ŕSO=ĹiÄě8ÓŤyŔBLí·2cďV˘’yś2UĽŻŇĆYČÔo‹ÉĆĄ ÷ž©ô㪸f­l†€!`x`Sz â$¬ +Ä€ŕTHS™@H}Ś’Ň· 6ĹŽ& &’R2Ăâý 6°ÂŽPAFf çAđł FÄT(MČ ¦äQlŠQ‰Ľ…Ěp-ëéäŔ.2˙ ™á /6Ţ.\¸î$MľŢ]*¤ŕ•{…RËű*}a\‹ Ć˝UĽ-z5Ĺ2¨F«D%Én$Ř—Šv7 CŔč;X´®ď| ó¤ —y(á“@!*(A®!C†°kCçĄÝ*!ĹBHč}Ś3’¦ÔÇÍť;NţŇľadŢÓ'1FÎD1wjÚ)Č1eąÄ%ń‰z(îlyůĺ—aů»víâŽt–řŕŇĄK ŘÁž±¬€„ŞëŁ˘ťŤJT9®W%*ŹJâlŞÜ[Ĺ+¤Jś\­i!N3Nž‘qmĹ †€!`wX‘a ă>1;főÎź?ϨÍ";dîŘíÖR]V Â¸‚ׂ(wk‡şč™‘¬pŮ+ń;Ä“”rH§°O/Ôľř ŹŇş!3$jIř2̈́̀3˛X–|nĄ®+qm†äqĘ!5}ŚÓ÷Ę˝B5-xő˝BęĆÉĹlčmčQ›ÎT®­`†€!Đ×°h]_ű"ćŹČ™ÚX\F;î<˛‘$ý˝$~»=$űDb7‘D<$ů 3ĆQ˘uĚźă–Á¶÷ěwŰ5S0 CŔ0â`ö‘¬2C䎋ŕ;(pĹŐşbr=!3DÍp2Ă®Ĺi­dČ…0iĘ+Č :ÚŇôłÔĄăBu{÷î%dI§XOÇ]Bf FŘěńžö 5I[KS[kS{sK{kSG{ąe“¬&Bř27/7Ż · (ݰ('ź9ćÜL{×{Îgę‰é†€!`\y,Zwĺ1·3@ JSŕ…Ů w„A†ŮEMG- “&ąk^ qFPfz™]±d]a^š„,ä°Ű˝{7)`¸Ł&µÜ´iÓŘ˙+•étŞŕʏ$wmQV2OśnăĆŤÄé ÷ćČę‚6¤:Úe$j!ôÖ+÷ CÝÇ8}ŻÜ+t­…Ę^}ŻŠQąH˘riĹ+÷ ˝ĆC®ÚŁ!`†€!ѱ)5ěgWWW“Ô>m`pŹ®)ăqăo…6¤ă:qv˘FĐäb.půňĺ„ŇŘK ČŚË:»[ną…v¸Ť‹tJ˝Â‚8Ć+b|ô"™Á,Ž%d†UudÄăL oÔBč­Wî†*şŹqú^ą ‰Đµ6×µÔŐ4××fµ·fu¶ĺ—– *É+(ĚÍËĎÎ!X—ÓŃŮŃŢÚÚŢŢÖÔŘŘPwşîl\Ż3'?ݍ¤ tP~qYNîĹź`j\Ý‹Jôď[Ż0NٵfeCŔ0 >‹Ŕš˘ĎşhŽ.B‚tĚĐr1ĺËĽ4L‘Bw†[%ZŽă4˘Ą­Q HŚ@LQ żŃ4vŲw•ä,,‹#™ÝC=$Ůj·±Ł¶ŠŰk4-˝ŕ‘2˝eË‚t˛M"¬¤ăđ Řł&{v}#®DĘ="ĎČHFĘ8éŐ÷ 㔥§H-ą‹$N˙Ś«A+†€!`—ă”ĆzćáX¶™‘mé“ËxEizgDpp.s&Éa‡·Ź>účöíŰÉpwăŤ7Bfŕ$^2ě3@ź8Ő‰÷ŃY”!3LjÂgč28„üŚó'NNuď«ô…â@T_%©et UgÚĎçĺäÇ7eréŕa…%eEĹAś.//7;‡“C=’ŐA¤˛Ł˝ťŁÁZ[š››šëjŞŞĎť©©>ŃpŞ%§°¤ l(‘;7l§8č·SşőPëĆiŞ~îÔ‰šsÇňK‡”Ë/,&ĽŞ_3ÔŻĐŁŞy ){-Đ0 C Ź ţÁßGÜ27,Ś(Ďp%°:ŮsA  ŕ?ě°€/B a·Ľĺ.Ż. F·9×B¦6ĹΰĹŐlxa2ŞF‡¬ť;wŽcqňʤşPszś¬.¬§Ű±cL—®ÁŮ*˛xńbÖĺaÄő*ˇבh•ô5ÝşŐĘH™VşŐďVÁuŐ-gT1#e·+†€!` X;ş> +Śř@Ä蓡ĚϦ!3 ý}‡ĚH_Ř1Ŕ‘Vś2ATޏŰ 3۶m#ZGj8d†PŁ4xËĽ#‡nq Hú‡a÷+̇µuđ˘ô˙zt ¦šJ_łŰ*$ˇ#H×X}Ş´¨hĘ´é#ĆN*:Ś]Żůů…Lkőt Ě2çćđ§°¤´tČđaŁÇŤ›<Łö|UőéăÇ+Ôś<ĐTXV8xD^aIúT3ÓžfŞźNżLÇ0 C W°h]ŻÂkĆ{xŚALSć‚r‡c‘É_d^Úm;ŽŁPŃUK._˛X8łÇDÜîşë®… ’\™ś//ĽđŰIX=GôŤ•w¤€a§ ě˛ţŕ˘#gS0ůpŕŕ«űöUTpZîńs§ĎŐÖ×556łßŁ#°•ťź›[ĘE8zĚčńăĆN™2uĆ53¦NťÂ­|MÜç‘˙nřń§Ž:˛Oő‰ýĺ#‹Źp7Ć&ôHÜ…Đ=îUśŤ€>Ęt4;âtb,ŠÓ'8qډM.Ř!š\á–âźă|ČČHÔĽT‡vĂŐĚá*4—8ű^Ź=Ę#ëé ¶,Ż#?|wÁ‚ŇśZŹ6‡$®#ެ ZĐWÝŇŻ’ľ¦6š\%ô6ô¨F˘…ô5µî%TŃşV0 CŔDÇŽ¨D‘Ć@]âO Ś2¬€…Zbv™·Ë‡$´‘őS R—p›ŹóĘ:;ř [_!`¬5c{,‹Y\FD2ĂÚ:–ąv|sŐ¤ś¬zzŚZ ITţŘxîdső©1ă'Lşfî‘c ‹KUŞ>š|Ž­ĎlŰľműîÝ{Ž©¬>_ÓŘĐ@[™6fθł˝ł8[gi!kçňÚÚ‰Ăvvdç攕–6dâÄIsç^{ݲe ÎgRč¸ňň ʆŤ,.–:rlé !‡ŹŢóÜćú“‡ŠGNČ%G^ę°{ő$ąÜÇäşöÖ0 C Ż!`ŃşľöEĚźŚ€,rAPd^ZvĹBá7ÜÉd‰d# a»Đ"µŚ[ňV×Hú\o™‰Eźśt\K—.]łf ™IcǤ4űdIĂĚt´Ş‹c`^ąWčş*{ő˝B*f$ĎH9ÁxČayĚČxFĘ™zâuĎ„†€!`†@š™AYČ †K‰Ť2i¶#.–¦Íµ¸1‘*i’± d†ä¤[´hŃćÍ›÷ěŮłqăFČ 3ŽäŢ…ĚdTOâÚőĘ˝B5-xő˝Bꪜ[ëjŹě3nüěĄo,:"ÇɬÇ'Ř»÷•źüř'O<ţ›ăÇŹµ¶µv´˛Ś®©łŁ-§“ütŮŮÁz:uüiQ޵-ť5"ż€ÍËĽÉjžXVśŰZ_WSO˛ÂćăUuŐUgY‡¸vÍÚď}gÂíwŢţŽwľťťÂP>ćź ‹KÇMź]>xřŢť[ŽÝW0l|Aé`÷P u;ÔýLĺˇęöh†€!аh]ü(Ý%GšLŃEŠ*˛+–;ŕ^ĽĄý…i‘ĚŽ|QΠ¸űn[qĺ8Ş×ú¬Şă-4wöěŮě9|ř0 ëHŇĚ>Ya·q6˝rŻ0Î[Á'îmÔTT˘u˝ŻŇ&{˘­hÁk9ÁWß+L6WEł‚!`†€! 0dÄŤţÉéDŐąäŽ5Č 1;ňŮ‘1MČ 'ŮÔĄ˝ŤěpĂký ˛ŘŃ!B‡ĂĚ>RfUŃ:YgÓ+÷ ˝M«0®JT’ŕzsíąú¦Íš7sń …ĹeÚM4INňŁŢ÷óźţ¬˛ňHk{kgsKGGKPĘÉ ˘q]đżŮCĘ VÎ;ytYa~njOs×KžŠóófŚtýĽ±yŮn¬Řsô|GN^{K!iţ*ŹY·ö©·ľýmďxç;&Mš=Öô 9jÁŞŰË^Úş×ËM[4h‡Ęň*äĽ4žľP,xőĹ”Ý CŔ0ú­ëSźĂśéB Ä$ EÄŕXçc}.v¶zÁ‚ą˘ eä­ě%‘yiî\ěË€ărǦ„‡Úňšő •Ďyߦ/Ä[‹0Ł*)'4jŻ CŔ0 (P‚t,‹cĘ 2#Q9>.W_$"äÄę:í‹ě(Ŕg 3T‡Ć`Sg] é—ăĆ>iݵӭ&ľíŰ·Ź ĽHÇFŇ:¦ăją–µR=ŞšşUPM !e[j«›NśżüĆIł6N• †~÷Űßýηż{ęô© ¦ÖÚÓŃÄéd=]ęc)>‚•uYŮDĺÚ::Kr˛ÎT7ňçÚ)Ă ‹ó˝rřÜžĂŐGÎÖź®i ÖçŁĺĐŘśěNNĄčhmčho©ko[ż~ăÁď}ď{î}Ď˝cĆŽÁ™ü‚Â)s—ääĺîyvkSgVŃ á˛ÂNýôBÝôęĐ0 Cŕu€Eë^źi ;ÉN ŇńBL‰µqq&a;VŘEŮ´)uôd‘‚ܡ¶2)MA,°ČNHłÎlŁ|…vŐ‰' ßđZvŽ@âŁÎ¸Ę®źqrWGËqĘ^ąW©Śä)«źŃ‚׎Wxµ<ŚúlCŔ0 C@ŕ@†7żůÍrş±°Ž;T2!â¦jZ€ đ Ă] Ţa¤®®2Ăt&tH& ŁüA öRÁ‹Ů:Ę)tgÉ’%PqÉm×UNGîęh9##^e6ď¶Ö×VWî^týęÉłććwáŹň‘Ę#ź˙—Ď?ôˇ›;[šł[SëéRű^÷W”B@Sä±#«óĐ©şź­Ý7˛Ľh˙‰šóő-{+«F)mln{áĐŮSç‰Óe7·˘THĺˇëĚXjgN.1»–öľműˇ‡ľöµŻ:|ř}ňümA•ăb'ĎZĆžç¶¶ććĺ•i°dOˇĐ‚WČŰ8ąV´‚!`†@źEŔ˘u}öÓ \Ç\bá˛"ć!ŁpSÂvÂt ŢŐ×׳JŽąeŐTŕŕy٦+Żr”ʱBţŞC”YČF‚­*D-‡zꑆŕĺtÇe·.nCqrWGËqĘ^ąW©LĺŢ*qFÔŐPÁ«ďz›SkŃ*Q‰('Čă^i+V0 CŔ0wČP"AHd†Đ ČŚď„Ěčôˇ‹ˇPîîÚ:0EďęŁ:6‰Ž…(„kGŞ„$˝ôő*--ĺîÚwIGîęH9# qĘ´ŽÖćs‡wĎY¸tҵ‹4T×ŃŢÁÂŔĎüýgÖŻßŘŢÖÚŮŇMŠşĽ`ß+h{1.¬Ş“ ]ęŢ˝ŁÜÔŇľ«âšlWFwÇţłą9ç¨Ca^.ívv Ç˛: u¨ă˙ł ŕSNVG[{Cgg[MUű÷?zůČŹ7;¸7e΢¶Ö–˝/<Ç꾼âAXC.W\7ăäÔJxuÁŞýŻ!`†@ź@Ŕ˘u}â3é P%hJ^w.bvDî$xÇ#¤Đ;5Ťe^A‹ąŁ¦d9lŤGB~ÜQ`EĆá»é8“ “) RÖ%śÄx¦FzO?SË!ç©.čťtĐ…ŽĎ'!W"§gĎže•Ëř˛Tákň«őL/łp€2AŐ¨×Z¨,톄qŹ)Ç1ą!`†€!Ś€ dŚő˛Ž^ 1;Ć>ŘŹĚMz-™AA,p—‘ 2‡ˇĚH*A@L#ňZö 3ÝŃ™2—ú™‘<ÉH?}eWĽŞď™2uú5‹W±xMşt»wíúä'ţvë¶mśčŃŃRǢ· EťIEëP :üOW!§SşBhę¨H:9Ţ·“CcóHV—R#©2oĺ‘|2ŚÁş d‡™ŽěŽ<ô;š;Z;:ż˙ý455~ôc›8qU ŘMť·´ąˇ®âŕÁlpQi`?ćr{ŁbbCŔ0 ×­{}|§ëe”sŔV5`'…††č“Ú„J b]´*Ĺh1=˘:%‘3F˛7–ŔÔY‚z.ŕQ\ă®ć•)Çůăm=Se‚elc©¬¬ä]ʄҰď'RFĽlřđáăĆŤ“ŁčÉhŁŕÉá¶šQQQÁą^ÔŔśeŚ!úĆ…äŔč Ě t¨(aS>oĺ›Ň ­ó]X20~üřąs粹†ÄŐČݦÓďfúšj˙Şh]+†€!`Ńq„1QřĆ>†<™;äQm!>#Ź‚şŔy¨%¬xčO{;+ěLY–Ĺ%)„|Ô Qp Ué˝Ç8gĽ-f¤Ś…ýÎŽöÚCĘJć,żUsŐ ůöţö}ę™­[%pÍuąŮ0Ć Q9ڱĄřIjťťxÚ¤ëúź”,ĄE`.XaÇ˝˝#Hxěy…ąU™}Í9î ňŠ`]łC’ÝÉ–ŰlÖص647d˙ô'?đ~ôŁ6nü8ěĎXtCMŐąŞš3Ůąyąů… }ĎB÷LőCŐíŃ0 CŕĘ#`Ńş+Źąµxą@8ŕ¸ÄŹ`W˛=Vf¤ 0’¤Ëˇ6Đ—Z2q ©ĺę-¦ŚäD©P“4WYČŽűĚ{ş­®¦ÄŽZŁ eŐˇŕŠBôUT§)–‰—˝đ Ď>űěŢ˝{ ±ń›A ©2ôH`'¬Iŕl„ ×^{íÔ©S‡ \´xüřń;v<÷ÜsŻľú*«äřÍŕˇ:—ţ>Á,ˇCHđŽ é¨GŽ ţ˛¬€ęDúp†Ś~GŹ=xđ ÇĚmßľýÁś3gÎM7ÝDŘŽżâ^čži÷CŐĺ1ÎWŮ„†€!`†@F0ĘȨJ—L\AfŁâ1şŘź1”&¸3€ň–1š‹aT ŚąČ9$AćĆĽ1»¨“ ăĆŁúQ‰Zp ”őQ«D% Żâ”3’»ĘŐZ_ÝQwfŢ›Ţ]2h°4ŤÂŃ#G>ó÷ź}fË3Y¤kŞ%5\njť¬’“;H€F*ZG˝.\ajťÜ´/†#ÂjGVŃ»ěŕë±ÚR—•›•Ű‘ÓŮ|Ľ, ÁľŘŕ=|ČĆ榬źÜ÷“Aeĺôˇ?âh] –” žłěĆíO=N˛ËĂ'N¸ÝtÝ“»:V6 CŔč›X´®o~ó*-`MĐYČ(ńâ>’ĚŽT°r׊0N„ĐYĘ9şpˇŹ0ŕKÄ­°ĂĽ4\˛{A%ř_±ŕJĘqô(##ŘŹłăm:N9AN7nÜřŘcŹŁă Ŕ¶S‚qÎXÎŚ8 ¶ĚŘó€źěWeMń8~c«ífĎžMŘŽß›6mb­‘S~Bz›ťş´N|đ?ţă?ÖŻ_˙ř㏳Öď}ď{ßüůóůšÚÁ8Lä p…ĚÚŁ!`†€!Đă@6¸`2ÜeW¬FUřLĚ0ŚĘŸĚ+Ř )óH *Ł3d†uî,ÓczŚ*qn'ĽŠVIÄL_SZńę{…čÇÉŁŁÚÚŘĐZszÎŞwç‰=»}ű׾ţMÎřčlkĚélKĄýxM¨.ůB„ŽŇ…˙»PHÁ© o/\’·Ž'D©“$˛¦Ź*ź1¶ü蹆=GĎ×5¶eĺv’§Ž˝Ż©tuěŹíČjËjôQV޵¶7gwćŘ_ń­˙řω“&@ҰVPT‰@R ˘O:lNP–&詬ՂžBvaş\TĘěi ŃPaĂĚZËl3ʧăŽ6° Ů%…2a;ě\lŰ)©Ž,(†Z ˝Ť{Äš\!„!‰˛í•Ł{ź:U]×€ ˛(§Ŕ(.Ę\RSń´Ą lHń ůĄró.έJčH[SCVcÝôůË9ŚWÜ€>ô‹ű×?˝9;·ł˝±>?/`8` bs©";a»¨[đRB'p–“ş †Ě>ćĺä“Ç#0…űć¶N¶ľ˛i‡KxM‚–ěěkĆ ‚%=_q¶‰”u„ć:;ř‚$tÉí`ą]{g{vÁŽ}°©vmÍ­ť9˙ő_?]¶|ŮĘU+ůô쇝4sáńC‡ZZ:ň‚ý^`ă„‚IÜ[“†€!`ô,Z×wľ…yŇ$˛aÇÜGâq¬&­ÂĚh°]ŔµR4K Üy‹&tVť P§Ô ;ĘÔĄ"o‘@s㦦µúez‰KŃ‘#GŽ|÷»ße–ţ®»îúÂľ0aâÄcgjżőč¶§vîŻonI…Ö.Ć×tfX:NđŽř[[s{}sëéŞÚ}GN7··O;ŚýŞűŽžůÉÚç×ďşTü¬łťéĆöΚ¦–Ý•çĎ7¶–äłŔ.îćçLU~¦¦i˙ÉÚŔČUG{­ŽS'˛˛;86EGŃ„x¶´µfçT¬xđ§Ď>aBp>Ć á#ÇOžv ˘˘Ł $· kcŻô‹»]†€!`ý‹ÖőŹď8 zÇůĽD!2*‡@ve©ť,‘ă•r\°CMX,MŔtą#áQ@B™3¨?ć@r˝Q5.A_ é|ڏľ\N]ŻÍ˙xŕ¦Ö9Źőłźýě„ Ů|úů˙ÚđÜľŁ¬a i@Q»zqćBWS/°ĽtÖ„{®ź3fh±łď>ľ}ËîJVŔĄLÄY ć#ÁN×Î<;tŞúčšç·î9ňî[ćß±dćÍó§ŤRöŤG¶nz±‚ĂŇş(s—+]uqőĐÉęŻ<°©âDŐŢ˝” °_ţň—ß˙ţ÷sčcŮŘËjAľ•BÝď2/W·gÄŐ±˛!`†€!qcJ‹P2C2ĂÜ!KăÉ®+yfá$Z‘‚’Ah † 9wˇ4”!3Ü™´Ě°Î.ĘŇé:qąĚę^ł*¬9qhĚ‘ nş;'·ë'L^VaaqéŁ&ÍšßÖFbş§Ź>uäŕŮ};rr ʇ– ™ť•×V_=mţ[şÂh̶´üäľíÚ˝'/7‡pś˙°XFŠhP&¬Á'Š”ö•Ě?`0ÂhŮ9ÂF8®\Č!©nCH0%—LYĂtQŕBÓ…Ń ÷ĺHSh.»H°@ńť8—±÷**Źł“‘Ü«Ě\:ń,— ńÍ?řÁyóćť©iřÚ[¶ď=Bh‹TÇQgâ$ŘTRô–sçNÍ:¸ď?±cӮЀ]fŇSŤÄµu´ď«<ýĺűź>pěě{n[:Áü‰“‚Ô{FŚ9zĚń3ç:ŰKłr ˘XigĄ`wCŔ0 ×­{Ý}˛ápç óB ŇAÁ5"Ń7*ÓÎĐ\ÂvVH*ó“"GS*rĘ‹PĘ2AÍ#—ÉmŞłTŤ­—C† ÁH‚c®'®ç UT-®n¦r ¦Ü°aň«WŻ~÷»ßÍ4ď/6ľĽáĹ H~4"¦x L#/š1vůś‰§ŞjÜřňć݇ ُ®·F’Ö™E®ihúéşOVŐđM×O;ô/ď˝ĺs?ZórĹ)^ůÜgµwv<ţĚ^rÄüé[WÝvŰm˙řÇÉaGożýv÷Ř8¬Ľ>Ĺ)#Ź{ĺµcBCŔ0 Ž@ň¨‘@×´QuP€ŠŔgjjj( ˝QŔŃÄ>Ś…;ś‡W)ÁĹuvĽ‚ŘŔ Ž;&Ř űÔ`ČWŽY÷Ń[v{á*ÄÉŃńľęhk/)ěZ—Sq»¬‚ÜÁĂG:rüĚů­M U§O—¤o:‡Ď?ţČŁ+ĺCů8\‚­)pR ťf? Bv©5q…ůŮłÇY0yHYaAG×vŘ@?şž.%íşµ8w–ć’ĎNĺ„ć•ćĎ3¨¦±őlmrްqâFĽKˇŠ'ŕ@üŽóaóňK6¬úwî=0vÜX>7a˝±“gž8±ľŁµ97˙5I™±ćEOäqŻÔ7+†€!`ô.}Ä!sĂčq„—@@…ࡓ rř+d— Â*jÂeŃ䢜âCŁşXNR—Émv0]aÁ‚éń.\šAńGît“[9_‚đâ˝÷Ţ;tč°C'«Ůü2{6|±°¤18rHé=7\[ź·ńĄŠő/hnn٤:Ý˝KQáě¶öö5Ď˝úĺ_lÜôĚĚ #?ţ;7smj‡®ż>µ8łö‘§÷<ôôËŮąyô‹=°|”­[·Ň_ť…UdâtLn†€!`ô)ąÄř Ń: âŻ!gČKq™0™QŢ™V#FîH0HĚŽ5z’ë>$ÚV_@@‡l ̩֝?—¦WÁ:µĽĽ˘˛Ac¦Ě:zĽÖŞŻ«}衇łłrŰÚš‰‹‘dÎe0)Hń…éLÂh#Ţ>Ü 3G–ĄBu| ůŁvc ­ň‘•U\WäĄëú|LÓ´±ĺ·Î=sě ÎĄŕd EôS) řWŕ >u¶±€ďřńŁ›źŢ\]]-M 3ˇ¸°c8ŹhÚÝ0 Cŕő€Eë^Ź_m@űě’¶P9”Q€ŕ˛1VćąĂ´Á{\zޱ9 ŐQ… R+ŹByE‚&ÔöčŃŁ'OžÄSÜŇJ˛'úÖő_…Z·ú¨…LĺRßvîÜyâĉ±cDzô¬©µmís*OÖ°D-§Y`âüéŁW\;i÷áSżÝńę©su’N9Íę j0U,ËýľúË-Uµ §ŹýŘ;W T¤ě6Z Ë:Éź­{átu©—9–ôĘ+ŻđAQŽĂ*j'A9##^Ë&4 CŔ0BČŕ˝‡ÔĽŹŚtlŚeúŤm°˘oŚzÂCÜnŁ–Ř  T!´G™‚\"D"\†Ŕ"»ŞŞ*!38ćm:*t»÷6Sy\ëeŁ&ěak[KsÔ`‚$X¬vaN‘un/żřüK/ífuZ{K#ĐEŇĄ—úźT¨¨=mTé] Dzű•Zŕ[şŘ¶[[‚#^‹ Y ¤ěu/ه”¬š5jŃ”áä¶Ă.–¦Ü qN<â#uv´v¶w<˝qÓŮ3gĹHqYů°‘ŁłÚ›©¤fĺsčŁâäŞ`CŔ0 ľ†€EëúÚ1ş",—Ŕ*¤Jô¸)“Ň\ąßIĚŽÍ­:? ="Ë] \aşĽ•wěSťü/$M;wîÔQ„Ü{Ôş!…Śä˘ěZ€|ďÚµ ¦ÎŃÉ“'ťŻoZ÷üţ€8fx1ĺ;¬Ľxőüéůą[wŢuřTŔ˙/{çGu4`•«Ň©÷Ţ\ĺŢ6¶é˝÷!tRI„BÍRř @(! `0„bŔSÜ{ďU–dő~ŇI˙·÷NO뽢“2Ţőů4;oŢĽŮŮ“vnŢeë÷ȰРűvÝîÎ]iosNZpůô¦HcÓŞę[öUÔˇc ŘqG*++‰y_Wz«WŠí‘›N k@×€®]şĐ€|¸ôJ!ę‰jXĂ„!LëÂa‡=1C”‰±¸í¤1Ă,aĂđp„3ĆcÔ(ٶ ُü0c‚3‚śJÉ54˝Â b5[R›y«çżßÜŕőX©G t3@IDATCi‡őőüŤv{G» 'WŤ Ł6b„M#âí¸uljĘŚ›>8=6Ęě)NĘ"Ý4Ü{g{gdxDíÍş<†ęaĚ›h‹qTAâŘÂ$›Ĺäń*źDÂĽÁW'éXŰŮîBö#wíÚŤQçÁ‡§däF¸]ЇŻëčfîşĐ˝űjč§şt čĐ5đťh@÷Ö}'j× UŇČСÎL‡}†©J m"88…ż©”ą¬Č© “N:h8Ô†Ż8… ßĆSSS.żCł ,©˙©˙Ăc!械żąĚI“&±k[RYżżşăď`žĎ0óóŇăÇ Čjhn[ż«˘ĄUÉ"9˛‡bśF„Íţjíç+·»Ű;.ť6|T˙ ŇQ9ě0]z;¶jzz:w‡)÷ŃŻTâ¶Š!ˇCżdľČ^űN×1şt čĐ5pÂj@0+vÚĐô¬¬8ł9˛SéŃËŁ3ĚŮŃN[X‹ÉĐ˝Śš‡bÜt’ÂQś?ş0Ńf5(Ž7O ž4Ż<~;VďŔťşiăFnŕAŻ !¬ł]©Kâ!>!ëdşt čĐ5đj@ď2ń*__úi ]‚9&˛BxÇBĺŔBĹ0Ą ť´\8”Qřp*`ÉŠĹ–ĹŔĺ 1żŘó$KEúňDŚ Š4«WSŚÍv"ΰ㋋‹qQ´®µÍÍF{>ľCc5ç¦&Ĺٶ쫤şś‡¦wL|ŮúbpŔ9\/Ľb@Nęŕś”ëĎł˝¬Ş¶Q)Ăě÷@°‡˛ĎÇ­á¦;"n–ß)‡ đ@¬tĽ®]şt č8Rôx⩇‚»Ť« „oŹBĚFAň.„0ďŕb¦c-§'Ć Hř@#Şăń<łü^C~ńj$¬Ô§Áá Ä‘Fs|î ö6{}s]ů˛…í_FÇÄfĺ÷KÉ.ŚMN7Y¬A8ă×Ű_˛oÇŽ]„:ěŞĹ!¸G,ŕżň®xęЏҧµ 5zŇŔTrX˝5äfÝuAŠ>QťuRć8Ěh°0#Ux5>Ľ“»GźÓŐľfO­ÝĄÔŢ…)áuT˛óÜ5L6\©DnXż±±±))) «-ÎjŤrąąSfe«łë˘Ŕ.ý§®]şt ôu čŢşľ~‡tůüj Ě`ňa±cŚ J ž,¬U±ͦ%¬ÄN5€<Ä,ZaÎÂRŔ0HáłĂŇĄ  „ˇěłľá÷Zü"Ĺ„@C~ń‰Hd†â°ËĚĚ,,,Ä[WVÝČ;‚’*>:Ę<07­ÍéÚ˛Ż˘ŞÉގň0ńäĂî;P˙ú«ď»bÚŘ9Ó†ÍY¸ŮÖî1¤ýńö\ŞĽ"żÚÓ|G}1AĺčĐ5 k@×€®CÖ@ GVGčwKtGlµĺ—?F*f(ľ \ěWޱwŮUĆÉ…í+v­aÂĄËđͱś„…± H¸ńމڙ‹ăW`||<üYż¨‘Ěő%©¦‘p(xä%ů¸„!°şŃh˘äě `)¦ÄE ÎIn˛;¶ě­"‚ÍŔúôťŰ[ †r¤1lŢŞíÓGž<˘đňéĂ—nŢ[VŰ@}áŁ(ÂĹBľ ď÷’ý"÷ö*tz]şt čĐ5Đ[ z0ů}´©™ó¸Ç>– ¦ f ž;Ţ«««qşq€„ ‡0fX‹w€a:V §Â¤áťQrŕ@‰ ä‰mHĹőŇľ0s94x_Ś č^sár‹Ŕf6Ç%xćlm*«ŞŮ»{gdg{|rZF~QbZN\JşÁh«t´wlŰş™ÖąĺŠ=N9Ż| ě10”+ăeŽ×?5>ĘÜ™rÚ 1™ q VŠŁŤN.CEo^fŞ ˘,†ŽVvHUŘ.¦ő­%µöX‹!'™˛u6«qPvܞʦşV§š°’·ŰŮŮUQQYU]Íť†eL|BŘŢ=DE˘‹.ĆÝ?)¶›B‡Nx ,Ű:·˛ˇÄW ‘†´řĽěd~r|GOL›Óţţ’ç¶—­*«ŮUQż7Ú—•ÔŻ }čE“îJ‰Ë¤„öv÷ç«˙˝©déŢĘM%U[M SňS‡ŚpĆč~3}g}łáż v‘±6}řĺ6Kś/ŤŽ915 {ëNĚűŢwŻ«Â×°đkőę|yŠéjÎŔŞěBcaáúa"–®pÉÇ–e"N=LXŢY=ľ9b®0m`l\ \aTq*–ô®!Đśš%ń~éAŠ'Ú„âJl˛·±=+g…#"łSăÓcJ«w–×ôz~Ët‘±áLşîű 7ŽéźÝ?;yüŕÜŹmqwjĂëP(ŞÍ¬Řâôú@í˘pwApň«“®E´?{E¬ť¬źëĐ5 k@×€®ĎŁß÷i"źJ‡¬!_ž‚•†3¶ ”řć„1#Fy8j‡ß c f HaĎ€„!ďb-ŚÁb˙? Óĺ(@ C#Şć4Đ,5>Ä)âRâH“-ÁבŇŃéĆ˝X·qíŞű‚‰g_–™?@pĆ2Ű˝s•pńě)«˛cşL…ˇ™qyÉŃ]®:µ\^-µ»; ưv‚â”–¬*^*r°6łÁéęđu×aP6µą7—6l)o°™Ťíťa3b)Ň›ké—»nOťĂĺ.DxlGddˇÎć¦ĆĘŠ §Ă) Ëč8j zIş–Q{]äúĎZłţmů¶ąAT0˘ŕä;ÎůÓŔě±AhŽČĐ®ë+ęö VĹą“⢕tďďđżöÍgçü¬¦©LĘPŰT^RµeÉ–9łżůËůď@-‘d|¬ŮąŕoÜł§bŤ§oÉ–ŹŢüúŹ3†_q׹IŠÍPŹţkţ#8Ći>cĚőęQ>‘5ŕgćDV‡~í}SŘ˝:í*Ähě<ăîÁĚĹ$%ű3qsɲ`DGbě˝EĎ<đĎóÄkgůÚ#ÁňĐy¬Ú1˙Ń7ŻU»ęÔĽ\íŽwţőŮ9?U#?ZöŹźĽ8CăŞSÓ|ąnÖ Ľ·rł©Ăşi@÷ÖŇŚŽ?!4 ¬Í;.9,9,T’F FăUí¨űFłWĺ W ÂŇë–w †wF 塩үEĄUĂÖ—^M,Ü…HĹÁDż†šSĚL‹ŃžCÖę†v\„śRŇEľ<.M­IŞaäs†|Ź ]'ŢfMKЉ‹2/޸ŻÍéQ”YžpĐV¸‡‹™Ś†”¸hĚÚ={öpĄÜ2ü’Š9î9|—“šQů%–”jbÖ5 k@×€®]}DęG•„EX6‰0fčÂÄĂ‘­,aĚq/v0Ř-âf 0€ÄYc˝ 9}(ĺWőЉH븓kt«N{KK}}ÖĹú¤9áq‘)$Â\ĂVśźe°]sµ?Éĺlonf÷V~ŹĚJÄ›Én5FvÇŢŃ‚–µ‘łĘd–›pʰô©ÓňSm‚ë&ŘĚ…1f#Ý^iL빏1éI†ĹÓŘ^__G’łXŐh"X’I^+%¸®üŞŁt „ ŽÎöÇg]ďnďőfĽű(É“ło⪥pqŃ)ŁűťšžP 1ď.zzńć9ł§bÓÓÜ+O,ĆčÁ9 ҇ń'Vâ[ÚëĘhJŚč¤îĎM Żkŕk;ĂďŠĂËďČ‘G xÇZ%‰“—ěöĄŮ‘&€‹mjL^áˇË+Ć”'–wĹ%ÖŐt&ÂbV_4A„†RM,(}1Ađb!ôHâqŰ ŘkO=[̆¤ZŹą«ę[ę›ŰĚCfJĚ€ě”üŚ„Ôx›É`hnmŰYZ»zGYiU‹˝J?  BÁ‘Ĺ™S†äŤ(ĚLN6Ň -Ľ#×f5aŻç§­ß]Ń®2˛áBJśÍ’Íž3u¦ąFQ%PŁ…2ŔGË/Ţ/ŇŹĐ:J×€®]şt řh ĐC¤×ŹFΡ#„ <…ëMŘ-3`̢v;[X2ĽăC0±± ¬Śś «†Ąĺuőx!PJb)ł/F ůĹűEŞel}ćrŕŢ2Dzżě`8-­v%Ő€äŐn÷™âRSEÚ)ŔÎĘ&«Ĺźm¦ňI÷ű,˘đđoÎág1Gş\¤¨R#/ÂlĆm¨xÔçťĹG’rDcC›˝ĹIU» ~:Ďţ˘X+8<¬0-fç¦R§›őAłŚ0Ž=‚†57·´ÓkÖsDM.§ŰÝÖjŽTĽ®)ß•ëŇ]!kŕÚ™ż>sô ;Ýmkv-·ćŤŤű‰Ů%Ő[÷Um)L¦a†×©Şa˘-ÍděŽcŐĐČSú·:›cŁ%¦·€Řfčń-Bň[ćű Ňęl±š¤Cż{~·Ęú}â<Ú˙řŤs†ćM‹î>°á/źUݸ_Ś.ÝúɤÁçsiżăJ§Ű[A›˛š7ťöű«§ß/µ;šž|ű¦Ż7Ľ#fmÝżüőO\7óAqŞżë¤Ý[H3:ţ8Ö@oMĹn몲¬ąlńw+—ż¶X·8ě Ár•ő_Ŕ«9ÁJ¦kŘ’Ľ8Ôô`Ô§=Âľô„uŢ““ŰN’Őlě%WĹT4™ ±6+an4©ś—rÍ©ŁÇČNŠŤbó]äkŔ“Çáîňş7çŻýbŐöV§;ôâx¸ęRŁo9sě)ŁÄE“ŰŞhUs± 1dňň-â 4I˛9©qQVc]}}ii)—™––¦~ű*ä ů>'˝Ą÷a #t čĐ5 k@×Ŕáj ·#µ)˘Y›!1*Śi™đ˝ÆS.ě(™,ľF’sńĆ@s*ůB§÷ĄNBW°ŔŚĆ®%:]·Ă’¦µ¬ĄÇÎ$sŃw%R GÉáŰ ‚ł_ţ aĚđ ä) F”˘Łë«Ç©ĄDfqÍ)Ľ3Ä»8_H_µĂŮ飡Ԝj¦(n-bë;§Ł˝ş˛™žh ¦FC—V Ŕq¸Iˇí4v:.zÔ* ú*€¨˝°üÔí卭ÍjoťWpĄNťś† 0"˘ľ®.1%=ĚĐó7»ŕzÓhć„=EKMÎĘ%µwv4ůޢďJ3¨6GĆLJşÓfL9ż’ęKĂfłĆKo]Ł˝FŚRĂîwŻ_QQ·G“4JűO†Ź~~É xâ䞸ţyľ :OŃ·ýŐŰ^›÷{|mĎÜą(#±`GůÚ–<'§,Ţü!ďôQĹ[×ĐRýë×.ܰwˇ$ŘVşâ‘7ݦe-Ýň´Ń× €V˶}"ŕg?úŮ«˙-g”Tm#nGŮj‰ä*x}µţíÍű–ţôâçE×®Zŕd,­Ů™•ÔýÔ\|ţ//{U¤Ĺç `ýžoĺ”̤~gŤ˝Yž €›uă©{Âë”Ĺ„ptÎŻ!ÓOu ¨5Đóßt5µë8ŕéŘ«gô~ĄężÔHL[N1s9”śX“ o.›™ŕŁŁŁ©âŚE‹™‹šç»FžN•ćexëwdE]óG‹7żőŐúÚ;[Ă…‰Wź2rňüć6Ç·kw/Ű´ŹňvrSFöĎŘZRŮcx )3ˇ8796jů–’Ź—nąň”Q§ŽęGóYě¬ŮiĄ¤„ŮŚ»°žB-«±˝Ł“ţŮ©‰X++V¬Ŕ´" 6##KöŐŚ/&÷ %}ř(k€TëŇęíQ–ŘäŘĚĂ_ŞÍiÉsŰËV•ŐěÂć‹¶Äe%őĂ–şhŇ])qهϿorhowż6ßűőĂj˛]yň}߉ś+wĚŁŇŤXú¤â ÔűŘÇFŞŇ`(‹µF÷;ĺpĘčőUŽ”Ň-C/Ęzöůť3çx°żí´±‰7‰˝ĐAČů>=Gü>ý­}Dř2Ç>Á\ˇ/v F &Ť¨Ě <Łě; cŰďłŐďĺűHá}ŻŚšąbHáÂđŘa]ÄáF k™ŚŢˇM-¶dť„w·`;Iąęđđ¦6תݵŰĘ› ÓmłbýúěČ6đČĐł/Ź NJîöh„٬†Ô8ëţŞň FŹČ8éÂąA4×ĺń,uRWŮŢbçŢqŹş®Wů©Ö‰ŻĂ4€Ć0&ůŔsŘ]ţRćK|«»W»(Ié÷wđ0…ˇ Űęťó˙»řĺĂÚuôË HFŞtŐ‘{ůÔźçNÜ_łý_óÁU'hźűřç˙{ű7Ŕ+w|ŃhŻH\`?˝čy"éČB}â­ .ż©d îż©C.ĘI0ë›?­Űýµ ľůôGŠŇ‡“xKť¸o6ţW y'q•ÔTęÍ}ľúßŢęŤr4@·‡¤ĚOVĽĽ­tĄ 1Dš¦ą¸Ö(B˙VîđfÎ~ąî­[Ď| ÉĎ”=~Ë~o\Z±ý3^̵lÔ°?ŕĚłĆÝŚŰN®¸µt…„á a ™X(˝u\šfT?Ő5 Ń€î­Ó(D?Ő5Đ­aâř5t„ÍŠ!‹m'™<Ý1v…‹µÄ© óˡ{™Ł! îĹää䲲˛Ý»wS.#9Öj2¶ą\Ř ˝Xżťí]ĹU÷ňÇËgł^±qˇ‘ĂŃŮc5g&Ç‚9gÉ–mű«ÉNÍKMŚŹ¶VÖ7cęY…°EĘÎ)}*Ś‘[öW•U7¸pcl”‰ýç˙Ě[]ÓŘ:*51ÚjDżt·Đđ!$+%.-!Úáh[Ľx1¦UQQ!˛@§ßů­ $Ž÷ŐŔ{‹źýjýě-ű—·9›µšbçN¸ý¬?biů‡‚™żöÍgçü¬¦©L×6•{’8ćĚţć/çOĽăŽsţ¤Ţ%·˘˘nŻ .Îťť$'_€»ĂEú‰9Á–ö]yëfű—%[>b üńúcď­›őőźć®|Eđě]KcŁôl”ăë|XŇâ°»­h>»mÍźň˛DÄŤżrlÂŤyŃ‹ožěűĽ•Â!˛ŹQ¬µ1Ă)CÂOńw{‰ľWHĎ•E şěĆ€ěKąž Wméy|`\ÚAY?רX1áávgű†}ő{«ěÉQý2bcH)g d`ď°´¶µŮáÎN sĐpđĆ˘ŹŚŘN>85 -VSJŠ-Żľuăľ:Öőzę)0´ÂcăâŻSÚqÔy"žŚO×xëÔlu¸G  y>đü`Ő“@Ă{ŹSľ+!$«{>ęĘŰ‘äŮ9?}ÊĚVµź /XÔŹ{oń3r-RGĎw‹8Y8ýÎg”x:Ž {ľÝR˛|PÎ86Ɔw§«ÍidoěÔ‘WoŰżR8Îđ‡ŰŰ3“ yaHoÝÜIŁűÍdÖ3s~*?˙ɱŮĎß˝<.:üŚá—ß˙ĘŮ’y ŕŞé÷Ë-Ř{ţ>U’]7ó×ןň§Ľűń 3ÖîZŕęütŐkä«?rý{w<3Ŕ:ľű +Txî^ýâ·NşëćÓ~éieĂUH˘äŘ€QŰIŞÍć†.?¦ś¨ş4Đ˝u…č§}ZÁ­´T„8](&Đ‹˘uĽó8Ç´%r S ;I$’ŕ¶§)żĚŐ’«Oĺmđ‹d4Ľš†mó”””={ö¬^˝š¤ŃôÄ(sk˝«QĘáY‘JÔ—â‚TęÉąÚÍ&ĺ!"Ľ¤˛áĺO–—Ő4¦'Ä|»ańqOćt·'ĹZéÖZQĎ>[6„ŃN7XÔÔŚMÚŮľtK /.’®jMÉńĘrCsëşliµ•KzȨ~łqűö­k×®ĹCZ\\,4/eWëA"Á ÄJÇA ükţŁ/ök5CöoWířâ¶˙{ŰYĽbÚĎÔCˇŔ«vĚ'ůcÔ/1UŢYřWěÔ{Î˙›$xoŃ3.{^ś>őy”Ł: k@×ŔńĄ.‡ÝŚ–öę¶Ž†ĄµĎóJ1ÄgwT3dŃRđ§‰_ÁW·„8]0Lxh˛Ą'"é°ěv;Ć ˘†6 ŹW—†‚§†Ě/š@xőPąŠ_šđH’xiA–ࡠ·Ú˘’â!ŽTJŘy¬Ţ•ŕ!Üwaá8ÝŚĘV$‡2ČO<›7«™n¨·ŐáŢXÚ°«Ş%79şş-9V‰ýŻhl]¶Ł·YK«{TaBFŹgď›Çű¦$î*‹uáÂĂióZ_×jĆ—Ş4ÝbXbw3Üa0“ąS‚ÚE‘<:QDF¶µu·ž8ť—«ň| !Ő‰ ˘>ęî¸ęřEŔ¶ďłşŔˇ| Ĺ/fŻ~ń\”b0Ťî:ď/F‰p0w»W-D«‘ň)ą‘Ô9şč”U;ç ĚîŠ xëÔ™ {*7ţŕo#5Ľ`ęđ‚i—OűY(yű«·Ë%đ¬ W Ď‚‰ôîI50cř?<óq‰!9CÂÜ돖ýCśFFt»Dđ oáu/Ţ»šfô©P§KvGăë Glî‚D°ęĆR1ÚÜZ'É4€Ăi—R:$¬şüj űŁéwXGę8öP›˝zö¨'ŞĹ‘É!LśE‰x'%–gĽ(fGć)¶Ż0C”A-v yBǫť••µhŃ"vö–ć¸hknj\yuc¤Iq)†r`«˛áŽáKhžÍ‚Ům‹î(­ůŰ»ßbÇâ—Ă®¬nhnhiK°Yb¬K·‡0pÉŔˇ. ÍjńmzlS/‡»35!†E+ë[ímjWްYLcćŕéűꫯđ–bĽ['˝uˇë ůzEÜĂőčĂGTź­ú—ĆU'ŮăP{aîý# ¦aJd(Ŕ“łoR»ęâ˘SŠ2F”Őě jÝ2KdËbE`ŢHbµ`Áá@ň„ŽW/Ş™Ą9•’xńЎŢfo‘_ &kFFŁxë\`ݶŚrFxť›bj¬‡©âÉ“”˙šĂŮA }U-YIQىQ ­mŽvR¨|‡»Ďă[“âÂŮÓí´;]=ŃćHYťŽ ííťÍMmĆpł˛•)šĆ"A~¤ÁFĄ¦ĄJoťł­Ĺéj7Śgn;úWř]/®üź°H´$bë„·Ž­ř°ľú]™2…)âŽöÍĄ™Ău§<$bčöUm‘łŞSŔf —Ţş}• ĺ¸gŕ“˘őŞśENĂ—ëfńzú{¦_đă žma%Ŕ6“V”0@˙ĚQÁ˝ucúź&é펦şć yúęKX ĐŃBž’EqËéŕE— âéh˙ş~÷7šbyo}óťmi¤›—Z,˝u%Şb‚[uc™Ëí C–ö¸’vR 뀮żč«ü «#O< zü¨M·µrL‚L—CČĂó’­iŚ'ĚYĚ\6ĺŔcőbéö(¤š¶’łÄűbÄP <Łę!ÄČĎĎÇř¦kjYyyzvnż¬äĹ»rˇ €bĹşŮ]7űřř@F„yîöŽŞ†–ş&»-Ęe žËrĚlis5¶´1‘|X\oMaiC@=;ř“ëqčy<‚)1Jć$ôËLĆ—·páB4ŹG2;;»Ë® r) ©%ü"ĺ¨K ¨s.FθhňÝ»Ę×}°ôďÂę"r‚d„'nňćT†"y•]ÖR´%ţńçP‚DüUaÓř/źUݸ_đYşő“CóÖQđ…-h_a¨´BF_Ľ/†Ý}‘[á;:†Ź±¸.ő{űW%m.ewĎťzČE ľŰ°ŠďBľÜzÄřŘwĺ ů“ĘŠ0$ Wóu—áŃĆ„x]G[ ťżŻ|vĐŕĹŮŢü/K)˛Wx2d'ůÎ ĂŔ/q(źa9ńđ™řĺ ůpŠ8;Ś ,Ü„qSe‚()OŹś94dľAϨď/&Ś0Skcwé1śt……ůřÝ" jÉ€»¬ŽNLľ<âęřó _%ŔN ˛¬Pnś'ÎŽĘĽ»*š÷U¶`ĄŔ4Ú™›˘Ô&FOü]ŮÝlj[±ŁÚlŠ[śc:h^x¸ÉA _Z§č(<<1!!5µŰ[×ÚÜDV‚-ŘŃ©l[ÂKu›é*¸`'ě(ę’™°XňxÄú¬·Ł—ĚŢřŢe‚ăh >&Ł•†§ Có§Á*1ňăAH {§´”¸¬'oúÇś,'§ ěo7ţw{骗~Ľ.Ú˘”Óń{8<抢G­šF§ĆK8.Ş»h ý.$> ŢĘ•d4„ÍJşă‚‰w€Á ůĆW”•4ŔP±Îă­,ëßÉŞ¸‚CMcůŹž?—ĺ®{wÝžo$ŰědÝ['•ˇţ5 {ëüëEÇęč­0Ý8đŮńÎS“›‰'(ŹR„'AF{5ä—ö7ž,LíúúzÂëró 㦠˝0»±•ú/ěH‡‡“KT¤Î&»łąŐ™c!‡#řĹÁ°ąŐ±żŞ±ÍéĘMŤ'E·¦±ŰŔP·­BI˘^—+Ő?›¸ —.]ĘW‹±cÇ䨦°_ťř’é>¨Al.Y*ŁČž5‹)jÚЋٿ}řß—üޞ5˝’ÓPŇS«xXţyJ‹‰[Ď|ěń·®öQ¨@üőĆ ,2#ľÚ0űâÉ÷ÄF%Q)YłCíî˙|ůX}K÷7Cđ%UŰ~˙Ć•;ĘV Ţ+ęöđújýŰ›÷-Ą<łt-Ůňńcł®ĂI')©{Âkgůšwýďź~đů€¬Ń ±…»pÓ{‚†ś ŮY쀳™˛zó×˝ůŰkŢ~ü­č!h°&KľÝŠOío˙VhŹ}c)3.$AFë ÉKúĄO-›¸5´T‘ŘÂëľK^:{ÜÍ‚žT‘_żvᆽ Ĺ)ďŰJW<ňćŐ¸ĄU}Účkĺhpŕ·Ż_. YČ™¤j Żő{ľýɅωE‡«g"›đj>,Ä뛍ďž5öćź_ü˘üÝ_łë«G߼F&¤0…`I^kv}I ŕ?ß:Oƨąó)úŐ«çě,_+đfc”řҲ­l•ÔŘ…“î”ŢşGŁÄ;ÝmÂ[§&~ř?—v®V®kéÖŹ=Ż›0ôĺ}×Č źöV-îęĹ5Ď9:”:k‡s Ž=wmý,Wg«_&dČ’űé»2dé!kőKŮ+d Çʱ4fX-†€S&"»…+Á;řé0fŘíC°ÓÔ<…N|1ľxhX"Ą/} ŚŔSĐËhµŐT” ¶ @ë?``JR|éÚHcG§3RÉ[U QşÎ㉠Ă[Ił UTť&ĽHÄů+˘*F”çgXXC«{ɶęmĺ¦~i¶śäh«Iq˝‰6B$ő; Ô6;ĘjíÔů… ;1ş 5ZměŔ[±=A%Ř/Bé_1xĐŔXďóŽđ熚j7Bxę—µ9”Ňuܵ : 2¤ďÄ„Q‡tŘQIąĎę/ťtŐ!ó1“37e\k×uŰKWËf_Möşo7˝/Gńj?÷Ń}Ň»óÜ?S¸¶éŔâÍsŘQ“Ö{™r–řŔ 8+©ź|’’lqÚ¨k…1C2¦‚¤ďŕoZVrv1eNĘ@é_«¬/Ůş…Ŕ w^j\Ž,2wĺ«lXŞźÚŔFY®ČĆ-0ÍĺĄ7v·OĽ}Ăłw.aŁ“#;y€ĆG =YŔr#V˛Ň] „ä>ĐĚŃOu = xž’=r°?B_.Đăę1°ś¨üÂsϰ°śB#Đ…  żCjÎyŠ÷°¨¨h˙ţý«V­RM$D§$D7–:şX{Rłb‘bú*r.O÷± hFápąIP%­UńÖ±‰ô6ňŘŰZRU]ßB×E™ëwW4µĘuáN¦wvFb§ňÄQęĄ8?yPnjDXçś9spŚććććää j!Ľp_9 ůĹűEúňÔ1GIÉqYןňađś3A®‚i%aŞ°ŃŞLžöâ$ičöuýSFÍŰ˙ô‘…'÷ËełÄť9ćI: 3 ä,~XjWťřxĹK„}ýćę7’FljWťšü˙Ľóďí ŁŇU'‰‰Ý»ďĄÓĺ©áłUŻť?ńv‰ ř­¦ ý˙}ř㓇]*ŇUžz÷6µ«Nr“Ć·Ä„HWťš¨´‚´ˇÂ¶pÓűWť†«wJńů Zjp#ۨ&đú=ßĐíNÝd ŕŞű¬â7‡<˝Wůö(2dăä^“;+xYßg‡úI|]ßą‚>tĐ1—ĺD1;‚Ö1f°"8ečáW<Á™wßQ_LkôSćÍŐXZŇÖŇdµĹBŹ“ž“7¸áľňšH‰ş_ťľ—Ăěp—«ĂdRňNÍ+î8e5^×ĺńXE^={jęz ¬¬wT5:6—5őK‹ÎKµE›”¬[Ťü°tut”ŐŮ«›(ýˇTýmnsŐŰîö(%#AYU9”‰Ęĺg;tĆH«É:lİŘXĺr8¸´ĆĆzwg¤®”áT» ©@L×ß}5€˘8x|sđÓ— Ź`„aĺçĺXFGWuoö#ľzVżĚ‘XeŹ˝u=ýR…ńŃ©Ăň”Ä âô2=!˙‡g=‘“~Îřl.YöŃrođš!ŇOĺ¸ÇîěÇË˙!8ŕüů?”‚Â|#yă«'ýf­ Jżďý2FHoÝď^żÉqŘáp|röÍ쌊)çM¸ťę(2dyí®{ž;éćÓ1ˇ÷ÔŃ{cÁ“H"—űÇDŢxÚď^ś{żŔcNÜř—!×ÎxYWLű9 Ňýň˙đĚ'$5Ŕ¶âňퟪ1ľęä_e —§:p"h@÷ÖťwYżF­‘¤ŃHv'ODÍDqę;JěK‹>kÂ…†­_2żH9ŃwÔ©ť——G šőë×amŤÉOOŘVR-Ý[’[ WÎ7vóđÄ Ň/%ţUöĄyµg â2%—kÓcňúťŔvwdxemó–ŇŞţ9)S†ć±r{“Ý!fŔ­®ŃN ¤(eŻ[ĹçÔ1ýc¬¦ť;w®X±‚Í˙ŃŁGßó÷Ő‰Ç/Ţ/2€ř:ú(j€ą›Nűťfîž#‰ÄbËTžöPĎxPöř-ű— J*߉LN-&VÚřgž5îfÜv‚€DËśäłľů“,f|óéŹZ>ĚďZ„¤¤ÄfQ“,Ô‚1:uČĹlA“W+ýz_®{ëÖ3§ęđŽ˛µ2Ą÷Ľ ·‘‰; cT,AöńešŠ- ÍqŰÎTkV»Řđ4Q]…ÂwţM–vf­˝u°…őóS‹nţ@‚¤ďŢĘÍĹąŘĐţFćFn/ ĹÔ˛ů|őżQ¦¸·ď©ńącűťVßRµ|űgҢ}}ÁçNř!•ţ毝%ŽpŮŻüYg”sOŇ«đÖ±]/]učüôŃ×sź­ţ—ô™ßuî_|?0}˙®ĺŰćv­ţËË^QÇová{ý396{`öÂôČá•}ô^ůü7\‚ü€őš©>AĄU—mWd›®B÷lqW‰­ěxŮŘşŢJüÁ„Ő Ă@L|§C)üľPI+˘·ĆŚďZľµĚbE5Ť–”~‘Śjńî0š±k*„·s”mŇÄqź}˝Ś!—Ł™ÍŔHŹ]ˇ6S€ńÓ°ŃHŽ.ëĹ;^I}^<~*ßşˇa@^ …jĽµMÎeMŽ-eMCsâr’Ł˘Lun,łę=u”F&·–,;Í];”ěWeľç ţx¸+…@ÂÉ® ĎÉÉ0p ·C4ŐV57·†E(™Ë`ܸëÜnî”G*…D«1M÷§Ť®8ĺţ/ÂĘ›~´eľăě?Ýń »§Šz°=n}z”ďŠ7žö[«Ů~XÁTé­{óë?bőßŰ^ůüáź]ü<ĹOçLÜ\˛D¬˛qß"^ľ+†‚ąĺôGţ.Eúnüs1Vźô0ÂűMT)Qp2›¸‡‚-«űÝ e”ÍB¬8A†WŽťEYż7ß˙Ľs‹ŇĽăŢZşR„j†XK^¬fčôQ×éŢ:ŤNľ÷§ş·î{‹Źű <„gĺ1{\Q®ű łÉ÷›aą!É%B¤ÇuHLíŇŇŇ-[¶Ś?qH~ڧ˶…8ť­nětJ±ŕ†Ł&]0FeÝt›śA— ŕŇMű¦ É/ĘL*ÎOŰYV -,ߪĆ\„q6 ŃuŠeLŻ´ŽÎ´ÄčńsÍ&Ă矎ó‘ť˙‰'ru˝UKPąôÁľ¨Ę®ýqöÍ2/™|oo}äú÷°5 ¬ÓLÄhž;:W\8é®›Oű=­2“ y‘p!˝uCr'‰"nęŢ^°Âoőŕ˙fKÖäI‘»ęź’˙u3-ęžPÍíÇ/Ě芺ęütŐk7žú°:pě†SWCň&SđNÄxÁŞJ)c,ś=ö–ű.U6śĎ}ýµę/‡n;ëI’Fqhşß | Ŕ=9K }&Ş)S2ŹŘCűVZ˝oÝÇ+^R1oÔów/Ź‹Nž1üňű_9[Í'DüŮî]ĹŽ=ôT{! QL$­xÍÎ/éé¶lë'““ńŘ ţ›÷/“Ţşu{ ŕ×β%ď?8ăQLg€łÇÝr飙m.Ą &ÉĹ;Ę×´bIÉ>9µňô®s˙|ÁĂ>¨’óŹ­ĘůvăűýëBÁ’j€¸)uwŘ+č ĽŔUwNż,‡xhŰ@gŘ@i°0M6 ›xăaÖ­;„ÇÓwnĎH™1c°"ޏ<’żĽsľ9Ô[VŘ ‘V[eÉ®´<ď_HbĐ&ž45őĹ×j쑦Ž'ű…ĘdXâ”®¬îđv’»ËC±m‡H—ĂŽSEžE„µ"|v^1=Caővç­U‰ĄćÂ4[AJtŚ•ô[…;¦Ty­ť‚˝ĘŇĘ Ĺć]k)«ŇB€ô¦0a´ĐM‚úĽii©ňFÔŘßâp…±/ [ÄÄ[‡H’Ŕ+M׏´]'úĎ@KÇ…˘ľ+9ĺŚĂžymŢÄo…Żq`ť;îVżfúŻľŮđ®Ě-­ŮÎK=eDáô“Š˝Gę˙ľýíźĹ¨bö4î/ŻÝÍé/.}éÁž_VŰݶ‹÷7łë´‡źé‰ů÷ś÷7’¤äWŁÂ<ŕ/ŢCW˝ˇ(íż¬ ҇Q V‘*„HqąA(‡|Šź´9[ΛđCß!Łk@j@÷ÖIUčŔ‰«@Źä@¶ŽFSÁ§3z8®: sÍ©FNý$ž,E©LLxɰ“&OZnłšťne_×—•CţH=f#űŔ-­Nͨć”ôW^¬«ÔżmWv„5ľ§ĐŻÜZş}uzBĚÔáź-ßŢęRVÁZ­o¦_G§Íj˘alYŤRśČĺnźPś—•ÓŇÜüöŰo777Ź92??߯ŞýęDŕ;¤ÁhN}ĹÖ1ÇXÔűýëWČ€5Vg˙“ř©ŢŠAxÝ‹÷®¦YÄ‚uo©ŁŇ$»ŁńőŹ uÇ9’Č?Ţô‰z§ß–śÂgéŁeŢTuŮcś€xëđĐ‘đ qSkA˙]ôD±e& J†ú"čáK›6Á/žz¶ŻNĺP÷qŁßĂĄJ1=dŽ–ÖŞÓSžY]×çŁđFÁŤ`4u‚L`ţÚ‘ëNyH¸ę8eäUłżý«Ś|䎓ó2÷J[4ŔfřüułŘݦÄĚ’­KFB9ŐŤe˛yá—Nń`’˝{ߥ/1KĐKĺtµ«Žkżô¤îČMIs·U®uŇ pŢÉjzĄ5;toÝ!¨ôhL®ş–öj_ć–#ÓÖ—óŃŔz`…ňGž@Ó‚Ł~ź°!^†ąćÔ/__Śśh“XşgÇŕ‰3é=Ý;jČśyK &‹łŐA€0‚đšu+JŇ+Ţ/ đÎá°SÜ~xŐot؉t]Ď eHń汜 Ŕ;!, Ż\UcëÖ҆´ÂôÄ(cťÝµżÖŢęTëŕMh•†Ę?umnw+ÁuÔµ,Â5uú´ä$ew„Ăĺh«,-iqµăJ%›;MAş\hCŁÍ©g¶ţ¦kŔ«[Ő«őEŇŰ–OĽ}#%YŐx*“°_¨îSAŤą§~đ; ěói˘ď‰:ż`âť×Í|PěŔÁgTŃŚK¦ücIě®IÎůiĹléýăÓ ÓĂ:BŕqýĎ Ęđ¦}KŢ[ü‚ĚŘ•N«Đ“$@ů]šbŃŁVSK$3©Ž6ö#%%fÉË?^÷Á’ż“ĺ ąLhhŔE–+űš˘ş®ś…=FKŤ÷?űňçÉä9Z”1’Ň·_¬ůŹÓ)M‚@ĺtĺD8a5 {ëNŘ[ßw/id…üýăűčî*ó%ýŇ«‘ô•§Ŕ4š§äá Ŕd°H‚Đzk¨m÷ŘhĄ|˛ú h‹<Ĺę•0@˙ĚQ2QŤ“¬Ş&€§ôÖ ·ĽWşÍ¨Ű­¦ÔŔjÁ¨Ź#ż@6sÄâ@§´ćË1nĘ@ˇă5ĘY4ă‹Ő˙ÓËjĽ®ĂĐąé”GC~]uxLş2^/2FĘ/˘zőę±ŇGř#ô ńť.çúůbÄ}÷‹÷‹T+[ĹŰx`W}EirVľ`EVě9gź5ď›ĺ4“ bĺÉ"”’…×ybć1•Ęą´zP9ě”*sJ„ťbŰxÜĺípR_U^WWëF|âőÖ±Gę«– WŐŹ[i=Đ>ţťˉ}Ű]±ý'ş´hFŮ_ÇűŁ$´Ţ|účwO5ş{5®ň¬Uő@IDATRăshŐEczőŇĚ˝űĽżŢrĆŁU űť®6Z4$ĹdvÝ~tÁ˙“`A$©xFĎ]ńŠś.»fA&(ĺŔ%÷Ü]K‘|OĹF¬>¬…Œ᢫†’(2Č´ ¬Ź~¦P釬…ڤBŠ, ÍN‘íâ)÷ŕČ+­Ýą·buNL+–$SrSBŔrtźżpŇÝ8=ĹôgďňćůúrÓ1'¸toÝ ţ8ž.ß×řŇKä]ĚáK¸Fřâ}1’‰ŻBČÉ:tč˛eËÖ­[Gs7«É2(/uËŢ*_J KĐf1™ŤFš˝Ö·´qŞˇQťvĆňPŤ˛4ڵͭô: F«š†™şdăŢłÇJ‰Ď>oňŕM{*[śÍĺpşy2ۢĚČ”’™2${@N µ]fĎžM`ínGŤ%˝u˝Ň ë˘>¤\Ź…ŢúćĎ8łT%źĂIr¤čŰá{Uh›•t‡HüÜWą…äSúČK˘kŢ:E%ć6·ÖK&AQ#Ăôľ—ÎĐdćĘćbA¦‡>¤„l„vDYbĘř5Č4ĄôÔaÁ™¨G5L|7Ć_ýâw˙üâ·ę)~auCŢëAßüŇűER:š]qLmżŁj¤»ÝĄ>ő…ĺ× 1dPB{ôŁďhŔ×U—b8&á†1 ×Ç˝.ď#.m 'ÎqgĚş©1Ńřâ}1‚Ź_Ľ_¤\W„óĹŢWşcŁôÖdwŇ)§ŽôźĄë·LQ.G#N2á%SÜgJDśňł@<%·4Üéę 3kw„]8‘Żęˇőś1CyďrÝy\uŚgĺOpxgŁÝµzw­ Ă笠ęHí 3G„SîĂ@ç,/˝ň٦ŮŃŠŃ?Îd2FÎ>÷쌌t9^±oGS«+Ü`R6Pů)ĺĂŰ•łj ą/F2Ń]‡¬>s˘TH(l©ĽÂ ¦öHĚ~ˇđj Ęw>ýÂ'ŢÖ ™IEĎßłB~Ô—XÓտʴ„Ľ9K‚^INôő‘yÉéˇěrę ‘łHJ /dpÎx‰Ń]4 {ëiFÇ?5Đ[{E±}ľëŁ·2‘—†nÄgWRRB„ÝÄÉ' ÉKťą9ČďÖ§ÇŽäÔĺf§—ÜŤ€“0zÓl)ńŃd°VŐ· )J.śá ‰Äš¦Ź—nÉK‹ź9ŞßGK¶,ŰRŇFS ô”Ýg‹1 Ôh8{â hł‰ć_~ůekkëŮgźw¤nÖTxOW¬Ź‡ŞÍôĺĎ~-©)^ö«Ë˙yȉ„Opďśe/ n×Îx@”“§Çýü’7î]${>¨ł>Ą~Ťß´Gµ»í×ý×ﬔ¸đ{˙骣ŰYco¦črQĆźĽ03P±ażÜ‚ ŹÔ/K¤'Č DÚ_ É›$× ]]r Ŕš]_ŃQNbÖďůV¢‡ÚUwň°Ë¨9MQ?Ňa~ůň™’ %.[žŠJvňtOĹ&˛ŚĹ)6·LĽ•1ÖDYÚďĺĎ3sÄ•ń6oč˘ň¸ëhs)9ąâPg:wáúIYCY|šu·ĐýäXiŔ㪛)`ŹŻŚW4ÔŰçÔüő?äűÓ[™C_(8gBÎ, i{wl0ć$«ÍÓ;(<<9=÷ŇKĎ_˝ůĎ‘·‹NVíá řŇđśáRóüĆ+N4lOŽ*vŠůáI‰őv¬Uüxůě!ň0é^9÷şíT4o·QeA ß› ńŃJtťRşÎs[ŃĐęp¸Ă JŻŚŃŁGLť6kGڶ4Ö—îÝŐěꤣ™â­óLÂăĎáu ®ÁD×5Đ÷5@”şÓÝ*䤣ëůżK”3ľŐŃLm8ŮvhŢżÁq}öęÔ)·}VH]°ľ Oעľ .®. ôÖĽ€ŢďŃĹďŘýô+ČĐ%Bˇ—kůű2‘ÄŠ-==33łĄĄeÁ‚´Ś t]l´Yš†ľÜĽrB:ÂnĹIÇö2«° }éaEš*â)qŃ•ôw¬÷¦ćůRúĹŔ|áúÝŰK«ÍFĂ•3G §©|¦ÂÓ?{ÜŔ|vŻľú*ý%Hď% V¦ľ×Îlyůšá5dâÔ/gż”:ňk€ş$T<‘léŇőŇŹÖúuŐńŤ NĽČ•S4@j\]GĹkîĘW™Ą&ŔéfôôČŘ(m(xĎ:ő$?0żnYÉýĺ@NĘŔ“†\(^˛ĆČŹźËS Ž*l’ňŻ?\pĂ©ż)ÎťH뾪śérć±ČćK˝·ř™6§×EŻXĘđɡЕ;ľÄ¤ď,_+OÓ o”§§Ťşî·×Ľ…+ »ś‰@fb‘ÄgGŽł8ĄMâO^qďßO/u+:ApŐôű_¸g%ŢUqJWŮćzwňÁĐXŕyß_µMÂzjK÷Őú·%1×…gSž’z#a8ö®:{{ÍŰWçľńPńK˛źĎ‹îö;ľHüŽ÷Љü› zĹäk§ˇ3SB¤Dě‹?4I#Ňíjß·Ąű Ű–g^pÉIă†QZ×d¶á “†n9 ÖňČŻD˝)p'[•ěCéóüđPzI”Ý&ĂžS/nśzÖQ¸çy(6ÇYMžE•7ęĐŐŮ• ­N*‚,QѶk®ą://W”ďÜ\S×ĐiRRţ;ée)˛•ovĘÂŹŕŁçé#şľ Ś,8yÜ€îť9˘űéÓµ­t…tŐŃSţŢó•$YýĐ5đýÓ€[÷ý»§ß‡+ dIôjsř{ĆDŢ×@× FEEQşŽŘşĹ‹;ťm‰qóRmŘg2+ŇÄ63ýČšíN2R©^—µŻ˛>2ĚĎÚAä¤ÄőĎTJ ﯬÇa׫»ĆŢvuýă%[G÷Ëš88oü ěą+¶Y1«•Ęa$áb–^4mhl”yóćÍź}öu3gÎÄ)őŁBщšŢ/‰_by44@`ťş21;¨22N,g5ۨ*‚—íOďÜ*“Xo=󉫧˙ŇŻ<ęŢ ”E»çą“n>ý÷Ä[ń=ŠÂg´%RN¤s‚„%@á úeŚ`Xüîő+ľz«l/]ýäě›w–Żřó&Ü>4o2MB%źć6%…â?żřťşDńa~Őbr­CĐÉÇË˝3ĐŐĎ˙qŤ `ˇł´ž{Ĺeé(ŘęlţźwnUľĹz«)fdáÉŞÚĽ ĺ0Hů·ľ~J®"”C4Ţ=YŰîŃ7ŻýÍŐoZŚQ´‘I˛”ʎo†ś(€©C.˘UĹ­ßüÚŰWô“Żś7á6‘¨B1iI˙ÁŇżŹp:A| Ö˝Mńi‰÷ ŕĘLŠÉÜĐŇiŠr;íáĨyvńĐyÂDR+ţ4%śŽ?ˇ»ái3R÷WńĽ)XŢ”_k%ÉŐg'/O (ľ>^ŠSŽ ě=WNáJškJ¬9ÚÚÇ}Uöş&G¸ÁŠKoĆĚÖĹÄxwZ›öîŘÜâRZO ĄŠ—Ňf‚I¤´żŕP‹ ¬ěŃč§şú¦đG?rý{˙űŔ'+_ˇ«»ZČđHĘçÝŮ«šR$jÖ5p\k@÷Ö×·OţP4Ü^ Ýl=”µž\FFŇHŕ`ĎŃ[,ڧΛ7oűöí[·n0¨xĘĽĹK2ňPPą˝˛ˇ…LŐ¸(óŔÜÔŐŰĘ|§`vš CňÓúe'•T5¬ßU,l__â@޶|µnç9ŰN’Í©ŁVn/%©6Ęljis”×4ʧoüŔ\,ĺçž{®¬¬Ěfłť~úé¸ qSăéDĐhF5§j>:|,5ŔŤŘ°wˇzEżí¦ ˝$%.KÄ©©‰ý” !@ŹÎb”TÓű^:Ý/ĺ”â dƢşÚS˙˝í•ϦjrAúPżň–ÓůvÓűmžć43˝ńĎĹęέĐPýÜń8§ÂČŔ%§CĚş˙•sř“ Şvá1z÷ ÁGű®ŠQŐőňśDÔÁ9eŠîĆ}‹xő’‡†ĽóĹążâĄÁ^8éNşËä¦ ’xüzdłµľąd™ňĹ·ëĘąá”ß<9ű&F«žĚď"ńţĽä¤Q¸Z§×Ě|€¦uŤöjĎiçßŢż›BÔü^0ő­oţ$hčŕvç3üN÷‹|éłyi†.štWbLš©ź3 Ă­w}}Ě–;J H}Z ¤EŤQ1MUí{·¬8Ć[6‹ęuÓN;űÜÓć˝ţî§Fst››l×vc„Ň®ćĘĎĹS Ąí8Ą,‡»ÝHO‰ĎtŰ)PŠ $ćyčĽó$ż ˙™Ý‹·šŇ¬‹Ś!~`wąw”×·v:#ŚŮŮŮ×ßpmvNW¦ggéŽMU5µíáć‘«®:ütŘqJ&¬Ň:¬XÔťthA?Žs ĐĎáÎsźşĺŚGHD Î/ţwŠä˛ýI¤ż¦%ëq~ˇşřş´đli‘úą®>ŞlżÇ±ׯyD„|Ä{p†R’ŕdbb2F ”’’RWW·hŃ"“Ń0¤ 3Áf&»#8‡ŽŽ°šĆ–ĺŐń1Ö‰˛ă,¦TĎbÓ9#)vT˙̤čM”‰Ú{ '®ęŮ^ďž˝Íýî·›ZۆfLV@ş.[ŮeŐŤÍÇ3‡ÇŰ,Ë—/˙đĂívű¤I“rrrd Á"tťHJ?˘č¨> =•›4[©‡/ßaşęŤLU:§_žt7{ŕŠɡqÎ0±~ŐŤű ď’żáZ÷ś÷7ĺ+[×!ůd«Ő*řżvEŘ_bÁ<e­k>)ŕĺÝç<·sÚż÷^ľ°ú˙ZÜ"T'”Ů:ŤV”BÓ˘ź"Mržböh2đňŹ×ÝyÎźl~BśČ|ĽëÜż>÷ uÁ˛QE3Č”´±ő]čěq7?sçâŮă4Cř ˙÷öo‰ř‹'ßsůÔź©ÝOÔË#™÷öł˝!]©?5ÜťšM„ťzů.'Čđ1‘<"`0h¤řQ€ŽĄęK–ZĹJ~áŢUNşźbG[⦻ü+ţMJ˛žö$[äˇ|şE Ź8č\ô#r[h1ý»kßÉK-–L‚KîŐźlŚ¶Ä dYíNÂIţË­óŻśö ÉM $Ň>~ÓGäM Ś!ŇűŐWśŠ÷ó'Ü–Ł ĺŁ-xvő»áCęćČÂv ‰Đ|ážUꏜšŹ€vń Cr'«śzá>ďJ=gÇWWß?Ś|$ů>P‚\¬z–2ËwH3WžúRÂČ)j ±/^ĚŇŕAúbüRBŻaśX,ŠG,ŇăŠ0l_őŤâ.óü-4|ěť?Ľ)-).,<Ňdµá‰Ł†ťâ®:ď»Gë-cGäY±ĹaÇV¦âd%OaŠíÔaŽË˝p|öăsĎ‘5(;–?¸ťíĘĺtűé”ňub ‚ő:˘Myɶhsd—XŠpÍÎŽÎČ(ŠŞ^xÁů^taBb‚Gä0äŰ˝qUUMC»ÁěI€…=çyCŹÓNPň.®]ž Ś/RM Ăşt čĐ5Đw4Đ˝/ÝwdŇ%Ń5 5ȤPöC>ú“CĂďżH”:Ţl66ě‹/ľX˝z5Őß 2uhţňÍ=$âó6‡sůćý+·–Ž”}éÔ!«w”VŐ5GDâPnfhBڵ8?5-1fé¦}w—»\l,‡|Łş =kµżżhă~ĹyŠ3Ĺîpí.Ż»`Ę›ĹôůgźÎ™3oăůçź_XX(ëü^ľ_d÷2>_zżHź© ˘µ˝ţťý?\×Đ]W$§źřŐišňcżłtdp °Ę+8Ť˝˙˛WxÉÓŕ›´—Mý Ţ%=ô%P®˝Ăť‘P‘D—”~8h4ÓqîÜ}Ţ_o9ăQ˛0ă"›2)&GŇ—Ohżj&Ňů‹„JřÓVŞ´(Ě®i^ĆgţŽsţ„7p[骆–*úť¦č®ö35Ă__ů^jŚ€ßřĺ._drlć—OxżĘQ.mŢăny*´ńĹcţűrÜqÎ˙đŇĐsʵ˙襮3 =Dysŕą+şőď×*ů<|ͬ‡ĂfÉSúo4´ÔĐŤoÚ ěqҧ&fʎµČ¦’Ąű«·ŃĽ•bvdČ24ç·•°ÄÜ©ŰÎ~ňÚ™˘đÝÜí®ţ™Łč9Ë5ĘĺHdćĄĆS絟mÖ 9ĺb˙xó'\éŽň5mΖěäţ˘˙ěçŹ:|‰%fHî$2ťé/Ó'ŔŔ¬1BlI '=GÄďxJč LMżłü"QEŻđ˝"&yÎ’’·sóĆôü…Ţüzł5ę”s/Ú·wĎßž˙wł#ÜÎŃĚ_bĽ¤¦řÔ±:•µăSůŻ”*ˇX]{§ŁŚĽvňb­ĂÜ„‘…‰DÔáDŁnĽŘ(cz<#Ję.ĺO±pWÂBa¬ÄÖŃą+"?Ő–™ĺa¬ě2đŻŞÉąŞ¤µÁîžƇîp~‚éŃX+¬BŚ@Âȉ=HJˇÇ¶ĂU7zôč ĐVőöŰoOOŠ;0ë“%[ĹWn «îÓđp—Ű˝dSÉżżXuóYă®:edZĽmÖ‚u;J«ńĐQš/‰}•u›öVŘŰś´(ëžŰK»ŕtvĽřŃŇüŚÄAŮ)Ů) 8TpŰ˝öęë”Űsą\3fĚ ąÍmńÜíŢ˝»ŞŞŠĚ”ĚĚĚqăĆQ•O–wËŃFąz5ëő}WűuŐIţ‹kžÍ˛Žźx‹Ä耮ăTůiCśîV! LTĘbzâé™gĂŮëżSXúsŇůEz§ë?t ŐŔ®ë+ęö ’âÜIDÄ%ď»î×kó~/äŁj‡î­ë»·ę„—L÷ÖťđCL“ľcřú˝~Ĺö‹dzŻđx˛úőë—››{ŕŔwŢygúôéŁd‘»~÷Cd0o ——?('Őívă–gąjĆ+gŚt»Ű•¤ŚÚ”XĽx[öVmŘ} ˛ľ´Ž~/Ţ“Zm¦ýEŁ˝•D]˛t©µ×ŇŇ‚«‘‹%޵č•FJlZZZ~~>ň¬X±bßľ}/˝ôŤbł˛˛Ýß^é*±ZęUő˙Vź‚›ÝŰš>w~ Żkŕ¸ĐI©Ź\˙Ţ?ć>đÉĘW4{é_1~ŕ™÷_öŞŢH[©ęZ{\ÜY]Č>®@ĎŁ@;ż—sT™„ľb 1z…ď± ]EÍ–”üőKżµĆÄe÷˘8Ľ‡]dvÁ€Ý˙ -ĆöŻ·?jh·Ř {“Óí·Y/>)hż´Ť;Şžűh#yO.Î:"3Ęj¨¬µ/ŢXîtŃť5Ňd¤ öÎAQlDżE#-¦H+Ť|ÂĂ•”« 댱Ç% ÉŽ7(-\Áwě¬q,ÝŮXRŰVP˙ÄŹŤť0 GČL+‹˛ÝŰÖŻ\ÔÔnę4‘fëÖ´ˇU묳čö@‡VzJbŚŇbp^:9łK7—ĽöéĘŐ;KÁ_G. ©%w_2ůĽ‰CL†H Y6ş š›y[tˇOj›LÍÉ×v D)fůŇ«ąc8¸¨ľÂôHŹ{kĘ”)xÜ(ý6{öěűîűŤ!ąŮiqű*ę„×)&fAZâÎ?˛(sçÎťüăiRÁŇýë_ .żüň믿>=#ŁĽ¦‰h¸ô„“†ĺ;\îúć¶]ĺ5Jé—Ţí®Îsf>sÜ lŮ5;Ë6ě©QA—‰áŁFŹ=Fpâ•9ťťnĺ‡b'Ź1ďaYYYs3=Ý´‡BÔ›#tz»»&DĆűěKy…Hü˝';%ő!Ťíôă¸Ő]V‡L=nĹ?*‚ľ‡N-VťkßWU~ňŞit #bľzň ŇŘ'A(Q‹†ř»UTpQ}e뽆XsŞfŽGË›Üęv.ź÷Á¸S/HÎĚŁ„‡Ó€âú;~TPTôü /ý?{ç¦EuőqŘ^`eéméD°"(bď±ĆKôÓ¨1&_żT5š^LLŚKbďŤbAEA‘Ţ{]`)Ű—ď÷îŮ=\fćľ;łŤî<úďĆü˘&-ˇč©Ź Ż‹ĺ=<]Ś·«˘çbÂľÉN´!'8¶>/(Ţ™•‘]{@přö® xv…ńĎęrŚĺcdžű_żjF`Ď˙pUaÉn4|­T(„ %;iĹßP C§t„G ¶_€đ-9K‡@HlYEĂ˙¬e$¶ęŕ§/µj©ä=NxmËŰăQŁF˝ýöŰO=őÔE]Ô®c§ńGô}d´Ŕáuä~ť[g]uĘÇîÁ÷—żü…Ayâ9??źQlě3ۦMŰ+7=_4ńŁŻ_úrůÇ Ń “˙8iÎ ç}KVFëűž»Jô#úŚŐď´żOřţ¬Ąî*Üöî=ĹI‰,ćؤ´¬äéIżž¶đíeëżÚU¸˝]«Ü~ťGŃ{ÜG^§EŘ´} +ʱ@ŢŞM vä5KoŐ®e·cś}ĘW·ŻÚhţůŹ˙@¨bÓ鿣­)óß±čÝ–™mFô>yüđ+Ů~ĺ¦/|ü‡ŻVLf/¬.9}Gö;Ť‘ď)ɱ‰80‰÷>{…ČÍ3ZÝuń ‹wßýĚe˘dMŹ!ąÇU`2)÷–™mz¶rŮy&˙2SţÉ÷ď&€EkfňÍb® Źű./2_˙ě!ńsÉčď»Má ÷Y3[W3Ü\­ý€€-˝ź/ÖG µŹÄćÁmH3©e3Ô‹2==}ôčŃnË—/gJěťwŢ9vXĎ©sW|ąt=ŻÍ`Ę÷”·ÉĘĽpěá§ŚčĂRw˙ú׿ţţ÷ż<‹ŞŔÓ 2äöŰo?ýôÓ7nŰýÂG_}üĺ˛ÂâŇI_.a¶ě ‡őčÔ¦efz*ĚZřŃuĚiÍ#·el­ş©s–mÝQÄÔş»‹&ň(ž±¨"QŤŤŞcí^˛/;těđŢɉMgÍšuÇw°ď{Â4:2°ďô+ŞŢ„"Pîš1*Żxi`‘G9¦ÍŹÜşuLÜ©CŔ!`C MjßÓ;üÚVęô"¶Đ—ĚŘ:âż(á-©k3Ô*ý¨Ćc=—ŇŞ}ŃÖőS&ľ<ěŘ“;őP5ˇű€ˇ·ßŐăŘăŹ{úŮç'}:3o[Ó&©iĺeĄyE…oÎX“—_”ť•şfă®Ď–@Ä•|ąr+Ľîٲ;+›© ))Ôž˘â˛Ű wí.fią#{¶íš“™’ś´iGń´ĺ;m*Ü_Ě*v]:·?ëôÓ.şě’>}űCłi¨ĺeek—Ěť5ů˝Í»K›¤·bPsH]lwÚ˝ĆÜ<±űG†ÔĹţ§Ł±“ŇꀉűŃăgéVď—”­ŢĽÖ ÖéŻ7}Ú!»űâuł_›ú éiĘĽ×9Ím;đčgN[ř–••—ţç{·íÚhZ®Ú´đO_Ě®ńŞÜ°u9˙&}őüĽ•ź}÷Ľ°"¶Mť?áŢg/‡¤SKÖĆĺß’uł^úô/ż˝öÝ>ť†Q´`ÍŚÉs_›Íůk¬ž.ňúâť,«÷ţ—Ďüě˛çőÜ•y;Ö‰~Őć«>Y§ö—o’–’’ýë5fv™3¶žP·+6Î}äżwĺďŢ,EŰwmšąä=ţÝyţ#§Ť¸¦Jąů®'Ιłb˛śňąpÍŚ»źązqö˘7ě›Zę‡@ pl] @sUTůÎlěŔútúŠ•ków—”$§í)…­++/*+űdÉÎ5ůMîĘ›Fö“(-ŰSTş‡Ť#¶”ňYTŁÓRSŮȾ݀ţ}FŹ>nô±ÝzôLLJ6cfěŢÎíy_öá˛%K‹“›5MoĆ61ŽŽ8*É¸Ř ô(¦ŕ€˘‹Męeb,ţcEĽ¶¬(‹”yIm÷yČ!đůâ‰:‚¬O§áß=÷ڤcĘ*“[ËĘK€ců»óŽxn—ś>Ď~üŰ/«¦ ^sňÝLíŃ~ď2‹&v Im˛:±$Ü[3]¸ćs)bçäăž×»ÓáŚćS^ď/ź»î”_Ĺ†ď­ťÍ 8±l™ŮöĚ‘70[:ěéI÷‹’é±E%Ě35B{Ř%ěpőÁ—Ďšßť=ęĆfé-_śü'ř;©B[!Ů:ěńpîŃ7ç¶0yŢk2eAńŽç č:rŮú9ý˛¸ĺ“ą˝Gő;ť%ůŢýâßĺ奪w‚C –8¶®–şęő@`vËLÂŐ©ŢĆ6'‘üŘśFâ7ökâho«Â+Ů.]şśqĆO>ůäoĽÁ¸ąo|ăŽZT\úŇäą……Ĺi)' íqýi#2R'Múäß˙ţ7TÝyçť·»¨dý¶ü%k7O›»rĘĽ«6n‡ąă…oFZňé#ű]t¶-›1%6ĆŐUĚČ †öÍ3G—€Đ"=eTżNň™S9 `ň¶la$Ý믿{ČL^Ŕd<«ďAÇ@Ő™ QĹA–o«˝..)d™9¶8ičĄ W.,3[vćwlÝSçż©lÝŔ®GÉ"n¬y§ŕ­~|Ńżűv>‚ŤŃ9}{ćăZzůŘ»®8ń˙8e5·Ű3{é‡E{ţ;ó‰«Núé'ůuĺI?=稛(ŘíhĽăď2,Řćík:ĺôިUůqÚßşó‚‡9?ěŠoţ¶·Ýpęýß8îvN;´ę~˙ W‹Ţ6pOk™Â-gý ľ Kć]ń»~k·,–Ň5›ÁÖMń¨D…2'«ó?nžŢ"3¶čä!ţďżNK÷é¨=űü¦­˝;çÁ!PßÄI24G‰ÍCČęńťG*µE߉­VT˝¶"ĂëřŮ?}úôűî»FăÄOĽńśŁG čş`Íć.mZŽę×%5©)ż·ň“ź` ßQZVľ`Ő¦G'L[°z3ŁŢŠKJ’2ÓR zƨţهôhžžĚŔ7žd0xŃFÖUD–Ý<“ˇu,B÷ŕÂľń[—q|EEE[¶la ż{fµtéRĆÓˇg¸ rO;í4GszHŤ1QpD°ů1Í2“rnî5őĹŐ׹ýySŹś’Đl|»_×ć6ŹŢť†DĆíĹ_ŞŽQÝ»wYŃ™9 ©©©°ĚěÁM<|öëׯU+˘rÇ!Ť€íÉ2©eő:„ŢIü&lµ˘ę[‰ę{¶žěйˮ‚â/.߼ĺĹô:ŞU‡ÎÉÉ)şűm%$&wé5€ăÎţĆ®myÖ­Z˝bŐÚ5«×mܰ-oŰÎť»‹Š‹xf1\/--•„ŞuëֹݻwíÖµcçnŮmÚ˛ …?`őg¦@~ަóg/_8/żxO“fmíŠ%o;…“»‚O9d $§â°R_q˘JO[6Xë‹×lŢ´}ńŘů!;+˝O—śĂzvlÝ<ť*Ó¦}ѲeË˝úTt(N8ÁEŮ™éĚ„]˝nlÝš5kL#„’ăM8<]ÇŽ{÷îÍÂy,˘‡Ć4 /ű _×´LOlůÍnĎ­-5{Űsë g•ďhžÔž`‡¶Ľ.Ď´tr$ľüňK˝" ¬ŁîŘŢ â8R›ÎŘ!PÇŚ9’ɰĹÇĉĹ\Ç 8w!ő >™!ś¨Î#ő Îť“TôěŐcAié k·N›ąrŒކtď7´EŰöII)¤fxđqÍ[·ĺ_ŻAĂ+ő{ĘĘXd—©±{ČRbókb#ýc¤›íŕ}fYiÉÎm[Ö.[¸lÁś­Űw–Ąµh’™Î’˝ô"®b÷×آuŔ;d<]lNmĚĄŻ«,¬\Ěę[śţ@G€]\3ÓZč\QşłeÇZf•ňďĎŻÝrĚ€ło;űݞ-lž2Ę̤ęvíŘşsV|lâOU6…í»b›9pë®Ü4˙ďîdKąŇ˛bÓ ŽĚ¦tZŠĚFrĘ<\R’(r­bڵ욞’©ĄY™­Uaí–%Şa+X•zw<ܱu& N® Ž­« z®n˝ `f±Ě$ôaV4+…tb«.®B:1Ű­s90Â@%MŰôQA~1déꫯfő·Żľúę–[naő76ťčСcŮHČlÓU«VA‡-\¸đž{îaŚŰ¨QŁFônT˙ÎP!€CsüĄhÎś9ě0űÉ'źŕ¶ŽˇuŤĆQ’ĺ¶ĚJ#ŮÝ´iK4“@ó‚{!éńÇ`şÎť;łEËuµoßŢĎÓŚß Ňo¦š¨öR±cúPţ©'Ô)Ľ÷Ţ{â¤m۶}úŔ˙F8¸?Ů~„»:qľĹ ÜóßEš©0冉ӄz«“¶Ô›G¨jhwďŢÍzŔčiČ Čň őjęüđC¦©Â¦Őřg3»[äd5gSZ†ű‘ŃBĐ\pÁt8dBYff&ä!yP˛őÔě¦§Š­ČŻGăWzĽąÓú@€9ÚÜZâ™Í%ä»Ď]Ę$hQ˛éÄđáUCš4™={ö_|!EÜźĐĘĎ?_97™[• 5HF€ÂDł"ŢćÍ›ąÉ!Sś˙‹·řłóňň^{í5ń=ß †JAg3(•ŻI·nÝKÎ]Ş ‰ŔęŠS¦La·ćw3š®™o /ňĂ€M–YŇS%ü):XšŤďßAľť:u4h ‹¸bí6ČtHpbF±<ě°Ă3kţQĺV‡N‚Wřw,é–€ÉNOTk×®ĺ+żnÝ:`ńd¸+ß}ţ>0˙Ëc)§u*>áł°\JŔ„ĘĎÉÉ1b7Fü?AÜl‡­ßkÂfä&·í%ÔSO=•5ćDć&äb‰Ě}%cšß;O‘˙´‘8±…AŔÚläđôeµ5đS¨¬+˝8OKOďŮł;¬×Ö­yy%é;7lŘ>#ë«Ůť;uéŇ«OvÇÜŮ9±÷” 1ÚN»¬aÇHKWZVZ°#?oĂęu+oXłzGAńžô¬&Í;ŔĆ˙"…}yşĹ›CŻ˘0Ćâacš‰,­«ě‡ Ť_'fWt( 0°ŰQżyúĚĹď}:ďu6ťX±qďJvtźNßöĎ‹Žż# L5Ír˛:™tŰ//ß»-iÖ¦EN˙ôę-JŐµkŮíÔ#®Ńçäž»ýˇ±óVM5ík,ëWŁĆ´bűěîş÷+Ű_€ˇ™“dUé‡@Ípl]Ípsµö3¶T#Ň_áĆăƦ-Â@} Ňć˝ßÂŽąZüČd(żŐůu S)ĆŻîľ}űŽ=šńw¬mÇfLKäW.«ţ ÁÁ'żŔŮž’Á3F)ˇę pś`Ě"˛QRŕěŘŘş„eË–1‡‘hšáaK]wâ›Í™rť81:ąö0ŘSť0ëYdî1†yŠ\XXhŇR0&K–TNO€8㚪ĄŚĐ”Z€Ś…¤Sçřrâ€S»ćšk §´Č#@`©O:ľ:ÓV<@g_rÉ%ąąąZšěĺ—_ć %x"(Eř;aÍPÚ¸-ő_xę©§ ËÄ“Ţqŕ>H†Ĺ1đŤŻsçî“‚o«8ŮĺY¸-ľÂŹ?ţ8ÄźŮ"ݤË,[ ɨEĐdüą ŠhŔŞ‹ÎôĘ+Ż„˙RKę0T|˛x%בż<ężâďP>zfîóúÁóçH͸t‚O4üő;ú裑!é¦(a'•­ăöP=ݶÎ4ţĎţĂß+©Č%µp!WVICţşÂ{&f\‹łÎ:+Ň3Kś»Ď Ŕ‡Śtc4'¶Kc‹0P¨´yFh¨´űťój§{÷ÜĦ Űňó÷$$ç•4Ýą§iŢ’•K–­h‘•Ö®}§¶ť»µĘiźŮ";=#ł)[b5ŤíÁĘř˙­cŇ8*ö…Ť…ÇâřeĹE»ň·m߲~óšU7¬ŰUPX–ş'%łi‹ŽŃ†<ÇjĘŐç3vT¸‹u§‚Ą‹WúW%fRUEŠ*ŞĹf<Č©~ú5Zä„C߼scŐ67ťń{¶VČ۱~ĘĽ7ž|˙neŁ–­ß›‰)Vţ%ä´HnÔN9˝—o#š.múvkŰ_äŤŰV-X=Cd=§§(˙xý‡íłs¸oWnš'fŤę“]h«vÉhňĘ”żŽ;ü›i)DČ^±,ĂרBuÁĐ8¶î€ľ|ađüQćđwLŇżţ ĐH{]ËŢŐŔ'żlsssŻşę*HĆ ń[žś•źÜĚ@ä×,ńŚ3fŔ€Ś ÎłăďŽ; ¸@<’!ÔX«ŽŃvÂ_Äô뮄ď kFzr‹Ě4ŢYół–ưNn€>lgY@oÍź?_ú‘e(çÍ›÷î»ďšĄ*CHýóź˙Ľţúëý¤g†Ę¨:v©†GÓvM;a„ gžy¦©™ű ŇP©:ţv]zéĄ]»vő[†×(UgVĄĺď'¬ź(ů;tP™śr“0Š™ż·¦˝“&üOś:y5f貿׵¸>|jT6çĚ-čšŰ5aŐšť;wÄřłÄÄÂ&)űonůúüi‹—¦%'d¤Ą1P:+;§YV«ÔŚŚ”´ôädvq%y‰íÁŻ%ĄĹ…ü5Ěßšż}ËÎmŰwď.(nŇtObj“Ô̦Í[±°] ŻrŚ+y:ţˇ µŘQEűůyşX­ŠT9fĺˇęU+j'ťŕ°#°`őôŮË&IyűVą×źz_vóö§yíĽUÓęâű@IDATŢśţOŃ'%Lgٰu…ÝëŢ’^S¶îçO]ôÓKź…°[´ć‹ű_¸fÉşYbwćČoęvtţî-Zmgal mYyŮăn®©'wľšEęđŰÁn¦Wî±tý—ß{xÜQýĎŕë˙ô¤űeboÔŘś˝C ÇÖÂâ”*¶?â’Đ„ěŐ~wB1„WĆéi'pvL%ăđScrţůç3GŚq%Đ Pu°¤)Ě„€\{őŐWůEJőXÚ]Wń.–T†9ö4iž‘ŇŠU–›ě‘ń}ŚÝŁž?›2Ž>°ý@ĎQťzvĘZ"ťˇ\ ·–~‘sssůŤÄ˝'— v‰yÜČŚŞ‘F±á†äç’?č3ćxŠžű– …ˇTh *J”ě;LEáÚüŐ=˘bZ+?í¸ME)%6–n„Ýć”hZcfvł`1«±–ÖFĆ2ދɰ•ă ęŤŢń•4‡(<&·=ĄÄ,ŤBz ['\’(š‡(^yĺ± ĺD0ž0cą(3(“”©­¸—B]…ĘDT˝=řÓÄP‰›>° 5Ž˝­ěŇiÝÚő;wíQp±}c›4M*mšşłi“˘¦Mw•oŢßt]^b“˛¦{Ę’bcy?I{¤>Đi ĺĽ}ćďOb2 ]ÓäŚ&ÍZ°,‘x+ ĄV^Vă«ţ>ÉĹŤ)Ś%ęĚ)âŤ)WjbMŇhĹ(<a§ť2:Ů!»§lÝ3ýúăŻ_îÝcăöUlř ř0#Uä4că…ß˝|ĂżŢýéçýŁ{űAjéľuňÝźĚ}U¶jeŚŢUż`îÜŠ}BBŇG^‡Ŕö‹×V®dňż˙:˝_—_-˙Ĥ𰠿ű„?’¦ę\E{ü óúwĄStż^ů)˙˘8p¶P8¶.LÎhż#ghÖRmxŐ©ŢĆőęD»ŘŠ_é×Ä÷żÍI=Ü„ŚŻńó[`Ńó{™5Ő ă¬ÚŇ<=-#=e÷®]P*̡-ĎďmŁę0°(ĽRüÚkNh0ĚŃgćë*Tľ¤:ľ·{ÜqÇ!°“ĂŻ~ő+®2\Ěťg|WŮĽ"t-έ‚“(ä/ö cdĐźTä€ ŐIÜćm¬‡l™čÄy˛„ĚFlBVëŐ‰^ŁŔVj©´ĹčÖfŚ>Đ>PÉź»Nť;®_ża×Îť</›Äř¶Ř ¸¦ĺMË÷$¤r ;GFY{1 ;B°Ě\…3dX^"Îy¬p[|®MŞŽáxÇsŚYZc™;JŰbZ17†Ţ˝`ČÖ©AŤu‚€ů˝31ŃG§©´É6'؇÷żżFb°é#´ę•năD"NxßĐ®]ŰĽ¤$^~ ŞŽZ ±ĄęX±.–ŢŔ—Ĺ(´Ř°şŘTV>I(`÷°ŕ”t(fĎđĽaěďł_)Źe›ň‰>ö?6:.66O‹DP3=E;*ěq+G¬ZEŁ•çűţ'=’Ď}KÜ١‹«­ýîÚ‰ŹMüŮ„ŹBŔ™@¤&gś=ę¦ËÇţ-PDxĎ1çsë›Ó.,‰-Ŕň8mÄ5ąí˛í,łnÍ*[÷úńE˙Đu¤(Ď;úVĐ{aňź4ڬŚÖ'[¬ţ}Â÷Ä湏~'ńL?ńĺÔŘrr|CbôYěXqÄľ±MeĘŞLNLILH.+“‘–Ľwë°ôކąí<ôť™˙÷Ç N\±qú˝Ç=ହ+§ľ2ĺiź"¸O‡@Ípl]Ípsµ¶„LĄQÄ×PAŘp¨Ăö#5UÇAëüVg™ĺd×E ëb”YŰěfp|üŢfáżüˇíb2G…Łębl@L–Tą3&^b6˛Đq1EĚMĺ_žPQ€^X<é’vĚÉľÉ->cÝ©JxĄÔc#~ܧC >­ł:0ˇőš“ąjÓVŁŰľ{s«fíÚ¶ě’Űv`óŚVfݤÄä›Ďüă·Ćßłiűęâ’”ä´ÖÍ;d¦e}p_ěîŹs@É=ř?ź1oů†ŻŮĽ‚ňztŇ®ĺ>ËĹr÷Ţxúoa®™ą}צ~]ŽěŃ~°ÜŇžiďşř?üó7÷ô–ú•9Y?¸/Ć›GJRę{żÚ‡š¤459}⽬NpÜxúořç/ ď·žýô,R™ŔHŘ˙í˙RKTŮ  ŕŘş€ćŞÔ/¶\*| bó@Ü!ťŘ<„¬.ŮśHiWT ¬¨´] ›q >P‰çHz5ćg3ㆠAXňźeYb›ĄI&Z•SÚb=éi›¬LöX`y?~ŠŁT˙fő@Ąi`Ę6ă¨zÓ§“ n*O[ ݶ˝gXüąŤ°$ĚBőp%Ü·5`îd«b ĚOęř/l„ĹVcý%¦š Ϟɧ¸eçVŽ0ţ™R ŚÎÓĹď´¬(Űe0 ‘lş`ś– ţ/W]…*«ăIŁ~Řń+i8uęT—ç7PŤŚŽŃSżŕąl×ě~ś§€ßżÓpřo~éB¤ë^K'¶ęDR'aÄ÷Cë*m×7ޱżČŻQ·Eá•<€˛ł[%%&îŘą“ä(¶<]ĹŽü@gNt[,Q‰Ťą‹qpx¦<öw r7×ŘhąQĹ!u+= «PK)JL<@<§{í«Ň*©%Ťú;ĺ×HîÓ!`"ĐŞY[ţ5é[S"ţÁ ˛®m"/öĘ]Ú±uţĹwKČżř6ŤˇôĹÉ~č­˙•H:¶îůŹ[fU÷ÉׯΪڵŇv­ş5†h] .Ž­;pŻÝ!yślCŇ”0Řś„ô`«.M‡t"Ć6Wú@e`ăXÚŠőJZ ©ç)–üž/++…wc \eŠ´ˇä=qJRBvótŢF38ľ€ßá,ćMU-‘†¨”6mE6˝©¦Xj3P·*‹Ŕ”Ď·ß~[.–ÉÖqĎxf_z*˛›Ru,Ł6|řp&*2RŹ×Dć1ŽĘđOÓŔÜ”1ˇ°fpÍjŕŮVž¦65hW7ĚĹ;f¨źěěl8M“Ş4hĐŔY§Ź1qŹ=öZŠŔ——tGu3FAĎŚ4mŘ6RÜŞ´Y-NOMAg€Ş˛®B5ď Ď€Apfµ8i‘a†:GXcŕQ‰'2O‡Ľ™ĆÍŽW{±¸LLŘ„G›3őÚ.ĄfÔŘ =qž/ć훓Ú{ ÝđN0¶E¨TÚzj3Ż·YÖ,lň-[@ŰńŢ"FßWđt1â >.6xr.¶…tăŞbâ2[ÄĘĐ;IfáX©Ź§ŁHJ ^ĺ˝i.UĹÓQ„™ôT*î5¶_ÓĆɇ@ `noqie¦Á¦·gý<›Á€E;Ů(C÷„ÔíĎřÁ4äŞâ8¶îż’îŰ2âRŻ®ó0lĄžRĎiµ=ŤdÉŘů1Ěđč•’’ŇdĆÍ'ńŞ™ÓČ.-ńńn9-%9;+áxüŞg\d?¶%ÁĄR¤H˘ÚGuné„S×PięËĎÖ±4ó eŻRîµd.§9‚Iő*č,Q4×]wťj\}s5Ž/ŕ ŞH)9Ý8•ZĽąUżńŘĄ”µŇħî’ż‰0ĄLéŐő×|ŞC©Klfuxá…ŠĎ9sćxśCVę4Ř®]»^y啌7¤úŚ3>˙üs1fĚ,ĚŰÚj]HIč?=e@ĺąüĂë*T“ŁËĚ8¨iÖUgŕŢpĂ đ’ë ˛Oîď˙{‰Ť— ¬ÍÇRwbcK4:]ŽĐteĘ€ÉÝ(ZgÔž–ęíĆĽŤÍŰ[Ťťp(#çÔůŚ-ŚÇ`sȵöů5ńo‰Höµ4Ěf™‰±5ěv–—Äö‹žNVŁ«ŘŇMě¨HxH]H}Hl„ÄSŞŽR")oR3¬˘G+ŞU¦I¦\Ů}ÉadRR˝Ş ‚4¬8‰ÓÍ8EęÇ ‡@µ í>zDźS¦/|[,‹JvĎ^úˇY«mË®ß9+6IÖÚ ŕŘşÚ çęÖ šIx˛zi¬Ę©6ZĄ¨üż!cđ4xj‹3ĐX”‘ŞD2Ć = ±Đ{[W’‘–śžšR‘ÄĆ ł˛ě53=µełt^Póó±uŚxbÉjkFb«Ţ8ĽĄ­-§Ż ćŕ#sćŁú„ů2 2ŃÇź‹ŤÉ0Ö 2…Ś>‡RĎ!ĺ§žzŠŮŁ,BÇ`4s—ŇÜÜ\ś@)¶oß^ą›W^y…QW´i5ţü­TkĆ–Ż,K7räHh˛—^zIíážşwď>mÚ4Őč VSc):ŐË­NwŘB”nŚÂăŔvAŤ)[G)ßn:Ąu©ŇĄK(0śĐ jŃřC•E¨«P Ś:Şîąçž»řâ‹öňé§ź*Uik9”Ř‚Š›ş0]#xş€îL_tđłĎ>“ę¶OfÔ2–{ŹżZć*~žĚŰŘĽ˝mnťţŔE@ ™HhŁÜ2OÓ§¶8ŤE©J$cü‡´łÔÔ”„„ćE…EEĹEşđ%W’qűňt8×׍Ř‹k‘m(*Ö­“K#źŇS˙gŚÝŁFO§ĆfŘŞôWŹ52 ¬ě”‡€ÄĤ»Żxĺá·ôÖç˙ÚY°Ő,g #űžňżßx¬EfŽ©w˛C 8¶® ą* „@`n?ńDčAlBú±yY]ÚŠę{[O9µYFŇG2¶5j:á/„#‰ EZd¤5O»#Ry“=­ł2`ëvíÚ1oŢ<¨(~îšÎM"é#›­8y!ĐąsgřYú-pŽ*CşŕżĚÖ bř §bśSćsx @ÉÁ٧cńÂÜyŞ«G_W§ěRzÜq±ĺ˘a tŇ%wňŇĄK…ŞÓ_’ŘŔÇÁ$B˛ź}öŮxLfë<°=í´ÓÄŇśËOVůŐ*Ą ľ;çśsÔU|ˇˇâ‘•qY†ĹAÉŮÚĄ§'žx˘–ň×ňŽSjÉ H-ˇÚ›Ęc/§ŚIdâ­Y¤S¶ů#éŘ:™CPÖgG…§®ž†w˘UJ¸ůć›ŕf~C)Â9Úަ°ÔS¨\ÁkŻ˝ÖĎ„˘gD‹îé$ú@x™ýj˛Ť˛}áJÁŮ™U ;é©©ĚO¨I^-ĐwU2´Z zů“(”šw Ör‚CŔóŇÓFFŰ5…Ç`:AŽăG-ăŘE‘ěĂ«Ą)íŠĚc…żůiéiÉ))đpđq¤:|µĺOź±ŻylëO‡[ń 6柬…ű‹Ť§©j OÔ’ĂŁ7cŮcŕN‡€Cŕ€@ŔÍ„= .Óˇ¤f0t›,¤;o¶n6ÝŔ‘ŘÂâ—ša#ןqçüÔ‡`ÎÓÓFŚŐŁcvN‹Śőy;â_ϲ˛=»ĺ îŢ>5)®„ &PaŔŻe7ăWŹ_ęÜťÖ-pC0J2¶ wÄ˙ýúő»÷Ţ{=J=…|ąçž{ôTî(Á˛±„kś1^Xn3Ść±ŹsJ­3Î8oŚVc$w~NNN Cś¸bްW [SĎş'©jŞ.©8Ô ö‡yťě‹sz¤D•@´ÝrË-|źČoKč'>)úÉO~˘T€eż]öÜF‚!ä;‡IŠ1żTO:é$@cVěAľűJωYý… Ę:Zgq@Öb2/d¨2łŔą‡vPęŢ~űí%§ÜoW_}5SˇoČĹâ‚Ęsżüĺ/ýĆŞŞţăv ÂpAX fÍšĄ§ ¬˛J̇üyiČnš­›í6p$¶0$¤řĄfŘČőgěwż-O)ň/1±,11ńĹ”ŠA%OW^Ĺ˝ ^•cý­˘1cü^u90iH>cu+işęĚűüRݵ;w8ýŤ€cëö÷píÇEŔ–Xě“ÜÄő@a#qb Cv'ĐC 2NŻ‹˘:±Ůă\~¬ňÓtćĚ™üČ>çÝÚmŘşŁŞÜű?yÝşEúiGöëÔ¦ĹŇĄKŘ.“ô—a>2öÇÖb$˝ÍŘMŐyTűŞzî˙şDÚZíý÷ßÇ)cë eĚ1bµiI¨ÚxĐşü*¬ŃSS€¸ą˙ţűu¦-#°¸«1€2×8cą=¸6–´Ăެn“™_©ĂâÔ†{žyÁZ„9•[qJ›LŹ`09l¦žď;Ý·!`ZŞ\‡ˇâ(˘ ‘Ř8JŮwÂf¨g$ťm~+WV·űŔ3„i §<(°=MB>ý“ĆŕÄD˛;N•¸µé‹lĆQőŇĎg|'üÍ$iĺ盎eyËđ6‰M}­:Ägâ'Ćĺ™GOO·oZčiW= G6}ŘdŹ›™Ó;‡@cCŔ±uŤíЏxB!'ó™»ĐŚÍIxőá$0*żŇŻŕ"émĆqú§Š źB^´nÝzĘ”)ě·xÂGí1sńÚĽ»+°«Ě/y{Ě\N’’۶hvĆQýOŢ»Ii›l2ě*üÇU`ŁĘÚG.ńŰś›}tr!Ŕ´Jn$!Ľ q™§Ů`M׾!n`/cČ›¸zá…`Ń0ĚÜ”‘VĚEýŕB¶égëBÖufű/żü’™°Ň4Ëî—\ŁŤ řĎšŮÍIČę‚I]9Q?*ű•~ŤÚŰŠőJ\EŐkë¦Ţ ,?áěŔ U—°§rJ,ärŕ˝4BŐUdFZŘ(Ą˘W33NżčÄoć4‡€ ˛˛Ň'ŢŻYźžŇěâŃwÚ,ťŢ!P8¶®>Pu>kމE`n2/©yĂFÍŔ(oČŚpD[„¦öTµNŚ5qô{cA(Ć@L°S$sôŽűőň “f-Ý˛Ł ¬Ľ {rYű¤&'˛lßÎmĆ ëuĚ nĺĹ…oľ9F:5ŕýSÉü ‰&<&á-µ-©RŠęÁ µA€Ű€Ů¦Ď?˙9•Ăcß˝{wH–×_ýá‡ĆîĚ‘}ÇŃwgAaiŮžÔä¤f)Ls-(Řť·aÝŚĄK_yĺ•W_}• ʬĎh#s™|ŹçŞűN©Í^+š‚Íئ7ë:ąÁ¸č˘‹.¸ŕšós¸ 4Äď믿^d¶ Ó:ăL١ľfÓ¦M;vě`´ <#k°ąDćśMĂ pňÉ'ËćżL‹?ŢsĐ AlLTütßď7pĂ€ăZń#)[đWWŤíŮŇ-«K6'$66łHú@ă@Ą4jĆ ˛ÍRÍcă9µyŁ×ŻĽ,iÇÄ©Ĺ.±˛›„͉Ɔ)sxřcVł8Ej㇀CŔŹ@BÓÄ䤴’ŇB‘Ó8ÇÖ5Č®‰:@ 0Ď“»„i;Đ9CúŻeu3B›«¨zÓ§ĘáťŘ,Ő‚بĄ ¦ ”;xnŢĽůŁŹ>úÍo~æ™ě8Áňę0üdÍĎ/Yżj÷š5k35cĆŚ©S§BdŔ0m-&el [mÝlKe[5P!Žeś"­î„F€{†Ł lŽĄÄŮ­!°(ľ’Ű›#ľŤ+=€ĎĐ™áçşţb7őN>¤°=YB&ŐbUK˙¶ę´5B›«¨úŔ.Grb3VĎĎ©*)˛éŐą)` ŚŠ$ś]LSń‰Ů^}ŐĆQť›m©ɉÖrBĹ…Š‘Ş‰ĺ±ÍÓç‘´']ă¬ŰY©-11E°c÷Ö’˛˘ěćˇ6¤’ Ă;Ç^öÝŞ6÷+.)LLH 3ß”LLđN܉`rRĘó?\UX˛»@KVřŮ´}uvłv)ÉiĘPäďÎKKÉLIJ tâ”=ˇľŠ= ®(QłM†sŁvJűRăŠęÁ&ÔĆ3{J˛ž:?S™˝Č×gžy†é±Lq…ďČĎĎ_ąrĺŞU«XĂ‹őň™ 6räH†ÔőéÓÇUg‹*¤ľ6Á‡l™9‡€C ĆD}N‘ĚPĄ‘§4DČQLjV+LCxčÂ×Ŕ&jäQŻ`T˙5čÂ!^ĹsE8mźJaQaQY~ii™ ŤÜŹĽ۲%'CŢ´ĚM<Ç ĆĽYRţäëWŢ™ůä’ő_®Ë[ššśŃľUîĐ'\xÜw;dw÷xřäëW_űěďËÖµ9 EÍÓł{´|ěŔsÎ?ćV ٰx÷ÝĎ\&Źě{ĘÜă}ç˙f/›”ż{K‹Ě6=ŰąlĚŹ†ő«ž'LôÓyŻsJ˙n=ű÷f=Mk·,Áa‡ě8żtôšĄ·T{„EkľřχżZĽvÖÚĽ%ɉ©˝;ŢŻË‘çő?ťrz™fČ^Oľ÷üUÓ–®˙Ş xgëć;çô>ăČëNrˇ0wĽ~űŽ‚˝ ŻŮ˛řŻÜÔˇUwV©+)-ľ÷Ů+ÄaóŚVw]üuľł`Ű#ďÜőőŠ)Ë7Îeđ\^§śŢ˝: ˝ćä_ŕ_͢BAEľěď~ńď'˙yőć…»‹ňŃZżÎ#ÎuăQýĎPĎN8plݡp•°>ÚŇ}Ô¸?qL ¶ęÔő·čĐćÁ¦Ż˝żgżĆlĹVję;wî|öŮg3‰ý.YŽ-bŮß“„Â’ŽĹň‡ …׿˙nÝş™Ű\šN´Ń@%Ą6˝V4›q|˝­Ôôěd‡€CŔ!ŕp€€í‘2ˇxöűÇ3JżżĄ8÷[Ú ôPËęq #0›ż±hüzi+’ŢfvřăGčÜI|˝­4°‰CPÉŤÍAšĘ‘žÝqóůlŕ^XXXRR"C˝ö&Ä“śśLžĚ •-Z¤µj…F˘­eHE%~í;¦ÇV­‘ٰxçň sř÷ÚÔďľňŐŁúU. uőŹ·ľ˙âä?UĆţ‡ç‚†ăßô…ďüč˘'ZdĆVas†És_łç>ňß»ňwo–Óí»6Í\ň˙î<˙‘ÓF\#Jx4µß’żvΊɢçsŐ¦ůOxß's^ţç­_¤&WŽvü÷ű÷>6ńgeĺ%bV\ZđőĘOů7qÖî»ęÍ~]FhőYK'ÝóĚeB,ŠrsţjţÍZúÁ«SüýuďÁľ9ýaş¬Uňv¬ŁăY9°uĺ{ʦ-|KŠŘeBmć­šöó§.Ú°uąj°$TţMť˙ć÷ÎhěaKQT(©÷ĂÇÎľđmőŚhź-ŔżKF˙ŕúSď3‹ś|p#ŕŘşűúT˝łĄ<¨Bö3Žeś"żóÚGâ÷`jÍS Ľ’*Ć6˝Í{ń—ú5d eVV«; 6l۶m,ÚEŇ= Gff&l x±ę“^›iÂóhl ĆfUď‰Áť:‡€C $¶'Ž>«ő#Ďĺ@ű@ĄÍa-#±U×ć0´ ŻÄU ±4á/ňk4Í´1eµ´5j3¶ŮęmNlú:qÇ9ţÝa"Ŕ} Ƥ¨1Ţ+sČ„4 ążŔ”Ŕ‰`$*dBŞÂîßÜkRu& 0Pw?}é#·Înźť‹ţßÜăˇęLcX­{ž˝ü××Tr[ZÄ1•Má×o=ř‚Ě´,S‰lRuZ´jó‚§?Ľ˙Şq?C3yîkŹĽóc-2X­ŰóÇ&őí<ýö][îzâś]…ŰL•żZţńo~ď–łö!µ4ŽŔ`˝;os[PĽă—O_ŇľU÷]Gzś„â©ďóPu¦“§'Ý?Ľ×IĂ{źd*ť|#ŕŘşřâ¨]Ó!O¦0}P{ż±ÇÍ3Š<Ć~oŐjâřݶ®: TjSci+˛éĹ­§ÔsŞMűő đÂÍqhŹŤçÔo§®Yä‘ýnŐŔVdÓkE'8‡€C ú ™]¨} OÓ‰Xúí±AiZşŞVé÷,U"yt¨´Ĺc3ŽŞ˙RKëŞŕi=P¨ôT4Oýö~ŤÚÇ)RlĆQőęĐ ¸ÉMŞŽ÷Ę ©Ăj Á†łÇI=ť›Ľä&08;“°«qŁ›ó×>˙ńďµzχŤüŤ»ó^üôĎĺĺĄč™‰ůń×/ă¸Ű·äŻ{îŁß–C/8ćÖä¤TćĎęč3h¦Ďż7Ľ×‰j&BbBňąGßśŰvŔäyŻM©ńŠVkĹĆy~J‹˘ľťGś4ô˛Ň˛břÁ]…ŰĹÉÜUź!—ýíŤďІĎÎ9}ĐZRZôÎĚ'¶îÜ€¦°d×Ëźţĺ/| ™ °Ę©%%¦ś<ě bxç‹'Żý‚Rä˙9ă?»ě9žűÝK•uk;ŕúSîKJJ˙§é– °wÇ€®ŁVoYôä{wÓ)±pÂ÷ţňíŹýu«…âýYOk­ŰĎyđgďúý+7Î\ Â`ÄJKct§PuČőwiÂ@Jll+Ox‰F†×…ńh×VT±…Ą9Yť˙pݬΆĚÎOľ˙K©ňĹŇ`ë^˙ěa˘é’Ó÷'§ĄdpĘ”Ď=~ÖÔůoHÜźź­cük®apĘW_ń»~k·,ă5›ůŮşN­{˙îÚ‰2ć®eł¶÷?•#|µüŞMFjÖCß™™ž 0Şßé·?t‚č'ÍyńÖsţš–śńĆ´‡DĂçµăďąčřď!ś6â[ÜÓQú˛ł`ëâułFö=5oÇze"ł2Z=ŕL­č  _™ňWU~÷Ľś>â[r:´Ç 7ýµr<ÝśĺźĚ_5Ýś“+6ŐBÁ*x꼠xWFjóÖYţçŚß˙ůŐ[DĎBjŕ„ÇÖô—řî`ŕC1RZčA‰ä'D›sżç𖞆l=frj3Ż·YâßVU_űČm-z¶EnsbÓŰś;˝CŔ!ŕp8â#`{˛řł…8~ęÄI ˙đžĂ[z˛UôÉ©Í8¤ŢfV'ÎVĄ­é@} R]ů…@ű@%umzż[§ń Ŕ·ň Ś §eeeś"Ë»F˛Ë„ ݰă ČÚłu쨠 °ń‚PuhÎy.×®U74Ë6ĚQË Ž˝M¨:4 té ?P¶Î4«˛oĘ 6‘ŮŐˇOÇaĘÖ—UŮěýź=%tzl˙.Gj42źjÚ¶č˘#Ńö4Ů»­ ‹ĐÍ^:‰q‚JD2˘í‚cn“Š8żó‚GŘLCNeˇ=őY­@ ú36¬8eřUZ…h‡ő<‘%ůD>¶®z(Ú´čĽiű*ńđ÷ ßűçŰ?ěŰůÁąÇ^>ö®ˇ=ÇDÚĐVs‹€cëÜkwF'iŕÄ7RsWËÖôqŠ<®Â[JE›=ĄÚ#µQˇ6ŤÖ« ô¨´!ÉŘ…;u8‡@ °=zôYĆgíťDj.0$[ čăy\…·”Š6{ł;jŁ‚§QNmEúđJ›ç@qzÉ>’± §î¶ŽSd&ś2Ş殑°už¬¦'ló¶ŹzŮwU«»©¶iŃé˛1?Ô"„•çëiŹCTFčŃ~ďéĆm«ŘŐ,mײ« eVfkłÔ/3YU• sSY„Ő[·|ă׿}é:ŹśnßµŮě[ÜraŐrěa©UXąi/ąízč3Q¶ÎDLZ Ĺ!=÷ńo5*vŇ»r ˙žýč7ŮÍ;0EwüđJęSmśp#°÷®=;éşv`!`f‘?fEłËőä¤Nš3ăŮćÖo‰&Đ8Pi36ÝjEĚŇřlU<äÔfU_Kç¶ćÝ:ĄCŔ!ŕp8Â#`>bę)‰ŚŮşićŹ$ĽĄé§ZŮć6°b q ’ę6˝xö”zNµő¨z­h QťŘěMź*ŰŚőJuĺ„đđ‘±uTAÖAvBŐí_ś‰‡C–Ő#0=j9vŰÎŤŠOóôŘXŰQP5 ”¤4ÓĚ<%Č={ĘÍŇ ß>f©_ŽożÓ˛e„Çűcl۶kžşńO™ťŞ)Éűŕ€Ţ„BÍTß51űÖř»Ů¦öůOţPRŰ”Ď<جöľçŻóŹůŽ©wňAŚ€cëâ‹ëş¶ú,ç©f 4Ş+›żĎOÓ˝Ćý6µŃÔSäőäV{Zßţµ!'8‡€C 1#é'“ˇŹ‘\Ő“úó znŔkpŤ *ÜĚ2ZMh;xşĆ@Ő €ÄĆA`r'šÚŔËĽKF¨‰‡ő[—««‚˘ť‹×Í–SFĆőę8´sëŢŞ 6l]ѧÓ05޸mĄĘ¬%—žÚlgŐÖŞŻ+ˇcvOuĹZu§Ź¸VOMáŢ'/]˙ĄjĚ®ˇ\ľa­RÚ­m˙¬Ś+ÁuÎé­nÁAeL(Zguô”†9MIJ˝î”{Ď;ú–ŹćĽÄöł—~¤;WHőGßů?JkyÝĂDâlŽ­k WÁĹ`EŔ–'Eú ŐxśöSÂł§Š§ČćÁŻŹÓ˘ßXZ‰Ş÷ÄV3'¶Fkď<’gšű¨µătJ‡€CŔ!ŕ8Ô°=>šdF;¨BKh¨Ä›_ď×hٶ˘¨zuh QťŘěMź*ŰŚőJuĺÄ>j-żź[Ă·R0áéčoăŤŘ‡Oáéä´6W¤cëžMŞ‚›łâSŮ ‡f<úŔë·Šçá˝ĆýöÚwş¶í÷ůâwEóöçŹ7č\m—S•»¶é§r}]ÚôU·iÉ™,r§§ÓľĂö©rĘ.±&ŻÇ8»5[–t˘łM𔕕ŢţĐy÷—'ęv´:A0—Ŕ3ő"›„\´ć‹Ţť—˘»·~2÷U­b*‡ć®üL·čŘíč_]őŃÎ[=mÂôGŢšń¨8a—^XÂöŮą!}:łÇÖĐ—ďĐ ŢöÔŚôĐj$Nôą«—“Ŕc TJ-‘_Łţi‘RůTe } ’*6}`‘͸Nô‘śD2ě‹Â净CŔ!ŕpÔŰSé€Kf4`™Ŕ*möqڵ-ŹŤçĎ~Ť­ą8ú¨Nlíú TÚ‚‰dl Cś»OÜ]0bŤ@ł…]}˙.#_ťú7©8ń‹ďy"{Ľ~˝rŠąí)[`pÜŔs_ţô/bůéĽ×ţőîO/ýćlNśőÔłë~ŞMLŻńT[ĄglÉ<Múđ«ç|<ꌑ×3÷öőĎbO†ŞęM_üńÚěćíŰ·ęľ~ë2QŢóĚ7ré3lűÂä?*U—’”ήUµ*˙g|ß2Î ÄŇýř/—}$Öżxúâź^ú,cY°ďŢç®` Ń·Ěl;¸Ű1ĎŐž—Đ)1›±řÝŃĎgđ#dbÇěĘÖQš””R­+gpp ŕŘşă:ş^T"'±ýÍ­'ěl‘řĂKµWÁ ,Pi¨ĆRlÔRuGdŚźHöőg\Ż‘ÄË9‡€C *ńź†ţD"Ş˙đö¶H<1¨™_0ŰŇRSi“«5öxNmnEÉ*‘ěëϸ^#‰ŹŘˇ\ęąŰ2(Nzéďýbm^ĺ^÷żp5˙Ě>¦§4—w‡÷ĂĚÓ©óß”Rj=ńŢ/…5Sű¶-»žtý.©ĆDÔsŽúźW¦< ŤţíÍď>ôö˙"ë>­Č‹PuWžříÎĽUS/ą?Ąyśě­˛ö\Jrş’€°ug˙"§w§aż»¶r,ˇYůĆÓ~{ă_GJßWo^xÝź+ÇÖ™fWŤű3‚MM™FS“3d+Űť[/˙m_6„mÚ¤écVonŰ95šc&gÓŘ˝1p‡C ń @Šx4d„ lČB¶ĄˇÚěŐŔlĆ}ř.Gr®Ćžćü§j)‚ß PSĆÍ9ĄCŔ!ŕp8üxaśúmęUă Ňó±^có8×P=z=ôÔ,RG¤®şŠ/DőŇą¸­ó0ţkŕ<>®ôB€ťRo:ă÷I‰Ácµ`Ž~tŃ“-›µLn>ăŹ[÷2đŮçĎZfZ‹;ĎŘżń‚a_7â §ŢßµMőOgRulP{Çy˙ŇqĂ.T10PŤMaDďń—Źů±hšĄµĐu”–î(Č[Ľv–žz„~]F\qâ˙U°{ž’ĘÓcś}ĆŕÍj+Ti3Ó˛n;§r¨#:h;ńÍ^6 ćNLš&ŢxĆŢ‘ŚUőÜ˙-Ž­;h/íAÖ13Q9Rµ–_éÇ_Q4!«‹Y$'jěi"P5@'4¨Tޱ'<ŐSË,'¦Fd›sż%›qÍôž&˘:ńTw§‡€CŔ!ŕ°! Źż`«¨÷WM ±_YËęâ0’5ö¨Tz*š§6ű@} o‘ô‘ŚÍPM9Ş›˝éSe›±MŻťph"pĚ€łţzÓ”N­÷nž 8´k•űço|ěŔł–N9˝ţůť™'˝ÔOT čzÔĂß™uDďqbśś’¬MĹćô”ý+DVA‹DHNJ…źňؤĄd<ôťĎŻ8ń'ÉűnMËÜĺoűÝožÖ"3GŞ$&$ţáş÷/>ţűž€’Î9ęć_]ý¦9üí['ßÝ!»‡'€Ř|čŞŇŞ˘Ĺćęq?ż˙ę ­šµóŘŇÍgţéî+^•˘¨Pś2üĘ]řdëć;TôétÄý׼udźńžFÝéAŚ@lů޸{®kŤŹ>úhܸqĹĹĹž đóź˙ÜŁŚzZWCÖké'Rő{ď˝w۶m-[¶Ľůć›ů”•2<·}[mzŞű‹üi%P¨ŚjosbÓkŻMSV„¨úŔ*!ťĚź?˙Wżú•Ů:2rőčŃcáÂ…˝;u8+VôéÓǟ̴iÓćoŰ;>˘Ć8DJ$l­ÔŢIx˙űß—.]š––F2Ó¶mۤ¤ŕ%wB>vµGŘYË”Ő !P¨”Z¶"żŢ݉ď!0ިN"ŮŰŚ=°lŢĽůŽ;î0ĂCŢśśśE‹µhŃÂSäNŘRcÝÖeËÖĎaVl»–݀پU7[ßwíXľákŚ‹K sŰ ěŢnŽżłU©=×.Ű0‡ ^ą‰H ňÚU xÜҲ’Ţg™ąÔŘÔ×€cű®-[v¬eňizJłjwrŕK·.on×lYĚěÔîíwÉéĂZ~~#ŞĘĘËVlśËŚňKIJcŠq»VÝş·ŃŤ3?ŕ~đÝr8°eá“Ĺşę}ă‰ÄÖ#[„bď)őśÚ|˘o©N"U©ÖŘcŕ9ŐF…đĆá-rJ‡€CŔ!ŕpذ=b\2ăĞ•XJ©Ú¨ŕ÷ă×D2¦z$űřĆţRżĆ°jęĎX›p‚CŔD€l™*»¦šú@9#µ9óFÍ©Łfő­dd\Č0a:°ŰQü«6¤™­ůW­™đ÷Ľcëü iŢŚQ=Úć_ř*Îň DŔ±uĺe=Ô;'ĹiČ,ąaPEĎ%DéŃŘNĂ[އđUÂ[Fr^On5„¨MDµ7Űr˛CŔ!ŕp8ęŰè!“:FśÄŢ_ËŻ±ˇŢR=„ŻŢ2Şóúó5±ŻA<Ú‡€C`ż#ŕŘşý~ \a°ĺqňEżëFâĆ'`›™Mď©.§6ăHúHĆ´h¨ Ś9Nä6'‘ô‘ڵ;¶ZqşŕЇ€CŔ!`"`{”pÉŚ­#fgE¶YÚô~hlĆ‘ô‘ŚmŤÚś†Ő‰Íy >PikQő¶Z¶řťŢ!ŕp8öŽ­Ű_Č»v­h2sU{ŹÇŐĄ–͉”†tes˛şĆŹź@WJ­ĺlĆ‘ô‘Ś Ş˝'f9µ9 ôÉ8ĐMGO‘;‡€CŔ!}<…ĚÔŢă3du©esBix?6'á=h0®•ž^ëic[Q >Ľ’¦ŤµS[µ‚ÍŹ_ďרs[‘_ď×Ô fm× ‡€CŔ!°ßplÝ~ż.+iGÔdŃę=JA`$8¨Ű`hĹÖP`°‘ŚńÉ>’q$çQ=׫óx-śŇ!ŕp8Ř4u›B6m*, ˛µeĆŁr$cj…·oY`ęŐy¤nF5ÖÎ:Á!ŕp89Ž­käČ…Wsâ'R ™%Ű" Ś!ĐŘT"SŃÔŮô¦ŤGŽT%’1 ©˝ žÖÍÓ06jÉŘŚD=ÄLçČqŹăÄ9‡€C –Ď#ż«ŔDÂoV'[$1ű•~Ť†§HmL!’}$cZ1íMŮ @ĺj ÔŇăŮÔŰäZ:ŹTÝÓ;‡@Ă ŕŘş†ÁٵRgÄÉ3óE[Ă6?µw޲y*aű5¶îı·9‰¤ŹdL06űŔřmĆú@eśí•qś†í”‡€CŔ!ŕ¨1¶'Qř,‚¦kďÄćç!#1= ›§Ž_´@ű@e›ęÄf_{ç6Ď‘ô‘ŚcvJ‡€CŔ!ŕhĚ8¶®1_ťC463ů™) RfE»vRű0đ`sböKĺ@ă@%UlúŔ"›qT˝†j QťÚ*ű˘Mű«ř5j쇀CŔ!ŕpÔóÉŇŔyŃš­›Á7d$Ä` Ă É”ýö~ŤŘGŇŰŚqe+˛éÍhkIś*-*mNâűĂv‡€CŔ!ŕhü8¶®ń_#am°Ą/‘rÖÚaĎńlFâŹ6ŚĆžżŠÇ@OĂ[R%’q˝ÚGŤ$R0~ç~Ťč‡€CŔ!ŕp4¶'‘™B4@4&żŤ_Sm´‘ŞÔźqś.v!|$á-µˇđUÂ[Şs'8‡@ŁBŔ±uŤęr¸`ĽŘRŤĆ™›zŁŻÝ9}§›6ÄwüROű‘Ś©[^^N•˛ŠŁ´â źžÖŁz¶Ů‡ÔËŐÇ8Á8’’’)’ĂÓ÷ŔSOsžÓŔ*Nép8¨Řž/<°˘şŞĄ}ĂGB‹tÓÖ®t'~©§Ë‘Ś©‹˝d/’ŇŇh†#=M{Nm‘xôz•Ń«,‚|Jö"Ťf2´ĄĆžvý§f‹ŇŠ©ńŰ;ŤCŔ!ŕp8¶î€¸L.H/¶,$|fÇFîD39ś~Ť¨TĆéľŘóIR»m۶ĽĽĽÍ›7Ż\ąríÚµ;vě((((,,,))!Ł…ÁĂLň]ó ŮZ4mŞ•=—’SŃH: 7—śśś‘‘ŃŞU«-ZdeeuîÜ9''MË–-)ăj»i†§ŠbbÚ;Ů!ŕp8µAŔö¸ÔçQçŤĘ‰?é źţ"żFú¨Tb_­ž,ER—üü|ň™M›6íÚµ ™OňIiŠ‹‹Éy°:Ďrx®B úȡĆ"óiĽXډhČa8RRRř$o!‡áČĚĚĚ®8Ň«aîÄ!ŤŞgSđëµ]‘hüzÓˇ“‡€C ń ŕŘşĆs-\$u€€-‘Ü%d6'R=¤+›“Ői ›~LŮÓ‘_ă©BJJţş{÷îőëׯYłfÝşuśîÜąS8ÉS‘ĺ ť-**’,–OqΧĎőz &4Á'‰,"ÜÉ-Y/§š“ 7kÖ¬M›60zť:u‚ÎKKKCˇż/~M`E§t8‡@"`{úČă/dC6'R=¤+›“Ői ›~LŮÓ‘_ăŻBZB®˛uëÖ 6đ ·}űvŇ”¤.0qĽ\If(Ş`äbáSŇšÓUđ´Č©™ô‘Ăo‰Ć,>%QA o‘Ô…Oň“ŠłJ §r4oŢśw“BęAčqcű’‚ÄnÍŘL90B§t8Ɖ@đúĆ«‹ęP@€”"|V!IĎA ‹€ŠjAŔ™(d/“É\ĺe22éěĆŤW­ZgçaëđY‡TaHBҨȰ鋧˘Ü’“ćÂÖmٲ¶ŽôÚNŘ:aŽÔÔT^ksęqâN‡€CŔ!PcĚGUµN\2S-D¦Řňčç “‘AsÂĘ1€L&­&ÎăDO5©PMÍ››^Z1ŻľĘ¤1Ľ}ôłu­[·†¶Ş#‡Á€†O’>µzükÖ;WË!ŕp8ÇÖ5<ć®Ĺý€@üÄEó›0‘ş ď!°şŮn A ’ZŐę1WĘ[s_}őŐ×_ =Ç4;ň×8N̨ Y0ˇżdđ0’Ľl—řąLdŔĚ7ać,G×®]{÷î Ła‡^ßTŰ€=€ppˇ:‡ŔA†@üg¸đýµą éÄV]4TR%Śžgç˛B@IDATşnd5Ě ŤáXşt)“Ho ďĐ‹>EĐ`L!N‘iU®±[OEĹ_rşF$¤m˘ç“#6¬®b műöísssáďştéÂ'śť$3ä3żÇyÔN9{‡€CŔ!ŕŘż8¶n˙âďZ@€Ü‚\$ Ŕ§˛e!!««żÚű±y ‰¨ÁhT6·áőĽyţđĂgĎžÍB-Ľvf$»ţ÷Ěf»« nôť92• .$Żĺu4óJČwˇí ‘çjG­8—ă`…ËőË!ŕp8jŚŽ €r r U'l°u$ńΖ|—SěĹ9…”·Z¶ŽşT‰y7†Oš˛€,>Ů:\™öBÓ$Ů$»ÂÖ±,›Řâ”—OŢşËRd 8đć‡M“Y ëÇnqśR j’´^™G‰Ę}:‡€C Ćđ|áÁDJ#™LµŹ˙+LÓţGjZŤÍ†ľs0-€iěJO>,ů úŔh!Ş`ßČO80 '!i »Ď@¶Žś‡51L‡°u¬uKuUBŠRŽ8fPʧÉÖ‰˝ÉÖ‰Ě|ôĘÖ‘˝p·p  —4¦"ť)ň€Ŕ)™ řaL¶ĂÝĹëUz×¶mŰjď4ś»Ă!ŕp8!Ž­k„Ĺ…äE€…wŞ$O$pCšî`mĘŢĘőpîI’´…HaŘś¨7S°űőüŕĺí#Ź<¨ş@žôHÝ8,¶Oź>Ě›>|8;ŽŃhßľ}±ˇTČ8í” Ř¨¬‚FKZ)˛™Č,źą*ŐhäTŇn¸3”ęV_‹R‹ÄĎ‹/& Ř7(KJy'Ď7+V¬€»$ÍĹ” ĺW“¶‹ž;ŤźTgşÍ­·Ţ 5)/ĄŐĆ ‡€CŔ!ŕ¨ă1†›#ä)?tčP$3äícŚ·«x‰˛é2źÔ•ę"KxRŠŢŁä”ĂěBEíPÉ µÄˇTW9Ž U°AÖ¦9•á裏3 ŕ”ŃsĽŹ$ÓĹűâ‹/`ńxĹ(ŐĄ]>IxHžá:ÁađŕÁ¬ňá’Ç ‡€Cŕ@AŔ±uĘ•:ăÔĚţŃŚŞăU!S!XˇcÇŽĽ-dś?™™ őŕ7Đ|Č_Tç[qb¬¨4ŁýřăŹ?űěł%K–x¨şO<‘td´ Ćd´ŻyIÝ$>ĺ0˝Ńś´H‘ j JŃ`€Ć,U‡RWÍĚşZËTb#µ®z“"ń¦˛YW-5e§›bOÇyÓÎťĂX“N:‰iłw¤ą“&M‚ż3™;„°ă§¸Ť;V›s‚CŔ!ŕp8"! 2žJps<‰¨áÂ8nČ;‚ˇi×®]śd†ćÔ‰§iyMýťÖ,-żĆ3ČpL›6ÍCŐőďßźfÔ¨QpO ~'“áŕ±NŠČ^ß5z¤9iŃ“*H٦ –&¤"ăPŃ`ϧžJÓ2¤CuĄŢČĹŐŹ ŇśśšžĄ–ßLlôS Tđ8”Ľ«çŕWż î¸ă^Mó AŞŕĘZ~śR׬®>qĽrę>‡€CŔ!`C€‡#Üyâ0m“ÁÝ,ĄĘă†d†çoÚHfxâ@KéN›Sď0I©ů€6íëC¶Ĺ{jîűÚĚsj †deľ0TxşźýěgBEi×(’„D>ĹOUŞ5PŤÖ{Ők] U>Ué1ăT T&™ÁŘŚŮŁŃŘüfKNĹ7ŽĽ—ĺŕ}6÷Őm·ÝĆXĆoâ÷ÜÜ]dŃÇsŚŘ ЬfDÎŤ§'8‡@c@Ŕý]n WÁŰžÔGň,H#X bŽÁbLöäŐ+ݦáSXĽĺKxYÍć¤tjŻNý-ň žÖŐ Ľ“Ú{ĐFm®lz­(Â1cnąĺ20±—Oé˛ #k©ŞÔ"ń©§¦@Q$‡âÜüÔFM?4!ŤŠRlD©˛ÚDZÔ*% ŘŢîÝ»?účŁçž{.KÚ©7iOxaň]Ń›źTä ż©q˛CŔ!ŕp8äńˇ8čd¶Žd†Ô…ůž<\Ď2mĽo­ă­$#+jď÷ š8‚§uµô»Ő"ŹP{ęĐćʦ‡ĘdŽ0¤’0ďő·żý-I>#Jé2‚ú±)µŠiéQÚęŇ ,=­h]©%źb)˝V©«JłS©ö6ĄŘJE^c3†Žd†{!ě0f„ĂëxÓŤ§Ä,"Ćć'Trŕ]gÚ8Ů!ŕp8ÇÖ50ஹČH‚"ŐČrHs™HÂ:/°$đtäs¤ą$|ňţ ×2Î.rKq+aü?{÷oYUŢŤzˇ÷^†Ţ{—RŃ ,ůĽ„[|ŁŃXb_}ŐÄŚ!jĐüŚ. éC/H‡a`a˙ďťgXnöŮçĚąwî˝3sçYźűŮ<űŮk=k­ß9Ăúťß*»š±P´Şs!muµ«®1r»ĚöÚŘ× %RćĽĺ‰csęB«ż8=Š>Ć5r–§Ĺ¨6¬ł3–kŚŕŤehőGţhL„Šl®á,EŠŵ8ý°[ÄQͦŁ}µüFŠâŐĚaŰ0{fkŹÄŕ­9ó6HD ¨"P\OĆedĆĐcę‘Zg‰·ń:ŢőIłł16ÖŮU,Ľ]kF ŁjąíC]íŞk?ňc/RÉc¤‘d´EđŕVUŤ2˛gtŞÖ†ŞłµH)Ëh}Z-9Żf‹ ń¨ęďŕń¨ÖBžR¶UgD«zD@fZ‡ő)bV۵d#Ř<}ÓhÄĺQ1»Új«UK•Gi$‰@",*R­[TČg˝}D ®KĚ"%č…Ă8p¶5˙Č®v8.EŽ:ZiPř™”´kFçFÖ`ꤖŮl*ęfâ†nčp[‰úGÇ#›á*)^uş­:KpÎĆfTËFÁ’łj”ZZFKJđ#gßZő’çü(ň…ĎW\áűăŘfFŮT$qBŇî’pVŻÔaGŕU=i'‰@"$ť0,"0T9tĹHdI2cŢQ˘Ůąš}¤žT;QcĚp „ł]3˘®ÎOK{:g3:K%|Ě–e 60Lă3ÁńB#[Đ W©8=Š[F ͨzŞv-`µěB$;F›KuŤËÓbTŰŔ®vÄD51.ČŚWŤăTń®w˝‹3şéĘ<]q3”ĺQ1h 6GóŠ3ŤD HE‹@Şu‹˙¬˝Ź`0é ĘĹ^2 eĘÖ gť<öŘcś—~.vTéNµ‚Wo;ŰýD%N1J˝­žnÉă4ś‹/ľřÖ[oő3\ÎĘqjÉ–[nYvntĹ KŻĂ©x1ŠyJ{"C8ŁIĄ<Ĺn5> Ő*z6wŰm·Ýu×]ޡćU°h®Fš´wĚ_M­8~'Ř|mż’ŰjÂkáéő˛UgÚ‰@"$‰@7zŚÎ’=°6Ćěśďád^o °]‘2eAfĘěccĚ2(מ ^ót¸í— ⋡âZ«±ŃĄŞ9{BT¤Iěî˛Ë.Ł1s‰Jř3XO0ÁÄmµTÄ)˝CśbČŔ®yŠ3 ×jŠĚѧrFŔŞQěČVŤĆşŐ_ÍUŁ18°#w‘ËEĆŤáCĹ+UsŞ×­óyM=¶n,ářđĂGK©4D H9©Ö-ňŹ đP é ®y7Ť¤‡ÓÔ4şFžĂQLҧ&ĄíuĘyiüߣ1BkE<Ť čU„A:Ç©U]»U6R;˙ëĎç˙őßn»íČLř@nşé¦;ďĽ36×x´ŃFů@˘ň#8bD%x1ĘÓŞGQ¤ę [ţR$˛Ej9#OÇď ĎŐě˝RXŻÄi>Ś>Ć­«Ű¸Î{Ňs©Ýjg8ŁH4›­©ünŁÍŐ–ł«·Ą§UěćOÉĚŕŹ“YPXB$JŞŹV(ř&ŕ¦$<_őVż*şLÉÝu×]í›FmcJ9ÚVŞ—5pC‹3 9wÚi'´Ř÷Şö(oD HeĚŞůÝĆĐcÄaĚŽ‘Ă´é˘BfŚGF"Ú“GƲÚhŐłť§C3JKÚ•í­żs]­ŃóŁvČŚőďČŚYFĄŚňĆt"¦ńťzĄ49Cˇa¬F4ʡ ÓSP6‰Ě$n̰]=*v‘żŘq•˛ŁÍŐ–ł«·ňDŞú;™ŕ3t:]ól pĺÁp|´PŇ_Ľ…N§×&-?´Ě0¸®ę´öőj{ţ‹řQ9QĽęgË Űm·ÝÖ·®ö(oD H-}W.m»łö!Ś6S#í:ŰJ†P d)1#łŻ&m@ď06łŽRá7µ€­q"C—Íą]Źş•6†jtv®7˘©&ÍK'śp‚éŮ›oľŮ'·ß~»ĄvPBý%¬×Ł(R®!lá‚RĚW‡ŤőJl1D.ňŕÔ=¶«ü¨¤ün„ČćQ|ÁGéhRŘAľ‰nn95Ś!…/çDUÍ33ÜĆow±QĽ. Đ k÷5 `â¦nµ­3ڏň…^(l% uäü ÓkŹň6HD 0ĹŘ× µaËŔmg˘É3*Ś­‹hźĂě#Wěý4Őâׂ”zkŮŠżŃč— "7Ćit¶Ë\k^ÎżüËż9Hűao¸á3jd,¬ŔčďÚHf‚@ ' bôŰ-2#a&R™`;j ™GdS<®n«D…­H‹–•Ě`,’ ČŚfc/aË/›&Ë毒™*nÚ µDŰM6Ů™q¤ Áέ–Tłą­&aĎ;ď<ת“dćŘcŹÝwß}kŹň6HD`‘#P—-y˛‰ÚŽnghLDâQLş§P"‹­,ł˛ŘĘjĚ [ Ô ÓŚ|a‚´+ŰÎ_*m40<+ć2;JŽ9ćt,L(›fnqGâ}Ó#lŃTúčVŔ>Ł5É ~ř«™ÚňG“J†¸uU…Tڰ«OË#F4ɵ8ç•î)ŹŞŔłnÉę9ÉoÓě&LđąŁ×ľ!2—żsŇ}šf­U:E¦|Ë[ŢBü ŠÜ9H>MD X ¨Ť2&O«!ŹqĘŕe”1 ť Ó†lËĘ ÓnšťŤ±¨NkŮšgašQB-LveŰůKĄŤdt|‡v0ëvä‘G¶P!e’đě÷´‚ŚfÇă2CöÂŚćnń1E(Éma/śq[ÍĂ–ZÉ gäź÷|dFťŤÄŁI<ĺQ1"›ŕ*ő@f¬Dk%†ÝşŹÉŕ3žâ3ŐfRKQl8zK Ţ”…#KĹźF"$‰Ŕb‚@Şu‹É‘Íčg,D *ă0;ěÖ¤Ą-Ť ˘cv5ńTuǵźŃ1\đ§ŽYęűP¤ó ™2¸ ć*ů1`ąÇFdˇ„ŐI1ß‹3¬b /Ä;WôWb„L& â¶ĐÁ¸­¶ˇ<*Ξ©IËĂD#ʧU&íă ’W·’ŹŰď™XÜGG 몳ü>k|ÔÇ]VůiX/FiO«ŃÚf‘ o{ŰŰÔXßZ0=‰@"$‰Ŕ `¤3r!-č äŁaźˇŮydŕ6‚WG·Á’şF[č[©+€†dp Á@ĚG:‚8Ö!ĆŇ{~©púJĚ`/ňK‘!8ŹŕBÍŁ6sŘ1ô—v#ÚP»ĺ¬"_l†¦–§áwĹ"řŃ"× .zÄɇ.?&#qb4;ú]„Šf´6&Y»¶’Á‘SŹVqjC-Ţ&‰@",rR­[äA6`Á "H†kđžŕ(Őb­O1̆^C¬Áxp\ěłČÎ45V'C,¶ÂW#T«¨ÚíQŻ‚T6ÚíjiÍÜ}ÎjY­Ĺt!zźZ ÂŽďú%Pš‹ňb·~*¸b·(/Źś‚ËĂP–›ÁaĂŽ ÚüŞşqd„W™5XÂn]µßç+a®~±Řě¬/~Ő ¶ň—J#~4 Ř}6DV…ÝI‡vŞű' &‰@",m”ńŃPR†żg±‹QČ Ćb°3(ӋȬ 3"‹ăQ>ŤJ¨šQŽ«Źz¤Z°ŃnWËÂgŽZ«ďĘg)=gýh ö‚őąĆš;a/d;"3l†k•™;“ń1”e”PjáŚ9#U»Pý4e–⩏ŻÜĘĂvĹR4‡qő™Ť ń‘öŠcਠOĺWWéTi@µęÚˇ–Md” ™±¶N]µ§y›$‰@"°8 jÝâđ)dŢ€@aD<@§p)â‘)G łyC×™YÍéV‰¬łŃFyÉšvIí]Óť0a‰§P˘Ć­ÎvžŇňZm¨y:Ü ©š‡§z[ěvţ’ˇo†‡”逷ŚUDŤĄŢĆŰ’żú´ń´Ő.žVŁä/Ź:xĘ#Ć@$Č`ĎďyĎ{vÜqGR˘ŠŚ™$‰@"0(cVáT6š*Bť!Í´nb-EZ»ŁŹ©5d†&ĺü d†ä4iŇ$»ř1ţĐw‹·:ŰyÚ5Łt¤]ÁŞ_H5gő¶Řr» FfLŮJިž3[j Łv« ĹSě’SŘb—ÖÖ<Ąx1JśVŁsžRE?ńuÚ{}‹_›~ žˇD Hú Tëú ÉŚÓ˙úb}Í LyčGv8/ Ó­Îd6V_"xs:±V˛ÎΩvqf3Đů/ÂĘŘUCU#Tý˝ĺ¬Ő˛U»sśvµ·óW#§Ýżř¤|ß(ĹĘyë[ßşÝvŰőoüŚ–$‰@"0$(C6µÎ"/oľbŕt7óa”»’°” –eY{e r„ă°6Wo˘`xy”9HOé€]’‘;óę'RÚPu»CśvŰůKĚ4ß7ÓŘČĚÁl,{ jɉ@"$ Ź@Şu ŹaFp ôő4#mcńÎV;©l–ńW bŐ®5Ë#¨- š|VÖĽ4Ţ,šް9"Áˇ;ĉ°(ćËÖÖxŰ!~‡ü˝-Ő*ťŤÄ—ÇŻŁŁŹ>ÚĎąm¤Ąt&‰@"´C=@?Ś&±ÓM¶łL›`gńW• j]@Ë"Ť2ŠtćlúĐ\{IlŹE2L ĆľŹ.Ůš"ŽhÖč ‹ÝRĹ4)-lp_<Ř#ťě2ćÂŔŃ+JÚ«Ě ÓŞ,[CŔ7ÁwĆďďMł°Î‚d·–'oD H„PdĆLˇ5ţČ BŞ3Äô–Ět$óącAfâ]±q2ŻGAfŚ_R‡Vőףî)J÷9ű«m'đM@›ÍLŰPbUJ“d&ż‰@",ΤZ·8:KiŰj4·@&Đ tÖj8É9Á¦Žď˝÷^~ ĺDBeCsáU+[¬QU‘EVĚ.Ú+ 3ěl¶Ö­ó_»‹cĎí"«ŃeZ ň(+9ÉX «8«·a7:[łĄg!đĺńm9äCvŰm·÷ľ÷˝ľńÓh!ĂfńD H!Ś@mŚ6”;ĐÇžb4µG}Ô™ágoąĺ–ć˝*&µ˛Ą™ ůĎÉĽČ µî‘GÁ‘bRĄAf,ÜC“ aí"ŁŃe3Ú•Ťw5Tź6ltVKĄÝ/řň µľ~űí·ß?řAd&sżĎ ‰@"$@ŞujĆěO ŤĂ*đNS‚X©÷şš”¶Ľĺµ+ÖŽZ?"Ră˛Ń”¤´L6É·°Öč‰üÄOĺö: |Íőh­µÖY9[#D(ŹJĚ0ÚŐ;ueĚV|Łôˇ}ČaĚ–ÔůŽĄT׊RzD H:#PFs¤‚‚†´XŻM¤3_Ě 4'Nä!ç9rÁĐC‰k X‚”GABh|&5•BZ&OžlK,ńNpa±&Ż@rdł5B„J2S ’ęB˝EfvÚi§-¶ŘÂwĚ÷pHö4;•$‰ŔPB Őşˇôi徏ÄDŃ ŚÓIszK\ł}ŐÖOm*±­leí’wb®b (?Ő/vçŮĹ.”ZĄŇBâŰŽ"÷*lżéUŤKyfżťöß˙}÷ÝתË-—r4˛ű‰@"$ @d©  ŕ Ĺ[ďékNćµ1'Af\ĄîÉŚĚH V [M—ÔĺQěś•maÚe;P‘ŹŞőv™­Z$í>#ŕ[d}eď’tű* &‰@" &©Ö &ÚYׂ@ŕ9\!¬§9dlĂÂ7:ťó术l&Yb9”Ę&ÖRŞ]ĹQjkű‰R¨­‰hoUŁÖ .™ôöĘ6’Ť7ĆĘ&`-fckUWËÖ®üí"·i—“őwť×ęzË[ă,ťřX×}oŐdMAźzę©K'2ŮëD Hľ!`d‘je«ÄŁ0YčD҉˝«±‰•¸ćD»Y1~Kđ䉼Şvu‰i~™A°d†H |đÁmD°ĽÎňpŹ[2ŁS­ Őzš·}@ŔWČ×éÇ?ţqĘf‘D HE@Şu‹ü¬şîY)ÍÎTˇM¬ŘçăŹ?NYĂJďż˙~6é JZꨲä⬡n°Ář1®l3,)x'rp_Gè4ÖßU 6Úí盡`¤Öm±kFíQ-¸˝˝7ÝtX6ß|ső¶ĂÔŠç­E >â+ŻĽŇo$+:č ˘ÜÇWBJ”D H^!Đ%™‘ ݍlô5ă‘dľľćÄٶᙩťŔPëk #ĆÎśJ† % )ĐŢX: ‚ÄŹĚ`2*­lĽ­ŃŚ’§sd &S-^µKś0:<ŞĺĚŰŢ"_EߊŢĚü‰@"$‹TëůG xAďŢŕšwSĺ…a»ĘŚq"˛h®-±.vk9ŽXĆPQU)(i.XFĚ8ĚÎb: —€®Î!čÄ™2¦(-ŠRŃÔŞÝÚřާ]3ÚuĽZ¶Ří‚Änëé"'©Žö ňĄľX&ć= tĚ.9z©n:‹(ýzńáJ>Yâ,H sÔ^gé/9X*·i$‰@"$Ý Đ8¦×¨BÜ’Qd¦Żˇk”ĆF“…v°˘1qEHăQiÇâ©k&…G2Ř™ş-ČŚPŞ3ى6Ôtś(»Ŕ>¶kCcÇŰEk¤]ţô'‰@"$K©Ö-U÷ÜŮ”Ąłí¨0”)kâHTÄ™‹¦[qâ¸ö’ŕŁ5JÚGđTůc*µUŠZ'™šv¶ť3e<Â}q\F—Ľ¶±®ÎýíPJOŃq)ň/ďşë.¶¦š˘§6 2lÄă°CĚ!đľľ$]:ť/ zč!?‡$ňśĎÔWEň{JĄË~ĚHĺ6ŤD HD ĎtŮŤĹH…«ÁČPeśB< č†éĹĚş»ŤăÝŤÄO"¦âČŚ8b‘q< 2#ŹG‹™é3ÂY0HD J¤Z7”>ÍĄ·/Č«‰bçĽXűF|±őĂj)|”AŽń64gϧđŃŕ¸5VÚH Ĺ4#-9/öŹIpď µaVu!Ř5FĎŁV×Â|Hj‰G{íµ—fßqÇq‹—«N;QL]G¬¶”ĹÚżőÖ[ďĽóÎÔ(gŮČȸjp\¦©‹Ş¬ŽH´ąjŠ_>V+Ü{セ¶±ivňh§üúK¤‹Wćh<§—KH‹Ş/Yo"$‰ŔR…€qÇÔ#ŇÜĂÚ:”Ćdď%ÇsŚŕ´69!S#†łV¸ä1żhrŽđ'NěŠec¦ôlŚĹd,č+"`cÖşZ+ęŢÓ® :<ę>~ćLD H†©Ö ŤĎqHő˘W«ÓÖnăŁvzZE…ě:_™cůŔwiRř(?JÚZ°ŃŁ%j4›Ť7SµAťCÓÁtŐEs¦ #xs» Ťţv}iě~ŁSŘšď˝÷&,:ďFŻ=u53ďli]°űU/ôť‡PĄD˝łĎ>›Ú÷ë‚4×™—`ĺ\~646~ńtR߬’óŃčťÍ>®„9Ý÷űÄ:÷b˛ąÂß-üň=±j2üĄk–uÔQ©Ö@ŇHD čÚ]-ŘŽ”<$ąŘ¬JˇCfâDKÂńăµů6dĆdÉßŮ–‰ ŕ‚őž|ňIŁ0â#3D=” ]¨vÝi×—ĆüŤN5¶ó·kLúD HĄ¶ŁňŇĐůěă‡@;>W%‹ř+şéJ{2u/‹ Ôn,.3“ě|ed·*ÂRâ8®9mňjK  Ů%{‘{¨Z¦¦%”·{H[űÂÓčlŤŮš-ňÜxăŤŘQő§ť$‰@", íń2V nŤý Ö¦©l†lŁâa" 'ˇŻy»l‰ŕß 3ĆGgá™0"cęÎ(_mIçřŤ}iu¶z„mtv®.ź&‰@"$K©Ö-=źőRÔS,“•†Š„‰×7d)(lđÔ¸–ˇ\”B˝˘7 EHB—EF !úĐ•LY‡¤%s7aű=ŹUuvé–˝śŚĘ›„§Ó™6ß~űí5Çňu/HHZ$°¶\-IC u€qŤÜ¦_Ń5·Ťjť§Ş‹<íÔ:°TŐ:µhjÔË…N{RČpňHp揤©RŘü‘ ţâ°KßőTŇZżL4L˝:NQ µŽvąŮf›y$8±Uq€ŔĘ2L"¬[Ť6Lś8‘>ŰďSLD HşAŔřkxбŘŔg€6Ř…Zg,ŽQĎXfĽ[`´3/•ÁZ( hD@ëěÔbT ™‰q\ö†Í ‰@"$‰@"0@¤Z7@ŔfŘľ#€;Fáîib)R­㤿H&ťVFƢŮYmçđ2 2‹ěd[`E%ľĚć±-ËÓ 5˛—¶“0bľšôĂ ZEĚęµÚ¶něRiÉÜę‰GĹË-·hUÉoSđ>űěó™Ď|&úŤŮn»íd`SŁČ^hşUu±ż†kýđ«€h%Źŕč{pzÝJŐzËm©·ŐSuořŮĐą )»ÜĘŞ˘ÎÂßÇ䉏É;ď|Đ®ôJRť§Â–Rě­ć%´ŚîSźúÔu×]ççPT gú46#ť‰@"$‰@ĘP#N‡śĺQ)R< ĂŇdĆxm„BiL,™ź#Ř9ą"ČLY·^-[µ«ÁŤ¸ŠY+Ĺń"ßѓA!%«öśŠ]Őá˛űŽ´«·ř«Ť)NF;5OÚ‰@"$‰ŔR‚@ŞuKÉ˝Dvł‘´őŠ,FÚ Í%6±ÚŠ’ÚT‚ž˘Ľ() 6ŤÜŁjĄ“ŘgşŰ2¨ł=¶xs+ăÖńpŞĂ€K©Ćލ®d¨V-s¤Ş“ÍYó´s–lÎ\űČG>‚”GٸFĄl˘ŻăĽÉ&›Äę6~ ťä6&Ű%™u§ĺQń$~Wr^,y‹ü¤=IqIY×hF,v+·2ךň§öhj4ĎŐĄx<’‡áĘéÓ”BócCň‹ÂŐçë×EüžńTć¨HÜşňDK\‹U‹ąÁśrĘ)ď}ď{o¸áNI6)ěĽ&‰@"$}@ Ý8bę>š Ć)¬Ă`gi|SnvłZăĎoń8âŃĚÔŞÇ ‰Ě 4D:SŹČŚE÷–™;+ä—7t‰±¦öŞ#2GŞő‘łćéą5gzD HĄTë–žĎz©îi(5®Ô"ů)(imf­ńQÄ´ÝÔt+ąD^ńfů-Ú" ł¤yşÖ‹4,=‹7ËÓúÖ°írÖü]”Ť‚†ÓGK4¦VS—´__˘ · Ů$zś‚ťé….VŰE×\KŠĚ!đ…]mmČs<ąÜOO ćU×řU0Ď7ß/gHoî=…gI>P-w•üŢ ;úp)w2D´R #’2< C{¨÷ßż>*µŃF•ź%Ż—Č˙&‰@"$‹Ć)”d6S…ÉębŤ<•ÍHmEy¬‰“§ÖâőŞNžyÁFŕ?Xŕ‚XadF4Ékś­–­Ú­‘«O;Ř}.Ř!f>JD H† mu„!ÓĂěČC ·+Mk—=š'錎ÍČ(ČÚ:›>°RŐĆdu;ŽŰGLAB!BdŃ6LW mË-Ž" ĚRcśÎÎýí\ĐSËý&Mšd¶Üô¸YwSčU%+"kc^ëćët Ć-uO§J-ĄýĹś%Cń´z­fk,Űč,a«ˇZs¶z˘`#nU'yŽ”I‹„ĎW\á7ŹÎ‚(YŞN#HD  ŞCRµŠę¸Vőł=BŹĚXűc€Ci°ľ9HÄ#=ó…%`-BńW›dĆŕH DfDĂgf'¸Ub_6oń2_pńT?Á3%‰@"$í0dXËfĐ©©uXD™Â ÚE¨ ŐlŐˇłęŻÚňÓ]Ť×BćPcś&ňŚ}lâZ ôÖšˇŮÂ*¨ö"H\é’†T˝ŁĘP1嬩¶łĂŁj¶´Ĺ_ÚHšDŞűô*›.>mÓ’o?˙ µ.N‘ö/Ń?@i±ja6&HTëĂŚĐ‚Ú+Z#¸±EM´Ę‰ĚÄčKô®Ëh†%oX¬şhU8něŠEsyđQ#Ý ®RŇáĺÇ!qŠ+ÝĘL˛ĽŽ­łúU"QyâÚ!rőQ—™‘é]vŮe›m¶ąöÚk|đA Ó Ü]żVŔ÷[Bżřń{‹ě\QsĄ4Rb—¦öP€y$ pZ×xäZ»ŐŕpF‘h?[ă#TkÇyÂYí,»ęŹ/LxJf?Ę?$‘6ďčŁýA~®@ž„Ű]}”’~ůtt™xşë®»nşé¦>/_†hs­öĽMD H0 G : 2$Ééĺ Î[Ŕa É ÓXĽżśĆq-1ádh3S¨=JłVFFâµG¶n*Ť‘ť)&Jc<Ő;dF 2; UߣűUXQŻ2/0ZfHúßĎĐÂú7l˙FĂ~±úř?@°ë…Ś?ýÖ»_üŐĄł}rćŁOĚ}ů•ŃëŻ5fº˴×rGě×·řŻÍšýňĹ×D«F8Í{ż]˛…Y<XŞHµn©ú¸ŁÎ"ozÓ›HHAp cĂ/ąä’?üáYŰ~űí‰MŃčîGŞÖŰvř1N VJСg=ňČ#Č(Ů.ä{LHWaőŞ%8±ĺZŻŘHbë%şL)«úZ#«·ŤéŢYZ‹ 4/ťp :uóÍ7ëŕí·ßn©Ú­U’Ž{T­ť ‰†%éŽaăîŰŻ‚ą°žřA–S~$^q~·~dó!~čkt4)lÍđ Dn95Ś!…ß#Nż=Lň3ÜU=BSŠ­H#Âń)űíâ±†Ž‚iß«ŰřŐj ŤĽMD HjăöŰo?ŁŞ‘ČhUFcS`űi!b;R‹YnK´â Ł1N s芡ÍÁs&ä´Ę (>#=ńÄؤ=‚Ô*rkČŽ3(¦Á·q¨m-ÎÓ®ŤţFgcŘt&Š€Ż˘ŃAD´˘… ®…ţç#˙DęsŔŮ“_xćË'żtÁ•Ősž}~Ć-wżxî%c¶Řh­“ţ~üÎŰTźvcĎť>㉏ýßČ)ČFűý¨›R™'HTëň›°h üń^xˇŐO†™?Ă,‰JN»ĺ–[MřĄ]™­ 5,µ:ŰyjUTłEů‰|Ć‚,o ĄaaĄüt7[&Ë ¬jqv»–`çćź)Źú«›˛aö±ľ¬ˇÜjg¤â łćqŰčlÍőâń~6ěµ×^Çs Á ç–|ζsŢ !ĚśĽŮxŹĘ<Ŕ­ĄŹŚÖ$řáŻfć¬Ţ– ś‘Jgèő(nKžř-äŞlÉyĘĎ$UPá,ů(%ż[­&LđYř”C‚ô DÎ×[‘˙MD HzŤ€iŞ}čC—_~ą[ń¨DAf ˛¦ëĽîÉ[Śś[fţJž0z5Őj)ˇ"1Î,ťĎoŇŤqę…É9-Áj´!1D–‚Uٱ%śh7Wx›–nĘŻŠ’™2.Wă76ľŃY-•v"0ČřN’¤cx«îUučş˙ůřęߣÔřď·›€´É'˙îkŻ\{k»Ě3ď›ôŘń_Řđ×ßłá:íň¤?HúTëúŇ Ř´TŇę9ô1vXTą†‚‘·š’Wä”ĐÄÚÔtµHµÖ>ŹU zHrć)tŞ&Űi‰Fj’*LYŁć®Ukl×yÄÔYE‚¶Ö V´ł;oW¤ťß@Ža{*¦dIšäÇ1ѧŔ&ŘĹj5Ă?Ă­ő€ ě<>‘ʉ~E´yQ{f#Łq[mLyTśđ‘â¶jű¬‹3řG<őyƸş•Üú!‹ű||naüŔ÷i’íĘ*? ‹ŕĹ(íI#HD č#‘tŰm·5JZ±nč¬+†<ÉUi2Ó~^Ř|óÍŤPeŕ‹ŠŞĄŞUײUu¶cTi |–ÚÄ čXŤ‚ÇX…'[­Š-‰f (Ź‘WđÎm¨=mą–-oĹ_W˙xµ.hąČŇÂü{ńě‹Ţ Őů_ÇÖ› 3úŐ»zmFĎś˝4węKVÉMřÍ©q›×D Ţ 8 B}YE" ¸6Ăî±ÇVu…*Dú©cśwôĘs¨đ&›lĚMÄk9ň¶6Ľđ,Â"úÇŐ-ŚgüDŤÇte랪 µŤ¬Ż5¸ú¨{A×*䛞e¶ĽÄdHŔ·á”„WɡčąĆlŹś’ŹŹ‡ˇlů(‹Íаv´S †aÇĎW ËĂ;®2k°ä;ŕŞý>Éšc¬Áô˝ňŃČ_*-T«.Î4D Hľ!`¬1QdŁ«•éNŇ0n–°4ôx*m­t3„ĎÂÚ­n+{kÔĆ8CˇdT—ŃÓň:Í 2Ăiř.d&ÜnŞ3řJÝäě&O­ÁÝÉ<‰Ŕŕ ŕˉÓ.jú­ťÁŔű δ+o*eWx×ák|ń##WčŮŐ„Ó?űÍNůŃ/ăé«°avÔŞ+•ĚaĽ6sÖÜW¦Ź\i…šżĂíkłç ŐŐ1š‚äŁD`Č#jÝ˙ß’ZŽ;î84nĽńĆ{ď˝—ÔŽ·9oĹö {cm$±Ď"»Î˝j'JáÖť‹ÇS|”‡+Ű̢ťt+“Ň&¨mÝxăŤÉv8÷9n»ĆtnFc©Fg´¶ĂŁn:[ËŁmúEš”ŰW}•ęoKţęÓRÄÓV»xZŤ’ż<ęŕ)Ź™D HA@ŕ}ď{Î@ »ăŽ;¬I7ZU¬Ň<çú믗ǙĽŮ9˝·KęhsČŚ}»¦É‹ćJŐŽŚ™±/šÚˇÚ…ŞÝ® ˝ň·Ë\­(íD`0đť”Úý*Ě–t®K ‹T§Áť3wx:bŢJşČ0őě‹(h6ż”ük}ëÓł{*n—Ů}»0¦]}óă'|ńµWg–lVŘÍšôŘä“Oá§çmpî)cÖ_»< ĂÓGßőwł&nç<3yÚĺ“_ąć–µżűŹËżeżZćĽM¤Z—_E‰úăÚVąĂ;x?,ÖH°CdŰd2ěŠD>üđĂJ!ť¤´Ţ”ˇşŘKb%ťÚ%,\íČ®ö#ĺFJë5ĂmcËÓ™$‰@"$CŁ?†ŕL‰ 3Žřđf $ˇ±żX„#äě\C-·&˙čen»×Č#§Ĺ.†iEń všŠ±hů®ęUČ >“d¦€–ĆŇŚ€G‘g´0$EĆ´sÜv›Űĺž˙·3_üŐ%˸Ç2{ď<~·íF­¶ň2{î0lż?§9/ľě­U©îĎφ ›óÜ”'?q҆çśRu˛ÉyEŞ+Źyú«ß[îÍo>:u‰‚J‰Ŕ|ň_E~1±ÝrłÍ6Ű}÷ÝO9ĺ;D&MšD°k7ť…Y"ÁgťuÖzë­g“桇J°s&K#ÇmtöˇĂ8®*źg…ť˝$N’65­%¦¦­łłĘŹźěh‘ť+mtvÓ’ĆŃ·ŃŮM´Ě“$‰@"$ýŽ€łn%ď‡u†ÝoćĄűďż™‰ßŇ­ŐQĘśŠk!2BĽýíoÇ":Lűő™ET«$ČŚÚUę]đ•Fj‰uvC“ ¨NěhWc;µ˘V»‘·4:[˦'d–Üo¦–÷í_čr‡ě=őgçśíl}áĚßřă˝ńzËě±Ă G˛ĚnóWŐqľrőÍs¦ĽůÇn»ŮZ'}rôúk9üîÉřĂf÷D>ăÖ{ćĽđbĂIvŁF®ňˇcÇn¶áKç_ůň%×D‹ě썝§ †#݉@"0Tëň«°X `"Á=őÔS˙ô§?ťwŢy?üác§†QGjl˘óV°LęŢ ,Í΄p-g»˛˛őj0+q0iňâ6Űlă…Ř­CŁŰŚď:ĎÎśŰËdM\—˝$Ą=%Bń„ѡ­EZ=¤ťżVWŢ&‰@"$‰Ŕ€"°ăŽ;nµŐV'śpÂĎ~ö3dU0«gn7RÇÉĽöxŕ N0ˇlŚ­¶ł]ń,˘Zś]Ť`Ň »3ź#ó@IDAT-·Ü™±°ÎiĽČ ŢeŇ™qäfŕ<µ µ8Ő§íZR­·äotv^ ¦‘ &ľ¨íľ«ŮŚÎuőK#­¤[íSőÜ?ý¸µ®Y?6ŐßĎÎżë¶«ţĂăwÚJžWřcÉŮłÂn”·®°ÂŰžqçýóŹŔ>bîËŻ´Şu«}ęřU?|¬˛Ëżő€‡öx÷śÉ/Dś9S¦–€i$‰@A ŐşE‹‚ÁËÉ)NkŢy睯ąćšß˙ţ÷®–°Yg×Ú8NÉ™Íň ą§ŐyÖčuąŁÝčŰŽn–Č@Ś3)më mµ•LMŰEÁ`Ŕh®#íä”JÁFٵ1č6ú[#´fkÍ“žD HD ‹ěL™ńV‡łĎ>QÁ–ÖQ›SĂ,vsŚÝÝwßmŰŢ{ďŤĚX×M[F©ŇŮ\™1 ‰Éx§-2C[ŚŐvz±îşëĘ[hŘZKÜFŞä¬yÜ6:[łĄ'HU?öqŰo9ĺ'çľrí­Ť[\§˙aâcÇ~ÂoN˝ŢšŁ×^˝´dćüăąĆŞŽ´żűö«üÍ»F­ąZyZ3Č‚áńţŠq;l9íňëăöµŮłk9ó6H j]~ /ĐSěwĵĚńp”84âÄşÖ¶bxĎ?˙<ÍN;8·Č΄°Ôšą=8®švĆłť>cjZ\í!/"ë2XdÇŽ¨şęÜŹ-ĚP‰@"$‰@"°H0ú™±±”ć¸Űű†*´S¦Ěůa2ňě2™©Ä€¶WŃT‰\(ižf 11©i¶SČŚö$źĐ%'‹ e÷ŰŐßÜWgľrýmÓŻż}ú­wŰĐ갹Ҟą/Ľřěwţsťůü2űí:bůeçľ4­<˛›őĄó®đ÷ĚWN±ŻvÍ˙®őµ°#W[yě•"NÄ+ö°ą :ţźź¦•,­¤Z·´~ň‹wż-Oł%dź}öy÷»ß}ŇI'y¬Ůiơ’Ť 'ęŮ{ţůçßzë­ű“ž˝d ą BŮ+ZŮŽF«·sEd-ŁŁâµvĹÚĎbň\˛ŁáÖ ˛ŁŮé*Çmlq¶ÖŢꑹŐžšß-Ä\µš.ë¨gءږű9€Ź~‡Ýz…©uÍč Ůµ6Ł]]ZŘř("ÔŞ€ĆM7Ýd®Ś±ŰĄs—§–F:TčĘ+ŻôË„özĐAĺóä{~—ÂďEv9H~CŔм馛~ó›ß4Ü\uŐUČ Ş`ýšŃĽq@W± HűRŤŕ;í´2c2c÷®D^´*ĐŰ´mxě±Ç\cW,2đŕfíšÝJfôĄ]ćV)^Ś~ű 2P"´G`öłĎ?Ľďűý[•eřřq›\ółËÎ_Ő;bü¸Ž:Đ^ý'˙ţ`ÖźcüÎŰlř?˙ţĘ5·Ľ|ŮuŻ\}ËĚ˙X­Á»_§ţüüUţćÝUgÚ‰@"Đ[R­ë-b™PŔqqD¸Ă‡ü«_ýęşë®35mĎiőRk ňGm!“ýá —YÝć <§ŕŐ˛•ŰV˛ŹzĹ#¦:woŁŤ6Ň6Ű^‹vďRîÜšš6kí)L*µ7˘I­ ŕlĚÎx[ZĘ DDŕH\ßôţn»íf˘¤B ůGľ9>«5}C¤xI}4^áGâ,řu$•Ű4D H> €!MĚŢ~řáxÂ…^xçťw^zéĄÖݵ#3qČĆ-·Üâ^=aěŢa‡ÚQ ˇ•N´kŃTŤ‰?`Af(w“&MBfxś7bN´]KJpŃ"Oś5Oą-ŹŠQĄ‘$‡@Ď’·‘#^{e†*ě{}é·W®řÎĂ«Ő ˙ç÷řŤŮp]Źž9éT<«ń#k~ĺc$?˛ÝäďťA§ ˙«÷MŞI;Hú€@Şu}-‹ 6ó4“ń8"A´Ęav„0Á4Ň\r•§\“ŤV®şęŞ‚(8pMGµŤfÚY«´-1n©ťGŚPô\kěąWÄTfĹ‹€Č1¬:şI4Ľë®»Řšd™ˇGšá=¶éqtśáŃ€Â2p€wV>_űŹ|+Č—@x衇,Čs~ůžHÄ;(•ČŢ""•Ű4D H>#`F 1mf0ÂLŚDČ bÓŽĚĽäA R’9?o¸ FÔç6tS0ČŚuv†EC'RˇÁšYL%4Ƶ•Ě4’“•ö6‡Pů(Hú†Ŕđ#Ćm»ŮôďŚâOá_f?óü˛îáŕąŮOOž~ÓĎ}ç´yÜ[°gÜqßôîçčőÖZíł3jőUV:öČ·ß;őç„řčÔ li$}D ˙ő¸,6řĐ•Ţţö·|đÁ–o}ë[Ů=ýôÓH$ ŰŘşŚ©`»9{łŮ¸ ‚\Öřekńô±sYJ‚«"™=/&˘ígÁ¶µ„źaeo­´ŃSkIÜÖśĄ ·âj….2¨Î#ż n<ŰO«í}$ŰDýÖ[omŐ!5Ę^ů”9”ĸ–°Kˇ#Rüś(WÝ÷eđAř]äËcť›f'®ÉŻżD:˘Ş$sô—ÓŇÔýlj"$‰ŔbŽrČ!‡ŘßúŽwĽ™ůÝď~g«)¶ĐŽĚľĚ8Ěnżýö3|Ű4Đ%™…1®’ zŞ˘ÁŃЉT+QŻ 3¦'’Ě46,ť‰@"0ř¬ö÷Çýéź6g1ž9ëąo˙§żÖf ;fĺy›[Çď¶]Qëž˙Źł^şčęѬ=ű‰gg>ôh)µěľ»;ŤD čÝJ}‹žĄ~G€Ňä¶ď}ď{”6źrĘ) óŇ="M%ĄČXăvöŮg›‘¶1–lGźęž_¶¶ż±–VÖkÁšÝ»*ĄÜŮk‰‹‡fäŞIŤAju5ćQ\Kţ’óMozSlW1 î©«]6Ş&bŐöĂš ç!TaŢ6ÖŮYd«íśJ#!čnµź°XjYü Ŕúµ˝yüşĐýXh©ăžÂ*đ‡ˇ[ůzřůK ’:ë<ꨣR­[ü?÷la"$K† 7Üđ;ßůcZńk_ű0׎!đË.¸ŕ#µ]±ČĚBŽŃŐń®Š^ŤĎm}ūӸ‰E 3"´ R اÔR{Z»­ĆI;HeöÜqŤĎř™żß©ŠáĂ×üúߏŰjyVýčű^ľđęrVݬG÷W-;~Ź–;tźŞ'íD č©Öő´,˛0ßK{Új«­¨oŰn»­“_~ůË_"»&{ńĽVŞÇc+GĚ][TeA™đ”íÇ ­•ÂĄ…9«Nud;ÚÖK˙"™uF°§MĘŁRá/O‹-ťłÁÓ:˛_őî˛Ë.NýÓq]”E8·}˛7 ‹Ľ…CFĂ4/ÎÖT«đ\uARP’]Í Ořý„čÉ:jTôŃÇ$)%HáĺÉŔŻ…~{ ű~śha±}Rl)~´ÄďNjZ$möSA·ňx6#B…źÍE<…6zýę D|-rÔ6O!vůĺ—[łpß}=oą*IŔ3Î8ĂŢŘO|âĹ™F"$‰@"Đ/•‚Ě8$Žr‡ĚxĺŃ 7Ü`DŽÁ˝6Ä»5®ˇ:t=ă8ţÉxu¬µ_ÚAj•†Ó¨mVĎš>“[hqÜčCy‡Ş…jڦHÍ_»í3%‰Ŕ!°ňńÇŚßcűçţ忦]z]kË´çęźţë±[nŹĽ}bý3ż-óÔ_ü6Vä•"ĂÇŤ]é/ß¶ęÇ>0|TĎďťácFcĚžżsĄd«ŢnQóäm"@ Őşü,©`Š’Uctű2H-ř+É —m¤}üˇ‡|¦ĎdŞŤéâŇÍ…(;ĽV“[–k»Z©š§zŰÁ~řá‡c_äŹÎÚ5C§ŁOyO®ÚnyčVşO§ I‹–«%ij¤—AFŇxr[ŹV×Q­óTu‘§ťZ§ăUµN-0‰zˇĐiOŹV7ď9źQ Ň[Ďç7k–¦Jaó‡Z'§8lq˘ďz*iĽßB¦^·Ł'Ô:Ú% Ő#ń-OP °zŕüq+6Lś8Ń>â€çŁD HD`a0BIČŚQ̸cŘ5ô 3F4#Tkdyče¦Ü”RÄ5ČL0ŤÖüýâ1|kXĚÉ©QL#lg2#O­ýµŰ~iXI~D`Ü6›­÷ĂŻÍ~nʬGźő§§f?3yä*+Ůâ:fĂuśaW«g­“>ąÚ'˙jćĂšőřÓs¦LµÚ*ŁÖ^}ěćF®¸|ÉhŰt= ĎŹ ŚRd%ć }ĂG)ż(Č‹~TŔÜoďŕłiČŐbLŇ(˘űĺĘ/QýřůčG? C_ˇč¦ewë­·Ţ u9+JD Xj@HĽ€â¸ăŽű×ýWdĆpl në"“”fnľůć: ˘÷ (tŃ’ž‰»Ę »žĚhs‡>hŹ2x"4"0jµ•ýŤßy›Ć§5gd®9ó6Hú Tëú ÉŚł(ŔmĐřâżř®w˝ëÇ?ţ1ÁĹ›%ČLí( GvšśwŢy”;/[°)’°EĺĚ>´kŰŰĐX°Ń‰Áä#ŃŻx×PÁŘ JĄm­VśA€0Gżăw•Üš˝§[Ůt#1hyóDĽ™ü Ć’·Čo=𤏤¬kt„Í(·2WoŮ!ź1Bh‹ćąŇa•ŠE†+çĽ_ =»kô8I/\)qNÜ#ÂÚtě©ĚP‘¸u剖¸;޶řÎ"ÄÓN;í˝ď}ŻŤHś’lRŘyMD H–ăá>űŮĎ}ôŃ—\rÉE]d<2ÚŞ´q02¤ eCfĚ-ŃűÖ]w]A´‘µŕŤ «ĺiĽm,Řčl,žÎD HD`Č#0¨#úG3;¸¨ ĽĐbL,“ŢŢůÎwÚř‰ŕâŻX¬5SČ_+˙Ăq©NŢJx˛‘ÖľČM7ÝÔfIŞÍ˘ęEÔMmmp«gíT„‚ć :Ű?őKŞ›DŘ*Sĺn…•Mň AAm¨r°r+ő b®%Efxň„]mXČs<ąÜOO ćU×çćůćűĺ éÍ˝§~‡”äC×rWÉVVűš‰Ź”;"Z©…I ž†ˇ=TČűďż_•ÚhŁŤ˘ŻgĎ˙&‰@"$„€±Éxg Íq #Ň™±jľ™1– ź|ňIc™1ÚĚĄR^oe4¤F·©&ٸVł´zŞOÓND H‚@ŞuŠ4–xĐ\z͡‡j/§Ó—˝EP…ÂNť:•ÔŘ=9%»hm9ÁŚí—´2‹Şµ¤H6ťYŻŽë_Ťý[wVU˛˘lčV®ŠÓ-Şt?2ČSŚšÇÓ굚­±lŁ3˘•˛µ€5d®ĆiD¦ę$ĎůaC‹„ĎW\á¸:ťQ¬b(µ§‘$‰@" 2Ł]wÝŐiłČŚĂdßa¨2iŘjl ©N2ő(yď„ÁÎAqÚ_cţĹÍYť·¶e{D HE…@Şu‹ ů¬w°Dnź}ö9˙üóŻżţz“ҧśr ÝĘ**t°‘z„ KvSîż˙ţ{íµ—…Z‹‰`×Ř`صóWaő҉‹/ľřÖ[oµô &NgŰ{ď˝MÔ;Ó-˛‘·Äq…@‘şÂ)C1ŠyJŐ‘!śŐ€ě9Kśb,|ŔZ˝ H›ł]ú®»îşűî»ýCłÓ6 }mR­f¦D HEŽ€Ĺă4»łĎ>;ČŚĂyÍ,쌭1ĽÖZh(w’ť„ůĽůÍo¶1–ęgŮx-Ű"ąml°–´ó/’FfĄ‰@"$‰Ŕb…Ŕb1„/Vdc†;í´“wˇÚëĚf{cé2vqv †łĂqÉ[NzŢ` lŹ]„h´kg«żŐͶTĐ;%Ľ*Á”»®ÝtÓM޶!DZaç‘]ź”;•ÄˇŁą*X˘Ł<­z"g<ŠęŠÍŰuqkč¬8¸çž{ĽJÂögŻŰsźĺu´9 ŢDa5((›ŃťĽ&‰@"$‹AfŢýîw;™×k%®˝öZăW‘[[h ęŇK/5âŁ1&ꬶkÍ3hžvílô7:­©YQ"$‰@"°X!jÝbőqdcúŰ@â]Çs Â:qâÄË.»ě‰'ž©éÖĘĚKÇ^ ŻdłýÄëČ[95ÝŽŞ¶ó·ö˘xĽuÁ;aIQ– ŇŞĽőŐ>$HŮ˙kŠžÇ:;ËîxşÉ–‘ÂSt·ÖÄŁRŁČs%3O8K6·žĆµ8ĂhuFYůĄ’'śĄl”rőńI~Ăč#1Î)?®–Ńąeű4@µä„ś^Oaă3YPäKWžĹdMeé]‰@"$K9…ĚĽő­o5±DCfĽĎÝxg,kÇiÔ3ä9ÄŢCž™KdFśÖĚä)Łv-~;-[Ţ&‰@"$‰@ŞuůâqśGvŘa‡yő„í!8«yi §Ýů/löÚ‹°ś|§¬›éVŚšH4pŔá˛]ŇŮÎŮ[łË.»T7˙ŕZ[÷ěłĎbđV“­ôÎbC⑎Je‘ť«·Ń)e‰™ÄĆěC˝Ň÷č~ÜşşŤëĽ'=—Ú-|ÂE.¶6ó—–Cvő¶ \őÇ/“đ”Ě ~?K|¦>Ů"őŃŹ?WüVń“&¶»:ÄGňiúLuŮQÜöyÁu2VŐi[©7ŤD HD`q@ŔŘdäÚożýâ<;#2c°3ҵ#3†{srĽ“Í·ÖZkĹ@?hĂ\uěîŚaÍ;g˧‰@"$‰ŔR…@ŞuKŐÇ˝Tw–ö$9Ćĺ /<çśsÎ;ď9Öеk†aŃ!¶ŇúëŻďř‹#Ź<Ňx=h‚]µUí†ÚvţjŮ´D HĄTë–Â}iď˛÷H`şýčGO;í4‡7S©Č=Č"ÁŽĽeašĂě0]Ç˝ ‚ÚÓř¨ŃYk'ůĚŠą}÷Ý×k4l &xŮ%*Y€ćl;k a“'O¶üĐ#É„EôÝ UČ=Ł5É ~ř«™9«·%g$UHě0Â~ýá|-qF“\«ůŁH<âW%±GP7Î:ÉęHď™0a‚W Évˇ?ĘY*J#HD X‚Ř}÷Ý˝4ö¨ŁŽBf~ýë_ĘM_ŐĆĐjwśďa÷n%dĆ:;gáUźśÝ®I­ţâ)ĆŔµ*#'‰@"Đ%ŻÍž3ů”Ó#óeĆŻňˇ÷tY0ł% Ź@Şu ŹaFX°ÖĚŠ*łÓG}´•VލC^'MšDźjě‰u[Q¬ŘLÚóŽ˲VZi%˘Ocţ…wâ©Ý I˝"µ´3Ý×BĄ$]“(Y–›ŮMĂ&ŘĹj5]f¸µ•†a[Hx!ŢŶŘy2YD›µgSj€·U@ĘŁâ¬ęwU»ŔËYt@6ˇÍŁÝ\ÝJ 'ňÄâ>ź¬ŰXÁ§łüÖĐžײĘOĂJ KKŇHD H–ĚHÔ\ßö¶·9ÂÂYVŰ™x3X—1®ÚC¶ˇÜŕŽĚŘ!ëŚdĆž1´š­íVĐ!xc›;äĎG‰@"ô;ŻŢűđ¬ÇźŽ°ăwŢzäĘ+˛­\|ň|µnäj+§Z×ď°gŔ¤Zל|4d ţqlEUŐ|É%—P‘Ľ'4©Ön#‘®h¦¦]i@j€ĺX;ÖZ¤ž Şík;*Š"”/í§j™ź!ĆS^IVá‘íBŃs “GNÉφ˛ě¨˘Ř žviC°¨r±C­c„W™5XňëÂUű}’ź+4G‡Đé !•Z'©4ęŠ;ŤD HD`‰FŔHgřsť÷hŮ`6J:ĺĂxmněZŁ$ÁÎj»€qÓ0ZfČKőĘ/>ĐXŞĘ3¤3HE…Ŕ”Ó=ő§çEíëťůťeß4HkUłŢĹTë˙Ď([8€Ř ňţ÷ż˙ŘcŹýĂţđO˙ôOÖŮYdgáX»*-4łŮä‡?üáĆoě¤gďp  µËÜ/ţĽ¶ĂŁ…¬:¤1űFĄ 7ܰ-*-U7Ţ–üŐ§Ą§­vń´%yÔÁS12%‰@"$Kq2Ż·ŔŁ1çž{î˙÷ď:Źz?ůÉOĚŐěŢň–·Xdgč8¬Ş#xµ–vţjž´D X„Řă3|Ěč×f6ďÁZ„ ËŞ—R­[>ĺěă0Ąl^ú«_ýŞ/\|ńĹ?űŮĎ,(ĂeŰÍ g‘Ýď~÷;ŰIöŘcݎ0/m¦zŐôňq÷¶űś˝lBfOD H%dfóÍ7÷F©C=ô‚ .@fĽ Ö¦d†fç°ZďŤEfâĺKýľ1¶WĄW™—ŚO%[™,ôüKś;×>—¶}ÎÔ—ČXŁV_e9KűwŘ$°âé`tźyî+Ó*×!TyäşáŁܵ’źT·ńug˝6}FŹgdŰfs^xqřřq#ĆŽ)MJcéA źő…Ą¸ěéCŔŃfxŞĄv±zŽ ç0f©ǵTÂqMGۇâü;†í$ K;ŞÚÎżđ5f„D HD 8żUBfâRVŘ9l×KcŰ‘Zž$ł72Ńé™8Sbá×Ů!-ŤĽĄŃ9Ď.$CŞĐäSÎqű˝ŻŢ7iî´éŁÖ\uô„őVzď‘ËąMą{éâk¦žůŮf?ýśŽŹXqů±[n´Üˇ{ŻüWÇT˙ď1őż}ůŇëd>zÔ˙çżô?—żpćof>ú„#oƬż¶ü«|ä˝#W˙ë©W™í×fÍ~ţ?~>íĘ›züŇ´Që®9~‡-—Ůgmný8^şřęĎ˝¤çdşGź>~ěčőÖZfĎW>áťZ"ó´«o~ůÂßOżńÎRpĘiçĽ|Á•+wô Öyę“ß ˙—[ç_żPň0 aýŻňĹ_]:ĺ'çΚôŘÜ—_áąĘŠă¶ßbĄĽmą÷Ş6 íˇŤ@ŞuCűóÍŢőlőďxÇa‡f{Č 7Ü`ťťEvyiG.qÜkŻ˝öÖ[oµ4o‡vŘqÇ‘]§ĆTŞŢµ`^nŐµ«±5Z÷9[˦'HD H†Öűyä‘x MçźţŻ~ő«^x™)§ĘÖúËŹóÜ~űíŢVqŔŕ3"$™©ˇ”·‰ŔĐFŕ•ëoň'…ú=ťýÔsţ¦_Ű güĎúg~‡âĆo%Ý3ßüÁ ?>·ŠĆÜ©/MżáŻ\uóZ˙üąQ«ôĽśAzőŢI/_rMŘ"Ożů®°]g>ü§çOý9mÂů?1nlo3G„'ţ÷×^˝űÁsöăOżäď‚+gÜvĎš'ý}QçÎxő™Ż~oęY”śŻ˝2cćýŹřÓµuxâríůę=QKĆ´ËztĆ1›O ëM»ňĆxä-%ĎŔAáđÇŹ˙´«n*u1ćJ{#Đv1çîsv-茀×GŘHňÝď~×á/|°©f\Îr<÷¬łÎúŢ÷ľwÓM7Ů$Ű9~oźÎÓîćżĂ´” gJu4D HD  ŕ é¶Ä~ó›ß$ŘqÄΧóv¦dĆŽŻžřĹ/~ńýď™ńzŮŞ_ŚF2#rżÔ›AD`Ě™2őń~©*ŐU‹LżéÎgN:5<“˙íĚšTWÍIŐzęďżQő»*Ő笇ŁŮ•Űb,0ł˛O|üëU©®”eX¦Gy,m®JuĹßcĚťűäÇż>ë±§Ţŕěîfŕ xţßV“ęŞ-‚•€UOÚC\[7„?ÜěZßđ˘4 ťéĺo}ë[^@ac,ţęx—vëěĚKżňĘ+¨-Něĺ¤N˛ó »Qúý0;]j§Đµó÷…,™$‰@"$K, bů˙‰'žřŔxĹŹ~ô#di‘Z»…HĐělžEfp,hçťwvTRÔšy!=íH ¤…ŚźĹD {&źr¦ť¤óóʵâ;łŮ†=űF__ąĆ^ăKťóÜ”çřËvěV›¬|ü;†ŹăiY}FfšvÍ-Ëî˝sÉV 9WxűÁ¶ŻŇąJu3n˝§d¨ť3Óă^ťřŔüüŁG-Řľc·Ůô•knyĺuëĄó®ů™ěr%ANůŃŮ%ňŘ­6^ţýçĽđ’M¦Ăćôś gźéK]˝ÜaűŚŮh˝çř‹˛vµOýŐŘ-7öWĘVŤŮĎL8(^üźËK]k~íă˲÷ÜWf<ýĹŃÁđż|ůőËîłKÉ“ĆF Őş!üáf× {@,˛Ł»!»^üęŘ—;î¸ă©§žŠP4†¶1 ž6m^‹Ý®»îşČ.Ł1sgňÔŕäŁD HD č‹élku2ŻÓuš23uęTűÚ˝46Č ¶Ł "¶Çš†D„ş¬±š ź©Ţvi' ę¨.łůH]fÎlK!ţĹ˝đłóJÇW˙‡ż^ĺďv»â»ßňĐ+Ě}ńeĘťCčćżlaذŃŻ·Á9'Ź?NÎĺŹ:đńľ8íňë#Č”ý˛U­=aÝőÎřöČĺ—•gäŞ+=őéoE晏<FőşŔĚ/žsqÉżęÇ>°ÚßýĄŰU?|ěŁÇ~rú ·Ç#yVűÄ˙šzî%ŻÍx5<ŁÖZmýźýóČ—w;b™qé ˙+×ݶĘ_żÓůt/˙֍Űy›eß´“ 6ŇF¶ęő…źž7pPĚ|ଡ.:Ýe—µĆŞk|ń#Oő”đGJž4†0©Ö á7»Ö?l1/ýĹ_üĹý×]tŃEż˙ýďIr3gÎlťZgúÚŃÎ&Ą7ŢxăÝwßťŢ×/çż4ÖŘ7*Ü*ť‰@"$‰@"0$X{^r2sĎ=÷xc,2CkÇ"l&8qâC=d í–[ną˙ţű#3D|fađiW]Ő?O\^ő,LŤYÖGć}Á‰C"Ыϊž5lÔČ•Ź?&rRÖÖú˙0ëOOÎż]yE/s(AV9ţęxü›uZQë^˝˙‘’­Ţ)Rϸ·,~§ż» Ě<ó‘ÇKfŰŽ^řůůq[}Ůë´ßÝ@­›őÇ?źP´â±GťkĹ÷˝uřĽóň˝îšŽÖť5 PŚZ{őŮO> yö¤˙xö[?·ÝăwŰ–.ąĚ^;–óřşkićZ˛HµnÉţü˛ő‰Ŕ±Ç{ÔQG9Őĺßř†Px‡šyévlŇĆŘoĽ‘lwÍ5×~řá›oľą•z}hm»řŤţÚÜ©<^·Äşm^r‹a«Ŕb·Ip—ÜO3[ž$‰@"ĐŠ2c°;ţřă‘™K.ąäŮgźmwʇ˛Nć˝÷Ţ{iv^CĚL0ÁR»Ö ôTÇÖjćFżÝ»Ri•M»®¸âüsë«ĹÓnDॗ^*;ť‘ŔqăĆŮęŃ3ť‰fýqľÇöF…ŞŕµÂQV!šůĐźŹł»ĺ&ŐGŐŁłźxfîôEË‹lc7۰äąŇ6uÎlďŞ=ą%ÚäůŻbW Żep;ł˘ÖŤ™°nÉ0z­ŐWýčűĘmoŤ…bů·0Ą˛ăxŘě93n˝Űß”übäę«xĹÄŠÇÚŰgţ%Të–Đ.›˝ĂěŰüŐŻ~őmo{ŰW\qĺ•W˘°…ŐÚÄďü—Çü׿ţ5‚kcěN;íd;IMS«•*·ŤÖÓv~ŹĚ{S—J{4ďä“OţŰżý[Î.+-µ/m†_“'OţńŹLŤ-}· H*·i$‰@"$K:ČŚDÁůÇüÇ·ľő­wÝu×Ďţó|Đ8ŘŘ5Ó~–ŕ9äĽóÎ[sÍ5×_ý˝öÚk•UVér6«iiç׆˘ÖE{´ísźűÜg?űY«˝(ٱ‘é |–Lžzę©ücĎN:ÜĎÇämiXhB”´C`Îä?+_eéYcf»2‹řŘŃĹfŚ[ů·içőÜú.řËőbŐBçĚs^|ąZu;ŰšŹŞ˝±ârí2÷Ö? P¬ö©ă‡Ź5ĺ?Ďn]x8çŮçźú‡˙gcňĘőŽŢ¶9ó/‰¤Z·$~jŮćE†@LQÚ‚ćĹ$jI•c·6 Ĺśž|ňIO­Ĺ3·éÖŐ:»ţ•Ďi3Ď5î‹«‘˝G(4)Ť[Ç6–Öv.ťpĹŹçć%pYůâ‹/4¬ čŰ"‚!ŤD HD`1DU˙&M+š‰4űč(ŹvšťÍ;Kí$E¨?xEż“ă22S;PŹçꫯŢsĎ=˝.˘=ąRôrë@ů^A É|ţůçaőđĂ{=šĺuńP«ŻľzŞu«4Z°ď˛8koG}őGćLť/ŤŤÝtďaýřÓ‘yÖăOŹŰvó?|â™bŹXn™Ëŕl·ă熏]”¬uţă˙”Ş«Ćčµ{ë]9nÖcóĎ?wÚô÷<ůťa7nëM«eh(¤ĎŐ?sÂĘÇýŇ…żźvĹŤŻÜxÇkÓ¦W›ôÜ?˙xĄăŽîßß’Őři/>¤Z·ř|Ů’% ĽGzç;ßyůĺ—ýë_ź4iŇ /Ľ@łk×SťŇÝwßmFÚ9x(ňrË-׸ä UŤT ĹYóÄ-?–†aŰĄ‚CWł=2/YŮ÷|`×]w}ó›ßlVÜŚşz#5ÂÎ'ŁźÚ 1/żłŻůú믿ýöů§Ň&đÓłß~ű a@˛k‰@"$K3&ó¤}öŮç˛Ë.;ĺ”S¬ł I®&&´$ŻŞ ťmłÍ6ˇ÷ŃZ4j#ŐBqÖ·ßűÂYĽřË Ăo/0ŮÔ¶ĺ–vĄc¨!jÝPűDł?‰€…u‡vŘŢ{ďmĎé\pć™gěđ§B1kŤAިBłCžČ@{ě±®YËS»mŞd{ôŃGďĽóND–ęÔnJüżřĹ9çśóĺ/u;ňČ#­¶ ŃP3Iv >” HúhĚ6ÓUťÂsÓM7‘çÁwQŢjgýŘm·Ýü6ŘqÇ«ţ´D H!†&pđÁŕ,Ë:í´Ó~úÓźR:ݧ©á$ł7˝éM´3tbtć3ČŚŤô&d¦v†l‰lŕľůć›mČŐŕ 7ÜpłÍ63)m°Ák­µVßN.Á— |i%ťyb|Ň4°×űzm#ůÔtdžR×s1A{Ě1Ç ~>¦%¨ŮÔAF`ÔŞ+Ń}ĘŞş'?qŇ:§|iřř±SN;§HuĂÇŽ»ífËĎśůÂýw4oÚĄ×=÷Ýźxą„=›/ţú˛)?üEiör‡íSě2ĆnµIQëžř؉ë|ďK»w=đÔ§żýęë+ćV|ßQăwŮfÜŽ[ ;ă˘/ţ÷ĄËě˝ÓňG4ă–»¦śţëҶń»n[ěb”U„ĹS5–?lź‚âµW_}éü+Ł®iżżyą·ě7zíŐudôkµÎÓáŁSĆ©~ CÖÎŹyČ~´Ů±ÁAe´„ôf{¬q\ĚÉ´3ÎÔHLů­#ę9ÚŮ®óŇ›nş)–iźĺ×´9EËËV{D3ůڍ‘ś¦L™Ňa÷ŠRŻ+zçj™_śuÖY¶˝hĽ%~ÍKŰm·Ý +ôśůŠőjůX;MÜ.q UaTíîŃ~ďçµŐŐĎ·ťw€ř)‚ě2jÄn} Đ8ńÄ˝Ő>µ y›$‰@" 1đ“ůřÇ?~Č!‡ś~úéViYj×Ěgťgg‡śë¬łÍ™qć'A'2žB©3źÄXËŰM§šo‡­Ćx”ѢëďĽÜ}2{TJKl# ą2š›{łˇÁµ]ĚĹŮŻŹ @`ô>§žzĘ»ŚŘ:ôO×ҰŁpńšQ6ďh/Čç†Kń4–NVýř_Ňą˘ď3n»çá}ßWĂÁ)i¶g.ł×N˸‡w­ĆÓÉ'źîŻ–sÔ:k ‘j«˙Ăń/_rÍkóÎŃ›yߤG9~ř2ăâv~{FŽXé˝G°WxűÁ“Oţ˙f=:˙MşYz9‡/;~Ą×ÜUߌńÔç˙™ąćIźôÖZÝc·ŮĚËjă-˝Î§›tĐ˙·ýć4řWďy¸4cĚfŽZsµr›ĆF Őş!üáf× ÄČô2ÍÎܲ©f ă´ď•ŃHR91Nd+čQ ˇ¤ áĘ4ś2n‡ÖÇ´Ş*µć­Á\;äŻ>*g´…S˝âXn¦ö×6›@µMŹäaK y ĺŐHvé C†jEýb +aó˘1"füx÷¤çXŔ˙wŤ…Ť2ĂÖ-%ÎV`EüŢ@pŃzŃÁő#NëU|”S*ęöŰoďŁNµÖ›žD HD`Ń"`X'ńl˛É&Ts†?“‚! Ĺ(\kžQŘŠTđ‹í¨5€Š€ˇ Ýٶ‘Ú[7dFó Pٞ’˛Ń*ŐyÁΚ;-áDŤt„źPĺŞ;1Ę ꉂl­-‘‘Ź"Odč—«°”"ZTŐđ»­ŮÁs}ÔÓŔň“Á٤ĆO$‚kĽ.;ÝO2őěN7űĄ#d¨"°ÂчL=ë·Ó˙0±±Ëě·ëŞű@đŔÍHÓÎBëĐvÎË~˙űßăĐh\»śYłQă箱Űń+ ›ţ°§ď6덋ÉLĚšš–¬ l e¶\ňHó,»3kͦ*"ĺěBp9ŁńphŚÓ7§cěÖ)9Š—şĐúLćˇÄÎl3ü0é[EJaóí»Ţő.Ű„ťH¨Ź}•D H%ĚÁë•ăŻóp?˙ůĎ#3Ösu 31 HQBfś bşËlŮN¨2p7Bá„5űî»ďľXűß'„łŰФ%g-˛Gćä$[tăh’őňa/l˘$ŰŔXQE"&nă5üŤqúćĵHźÖř“çJűŽŃ|F˝„9vł°:R˛u6‚éEX‘M4ęé±Çk§° °ˇQv’O3đë˙ôźžű§Óž˙ŹłŢ€†jďŰ_ţ¨ á3aÝ çýÇS_řîK˙sůr6n§­×9ů ŐĂÔ¬w«ĺ‰[ď° `XlÜ~=OŻ2‹łâ»ß2fł Ď|ő”wĚ?¨.‚ŹŢpťµżűůń;mUŞ^î7mxî)OüďŻÍz¤gĎMIŁÖ]sÝSżZ}W†et+ýŐ;¦ţü‚צW~a»_omuńÝŔA±â;6rÄłßüáśg&—Ö†1v»ÍW˙ô_/»ď®5ŢU0ŽŐngżCëÂqÍ÷^tŃEd5‡ŮYjWŁ•µÚ)t&B×[o=ôŃaĎ8bŁć{9©{ä*Ôçk ‹·IqÄűąÍ°Ż~bÄUĂFô¬M“ćĚöŕď†ýţ{æü1 ľ %ɇ+c®ě¨%ě"(uąm5Z[Űš§ć‰"µ Á×ăQY[ç–vYĺÁµP­·Ń děľqŚŕľűîka]h‘ž¶IO"$‰@"°” €ĚXzOSsśÜ÷ż˙}’“ˇVj×}lÁjŢË (ڧ ´ˇ53‚䨵ßýîwAfbYk6ٰh^÷ä% ¦ĐśeA=tő~زâŻJ„Ş «ÚY´ 3 t%4,¶ţȦ n#5Ұ’§µµť=Ú‰şHŐl:^Ú_łk9K)­­ŮŃZ’Čč¤ÝŤ7Ţ`jóŻ…uńq”üitŹ€Żz‰i#đ_úŇ—~ň“źüő |z•M»Ź09żýü˙ůâŁdYëü[ŁŇ’Č}±«_’>4cÎKÓf>đČ«÷=béě¸m6»ő¦#ĆŤmŚăEŢűę}“^{ućŘÍ'ŚŮ|ٞB­1˙9{>¬?=é ;ď¨%ŽÝrăŃëöě…oMŽŻžő§§4xÖŁOČ3n»-FŻ×śsî+Óg?ůÜÜWgZ$8rŤU,vkŤVő ÖÜz›íŚ»ś3őE-µÎšš ęjŐiyŃ!ßçě`"0 &Ń&;2LiÚŽAý!Űy›š[hY­¶9H¦RéMfVť#g7¦%ŽhĆ!ŚŮä¶ůgkńLş U‹ŕVNäŇ7KüŢň–·l}řČIë|{ΰĘÔĹmô°-¶éţĂwŇ2Ďź‰ .µF+žh[ą]˘ I~<@É{ĺ|FŘ­ ·v‹ ąŘmŽľDw?ź$‰@"tʱ Ł ™D´$ ™±  ňĐ'+ ź1ŞZ¤fÇŔŠlФś$‹Ćx§©®q.Ó0-sTŤĚx÷…ˇŮzÁ‹¬¦·Ţ_˛ Źf'”+â¤:ňJđWA˘yU†ŁaĄÍµŐ|Ől%Ď`ĄÁQiő¶f»Ec2ÔD{±ő8Č ¨y&Lŕ*Oµŕ`ö%ëZ˘ Ly©żöbÄrËŚßik Ě9 |Ď˝őŐßkńﺍ×ÝvÎńěďŕ!ođjѨ҄0r‰P¶kM’ťÎALńNJʋݚÜö*4»>uş(glVUüčďzÁĚă^ö†YÜRďȱŻüĺi㇯˙ämŁpniA]ťÝ-ů—D#H*ĆŹŃŕĐVÔź%`Ń}ďĆ5˙ď|şPE—Änf›D HE Î3h@­îw>/Ágh§pyäĐXÉ /Z’Qfg–ɱRĎ+¶ěh×fµX(¤%uţđ‡˝,Š!™É…q ˘‚PŃéTqë­·’˙l2%üŃěčq(M¤ŕ3M™(m×ŕv-Y„~‰Ä†I‰Š`2öşâ0` 5ÓŁ ?‹°ĺYu"$‰@?";aűĚ •´EŔ42NůŤo|Ă-xdáŽm ĚŰyj{¦Éd ťđĐĐv™ÉÉůąĎ}®çČ-7ý×IŰ??óĎoj,¸ĘŤ?ľŃÓ§ő¬Ú_rn1m‹Š"¸ŇDmKˇë㬒 g“Ě`´\ŃFWW—żdN#HD HşDŔvö |ć3źąăŽ;ÚťČQ eD¶:Ď$Ąé˛Ë.S޵™8H¤3dď·ß~]Ž×8ŢbB‡±úOŠ|ÄA“ť„<*^P9ŁyĄ ­FµýĺiŐŮ+»ť|Vő›Aˇs…yDű$§ě=IźřŚĺŠf‚Cý„gŻZ’™»GŔçîµtî„íĄĚ™$€@®­łŠD`Xl‰Ýyçťţb/ÉĄ—^jjş°ĆF€0Ëx)Ň`¦ş1JG~˛FĚ®ŰăŽ;Î&g®Ý5íÜJu˘Ésß+żŮ~Ąw›ľŢj«­Ţ˙ţ÷«±¶¶N˝čŻ×açńfULýu(˛ś¨Ś¤’FF*ít[ě^UÚĽ‹ %ά˛žb˙+Ë6ěpĆ$|Q0&˘cm»ďU“2s"$‰@"3vÎ9ç\yĺ•\pÁ%—\Ňůý¤C-&Nśhđ•,äoä!3ńĂ?™!KőjjÍXŹÄVYk1E*ü„‡`g22^«Ę°¸ĎŠ<łˇřŚŮP)ňÄę5źÚ'Î|ÉߢjF‡zůkg‡<ů(H–\r$Xr?»lů’‡ŠFS“Ľ+ŤĆ„/:{ǵM#xa—]BďLĆŇŃĚ!źp 6xbxĄě”™Ź»ł±ŔśQ‘şvťCĺÓD HD XJ@<$›UM•­l>µc™!xuŹŽa ťY7ű‹ă¤î‹wźłGĆ›'!KÉgşÇm©ÍYżŢóž÷ ëv–„¶ëŐ‹ m+‚/~ţńŐ–T[^ő§ť$K(ynÝúÁeł‡¶„Řk/ÉOúSšó´1Ö˛eć¶ Ŕ¦[Í?ěcsŞË>űěÓ Ä~ó/_ÖęoőlşÜÁÜřŇVzD HD č*†>śvÚigžy¦Ó3¬S‹ ČÎd†â€ĚqÄG˙˙ěÝ|VŐýÇq2IH„˝÷FDe*Š«‚˘ÖşëŞ»j­ŁúŻ­­¨µ­µµUuETEdČF6ČŢB˛×˙Nrry’<ąyňäIžä“W^ńÜsĎ=çÜ÷˝Ää—3ĆŤ=z´›†(@Ŕ4âR?Ąk®´¶!V¨N?Ą+ˇCeÚ7<`ťq6¤8 s›™ÔŠ>ëo˙ZÇĐŚĘT&óKśV¤¨ű€Zp3ÜÁ% Hś~ĆŐdŘ„„-ţ˛xńâeË–éG^ó‡;Ý‹ŤĐ)­? ëĆšÄqŃE]qĹJhô»ţÇ\ň–?Ú}űâ#Kć—Ě9˝Éí—·{ąd>9 € €€ý0ŁŮŁ dh »ůóçŻ[·nĆŚúaĆ5<~1ËÎ*H7~üxě4>H?ϸi2L@oŻsú]“¦ŞÓv%ŠÖéP?·ë”Ţy}¬3¶!ýS҇˘uš®q©ú˝@˙|°kذˇőKNŮÂ$@ 0¶}ôçIÚ«ËJÜ{MĐ43Văé´ Ł†Žjő:ý]ď¶Ů‡¤ş:ŻśÜŠĐé×ě´ †ţäoÖéźÂvŐŐ1ÚEŞ ZWŞÔ‰€ďZíE? 8W±5ßÓ˙őżg—7Ű›ľęĄ-CłóÓËęGDH»ş-hÝż¬ä#€ €ľ č‡5ôĂŚ>ěśA…ô“Ś>ô—Hߪĺ*#`~7;§S¨N‡ú]§ě+Î8[±ż(6§€ť‰ŮŮAvüËrZ‘F ­«‘[@ ­ÇćľłăňÔÜC%ĎĹ„5»®ăG]bĎ.yŠ@@검âq 4+6§­U§…ęLş&DëLŕ[;-`§ýE_ĘtůGýşüdąw‚K€h]p=/z‹@Žĺ$Ě>8ayâ{©ąÍe1a-N‹żfd‹GcĂ›W "Š"€ € Pg•SŔN:űˇCŞ«Ţ±ufxť©jĆ«ęuućÝäFëŃş:ô°ąŐş) )>ÚsűG^ÜäÖË۾ŸÝęćkŔ]#€ €¸ĐĎĎú01;}5&Óe UTL?ÉëC±9óaât&łŠZ¤Z¨.ö„­.yÚE @%K@IDATú˙wtXc5¦ŻJ¨UšA@@ 8LüK_S¨Nq:݇ůZí7d~ž7}3ý¬ö.Ѩ ˘uUˇJť € € ŕJ`áá—‡6ý•«˘B €&¦€ťÚ¬!ˇ:s÷&`@ šBj`K¦j@§I@@@Jöţi{ď×W4¨É&rWCľÖd(ú†ţ Zç/IęA@@Š ,?únN~†ľVě2J#€ P«ÖŐęÇËÍ!€ € P–yS˝3_kp7é € ZPnC@@#°+mÉ̵Jë«Ň° € €€ ZÇ›€ € €Ő °4ńMŰŞ3m3I € P7ÖŐÍçÎ]#€ € Pť9y™+Źľo{ ´rě! @ę˛Ńşşüôąw@@ŞG`]ňgéąGlŰJ+Ç{"{B°ßýG¨F˘uŐOÓ € €ÔQ’S_Kć)M~~ţľ{˙¬ŻAÚşŤ PíDëŞýĐ@@ę–@JöţŤ)3<îY9Ę÷Č ĆĂ´…+Ó—ü¨ŻÁŘyúŚ PÖŐ„§@@@¨CËßÉŻ—çqĂĘQľGf0&X4_±˙ô@ ÚÖUű#  € €Ô-˛&˝.K|+Ř!ňŽĄĄĚ§»ĐWĄývč? €@µ­«vE@@ Ž ěJ[r0s]©7 s­Î–z*X2“ż“źQ°ą­ľ*,ݦź €5J€h]Ťzt@@Z.PÖŔ:sŰŢĎÖ|šä)_ŮN:Ó6“ €ĺ ­+— € € ŕśĽĚ•Gß÷R—ÎŞŚ—5ůTÖö=éK×Ř*­{H@—Dë\BQ @@*+°.ůłôÜ#¶–Fí”6_M¦ÎŞŚ-\‰¤ŹŠÖ™ž—Ě ®;˘· €Ő"@´®ZŘi@@ş(ŕśčÚ9ćě~Ť.—‚ľ*m9śelfÍOäçç'<ÓŁźĘQľG&‡ €x Zç݇łuZ ?'7să¶´E«ôUé:mÁÍ#€ €•HÉŢż1e†©Fáą›;O ‰Ôˇľ*mv*Ł’•n-Ф-X‘ł÷ G«ĘQľG&‡ €x÷~šłÔMěý ‡˙ůnĘ´Ůy)©F 4.&î’‘Mďą6˘UóşiÂ]#€ €•X–řN~˝śQpw Ő˝ř¸3Tgnٰc݉Züpk €€Öůדڂ[ väé.o fÄ`—%)† € P[rSRŹÍWŞ»°xTťó~ v/L‰M™1Oĺť§H#€ PŞŃşRYȬٱçťŃą]ą7Ż2*Yn1 € €Ôn”/ćäç䌪+#Tgn_gU&?;[ĺk7w‡ ŕ˘u~a¤’Z"Öú/ż­îí~"ÂUF%˝•á € €@HžúMąˇ:Ă`v*_T¸E@Ę ­«¬ ××2č}ŰţçÉčRďKů:«2Ąž%@@ îdďŢĂXďŁęś*©ňşĘ™I@’DëJšS×bĎÚyĆk /UßZ(­ĺë¬Í$ € PgÂ[5Ź»ŕě ÝľĘëŞ ]Ba@:(@´®>tną|v­Z?˙p·•SăĆŤRi}UZ9Ę/˙bJ € €Ôß–FńíŞ:ŔÉ-"€ ­+¶ …€‡@hýČđćM”©ŻJ{śĺ@@@đ»Ń:ż“R! € € € €> ­óŽË@@@@đ»Ń:ż“R! € € € €> ­óŽË@@@@đ»Ń:ż“R! € € € €> ­óŽË@@@@đ»Ń:ż“R! € € € €> ­óŽË@@@@đ»Ń:ż“R! € € € €> ­óŽË@@@@đ»Ń:ż“R! € € € €> ­óŽË@@@@đ»Ń:ż“R! € € € €> ­óŽË@@@@đ»Ń:ż“R! € € € €> ­óŽË@@@@đ»@¸ßk¤B@jĄ@^^^BňÔVńťęGDWő=.Ú0ýPňÓJűf=űw9۶¸u˙Źëv.˛‡Ľ94´řĎosVx,ă¨9{fźKăc[Ř’J,ŢřeBŇn›3úÔë"#˘ěˇMĚ[óIRÚ!s8âä+cŁŮS$ĘXşyćŹŰ盳gôľ¤g»e•$@@/DëĽŕp @EÇţýů«·ĎËÎÉ8.Ň2ľăUĂĽäôŰĂĂ"ŞČčÓE˙^´á SyßgüëÎďmCź-zYgíażNgulŃŰfegüůksrłĚaÓ¸ÖC{_lKęěS“®NÍH˛9qŃńĂűŤ·‡6ńηÚĽwą9Ś«ţ€ëí)˙&˛r2—mžięŚkĐ䤎gř·ţ@Ö¶ló¬÷ç>gZ”<Ńş@âÓ € P›Š˙_›îŠ{A@Ŕ_-uë‹§-Ű2ł(T§Šó$nńł{îőśÜÜ5äQĎŕŘśŤ{–*Şe7í)ŚŁ™ś »–ŘSv/±ˇ:EŮNé:ŇžRbá†Ďťˇ:ĺĚZů?gŔ§ŹĄ'>öÖ%ćsâ—Źľ´ € €@M ZWÓžýA¨Ai™)Op}^^é!ą5Űçż9ëÉ*ęîŕžclÍ ŔmÜ]’ËÍËÝşµ=Ą„"töpÍŽâ!xscO)1sĹ{ÎCĄo~,˝pÚ¬Ç)+*]?¶˘—P@@’DëJš €@ˇ€–oŰź¸Í´iÚíţq/?uÝÔ“;/!7oí'eaUrŘ]ۦ]Ű6ín+˙q{ang†Ěě4›Ż„ ä)m‹)íŚ÷é09íČâŤÓ•p~dçf~÷ăgNU¤Ő´sl`ešČÎ)śäë¬D3|]j+Ö™źźďĽÖ·t©•übÄ#ď?˛Ă|žwęµ^jÖúđRŔśR™R*÷B € €µëÖőăŁó €U+ŕĹvÇ…ĎźŐ÷Rµ×ľyŹ˙ÖÇ4¬Ř™âP‘áőÍaBŇž·żůŁÖąŰ•°1%ýHlt|ËĆĎęsé7µŠďXŃľžŢó‚Źl6WŮAs›Oś«ł[ö®ĚÉÍÖ zŠě¬Ý±Ŕ¶2¸gń\Ze**g'ÉÚ2Jh2ěEoqćř%­ÎĚ\ńîGßż¸űЦ´ĚdŐŮ(¦yŻv.r‡]Jď_Óî—’mnĎá-źzgëřÎ?ţPâ±ĎLľŃśÔăü!˝.|yúoWnť“šqtćźłĚr›÷¬xoÎÝţŢ#?iÚo÷6§öj?xÜĐ»Ú6ëfë4‰ËŢš»ćŁť7ěKÜR/¤YĂ6=Úuę5ĂúŽ 1e>ś÷÷UŰćšôťýUmiâ°6ŽhÓ|P÷Ń縡oǡ;6N™÷÷w|żýŔmýqzŻ o=˙i»M‡îW[|Ćťq·ú¬ôô%o,X?M őůľK˙őÍĘIź-~yďáźÔnë&]Îę;öĂŽŤnl®2_őFiÝ@u@ĎZŚťZö˝rŘÚŘdÚ≦ŔŐĂ{J×ÎKH#€ €Ô&˘uµéir/ €~8”Ľ·a¦Ş4$$ôÔ˘5ŕÚ6í–—ź«ü°Đp}šVµ‹ëÓ\ç ?iQ6}ţ´oĺÇ ţůü-3{´=­BýÓฏĽh.QN…xě˘u­â;›q§ř *Wčжެa»Î-ű:›S,É^=üáIß=kWműNAĆćŤÚÚł•OhŰŁo^ĽdÓ gUI© ܧOµ~ŰĎčÔK^ËČ:fËIŮ÷٢˙4lĐLŃş¬śŚ6}iNĺćĺĽ7ű飩mI%ŢýöiMCÎÍË6™Y9ékw.Đ笕ď=să˝Ú2ů™Ůéz˙šů'ç­ýř‚żüÍeŻšuµ8ŕ÷릚«´Ż±¸?ëŘ´^ůvőűO^óá„É7¨“¦Ě®CwÍߨÚ?5?*˛2 ´}>łĎĎL1=[íáä˝6ꪳ»6LšóĚü5źĽzß »ËpRęˇÇßë,¶iĎŇ?˝˙ …}ŐgSçy§y¸gĘđ@@ x ĽĎŽž#€TąŔW˙ďÓ˙;¤Ď©OډjhÚ›ôÝs&T§C Ń 3ů˙ţü,óč™ň˙ňŃ-™ĺžŇeDDx”)–śvXăő”¶[µŽčw…”™łféş5Ełe•é1 vâm—a +Ôxĺ°»¶îoóóóľ]5ɤýőősžńŐ9kV Pۧ:sĽ§µĹ‡G¨îűuź˝ţőďl¨Îyąb‚÷Oąq÷2“ůýşO=BuÎÂ_.}Cčś9&mCuö”vçxčőŃ6Tgó·ě]ńőň·íˇ÷„3gK*ę7iNaäT™ýřöR‹ŮPť˝ € €@m ZW[ź,÷… ŕge[ľyđµó®z¦ă_?nŞV°ěW>gŇ[ö®RŘŤÇ´¸îś'ţ|ýgDf;ˇ1VçeÝ$4ŢJ;[R05ĽN?MNĎv;·:ɤ7ßVláÁ=Š7©Pćńx\ázmZwŻqlóa}/ł…ýľ3ě·+‹Ă÷ŹýĎ”Çöľű›Í§ue[41˛'Ż™üŕe…ł;uŞc‹>BűÝĎ‹ÇÚň&®!f9ą9 ŚÚSíšő¸öśÇŻ:űˇřŘ–&3#;ő“˙4éoW}`Kj›ÝÇ®z÷±+ßéÔ˘xÔá†]?ŘÎÄ9ýŻÖCTĺḬ̂ĐËθ÷ús˙/&Ş‘Íź˝z˛M—›čŮnĐ]żpűĎ9kX·k±ąpŰţ5Ε[Ćw;ô®óܨ/·f € €Ô~ř«5Ź’A¨Z‰;–o9aDŘIťÎTđĹ´ęŔuèߏz§ňűv4@lÇÁő[ô6‡•˙şýŕ:[IzVjúqM¶ľëâż˝řé=&?.ş‰ZďHĘţżŐ¤ă3ú\Rtt·úÝUďę–µD Â¦Z¨ÎśnPżáÄ{—›­o‡ôşčţ‰#Lţwk>şoěKš¤üĂĆÂé´MâZ?}Ăgaa?ůkűÁµ¦äţÄí&áüzáŔ›˙šrÎ?íúkź/Ţëăö ž˝bŘýĘ×âzĎNąÉ\RÖ€Jg…&­mCţzË,3Hłql‹g?ĽŃäď9T¸:áôĄo·EůšËüĘÝKĹ4SzäÉW>ňß Maľ"€ €Ôz˘uµţs €U%°â§o_zçoÇż®ˇÓ+%RŇ7ěţá“˙RükÉćŻmđE§ňʇí*ÔĹł^úü×ćăě˘uZÜ­u“Î=ŰŇ’j:»ăŔş}G¶í=ĽĹ”ěÓaH¬cđ—ĆýŮŕ”ŕÓÖ *ÖĄUż6MşÚ°×¬ďÝ|ţźĚĺ•˙ÚĽQ»„¤]¦ž—§˙ćŐŹ*ĐÖŻÓYםóř)]GÚąĂîzî¦/;´čeĘŰŘ–[4joÇń9yµŢŞ­ßiź‡Oěź«SŰö˙říęöŮşq÷ŇEŽ˝qťWŮţ(kŇŠ®FEĆÚĹő´­„É×íŘ GÚ´÷„ö”°ó©{·l Ű sw…ítJ[IPťŇz 4"ruŃ&öB € €µR€h]­|¬Ü €€˙4tëŮ_ÎĐP¬Ď˝¬Ť#LZřěÂA7źÔń í˙ M^žţv-uëUß:¤ýgín{oÖŽ¦-Ň«ćPëčMűˇxJ©Ç4XmĽ`[Ź‹ŽOHÚ­OĺtnŐĎFëľY5ÉŹŃş‘'_5yŢó¶Q-0·nçB}~0÷/ăvŰgÎp˝=[nBŁĚl¨N…ť!-E!ź˙řÖRkĐv Ę×ZDO»©š9J-Y2SűŔÚLĄµŃ„9lްp/ŽČ˘őm17‰N-úŘbf÷{hÚ+Öćh+X›VB;Ţ­s‚F@j±ŃşZüpą5@ 4‰k98î|Ő8úÔëîü÷ŤŐ2µk·VEë˙zčőóí€2sJ ŰiĂÖJvBăŞ>]ôoSÉ×Ëß1 §Sô'23»`$ ů°»ÄšC»őpŃyţ‹ € PkÖŐÚGËŤ!€TR@q®[_<5;7Kőhjç_o™i*ŚŠl őăl´nĎńńP˙řôŞÓN üĺ ٵďęýĎYżkQezâŚÖŮ)™&Z§UŘ4äjíÎŞ?9­`(™>´ÇEʶ§™´ľj8ޡä=öĐKBCđü­Óęr·Žyú˛3î™»ćă6}ąjëÜô¬gÓo|ý„Îj@˘3ł¬´ÇĚYMŕµ%5ŕń˘A·ŘCgb`÷Ńšě Ő ďwĹŮ']¦Ĺ5Iůá7Ć8 W&íň.Ü4ŃŞIg»÷«¶%q>çB7UQ@@ xÖﳣç €U+ I”Šsi0ššŮ•°15#Ů.:¶zŰ<۶–NSZ«ˇŮśn›ÓŞI'j ם ëmľIäćĺfméQŔăP ˝•Ł×«}áX%L´Î^5°ÇhgühćŠwí)ď ímz÷Ĺ/}Ľ—ô~vÝÎĹÎű›)ŁĐŘ„?ĎÍÍŃĆÓ—Ľ®‰Ă&_{ehףdk+u 9{Ö&Ú7ďiÓQ1Z Î.ŮôuFŃ*rŮ9™÷?”óN˝î±«Ţ6%żűqŠ˝¤F%Ú6í¶jëÓĄ© _:ďÔkÖˇöŠ]´á‹ŐU: € PuDëŞÎ–š@‚^@k‡-–˙üG·>rĺ›yůy_.ycëţŐöŢşµ9EiÔ3™fަ˘roÍúCjF’-©ŕťŇŞgƲ˙šĚ[Ç<ó‹ŰĄ&´áiżÎĂśŰŃj·&q­La»)­˝Ö9 6+;cě©K‡Üé<«üI»ţńé]¦@RjÂŇ-35”Ď–7‰OýgÉćŻ<2ÍáŐĂîÚúdŹSŠEÎůq˛ÉT…Ăű]®‘‰š,ܦI­ÓŮđaĘGwŠČjô¨ŮoQň 0ŐPźyC.>ý¶üü<-N§-Š. ůčw{K>ťŐv“çÚ}h "ŞE—řř_÷3aËm@řÓ—ÎhÖ;ö›×ÎÚűbm 2é»gÍÄŢrk  € €@- ZW "·€ PUŁO»ľ(ZWš·ö“ĐPçRt]Zť<¨űh5Żm¶ě]aúńČ/Ň7máęŚé”Ů}ÂyąË~+ăŚÖŮuşÜn4QTUéŹ9\¸á G¸0äę·lܡ¨dÁ«zoö„CÉ»M¦v†-­ÓL޲&ój ż’ŃşîmO«ŃŔ,Áv,=ńşç{jO …´~r„8;µč۬a5]Ż`Ý·‚™˘u—ţ±™.·“ŽMŻ<ľ¶kÖ}ěĐ»¦.ü—É˙÷LśńŇÎÍ=´ď­ššn#«ł›¦YÉęŐú]?ćĚĺΫLN…żş›Ďë¦ZMÔíÝ~ŐÖ¨IŹ“n*ˇ  € €@° „ű Đ@ŞN`Ě€/xł­_{›:cmÚáá7—żj¦ŽŞ¤-v8eď÷ë>őŐéěÚť m™ %<Äől;Đ^®ĐULT#{ŘŁí€Ć±Ĺű™:§ÁönşG¨NWi ŰY}/µ—Ď_;5#«xŁ›_ˇ„ć ˙zlá¶şP2E<µ|ž"w¦žĐ°;..ÝŐ¨O‡!¶ţ”ô#[ö®´‡e%nżŕŮÍ{ŰłŠ¸9n ˇ>xŮ+:{J—ZCĐÓ໕[gŻßµXˇşĐĐâżVŞ9Ť@´UU{â·ă_w.Ěç菫5ţĺI"€ €«Ńş`}rô@ ÚßŕˇńŻ]î˙EGĆy4wrçłßřőęŢí ÷WŐž W{ĐjŘ ©&şţęÂçí…f¦ÖŞł9šĺjÓ^ťZöiáç[§p›3x7¸gńć šŠ»lsáÎŞüśţW•ÚÄY}Š×}ËČN]˝˝`I>íčZja—™cÜđŘ•ď4Ť+=çńŃŁíŔgůĺŕ»ëšŹ›G˙©u“.EG®ţ«ŐÜ&Ţ»LĎ%"<Ęy&Ť^qÖ˙ąűłŤ¬â†¸öŁŽ-úŘ2*pR§łŢĽmLTc“ą÷ČOó×}j ¸LÔ/XN®0|fgÂ:çöF=ٲqDx}E-MsÎ2zÖď]>včÝť[őÓë¤Pě~W>vŐ»Nhűáx…l& @@Z#RůĺZjŤ7‚@I^Iś89ţ¶+[÷äÎĂjfźé¨•?ĄÔŽ +ú()Ź ŕGâ™ ~¬”Ş@¨e )H§Oď÷Ő˘q{}z/SwÎ*̤Ą>ÝÜr٦útSŇY&ş~¬&Ň:çŇ:Ďš´¦*÷ët¦>KžŞi9}˙âÄ/ ÖŕÓG›¦]_ąg© ŐÍ_űéĘmß™|}UĐÓ¦I € €Ô>˘uµď™rG € ”•“nşľýŔšźýˇ‰ijü 60±{žÔńĚ’ëĺÝŇi@@2X·® ˛@@Ŕ śŇyř Ĺ+jŽU[çlÚłÔ†ę4›řŢźý3°ť˘5@@@ ­ ´8í!€ €Ą hŇîź®źŞŤ2bŁă= hKŠ!˝.šxϲîmOő8Ĺ! € €@-`&l-{ Üe ütlŽr.ó4'¨˝Ł[ţ1"ô„ťCkď˝rgA/^˙΋˙zóůÚ¸{iBŇnmb®]MÚ6í^Ľ›peîsSĘĚÍÇŠ7 ®LU\‹@ĺôóIĺ+ˇ@j™ŃşZö@ąJ¨§ÜÝéKôYĘi˛¨íç´ř]D=˘uµý1×®ű«]u»ľîH[¨ŤÂkwôćg• ż n@? ­ó$Ő P†6˝C˝ËĚK©Á}¤kTˇ@h˝°*¬ťŞ6öч7(ŘzMkł€Bućg•Ú|“Ü € ZW-Ę"ś1áÍFµ|"8űNŻ@ü,Đ«á}úąRŞC@đź»LřĎ’š@@@@¨ścë*çÇŐ €µK 55uęÔ©yyyáááăÇŹŹpy›7oޱc‡)Ü«WŻvíÚąĽb> Ô4óüüü%K —Ť‹‹ëÝ»·Ď·ććÂéÓ§>|X%Ď8㌮]»şą„2 € €A!@´.(ťDŔ´iÓÖ®]«Ćştéâ>T§ň?ýôÓÜąsM/©!Z€VÓĚ­S¨×ÜxŁFŤŞ:Z3ţ|5·oßľű~ýú0§ @@06Č4 6lX˝zµéë¨QŁ‚ŁÓô˛® :4::ZwôčŃŻľúŞ®2pß € €@- ZW *·„ ŕ€fżjjˇąP#ă:uęTˇJ"##+TžÂ•¨ăćşý!C†ĆĹ‹:t¨ň¤Ô€ € P [ž}@¨~U«VŮxǰaĂ*ÚˇáÇźvÚić*3â©d †˙(yĘ}ަ[ŞŽrËçć憅…•[Ěç999ZÚĎăňěěěĐĐP7íę.ôˇÂ5”<ôR§ó’–•“••đ_zzşô4]ş¬žŘür_ ŻÓük=ka~óÍ7W]u•˝– € €@đ xţśĽwBĎ@¨Ś€YL5(dÓ§O%¦L™rěŘ1Sgż~ý `ëWhoĹŠć°[·ngťuÖĘ•+üńG“ŁJĎž=máĺË—ŻYł&!!!11Q™ 6l۶m˙ţýűöíë=îöí·ßîÜąÓÔsĺ•W.]ştٲeŞ'66¶M›6ęŹze[1‰íŰ·/\¸p÷îÝjKK§iő˝1cĆh1>…˘LÓ—]v™Ç%Ţ% S¦{÷3flÝş5##ă©§ž2ą˝{÷Ι3G«§9rD9ę›' ˇiÓ¦•§ĄĄÍž=[ÝŰżżş¤UłfÍ ¤ńÜą©ÓĂ\Mۇ(Řk®ąĆĆözď˝÷ŐRtjܸqz J+GŃ®M›6©?™™™Ť7VĎő@lzž””$={íŰ·WĐΚ5KW™´näŇK/µĹJM¬[·N#ŕ8śś¬ é¶jŐJošöđx Ë“’… 0\Ë–-ő‚é^ěgź}¶ž¬*Ń› ‡˘ÜJk÷…^č&Xj÷ČD@¨9DëjÎł ' €Ő& 0“‚M¦yĹALJ_Ç1™ N9Łu śi‹sŞcÇŽJ(f Űí4.ě>PĆ”4_µĘ>´—…*TŘČ#Jĺ,©`Ť­SÁ¦m۶™łŠ )_7nTôÍÖ °ŕ'ź|bbR*©H“BŠŠß™(ˇrJ†ĎśÍ•šVäH ™SŠy)*§msť%WҨ.ť2™*ŻŁ>мᆜ»m(ü4yňd«2…•Ö‡ňĆşůć› »Ną¬ÓĂ\[ńj—X…·LĺâR$ˤ՟őë×›´vc05”rҤIöąë¬y4 ­*ž8věXÁ*â©|űU‰â•ОíÚµK±TSˇľz_ĺP& q.X°Ŕ–WB#ěÔC}¨ĎW\q…¶Ś0gĹűî»ďÚý…•ągĎ˝EŠ$Ş{¦Ě)§śbújŁuşqőóôÓO·§H € €©@ů3P‚ôĆč6 €î ±…mÇQtFáSF°łĺťĹl¦I(z˘ŹL{¨r ·ŮCď …uJPxî‡~0ůŠ:iś ŐŮÂ6Tgs|NlٲĹ#T§čŐĚ™3m¨ÎYłJľú꫊4™LŤŞSJ±9g›–§]4Đ}ťör“Pd­sçÎ6Ó•ăLkHŁvűUźß˙}g¨Î^¨„˘± ™ šłS›űüóĎ•˙Ĺ_ŘňKhÜŮLgB!NŹPťó¬ú¦ ¦ÍŃ®˛ÎPťÍ·ˇ:›cöuŐˇó5ö(Ć! € €@ ­ ˘‡EW@ŞJŔ5ÓČ)ÓŚ6š0C«t¨0ŤĆ@™|ŤŞłA1•‰ŹŹ/«[vn¬ ôčŃCłY5ŠŞE‹¶Ľ‚€6]nB“75jďä“O¶cĐt‰‚e÷§„ĆŁŮ4łRCŔ4}R“(m¦t¦ˇ^Bp­4poäČ‘ZňOÓ3M[ZhŁT‰fú©Sę˙Ŕ5młuëÖ¶W¨š†ˇąŻÓ^kÎČ©3Bç|ľ§žzŞĘ+TŞˇ‹ćBőGŞçźľćŔÚŞôě4âR‡š[zÉ%—Ř|ŤTOőěµz¦Î'bKš„”óćÍł™şĺË/ż\ Ěé}°™zµ Őˇ¦ÖjХͲö‘Đzvř¤=ešJl'ü*¤k¦<Űł$@@‚Q€™°ÁřÔč3 €€źśĐěĘ_Šy)úóÝwß™ĆýQLGigčÇňč“O¶¤ęĽîşëLLGł,“Ľ*4 *–Şx™C'F3ţNĂMőUAĆsÎ9G ˇi< ƨâąçž«|=eď4čĎ\˘âLB_5Ö{HTÍ Ş°"k·ß~»éąŢĄ·ß~Űľ!ZqO±BĹmÍęę]wÝež¸Öő{ë­·ě)Ź„ÂŁfäťÂťšţÜĽysŹ"€ €—Ńşŕz^ô@Ŕ˙7眡iWSKÎhť[gm)úVrźŰ?Ĺłţđ‡?CŤ™2cµŞł—Ű’n 'ŮŽik…rlź>Ü AÝ…©GÓ6µ I+L¦xÓëŻżî¦ 7enĽńF;6PíÚK4Q Ő™CŰj¨—‚_®h#V&¦}Lɨ¨( 4łá9Ý |\Ö© -iŞP«×Ů ˇ˘Ö:n6"¦bz fśšłóę° &:G±i÷­Ó…ZĆNAO;Ú´¨M'ĘÝ>XŰJŘîťyć™6ȨX°‚¶o¦Ý•X—č!Ú'®›Ő(β˘®6Z§«ôV­łŕ$@@  Z¤Žn#€řM@+¬Ů•×€ł‹”© ›ŇÔE32+%%E Y4|É´­ŔłpÉ)ôŁ5Ë r?†®d%&Çc—¶ÂĐŽ¨ć”˘]ŠÖŮ URť´‡ÚÖ¦+™PІęT•3´¤Ń‚Úŕ˘ÔúĹkăq* ÁnÎyŁf¸˘˝Đ}ťöŹ„âq6Z§«˘uÎđ¨ÎŞĽV´»ýęP»dxTbµÖžÍ×čČ‹/ľřĂ?´9z¸ăÇŹwF÷ě)gBCü졝dmrś‡z©ŮtBy#€řS@ 71‹ťiÔ•b4ÎČH˙ţýgĚafw:Łu •:ÓöL1>g¨NKŞi7ŇŽ;jÚ›oľi‹ąLha˛&MšŘÂv‡ĺ(ßąÓ…sęĄÎ:G«ŮË}Kx§śý…ˇ+µZmZމŔö”Ç0CőÖĆÎ4pĎ}ť¶BŹ„Ą¦'›­r)›;w®ž©)cö—PZ5ľĎnrÍ5×xTbµHźÍW'?ţřc{¨„Ţ µÓ:tηĹYŔ¤µVťÝÎU çPG;HS%µđź>ômaˇučĐÁVčĺ9Z@¶ű˘Ř I € €ťŃş {dt@Ŕ˙ ßŘIš˙hw5UK:Ąi§ÚVi»˙€Ň 9ÇF•ě“s 6ŤÂÓć ¦Śť§Yň/9şJÝ04·Ô˙RGű±Úk5cWŰ#ŘČ”Ý%ĂđWÂą>š–cS,ŇÖ¬)¨vL™‚bÎś:Ż5ăL‡uJűQ(Ç\¨Č—ű:m[%Ň6Ń:ťŇ^´¦€BŤ Ľš´âk ˘Ů°¦µ3|,ŰłgŹ)f¸&=mÚ4Áš´ýŞý=ľ˙ţ{ďKשr;¸O›H8•ś{J‹}Ç-Z¤1ëÜéqŰîlë6áś±ëŚ0Ú$@@‚K€h]p=/z‹ P%ŠqŘhť¦m:ŁujO‘/­s¶]î4Xg ĹNđT+óćÍłő!{öĐKB±M†UŁ !9WSÄP+š©ĂšăiCxS§NŐŕ;Eń'ŇV ^Ş­Ě)3«ÔÔ =4´ĺÂŕÁuGŠ”}ůĺ—¶ćG}T=Wg쨺ɓ'˙üç?×üÍ ŘPťąçp3ďuÚúK&4€ŃŮś) X§ݶ°:oŁu“&Mşúę«°ÚG}d'>ëvT•.Ń&Ľv•@*ŇgGşÍś9SË:ڶ “Đ– .4i=‹YłfiűŤěÓ¦ÚÖV1Ą5ŤwéŇĄ&SOóŤ7ŢPĺŠ3*äęĺUqN4vŢŁ­ś € €@p ­ ®çEo@ŞD sçÎ[·n5UkŔ”3ĄLŤ‡RüË9ŇJÁ ÇńŇ;\Ke40JČ4ÜĚ9ŕNův2¦—zě)†ôaMbČ!fI»1cĆŘ ¶ZţLcľ|¸¶˘—”{GÚvcĆŚ¦ZŤČ»ë®»L¨NA[çOóUL[UPťŇ%Ç-V´{”G@¨!DëjČ  €Ő, ˇjÆ Ó”FőcíÚµ gćňú”Ü‡Í ‡DŐŹ6 ŮC7×ďŢÉ$ľ>%uöbsŘ©ßkA­ËKĎŘ{÷Í]DöěÜůě×ě –šHű~ů‘W>0§Â[4!ZWŞRđfűzţáĽmúßü‰;ü­Ë9üba´.¬YĽ_˘uŮ»öďč9ÓÉŘ1ĂÖUçű–ź౿™„·iQÓ˘uÉSľNüďG¦{mţódÄďŃ:˙ż«Őůhh@ü!ŔLX(R Pi Ůsë ^±ˇ:U™ź‘ylć‚ícn=ömážJ·C € €Öá6aIDAT €5Z€h]Ť~'*˙ÜÝÔPá—!/OwTňeđ¸Í‚wCďm‰wĆŁo‡ ŐuYřA~zFÁĺažŻĄ­ÓýSł—”L¸1ÔUmK/IEŽUŐ“2ţU–¤đ{NEŃ\v ˘Ő–ú, ^ŕ }s+ăß…ËwŐĺ­UĹ77—MS @ü(@´ÎŹT…ř(w,-{÷~sqýŢ][?÷Ň1g Čܰ5ĺ‹ďLľ–-/­ËĎÉ9ňędíŔ6o™çŠę×#]1ĆÇ~Ô«—4ĺ«”ó˛~Ú™˝kź˘oá-›FťÔŁáŘQ±çźe#wZYOÍ™&Z=˙Ű”/ć$ľůIöÎ}M~őóćÝlňsŹ&+Ô±jCćĆmÚ4CőDtj×řę‹t ĄFî˛÷%$üů?éËÖć>ß(ę¤î͸1Şow{#ÉSgYŠĆ7ŚŤyúľ‡žËM(owńđFă‹ď:yÚ·ÉÍ4×66 ÉÍăM:cíć#˙žT°üŽ˝ú ą~ßnŃý{7ľţŇČNmmCM¤|=?ůă™zR‰®Ń®•–3‹że|dűÖUĄ|ý}Ň{Ó’sŕN…6Ы߫łö ‰żérk«|ń*2k®mţřŻŇ­ŇΩó—†7iÜŕě YFźÖ7ë§]Gޢm7˛6mŹčŇ.vÄéÍ~{KhýHsUĺk0ő¸y’&ylÖB•‰oń‡{R>űöč{Ó˛vîŐË#Ý]“;®öXZQ’#˙™¤;ĘXłYĹ 8IáiÓ˘÷ŻÚ_%ńŐ Ë„†h90{ËŠ'î˝ăÉü¬ś‚łaˇ­&< îţž1…CŶůÇď /¬W/{‚–´Ëܰ-kë.ĹÁCĆF´m©®ęŇ޶Xą‰ŚŐŹ~0=máĘěm»ë÷éŐżgÓ{ŻóŘOŔM[6»˙7…Ëái»•‘§'L¶he^JjŹM_%ľ=µ’ďą7=Ńj’űî{Ú”Ź>(zpżCýoÚâŐyG“Ăš4Şß«K“»®‰9ăT/2z¸{n}Ľ^~a‘Ľ'˛Cč{Tâë…ë¸ ŞŮý7š'Ľ’µq{A:¤^óÇď¨ßµ’nşZpI?ÜTëýYč%W›ýć¦KŽľ÷YŇ”Żőo_Ń˝ČîµONӻݵ-P(Đă]­Đ«ޢ©š¨Šon¦8 €řS€hť?5© đM@эТńb±Ł†ÚJ"»´·é˘XŚÍQbď]TŕÉääJÔîúL[ňc«?ýş˘Łrň22ő‹şűwÖźłçŕ1}~5_ń”VĎ{ζ˛˛>3ńč?vVnĆK*“6wY«ż=ޤ‘9«б™…»ĺĘP‡&?;mŇ˙>O™6»ÍK˙·ďÁgsŽćoÝť¸u·Ě;LůGht”2+_CE^†mÎŢ*ŢjzĄŻŠ…yů}E3;}114ŞľÉW4vď]°á'e¦Î]˘Oě…e%ôĎA%5ĎH˙aṵ­„ÓW¬× Ź&?4¶půyyöőP ŰÖylöâ}÷OľÍÉK>–©Ďő?)čÜţÝçž¶§Ľ$¤KýnIáŘ˝ző´ˇ­>ŐĹ ,|ĺ\¶ĄWŃvUaÇĂ˙ţ_î᣶éĘ?MUĺ¶'Ú©ąčÝËܲ#ďŻoä&&›žäIJ[°Bź­žýMŁ+/°ÝóHč_eÎĂÂ4ůzF…Ńşď–Ř{ĚܸŐDë46-iŇ JšÂ-źşO —]őh·ÜC—ŐzjĄ˘ßÜtIÂsŻé[śíaćšÍúT=íŢřłv+V~ÉwµBŻşjđű77Ű[ € P]eÎ ©®Ń. P˘útëľâóŮ워@öîÉź~c5˘OémÓ6aCu6G‰äg$ľó©3ÇMZżĄ{„ęśW©ÎÔo9sLşd¨.71iĎmO8CuΫҗüxđé—ť9Jkh‰ ŐŮSúµůŔ“˙Ň>ą6Ç#Ńpěy6'cĺM/5‡Ę—öCáŘ4ĺ4Ľt”ľ*Śrčů7l¨Î^¨„»®~0ăÇMÎL7iý†ě Őťp‰–ĽďĎvĽ¤Jz„ęś…ĹŘ˙gŽMŰPťÍQhc÷őŰPťÍW¨(ůăŻíˇMřVo/3Tg;˝u·bvöđŕď_t†ęlľž‚M—•hÝ<úôţölęśâuí.É:«ÝZmpж‰ú·3Tgó•Pţţ‡˙ęĚń’VaŞłĹ1×?Ĺ:MŽmĄÍ_ć ŐŮšM·§©k}č‰L6TçěĆ?ľ”[_sćŰ´ĺŮ´˘¨&ťńcaĐY‡±űăŰ^+oCu‘];h\ŞÎúĐUŰś—„Ő–|>|sS—śˇ:ŰĂôĹ«4vŐz$*ôŞWĹ77Źţp € ZxsZDĘŘ÷›çvŚ»kŰą7hrĄ)3b°¦Č•zYx›ę3j¨s0ťf楥—Zľ¬Ě”isě©á5®Mľ4iËf¦ŻÚ`Ó%!ŃQšîŞüĂ˙|Ďţ^/"ĽŃULpëÓÍ^˘yŁKb áašd×ú…ÇbĎ;ÓžŇ »R@¦€¦ééŢ k UŃä\M"«Wă‹ÔOsµ“~W·ŐFtn×äîkâo»ŇąRŘ%ń­Ol7 …#ťK ÖďÝĄŮ7ĹkĘmŃišÝśňUÁ@E&ŽŘů›őęi¦s«ż<Ôúż˛m¨`|YŃ`@›iq—Ślzϵęó ůáaŤo§y—ˇq16?ůóÂIÓ6Çç|~˘NîŮâ‰;›?r›łcE!çĚnő-˘c›Ć7]ć ŔyôĽäaŁq±WóˇˇmEÉzÎh]ĂqĹa\[Ŕ$2Öý¤čˇI‡5m,X Ô n[LĂľl¬Íf–™ Ő<ëFż¸Řůt°;úvA¬Ľ˛m……†·ma_'ŰŢß{˙ËË[Nx ćܡ¶ů©éY[vÚĂ’ g´Î·¨Ąü×ĺ«^ßÜJé Y € pđ€·H €ĺ¤-Xžł/ÁY¨ÉíĹgľ~źďôů+f×…äĎľŐx.sVĂs4SO«#9 {IëW>;O-¬y“¶Żýɬ©¤…ç˛6ď0Ú‘bő(ŘŃřú± ˘|Mm;:és[ ůonnrŰ•:T<ń§ÓŻ4c‘ &®Űq|5+[˛Ůżlz´A”ě3ęhÉĽŁ˙űÜÂŇs>zŃĚWUŘeĎ-ʧ~[8b1ńµcÎ<ÍŁEąiâˇ2^6zŰČëíY…ĂĚb|í[íč/&?/©pҢ-¦„5řü2DtjŰîÝż„ *¶˙ˇÂµŘ˛¶Č´Ę›í[D‡Ö§ľTňŐµJMhÜ\Č˙Đ`Lť-X]q÷Ec9µS/ő, )çQ‰sôhÓű®ŹżîRĐ׾Eőró4ňËĺ:†ÍąµÉ­Ż·ÄvŽ»+sýVÓś–MÔkďs[ám[*l­5(íŞ|ö.|xšşÖçž(şíĎT–ÂÜvîŤv$Żhô©˝u×¶c&ˇ’ú›Aô€“Bb˘ÔSfÁ˛•iéZ•ŇÚňúĆ7úL;ňNů±çDë|ՒyۡśřˇI÷šżďsµÎgáţ››ÇdjEčÚđ÷§ROÓçM˝|sS—ŻzÁ˛‰EÔń×7· 9B@ę ZW=î´ŠTH`÷ŤŹtš>ŃąŚťąĽé=×Ů RşJ|ă#ýlNŮ_­Ý4¤ß$»Ż?IÉĎ×/Ř)źĎÎÚąO“לC–ězaÎ \kţđ­6GqĂŞw|`Ž9ĄŽ˘N;W˙Đ>ö“Đ®&ˇ=(4Ĺư´Ť†GI硂q6ÎbGZŮ ’ }9˛‹˘Eş6Ľus…5 +)Z _‡ZrN«éŰn8[)5íämôó‹L¨N%5Ň*¤hŤ6í] ś‚Ąĺ‹>šüňrŞS†" tÚ;ÍÜ´˝¨TńŁ‹V@Sü(¤A”:iÎi[ “ę×Ó–Î+:ks”đˇź_mÔ`Buj7ę”^¶&¸¦Ăěí{lfěčłśŻ®VúÓ,i{¶¬„6¬Đ8Żc_JR¶ń5—sL‰mxéą^6™U„NUąć±j¬¨Tj6@8ˇą˘uńNČ,q É„ętFbÚĺcĎMŹ™RćÝđą­vo=c6[(Ѧ/OS•řÜ“F—ŽR,řWyRwűÎëj©ÍmĂ $=>:|ü/ň´Eá2‚U·zSÎţÂż=č/f·Ug]*ş=°źŞňą«şv˙oźKţd–G4‚µÝ›|®Öů,|ţćÖŕĚÓ Cuú÷xZ_ŰCďßÜ\ľęUńÍÍö €TŁŃşjħi@ t6˙z"'áHú?jŮ{í!¨B‹¸ýţźíß)¬d/«ď©ŞLM\µŃş¬˘Đ-ě=ˇÇá˙LŇ>eŤˇ+őňg pćgď(ŚÇ)S«PŮMuŘđ’‘Î’ąÉÇěˇf¤ÖďŮن;ö¨—ç¨ŮE‰ú=:ib©WĄ(€ć»…„…Úa‰š[gv#ÍÚV$ŇPÁŹţ­¨‚ţëfé4{AVŃćĘqĹŇ– Mďü…-¦„†€ŮĂú˝şÚ´ÚdÓćě=¨9m,Ďä;÷^Đž°ÚhÂäk™I”ş÷­S ßjđíepľŤ6çěLö®Âţ+Ócś†#ą‰ÖéBíPěÖ-Q´ÎĆgÍYg‹iEH3Ú™đô+©ó—ŮéŇe\Fvëŕ,Yż{'{¨™ŕZEQ\ÚŇ“-+T§ú}|š>ݵĆí:‡š–ú@í-ŰDîńžš [­«W/}ĺz»ĚbüM—zî5Ö2‘Z_Ҳµ˙µŮyĆŹČtIű·*á[µĎÂý77«a1gŹ™µłď Nyýć¦ón^őŞřćfşÍW@¨^˘uŐëOë €@)füEÜůĂęźÔ}˙ĎéË×j*–~ít^`‡q™Lço×ÎbnŇÚ/őđ?ŢvSŇY&,ľˇó0÷p˘=´ĂÍlNY ÍštžŇm:˝§Ž•P´eÁd^‡Oâ‘AÎČ ·ÚJ®¦Wvi睆6Š-»`=ç·úÎ’vÄMA¦z^ŢoďÎkKI;î˝”łn˛ŠjđíeŤŤńŢHÎ!ÇëáŚÉęîO”ńROěÁˇŤâĚN© –+Ä©ÝLy­č €–¬DS2µG‡ŤçšiG˙•Ľ¤¬ŹŤ,4 ŃŁ¤om•vęQm‹ž¦o=)÷izé‰sMF  łS>µĹóŃ·§j®±š[čý‹3‹Ö©BßşęĄ'ć”oŐz< ç?y÷ßÜÔ°¦ńĹ=¬Č777ŻzU|s+î-)@¨>˘uŐgOË €@‘ŔŃ÷>K|ăcsÔěá[µ˘“IÇž3¤¨HÁTM-`ŢĽ‰ÍQ"}Ń*í'ksśŁ“´˘™Í/7ˇQiÎP]Ü…ĂcÇśĄ ˇć j®—Ë5EÎyVÓíˇÇ˝ĚÍŰs“ ÇÓŐ׸¤ĐP[˛2 Í˙M0ŃĚҵKď©BtětŃČŽmlŠ 4úů…öĐ™6Đyč=­;u¬čwŔÖˇŚ˘čˇÖ°ÓÓ‰ěÜ.gOaě=śkZeď=h/T¸'4&Úú’(ŠÎřr­ąćx >ż ĺ¶«Ĺ 3‹¶îU'şńlYMC.÷ňÂ>Lp‘ôżi:ÔjhG^ů@zSÎm‚K­íŕď˙iCu;ÖčŠ ´y‹†gl ěŘń Ôk=2Ó–¬Ńć vÖ­ł˙Z§LŃ­'čK[E»”x4çËaŃűŕÇ»¶ÝĐ jšy~¶ç:qf`¬ĆŐj‰Fłˇ‡ţĚ`vĽ mÜPŁPŁNé}lĆ<Ő“řfáw<Ąí ôĘtUŰ•äĄN·ýŚěÜVi«=ńY¸˙ććr˘ídY‰ăsůËyŐ«â›[Yý!@)@´.Ú´…”. őŃł¶î2çqłŃş´E+íúÍÍ9Îäk#QmÚhŇ9G’ěZűʉh×Z_µěz~Fábđ ®Gž0¶Ë\¨ŻZ˘Î¦5Z­őß5‡Ú{Áć»I8÷ŽĐNš.j~™Ô * b÷Žč0ĺEçnłnj.«LxËf Î85íř†ŞéŽŹB öfťëý)‚7ú,[[ęÜĄyééć°`€Ut”=ĺ=١MaHzËÖÖ;ľż.IšüĺÁ?ľd®Ő4aM^ŽěÚŢţJšň•†LÚšuhÓ‘]OYióźđ×ËP˛çÚ;UŰš|˝Űń7Ž3iŤ˛3¸K^U2Gݍ‰ÖéTq”Y»Ž\zNÉÂÎç­ux˙ď *é¬Ćr:g+;Ë{IçMÎ\»E{A2ÚĆ6Őú±-[ło‰Şč‰˘umţő^úŁáuGŹoż«ż1bŃÇ—2Ś.ŠÖŮ`·6ŚoŃÔ”©LW_uˇ>KíRe޵ş˙ć¦}KěU•L”űŞWĹ7·Jö™Ë@@Ŕ/ţÚŕ—®P  Pg´ţš˝÷ŁďM3ăt2Öm±[(謦řy dS¦ö(Đbs vhŞ×ţű'ŘJ´j»Yl˙#Ý|ŇĹćóČëSlŹDnbÁęNć#79Ő$´ňÝ‘W?,Ę.j§ËH…7mlBćüľ_?­];s=ô÷7m¨NK­i†oř’­ŐťJ^ćĚtÎŽLůâ;9h°ŹdyuňîŢű«'Íg…¦Cjm4yꬤ)3´EfÚ‰ď|jóÍqç;‚łŠB“7ółsŞK|u˛-ë(f3+–8a’tĹ.-,}Ľ˝ %{ŕŚbh]łÄ·§j(˘Ć`î˝űŹvRdÉ«Jć¨çkf 4zŠB·% ;sNĽµ‚‘ž gÖI)|ç »xĎMťű|F˙HőÜ“§ÍNz˙ř&-ÇOÄś;D˙őo[¦ĹŠ}-zŞĄ'´čŃۨSű(ÇůǰÓ`uXE]őKµŐňÍ­ÜW˝*ľąy<8@@ Z[W-ě4Šś  9\š——ł§`^d~zĆ®źßďÜÔŤżőĘ®):ĐŞífáö˘Ś‚˙Ć_w©Ů`ÁeĘą°˝"€;Ż~0?##cĺgť 09ËJ7˝ď:Í4g5»pë°¶\PľVš×zmą™…#ţĘŞÇ}~ÜaAqŘKʱ{ˇ*SsQ_?V f™ úOÂłŻ¤w¤`™Ç,cS¸¬ŻÚ{ôđ‹ogď,ÜUC·lďÚ\˘€iăăî =Uń»»îáßѧGµámZĹ#ł˘‡!őŠÂ3˝˛¨Ľ©ÁŹ/CQĹ…˙HâëS ç‡ćĺi~˘>=ʸ9ÔęŤqcĎ=ňŻ÷ś…µA°ó°Ô´0f®ŰbNíľé±čţ=5ˇUŁäś…]ľçşDŁĂv\t»óZĄC˘Łâo*îęß¶ë"Ąín[<~g˝Ň˙čĄÝ?4›XqLM-ţď®ÇÚyŐk™łVĎü‡‰(?$˘xˇşâ ‹/(L…ĹĹ´ýĎ"»u,>˘ [çŻßP,ÉdjŮ±ŻżWÚűÎłš®ŰţmrűUĹU™TX¨¸µ{ăił—BÁ˘rá'ěPáYţř±F*ć;âb!Ńž»1xüBŰh¬ç0«Đ討źżÜôŢëěbv…Ő†„Äß<ľĂÔ—¬X©Ý(5S!ÂŽ˙3˘SÁ2öÎŹđ¶-;|ř‚]|P§´¸~§Ď_‰űŮ9Îb&­éť¦O¬ĐÎJBŁëí*Pśă"U˛† ˝ Zj#ÎE‰8˥äżyLYŤ=ďĚÖ/>në -ń|í)›Đ@ç|jŐŕą+«4Š: §o.l|ă¸ř[®¨çA+ZÔě··4¬xܑ׊§'ŰćLÂy#ŤŻą¤ŃŐŮ* ŞÚüű÷ŤŻů™_ÚňhÚĺaɧ© Ýßµ—•Î{÷ňťÄŮOçÎ°Š•›Ńľ*ŕś « łv§Ž uU{(+DkšSčÜŮnÉ´{’×:s\~sÓ%N.g δ}- ö.ń®Ú’ĺľęUńÍͶN@ŞK D‹+WWŰ´‹@Í88á•ĉ“ăo»˛ĹŁĹżËŐünÓĂ ĐzjZ +sÓvýr« ´xń/ueÜXnbRú˛µŠ‚EťÜ«2űŠj/ô•ëł·íÖ†ŞZöÎţv]Fłĺd禤fmŢžąq{~NNTßnZK^ĂmĘą¦ęOkˇ´ĚMŰ V¸ ‰ěŃI+–Ëë˝SÚ4{×ţ̍۲wîŤhŰ2Ş_Ďv-ËşDW{㪰ćíŞéČťíř»˛.©®|˙ľ w!´¬MŰ3Öl ‹o}Z}ő(PĄ‡ÚŠ7cÍćÜ#G5Ú«`9Hź˘ś¦‡şmí’˝cŻ6–՜ĒÝöc[%+ŻPNÍéIąÝ®˘®ú±Ú:ňÍ­Ü'E/üé‡S €nÖąQ˘LÝŕ‡­şűěąóş'2ý;qÜÜwT˙žÎ­]Ý\B@ş#ŔuçYs§ €@ ”ľŕN5Fµ €ÔXmŇj÷‚đŢIÍ‚$Zçťł € € ŕłŃ:źé¸@ V ´ţűŁy)inn)¬qś›b”A@@| Zç—Ô9ôE«4َÎÝ67ě?fÜTsvüôßmŐ¶šÂĹéł¶Ý÷¸H_µA«¸(HWúŃŃU9 !€ P†Ńş2`ČFŕ¸@hLý7cőF}B‚€ĎÍąÍçką@ŞČŮ}@ŰjUu+u­~ócd]»kî@Ŕ/DëüÂH%µV ńµ?ӽ奺šWk¸±Ę äćÖ çűmĺ©@ J":¶ŽżíĘ*©ş®VŞPťů1˛®pß €•`OŘJńq1 € € € €~őc]T… € € € €• ZW=®E@@@@Ŕź¬ŁäOMęB¨Ë©©©S§NÍËË ?~|DDD]Ö®{OKK۰aésăĆŤ»té\ý÷oo§Oź~řđaŐyĆgtíÚŐż•S € €@ąDëĘ%˘ €®¦M›¶víZU¬§ć„ęrrr¶lŮbn ::şcÇŽ®n¦FŞş{9räČ”)SĚM÷íŰ·ŽGëbbbćĎź/Ť}űöÝwß}őëׯ‘ŻťB@j­ŃşZűhą1@@ hdÖęŐ«M‹ŁFŤ dÓŢŰJOOűí·M™Nť:ÝvŰmŢË×äłµé^j˛óСCçÎť+íŁGŹ~őŐW?űYÁöč| € €L€uëFMC €µV@ł_5yĐÜ^»ví«µ·ĘŤŐČČČ!C†]ĽxńˇC‡ęŔMs‹ € €@  ZW]ARU«VŮưaĂĽßE~~ľ÷ć¬F6Ą¤¤¸)©2ZvMłD].µXnnn©ůŢ3Km4;;Űem•ďv©ÝSđ411QÝ(ől…2]>,—÷k›.ŐÍž­L˘˘=)«Ľ†×………©'řć›o*Ó%®E@¨¨3a+*Fy@<Ě"_ĘŐ ¤>}úÓZ íłĎ>3éŢ˝{·oß~Ö¬Y»víŇf­[·Öúqçž{®ó¨kÝşuÍtŕŔäädťŇJs­ZµRťZď?$$ÄYXa”•+W.X°@ÂĚĚLťRmm۶ը¨^˝z™’źţą˘~ö*mđé§źĆÇÇź}öŮ&sűöí .Ü˝{·Â[Ť5ŇzmcĆŚŃ|YYY*аaĂË.»L‰cÇŽŮeÝşwďŢłgĎ3flÝş5##ă©§ž2ať˝{÷Ι3G+ťéƕӦM 3TЧiÓ¦¶J¸é¶łĽM—{/şÓ™3gîÜąóŕÁ ‡‰«Yłf˘ÖÄd%l=nYştéO?ý$1Ő 9çśsäăĽ6))éŰożÝżżüŐtTT”`ő   „)éÝMo‚}C4Sű9(ě«)ŐÔë!g=tíX˘´qăĆm۶©NőD·ÓąsçŠöDtňäÉć*Ő¬ćô6ę ŞçzmôŽŤ1ÂąˇDll¬Š™ť74Ĺű /Ś‹‹s6J@@ ęÖUť-5#€Ô ĹV˘2·Şh— ]éP´M›6™|Ĺeľřâ ;˘Jĺőˇ-)®ľúj;mVgSôÍ©¦`ŠÂ4úŘĽyóW\aŁ{>öÖ[o)ÓYX­¨E}(§ ›N)ädân¦ë)Ř A­[ľ|ů'ź|bGW)ü´bĹ Ĺďą3ĺm M}Sµ&SM+*§¶Ěˇů:{ölŤŔŇ)s¨ňŠšéCá§n¸A1&{­›n;k¶iď÷˘0č¤I“´Îš-ݰ`Âń…śĆŤ׿{Ę{B1,ݬšgÖúőëń‹_؇Ąđ™‚_z:¶*.MI×~ůË_*lŞSŢÝôhś55¨§ 5ÚF(Ô‡"¶Š9~˙ý÷¶˝ Żżţúĺ—_~ę©§šL—=ŃŁ±m)¬¶4°ŃÔ GišSdvŕŔ¶-­“¤®=ý˙Ű»wPąŞ=Žă÷DK4ť „ŕ3b0‰%DŚĎH˘`DD D ±·‚…i TP,"â+WCšŕ„XX!6‚…ŹÂî~ąřógÍśąsćś}Ě^ç›â°fĎÚkŻőŮS„ë±cG~eAP@P`PWÂĘkă ( €ý |˙ý÷9HŽ,×Âůóç nęĘdgďĽóN4D`MTWë“ĺÜ(®ź:uމęjeŽČs`ëőZ&Zbş\FuůUFuyĄ)ĐrŐ‘d‘ţdTWëSóµ×^cřqqĺÝ®Ťg™ŕéŤ7ިQ]~EP gâĽzqF™ ._JVc–ÜÉ“'ó:ŮkŤę˛®đÁőJ”'ÝjŇşl<Żó{¨Q]\Ç™“ňĹ-Đ& fT—ϢŔěE2ÇĽRĚőGž,( € ( € $ŕÜş`mVP`˝0ą)‡ĘŠÂ,7&I1óŽym¬ÓdrS|Ët6VŃîŢ˝›YT§OźÎ[X}« ™ě–“ÚçH|6mÚD5ć¬eĺ}űö±“¬çĂ?d’T\gB5™»Ç#¸Ż¸âŠ»ďľ;f˙1.[ o›7oľüňËyDö-ż]ްaĂ–Ęe¦ămٲ…h’ž“pqťŽ‘:11ňśÝÎÖjaöX2fb,lČşc¨2ĆśZČ1 ‡® Î(ÓËB/»ě2<ɶ˘&Ă9sć Ťtć6…ĚvÜľ};“Ďť;GH51dÔ]tŃÔG„Źhľeý,td¸Ěy¬_1MŹĄĐĚyĚ|–_ óY»pOč‹”ů=´ĆrWžˇ!tńt–ł7Rfćôń- ˝kÇ,+ € ( € $`Z7¬Í* € ¬:mĆŢ^{öěak0PČqXĚHÚ@„}¤u_}ő×ă ) ąR$#Ä7o˝őV‚D{‘ÖůEeţŁ\|ńĹg÷ß?[ÎĹu6ĽŁŔs¤?™Ö‘’ëqťů_¬ĂŤšü˝ë®»víÚE>0IŤ`(żšZ¸ôŇK8@DEšC€ČZŕ¨F7Ž9=çŃŻżţz\çYDŠ\źłŰSşÔX“Ńň–ýű÷o۶->ŹľňĘ+Q&Mc7ş\“›ő§XG§…B lNŐHą^éŘ|0ŽOe§ąLëţF –ëóŐ-/fáé§ź¦ @3Öäµ:tMńhóĄ—^Ę[LŽ[¸'{÷îŤnłËޱcÇň ’BfZGOŘ˝.f,ňtb_ňÜě­P@P@áL놳µeP@ţŘŇ‹\&Ç™űĘĺ•(ąDĆG¦\mÝş5ÓşşUg´íÜą3'11‹3­Ëjśx@zŤüńÇ,Ťd»ŞüQ1sŞé@ó‘t†žÇEr˝0ĺ˛PŇR⧬FđÄąśoŢńŹĺ´$VLÇdłµP#¶Ť7ÖľĹńµrS&yĚ¨ŽŻrM(eB+Ž­hęÇÇŘęn…ÝžÚ2‹7ó:ci’Jô2­«5ó–ÉB“IŃfÖ!žcZ"o™¦I™WAaÖYŞĐ¸5ŐjÎ[ËÜ•5™Éĺ(đâč ±`ĆÁ´ĂŚË¦ŮüX{RSé¬`AP@P`öż}C<Ă6P@X“aJŽşY!;ę‘Áe妝ú‘t&&m±v•p#šÉP4ÂŇWŽŹ Wbç»lł)äŞ[®×öůؤ]ÍŤ|¬ søɚőĘŞt»6ĺcˇN3şĽkFˇŮoŽĺ˝Me2SÖ çÜĆř–×1;ąkÜš6ű¸XO&G´ÔÓŠĄŞy]P@P`uLëV×ÓÖP@Ö—KÉ"2űűďż™ă65íjŽ+eYh2â0щ˝ę˛…:Á­¦Bä,µđP&ĐqP;—q EmRŕVľ­“ćę·hsum\©sĺ˛N-4mrC~ËZ×[ną%?ÖB0şÂn׳\·‡KĂü¶^i2Ó¬ÓŘ¶ŻľÇú˛Ŕ'i}˙ý÷óĄ0OŤµ·ŚŽAاŹéŤMků±qË닢5¶)\ 'ó?±ž{ËZÝůo´¦ ( € ( ŔJLëV˘ç˝ ( € ü‹µŠąí{˙“ßM˘pľ;ŽeF–k3©»•±ú’e•qă·ß~{ýő×g#|Ěr,Ň$Ęe°W^yĺ“O>ɬ.ńÍ7ßde˘C‚Ş|b´›©Ő„‹ąxśßzóÍ7GťS§Nĺăć)ÔuŁÄ޵çlĺ–séáÂÝžÚŤKíÇAüňË/ěď·6qćiŢ^kćĹÉwqÖj¦őeE4 uŢĹŃLęYaĐÂĐ=‰ł,bą­Ţ #˛qP@P@Lëü( € (°"RŚLëţüóĎ©i«5Ož<ÉňU2 fĂ}ýő×ůHŽ |Ýu×qXA\üá‡>űě3N~`q%§ d0ŐřKkgĎžŤĘ$b7Üpóž8“”,)Ó:ľĺö¨“Éď•–EÂȆnyÔ)‡Ćr‘:‘ňô¬?Oˇn«GŻ8Řaűöí<…SnŮŮ-[xţůçîv6R 9¶]Ă0ϱ}űí·}ôQ;*Ľűî»2‡˘ÚÂŚ27rč-éa_}Y×\s wŐ ‹h7ćâ}ţůç$¤3Ú⫡{Âď9»]wĐË‹P@P@†0­BŐ6P@Ö‘ŔUW]őÓO?Ĺ€™>VÓ«Şpţüy6;«W(ł/XśÇĘą,#Íł_˙óżMe"ąŘŠŽ(Šcż6¶Ť;vě! 3Âň‚xĄn=ĆŞÉ^xŰ:tĎ=÷Ľůć›Qź¦Ř/ď]V5Ľ·Ţzë™3g⮏>új)×MÜpÇ*TzÂż9»=µÜž×ëXî»ďľ'NÄW qüřń¬–ŽOŤEÄyeFYr“Ťđôđ'ĹKjŽ‹ĺśY˛Âşh”–'÷śń¸ľŠ•°ö„¸“y—Ń7‚Îv\`\ޢ€ ( € (€ŔP@P`%[¶lÉŰ3¶Ë+ł {öěÉÍÔöîÝ[÷€kn$iz衇"®şä’KöíŰ—ČżH‹Ř^-| Ę!ŔŠ Tfľ[VŽež|ÜĽys…ůU˛?Íő ţę"SrşŐ_îßżźŰ—Őí©Ź[j,äewÜqÇÔ[ââµ×^»m۶ţďWA'E°Q]Ö'Ďbţ]ŐńíĎ?˙śu†+ Ú“şa‡ů7 [V@P@hLë?* € (°<‚ŞśOWŽÚ ]™–UOĺ°‚Çü¶ŰnËjě%wäČ‘›nş)Żd¸íąçž‹ââÖ­[~řá©ÉóěĆĆP@čXŕË/żüä“Ob€;ŔÚXĘ,–|ůĺ—ă"KA{ě1v7ăX¦Â‘˛±€t©ô„íĎ8§•¬¦dAëĆŤ'C¨h–YłÉ–sĚí"–b=ţQ?ľmţ˛ÇŮďż˙ÎE¦éM†wěďI Óô^}őŐ¸÷ꫯ~ę©§švf|ŚžÓ%ňşAçkú“7.«ŰyW-,5ţWĂiбdRTśgçtµŮZ¦“ěëG;„4RżŠ2 E‘˙믿ŮÇňdťµą2DOř•=z4fk.÷g°6Łö) ( € ( @Çî[×ńËuh ( €k$Ŕ¬+ŽRŤCŘÁ-ŇşÉgĎq„ëäőć iŐć©IäDükZú‘ t1‡Žo‰˘^|ńĹ\żÉJUf˝qťĚîÓO?ÍŰ'C˝üjjaΞ/«ŰSTÇR+™±šxĆ‚âZyv™N˛Á˙–ŞŮčRß®ĺő!zÂń&ą°zęŠéµ ĎR@P@Ö›€iÝz{ăŽWP`őXyűí·s+Msä+˛XÖşúŹY˝‰˘´Îť;Mľ÷Ţ{kÁf“Őc@§.Ë]˝^ŘŇ*@{úôéčçKÔUŐhŹí– ( € (Đ—€űÖőő>Ť ( Ŕ?$Ŕü#~ňp’ŽíţˇŽĚűXÎH­ŰĚýöŰo?ţřcŤęŘŤ“jçmÎz |÷Ýwżţú+bń>ŘŃČŠ ( € (0ÓşqĽ'{©€ (p |8p ¶H;{ö,«Ő3—­~ĽĘ.Á± Ěśšě ëLyä‘xŕÜ‹m˛W^Y3/ľř"žĹą‘AŻŮŁ} ( € ( ž2áĎ@P@Uŕ\8ľ‰s6ŮŽS˘iŽ)Xę¤U{ö˘ ±n—‰TüńëyÉéHg.Ř®.:Dď[žGLÄ ő¸Řĺ5amP@P@Ö­Ď[P@P@P@P@XU naÎŞŽÎĆP@P@P@P@“€iÝŢ–}U@P@P@P@č[Ŕ´®ď÷ëčP@P@P@P@Ć$`Z7¦·e_P@P@P@P@ú0­ëűý::P@P@P@P@1 ÖŤémŮWP@P@P@P@ľLëú~żŽNP@P@P@P`L¦ucz[öUP@P@P@P oÓşľßŻŁS@P@P@P@“€iÝŢ–}U@P@P@P@č[Ŕ´®ď÷ëčP@P@P@P@Ć$`Z7¦·e_P@P@P@P@ú0­ëűý::P@P@P@P@1 ÖŤémŮWP@P@P@P@ľLëú~żŽNP@P@P@P`L¦ucz[öUP@P@P@P oÓşľßŻŁS@P@P@P@“€iÝŢ–}U@P@P@P@č[Ŕ´®ď÷ëčP@P@P@P@Ć$`Z7¦·e_P@P@P@P@ú0­ëűý::P@P@P@P@1 ÖŤémŮWP@P@P@P@ľLëú~żŽNP@P@P@P`L¦ucz[öUP@P@P@P oÓşľßŻŁS@P@P@P@“€iÝŢ–}U@P@P@P@č[Ŕ´®ď÷ëčP@P@P@P@Ć$`Z7¦·e_P@P@P@P@ú0­ëűý::P@P@P@P@1 ÖŤémŮWP@P@P@P@ľLëú~żŽNP@P@P@P`L¦ucz[öUP@P@P@P oÓşľßŻŁS@P@P@P@“€iÝŢ–}U@P@P@P@č[Ŕ´®ď÷ëčP@P@P@P@Ć$`Z7¦·e_P@P@P@P@ú0­ëűý::P@P@P@P@1 ÖŤémŮWP@P@P@P@ľLëú~żŽNP@P@P@P`L¦ucz[öUP@P@P@P oÓşľßŻŁS@P@P@P@“ŔžănA—Ó [IEND®B`‚barman-2.10/doc/images/barman-architecture-scenario2b.png0000644000015500001620000067664113571162460021564 0ustar 00000000000000‰PNG  IHDRŹ^‰™>sRGB®Îé pHYsgźŇR iTXtXML:com.adobe.xmp 2 5 1 2 †Ň®$@IDATxěݸÜTŢÇqęî˝uwŁĄnT€˘-PÜ–Ĺ­ěâ,Ë.¶ĹÝťE(§Ô[JiK•ş»»{ßĚľ!ŤśÉXnî˝ß>÷é“INNN>Éd’Žä;tčĐüC@@@@äŹ@( € € € €ü&@´Žó@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €­ă@@@@@ *Dë˘r$( € € € €Dë8@@@@ŠŃş¨ Ę € € € €Ń:Î@@@@˘"@´.*G‚r € € € € @´Žs@@@@¨­‹Ę‘  € € € €„@@@ś(°gßi‹7˙2ĂôĄ[6nßłeçľ­;÷mßµŻháĺJ.[˘pŐrĹÚ5(ߡaĹUKetç­Ü:jćÚI 6­Űş{ăö˝¶íŮĽco±B*”*R±ôoő*—ěѢrű ¤ŇLF™#ň:t(7ěű€@ÎXşnÇË楸óç«\¶hµňĹ«—/Ö Z©ň%‹¤aN_}Ńší#¦ŻńÜ áśŢ±†ç"f"i=N|1nąçVje•8®eĎE©Ě\˝iWßţ#ýrxü˛6G7«ä·”ůä ť{ö7iĺ/ó7N\°aÍćÝznß¶k_™â…őĄ+]¬Pő ĹÇ>rbÚť´uúŇÍŚZśt¶%Š,[˘Âu+—l]Ż\±ÂĽřOÚ’S8xđĐSV˝öĂü‘3Öî;p0HvşIľ¨{ťËŽ«_;«DôÓL[ĽéĄďç ť¶Zל «č{ÔµiÖÝk÷íP3ţ|AVq¤ů~ŇJ…3cóçËwó©Ť+–.ęą”™ ř‰ÍA‹˘ćr•^řvnwRżÖU8ąMµ3;ŐÔósÎAYMY´éć7&zřČÚe‰ÖyĘ03•wůť™Úú˘WOO{¨]O2ł–oő۵í»÷ű-b>9E@ŹîO}5űůoçlܶ×QfŐpŃEîöŘáX”×>.Xµ=]7 äkU§śî1.îYWń»Ľ&ÉţfŻŔ'?-yŕżÓ—¬Kě­hÚ“_ÎÖ…âÔöŐű_ŇşF…â)îĹč™kźúrÖĐiŢ/†ý2ß±gżâŚúë_mĆ­}›ťÝĄfü‰Uµ3{ťá‹śUşHżS›řmťů S».ä”˝˘ś ‡ýµ)Yµq׌eŢ]Ż:rë÷ĆÄńŹťäi˙¸iűŢłĽo­ŠĹ«”+VľTáť»¬Ů˛{ÉÚ»÷jÝrý+żÔ¨P˘kÓ,űÖ™F<(@´.tv9G +\ jůbžE?tđĐÖ]ű54UŔw}ËÖďüvâĘÓ;ÖđĚŤ™ + Ěßşn9Ď]SěľvĄž‹‰@ŽĐ3ą_9ŞűöÇtiÂsŻźĐaóK+U¦čałb!äŕqЧżžM´Î‘YÉ Ě_µM}şÖ.Y´ŕE=ę^}búUJ9’­Ř°S=Í˝đÝÜ•w9Ů?*č?aŢCŻ‹jŁşnëű*žÓ ţĄWýŢíŞ×­\Ňž@Ýk™şúł±Ë>·Ě>ß=­űů+_řyňS§)´+=w&ĚA\ @´.Dv!O ľď¸#k—5ďŞv“müyÎúçľ™łm×~CâŮ+¶ś~Ń:‹Čm•ËńĐńąmŻŘ~رŰ÷'Ż{łJ„ꂟ&};Ö|ţŞö~é7nßłpővµÔ(óšşŘ˙qć:u’[¸ ±?Kć'&đéOK +T.[ô‡[§ŇaŃ1+}ő ĹočÝřĚÎ5Ďč?jöŠ­Ö|÷Ä'?-ő‹Ö)–÷úŕůîUěsŠ*pŰMoěÝŘ3ĘVĽHÁÓ:ÔĐßŐłÜüĆDsIVlÜőÖĐלÔČž?Ó ×č·.Żqö77 ”.^¨GóĘwśŮ|Č}ÇŐÎ2Ő”Y¸f{n†`ß@ň’€axâž-*ç%‰Ěîků’EÚ5¨đâŐ&<~R5źúţ±čkBe¶ äžë¦-ń\˘D‘‚ďę᪳$Ô6öű۱‘iŔâo~YaĄwLÜýîs„Z•ű>ż«ű­}›y†ęěąun’5üÁ^ťW´ĎtO?>p–á=„;=s@ ÷ P·.÷Sö#šÔ(óʵNş¸ź…ŢŤű-ňśżgßo·ÝsWnUź›věÝĽcŻnY*—)ŞĆąŐĘ×˙ę›Ă»íŚgvńfęć¤Őčfý¶=¶íQ ľZKÔĚ*^ű·˙KT)[4źš6ń/aމţ¬Ţ®•ĘcłšeZÖńn™HŢɤ ůŚrQŃęą+¶.Xý›†ú±:ľUŐł»Ôr¤ńü]gćĘŤ;5äĺŇu;VnÚĄW÷{÷˙vő˝ëŃĽRÓe<‹ń™:#~]ł|ĂÎu[wë;^ŞXˇ|Gä«R®¨şř©W©d÷敊N[•śě:j?îâ%÷˝óPşËlÍ1ÔňRßUV˛„&ÔĂÝřy†M[˝xíŽő[÷Ä~Ź”C…RE*ęŻt‘ZY%ŽkYE˙ dęĺwr%ˇÝL.±*f×·˙HĂęl ^«1dmŤZ;nŢú) 7é°ę–fËÎ}ęoDŃśęş«Ń˙ŠŐ¬X˘E­2Ů{łqŕŕÁ±ł×Ď[µmőćÝk6ďŇ ¤ŤŞ•jVłlłšĄUH|z%}¦÷â0g…ď@ĂúÉĐýL˝.W˛đsW¶ďpŰ÷~‰ő«´{ď÷Đěĺ[†L[í·–ćë§ů‹»{(–mHc_¤zvźÜÖ­÷ç-ŮlźoźV«Ű—Í»ĺô¦ö™L#€@ž Z—§7;›‡ÚÔ/Ż —žę=÷yăö˝žó3Ry{ŘÂŻ'¬ĐKÜžqŐv༮µĎěTłBé"Ž|~śµ|‹Zü ¨Äúť†U´_};Öčwj“µâ4 6dwŃŚĄ›üdş9Ůĺ˝ę+ĐŁ4o ™˙Ň÷óüŹ}řDójĽ|ĂküV˙üÎîzlp/5lôo§5ą°{ÝŘ*ă箿￿ţ8kť;Í©Y±ř©íkôëÓXQĎéť™ą3jŃšízú§]^ý7źtm˝ëŽín¸ŐMő÷“VŮ÷KďĂÍŃşl<3ż›¸ň©ŻfŤ›»Á^`ű´jŃ^Đ˝ŽŽ nýíóÝÓ µźőȨ­»öąiÎS—·íö˙]®ľŁ›Ƕ6nŰŁvú_Ś_®8©c‘ýŁ*JśÜ¦šúÖěÝ®ZüIĆAŇxÔŇbřÎj÷3qˇČÜ÷"ĚCi?7¬iűAŃĚm>'¶=óőE„­Őbîş“™Ł0Óozň‹ŮĂ~]­ ޵˘5aďúę‰/f©Ł·cʬň×Óš´®WŢJcČÜA1l4‹Ž9˛rźvŐżöŻ‹¤gífTŰQuňŢČEŻ š§¬c‘űc˝*%˙r\}u…¦Ź{©ćŘOÂô^*ő>é•ć}1ną_/i*Ňm}›^{RŁüżŁ˙űă’ÇÎô,äg6;§KmÇ˘Śž„ş8h°Ç^XŹňé’ŐJ`źh\˝´^0î3—­ßѰZiű*šţ|ÜrÇÇÇ»ĎnxČ÷uĂk?Ě'Zç ć#yJ ÎÍ}ž˛`gČMއ_Łbqż:tŐâ…f<ôÎđ…Ź~>ÓţXböQ׼ú»ă?“{µŞň·ÓšĆ­áoĎM/ŤúdĆ»#nY¬ô A~,–żúí6¬îr5lTqĺĽdÝŽŰß™äL9öHCŽ(ŕňΰ…zÔěwjăĚő1”é3jʢM~/¨×nůßă=ďO}áŰąAÎ1K)ĎLU÷Đ·IťCY…ńśĐQ~xŔŚ÷F,zü˛6'·­ć™&6sűî}Şęâ—ŔŢÜF!ÂĎ~ŽÓv,źF-¶g¨ŠŠOüą­}Ž5­Ú Ď;癯ćř… ­”šP>źŽ]Ş? ‹ńâ5Vš°rHűQKá;«ÂgâB‘‰ďE‡Ň:¦î‰ŕEˇ:ěě9ôjUUOěö9ÖôęM»řxúűŁů?>[i˙7ˇ^b€ÖßÝęÜ{^‹¸•ž2qPśe ës‹Úe Ń:urg.HÚö(řuÓë6ďđŔÚ“YÓşúűűSu>čuŽŢŐŻę» řIüR©:†O}9[w_~?ý±âéWţî÷¦»ě…«Ű«†µĆ.đ»‹ŘĽÝc3tfôâ`H-`\Ř:˛'´®úúŕÖGÇÄ’u;ÝŃşĆßDýTÝĐ;™ćš×*{ĺ >v”Áú¨ŰQ˝yʡ•č­˝`’ Z—4+"iÝđi ,ż"šëżhÝk_Żpßę†ůj!«&{§¬ľµoÓ»Îj{ëkHŻEcgŻ;˙‰ß@[ą©U‚ţüOż.%Цíj¦ ĆąńBuu*•řěÎîeŠ{żo·JŤóVn=őˇ‘şĎ RGT‘pÄô5ď˙­kŮéß©Ď(Ď]ţÇSU«Ës‘ßĚl<3őüŃ“cf,ŰâW6Ç|5ŢąŕÉ_»ľŁ»…#e¶|TCěó˙Ń+ô+ŐäE›şß=XťvßÖ·Y‹‰ňÉĆŁć·Qžźč÷"ĚC™9·C>ˇ¸_ćo8óáQžőé‚ćĂŃ‹żţeů€;şwl§;*sn‰sn]Zł‚©=f콑_BÖÖËŹ—ý«ŔűRóŐ°@Őńľżüí~ťŐđŮ2őEzk˘ĆĹjÍ0+]T{Ý;td†Jâ$ĚôšLńB~5 ‡L]µkďţb…Ţ^uBĂ®qc-sŐ©´¦cęNÁ<"„Ţ'] ü–Ó›¨ťá=âđ_×­s>"w’l`’w€ŘSr¨€Z>îŮçÝ V{äľ±vSý¤\ňôOÉ…ę¬Ltۡ7Ăj"dÍń›Đ«éľýG%Şł2Ô+ĺÓűŹÜ˛3PŰ^k-ż íţźźýŮŻ–Vl-5ýűü®aÓ/“lźŻ;Ú>ŽŞłJ«sćÄ SekNZ&B>Ł<ËüţČEĎ^ąĆ3™}föž™W˝8.x¨.VlĹ®~qü É+í{…iµ>>öC’ŐĹ Żú˙ţt†j¸Ů—ě=jAJ©4‰~/Â<”áC)Î{úżőSâQ)xag× “Łg® ľŠ#e˘űzČ !sIBÖ~ő‡yɅꬽPĄŕłťĘ‘µ˛ň›ĐşzIó‘Q |¤ľiUUVXgňBßVç†M$zP Y…łHŐ© ň«©˛¶îCî~7P¸ß°/Z¤Đä5/ŤWĎwćdI/˝ůŤ‰Ă§ŻIbő™Ë¶|9Ţw$ÓD3Lâ$ çâ`ÖiŐ˙o§Ű=ňŮ Ę”č.ÇMď×Ę8¶˘úkN±‘s»:;´i̬uű|:ˇ¶'crĄŃş\yXŮ©<* .üő„pë[“ŽągČĆmľuÍş6ÍňëëM9ô˙tFşřtkkčD NU(é7óŽBľ?rńŹ)Tg妖’o 1E4ŔŇ·ť]ă¨:v9CÇÎY˙đ€™éĘ<Ě3ĘŻĚęV)H_iÖę<3­˛ĹťP…ĘDüĆÍ3éjo¨6őjĄ›töoyk’ˇbKŽ>jöÝ m:ˇďE‡24kCzÖ‰şsĎkNŠzĄ UU*Ń|:(‰fž‰ôj!hČÖ3Z˛¶I€ČĐ噡üîEşš©˙M÷üÔ猚±V·1©ç“z‰ž„ˇ]:7Î2ďťúYÖKâ¦7|Ýí®îý`ŞŞ=ó*—ę¸!ĄŐ…±!Ťy‘ąŁg]š4Ľ9–"€@nÚÂ?·î?ű…@N¸ř©18ÂŻ´Šy©“]s1Öş÷_ĐŇšvLhHVóĐ Žôq?ŞźÝ{Ű-ěQr˝ë2([ÜMX úńÍ˙jiÍ >ˇţ§5 !}ţ|ůŢĽ±“5n¦!eN_¤ˇĺÎďV»ľŻ.Áw0Ě3*x©Ě)ŁvfšKë^:pܲ;Ďjîž|NáBéy“÷ÖĐ…ćAN‚I)Usđ¶·'Ť}äDĎŃ<3zÔŇ’ĐţF*q‡2ü|ŕLŐöJďvg-ߪ×÷žwdzłŤTnŞŇőůĎË EňJ5dmý˛›ďj4`T«şĺ*–*˘VĚ ĘĚ\ľĹyÓuePóÖ·'$ŁĽ(´‹Ăij¨Ý ęĚD[FoXŰÔ/ߥqĹ.Mł:6¬¨1X¬îN3µ)Z—ú\u…¬±é u{5TŽĆwŚ9 ëÖĺúCĚćt¶®?Ą‘aŚyŤ/fđŞPŞČ?ÎmѶ~yĹq ȧ»‡_ćoüčÇĹßüâŰrö·ŰßŐŰZÔ*ëČvŮúÖ1Óń±D‘‚­qőRzJW^jć`FP·kjÁQÝŘéµcÖGµĄUE?ëŁçÄÓi{jűž‹">SwŤŞ•ŇY,H Yő€öĘ ůŹ^Ú:őý íŚJ˝¨±˘vf-TŕŚN5[Ő)۸Fi…ă'/ÜôŐ„ĺć/‚ÂjžV©Śo?q­ţyŢ‘uŻK¶˙ŕAőĂĺ·ĘłW´łYS­üť9Ş=őÓ_Íö[16_ťőśŐą–úĎ.R(żvJŐc_˛@ßwżµ´kÇ-#A¦ŹZZ@eÎAĂ<”ÁYţuAË›OkbĄżüąźýęż\sRĂ »×±Rj˘NĄ?úĄRuÔÇău±Ş¨Sߎ5ŽŞ[îČÚĺT“hÚâÍRSaqs'w:˙˙|\˝šsç3¶j^÷ňxsťµĆŐś­ VöCoźÖEňÝ›»8Ş5iż4Bý3_Ďö‰äUŻűiöşŁ5®+Ă'?-1×RŚ»~•’Ť~'ťľtsęÝ Ř)’žóâ ÎćôÔW/xi5®®nő÷ä—łőÂőČÚe:7ÉęÚ$KŻ]=CÉž9ďÜł_µö<i¦~Ľt›ę·4ŕ|˝‚j^«Ě¸ąľ]Çč~;`V$C\&@´.—Pv_Ý©Üqf3CĄÝuÍXşĹo}˝ţňîžJ±T+_ü´ú«ń÷÷¦<˙í\kľcbő¦Ý-j9ćńćć6°çt©ĄhQůRlNm*Ő«‹:Asćeű<`ěŇ›úüńüf[bš\´fűyŹ˙hî>OaĘKŹ­gĘ%’ËĘ—*|{ßf:¦ž5f®ž4†M[}ű;“w[¨“é{Îi‘ô‹čFgT˘ü’É*­PXľŤŰ÷/ňÇOa¤ÎL˝K÷Ż]ZŐ)gíťb[ýú4îýŕóŁťÂÖ©DëôŐÖ_lŁćîrTmáČÚÎX|lĹŻ'¬\˛n‡UrÇ„Ş<>n8Ą±=Tg'ĽůÔ&†hÝ:W/ÔzwýŽńŢT]öľz]GÇążtMÝc*ĺýď—°Ű| ä©îb iz4ŻôŃ­G;NŠĄ‹>sE;Ť¦¨˘jVOeQÜ“0ä‹ÚvÜÔ»±š¸¦˛SZW‘ôÓ×ęOݡÝ4KńYCŁĂŤ±˛*U,ÉÖµŽ](UÜôHnľGudĹGČMéé›&7‰°/äVËź«(ܱ3kő lM;&Ę/Ô·“o¤Ż`Ó•dŹ«§í‰ó7î<Ôló‰?·q„ę¬ň\uBkÚ=1k™©ÇkwzŐ×»čÉ1~í§béĎíZ«˙%Gą×ŤţŐq„ę¬2«^ŔçwuĎ—Ďšá11ŢżQ†GjŻYˇťQ^÷§;ňţyě…Ýëz†ę´BtÎLćö3šşCu±˝R˝ąľť­Aí;Ľe—w¨Ëž&ŁÓęŰŰШ§iŤŇŠ€ű@{÷če¦VŘjón_7RGÍ^°ś2mţ^„y(ĂűaňjCŻŞ|«¶ŢŽ(‰˝Ş}¬‰Ţ!ŮgÚ§R˙n’oOö”ŽióAq$NďGUAzôó™îżÇÎŇ«2}ű‚„ęT¤sş:_ö„Żm¸ÓP ˙ůá4=őÔq„†é¬^ľçźšFz®•ÜĚo~YaXQżV˙ąą‹ßI¨*˙wźťR/Ą†MÇ= łĺâ R©Z«ˇŘ‰.Ň)}Ü˝CŻ|ágŐI÷\×ܡT˛}á9¶eŽúyöţěČŹ +Lü\ąĂěyV@Ť}^<č´Őţu¬g+ą:Y%ţfëČŐ¬V™b…˝/jiň„±Óź|G8źd&Ě÷­íŻŤŞqśă…Ľ˝$j.׼fż7Ű‹Ön×m´ß}­=M«¦ŔőŻLři¶éťvŻVU^ĽşŐXĎ‘C”?Ş~˘á]±JޱQĹ[W5 0~žé0Ů÷ĐΨ …ąá”FŞjN‘3S…TźÓę´ŃPZUůygřBżű÷›Zöů­•ĆůśÚСŐ_Okjńë9ůîw§¬óiű٦m7öţăi-:G-Ť€ˇe÷{㎠mŻ­ Ť™}Xäך›řÓ1uUÉ1ÓńQ-dŐ>ýă1Kó­Źcf­3—­”ÖDÜbĄŚěDą…őSî(^řÚĺKv”Áţń‡)«ZöűVQEýviśU¨ŕaďźżŞ˝=qć¦'.ŘhČüŽ3šy­k­rĺ T×Ět¶R&4ä$Ě–‹îÇîż°•zOľ˙ă_Íă$´żŹYúíÄ•îčînmnxëĽÁMh«¶Ä† żRĄqÄjŰ6™D ŕýřť N@ )…k¶źŃä·÷ŁWÇŽ :4ި?ÇLĂÇŐ›vŤžµV=F™^‡ŽpĚO×§´­fبýíô¦ź˙ě=†şű5ßńŘsžľt‹ţěsÓí”WÔŽ;xGšČ~t?)ą‹zĹń Ń:ő¤®€f*‘ĘĐÎ(÷®9ć¨zÂżÎoééţ‘3SS¸ĘÜŽŐŻś{/4Ç)óLźö™j“nČł{óJ†Ą±EęoĐäUžÉĆÎ9,ÂťŁćYÚ(Ď ň˝óP†o5f–o§fú)±… eűëiMLŃ:c@Đťmâ^+jsníŰÔ]W(|mŤK *ä†h‹äyáŰąú+V¸@ÇFş6­¤ńCuń řÎ/-ěżřżżTáĎďVÇĽ•’E )˛¦>ěĚÉZđ$ĚĆ‹**ĚŞAç©LWĚN€śůđ(5;Đ»L;—4ěÓ†.))Íwě6UŘ,["=ímÍe`)DP€h] EB ł Qő{mâŰý:ߌ:w›ł|ëś•[­Ů±tÝŽĄëw¨őčćű‚ç`O©0ýŁ}Zw̆îŔc)UO!ŃŞ öMź~ú/¦6PÁó ?eń"Ô˝KÜíöjYĄVĹâK×{·ţPÄgë®}î¨nÜl$Hďw‹'µ®$ęť3ÓŢ}ľçŢ©SBĎů±™Ů­3t˝ŻęŮŘPřآÁSVűĄŃHÓ›wěµę›Dç¨ů8˛ó|/Â<”!C©ź_5m•D•¸í#KĘÖL)ý/¤F=Â*¤bČÁľ(ČA±§Źŕô%=ëŢ`«ý+a¶h+č¦k©yíXńÔÚ1Ö‘™>*P۲vŮŽŤ+žÚ®zצY©Ľ˛Š{t¶ěܻ¼ŃÖuË™CE±üĎčX3˝Ńş€'aö^tp5ŞŘU'4T“ Ь&çúi nN Î|˙ňüĎ?ÉŢšÄ\CS?Fć<.ݶËtGmýŢĚŤd kÖĺšCÉŽärőžÓÂgěĹŘžë—^]´,[żsřŻ«ÇĚZo~\˙bür ×hލ‰ë©«‡L]5rĆZőěžF_CW2Ă>HT%Ť…1dőÄŔY Ĺ4 Y…Ľ¨SŁŠAőrT˝r~Ń:•YŮ4Fë2wFĹĺUC§¸i” :gfŤŠÎôOcŞĚTźă†m¶ČüóÜ7©öľvónëé%:Gí0‚śđ!Č÷"ĚC˛™ÎC­«¸ßA{i•Řp!UÝźŕŃş Ĺľé¨M_Ř˝Î3W´u—*»´;7Î ­łXCL^´Ia>‚ö”ćióYjýŢ™3a)ä>˘uąď˛GąS@M34Zb}Sç\3—m9÷±ŃşçđKŻn¤_4ďß{ž ¨Ę«çżôÝ\óÝ_ććů4Ľ˙ôëVßśg†–~>nŮĺ3ęiµ—ˇ$ťmíJ%®[ł˘)ĺ˝4Î2%¸•ŚžQAĘP3^đK™Dę̬Y!N´.Č^gcóS\ęŰö˙Ť†"uÔR߯sň˝íP†ĽďÚÜĆí¦J1 }5Ö¶ˇüÚPťřŤż˙—AbŘV6.ŞVľŘS—·=©Ťw_ŮĄýŔ…-Ő?ť!¦oSĹ7µµÔźş }ć/í4$·9}˘KÍmĚu¨­m)T@ť«UŻ5'ʼn€'a¤.zCŮąI–ţn?Ł™"wäJ1; –5~ŢzCíEO¨WÍżăĚfVgzŻ©Ž~ím5 ďŞM»<‡QöĚÜs¦z™aě…hť§3Č ¦—óya˙ŮGrĄ€ć { W«:¦čާ?-őÜw˝'<ë‘QwĽ39ˇ:mŃÜÇGÔúć¸ííIűdw=%Ďădś©ľŤË˙XXŮřěˇn\ţHšěT¦Ď¨ ĺ Ň(Rgf™ŢIMşŞř\=ŚĹEę¨ů•6˛ó|/B;”á+©=ľaŁŐŤ8ÇŠćÄ[é5"ČAql=Ű?ölQéŤ:MyężPťJ]ÚŠŻ©iBęDßü˛˛Ăíß«ĹeęYŮsPKXűGÇtđźrŐt¬›ĘÇ€'ad/ŠÜi”­ëNn¤ć3ź?uęÓ§(Ž|Z‡ęŞ%„eÓŽ˝ŽîÍŤa5’Ll­4÷~0ő˘'ÇŘGV›b5µ¸'Ş•KçńuçϬuë"{h() čE«^Ľěٱ~ą¬ŮĽ{×Ţýöľ9”rŮú}‘ˇ8]¬$†ŠuJf×Î~2öůj¬JןňÇ”öĄ‘ť.ě–Tĺ×kaĂ^›[V´…pFYŰ2L©ł™łÎLĂÎFa‘ú¨Ęh1¬ó–Ł–ŠsďEh‡2•In]Ť“nX1ˇ«ź9q©b Ül9(†b§ľH C•.í©†ŹĐOŚ*ű4­Qú¨şĺ[Ő-¤Ě٨ݧ}ő·nęô·7&) “ŠĎĆm{/}fěłWěÓ©äc_×ĚR°@ĐGýÚiÚ·|:ČUn9ĺâP§RÉË{鯾^ó »ôůoçţşdłYcřŻkş5űŁB¬r0tҗиĎ|ü«ŞjjëŃâăŰşĹîÖü^źÇ Ů j© Ą‹ ĚRČ­ Ü@äVö Ü* Ţ‘Í»¶|ýΆŐJŰÓÜüĆÄDCuŤŞ•úóqőű:C#Řł˛¦óqŘí¦ů©Ćţ˛ŃĘ!{'úqN×ÚŠ~f®iŻľg~°ďşÖ¶tL|íXËţ1„3Ęľ9żéE ř-˛ćç¸3Ó*y'J T…!é’«-lÝő|9dŻö™ťj©»'żőŢČE;÷~őĹvĽëÝ)=ZTRřĆ˝(‰9ćYżÖ—î -ŰŕŰó‰;qÜ9OÂwqPť;Ť±«?őťzĎűS +6ćŮŁy%µ§öK?ÚhiÇ*O|1ëńłb3ÇÎYÚC#>»«»Îť–Ž”öŹ]›Äą™·'fr™Ńş\v@ŮţP€©|©ÂzüǬçÔ+¶=Z§—{Vâđ$źÔD˘CĂ ŞěČÚĺÚ6(ë­CťňúEëYŰşšűpqdÎGUŢą÷i/_Ű!s›37Jb»ć‚ě.7Ţ⯣gĎÓš猲6—âDŽ;3SÜߌ®nhŔĄqźŐT?Ĺ­[gfž:jiżP9 ˇĘ …Iosë¶ĆkŁŁ$zőĺc˙hŢ=e.ž6#„ ­{•Ç.ks×ŮÍ?ąřë_VŚ›»Á ú'Ä®‹×ľ<ţŰ“–±bÍŃ:sŘ*¶ÎtŁTk[ö‰0/Łgţ6v„}ëÖ´~SÔčŐúdâĆŢŤŐ-ďc˙8sݞ~ËaÍä{´¨ěNcÍ™·rŰékzÓ(±:ľ˙żżZkiB#™ô~`Äő'7Zé?.°’umZŃľÓ §Öĺ©ĂÍÎć-ő‡bŐÉÂęű)ćňôWł @%ŠTëŹKzÖUă÷MŞ#+C>j{«áµü†¬]ż5mÝ$ĘŕXtüQUÖlÚ=ÍżećŁ_~\˝Ť’ĽaR«˝ÂMu»Ň~ź˝tÝÇ>ú}4?#Ą8 l8g”ß®%:?‚gf˘»ťô†nŹZŐ-7čźÇ¦«¨ąé¨…ˇrB;”A “Ţ4J™—†irĂüÚ#`»Bw¶ąiND´u,nčÝX·íQm©ˇÓV˙8kť9Vâ> ęÔláęíő«–r/JtŽąĘáČkdhÉ!ą4a^^<ŕ¸ĺ~ĺ<«sÍĘeëŮíÂu Ń:GŁéµĘ_~?<`†9Z÷ö°wľ;Ĺ]~ wý«ÜóísşP·ÎÎÁ4yL€h];ŕěn^´`“ywíĂ~­Ü¸ÓĐ‘Gɢ?żł»_¸jÝ–ÝŽ;űváěH7=ę5ϞƚţuÉwozÖŇŘ„şyţz ÇLëă‹×´7‡Ć¬”± 5pxďć®Sm:ńľaŽEöŹ·ľ=iÄÇçĎX«^+A©˘¦k©ş/YÔÔ0ĐĐ剄&Ô‹Š†sU™¨ŞÎÄ3­ŹK)ZŘd´RzN„yFy ‰™‘:3“(tV1<ĹM[ĽIąZĂíĄ^ćtÔ˘vˇ‚㎠Rž4¦Q MŐ·ň«ľ4{ůÖ»÷—0^Űc…QÜÇĐ„.¤ô9%¨¨i—/U$Ö(Re[´f»~4ŐUŮk6>Őë˝´DëÄÔ«PżĘY˛nGíx#łţsšÇľř- óâ`îŤD­Jűv¬°Ř±dő*—Ě—ď˙ďSÁąŞăćGwSÝ›U2„ U€aż®>öČ*ÎŚ~˙¬+ÉßŢśäą(îĚŽŤ*Ô¬X"n2 €@n0=aćÖ}fżČ##g¬1ď©˝ă•_ćűFm”ÉsWµó ŐiétăŔóî2Y«ěšÍŢMnUçNŤz475:řhô’ď&­tg«9şńM(TשqĹo9Z·eš8˝CŤ/Ćűľąťşxó[ĂüĄWĎíîY•~ý¶=ćőzß3ۤg*x*ĆŽń*ľ3lˇˇßşÖőĘ%]­ć•J9íëFçĚ´—*'N7®~X‡ö]P§QsVlK˝1¬•g:jQ»PX††‰0ĄˇZ¤ˇ>ë=<şúvxgř -ě4‘5쉻ś]š$Y)ŰťUNź˛öÁ‡&-ô˝±iQ«¬‘©[ą¤ţ.îYWoąÔ8QŻ˙űăs}I˝Ý<ŁSbá!ĎçW€më—5Ó·Ý«ć=tńQžëĆfŞE‚†M0$Čܢ0/ćhÝŔź—'­Ó EżPťÄÜ ·Őőˇ!Z§U®|aÜŕűŽSĐ ® ˙+×u¸úĹń uaËçŠă˝o;Ý[aäJ˘uąň°˛SńććvzáoŻ5°ÎŘőŢ/ cĐ3–Ć]Ëq<Ú5¬0Ä?>őńŹK Ń:ÝOďÝw‰¶˘őŰ2|¬R¶č'·ułî» ĺ·Wú5ŃU>|<ýŚŽ5őBŢť§ąˇÓĎsÖ·Şăů?w}BM®Ü[÷śŁq?ŢÝĂsQl¦z¬í‡ů†më•7,Ť»(Ě3*na&Č™°´QNv´q›o'®­Sš¶Ösµżęéé¤6Ő¬Ź9č¨EđBa1úM„y(ýĘąůť›Tô‹ÖiŁęŠţĘă¨gzCTkćă…”â-˝µőĘĘPe^żţ'´®j•-6ˇ*Tmę•×ßßĎi~ű;“_ĽŔ‘Ŕú¸`ő6k:ʼnŤ*˘u/š§Ľ4*¨ßV4jÁöÝűý–ft~‡Ú•LőË>·ě¦…Ťuŕ‚ďŻáŕ*sYťÖˇzóšef,Űâo}T­Ěł5řľc+–ö”ěś.µ‹.xŮłc ‘}++kB7ę};Ö°>2yP€h]<čěr.ŘłďŔ‹ßÍý×G‡őeëŢçN‡WĽÚŕ?…šiŞ„hsz íÎßšăVóŰ50ÝQ}0jń_OkâwoŞĄ††*j2`m7îDV™˘V_őJ¬WëWźŘŔđŽZ˝ËÝ˙ńŻO˙Ąť;gʆyqčŐŞJüů uÓ®zqś:l ŘhT?1/+$şŠäŢ}v‹‹žcŕ]¸fűq÷}袣ú´ŻîNÖ»]ő˙Ţvô…OŚ1´ip¬Ą(j/âXťŹ Lżdą`÷ŘrŤ€:k?o˝ßî¨>˙–ťűÔ{΢µŰGüşÖŻűęןrŘZ†•”ŰÚ-»ýš!ÜöödĂř Ú˘űîŞ[ÓJJĚŻ«;=8]řäŻďééŢâšÍ»útş}/ÓŽ¤ciÜŹ·ťŃěýQ‹ýîεúŰĂ^vlýŁę:+ĘąMŘ·Ą6ˇ×Ľ4ţµë;:ş˝ŰşsßĺĎŹM´±=góôµ/OţE=ę:’©×°›ßřźá‹óíőF×Üe˛=±çtg”g’Ů33‰} g]s<7¤S]Á¸/Ç{÷/©ÓňOĎü4ü^îçOĺ¦<ő}ńĚ66łw»Ă‘:j~ ±’GóBa Ö˘0Ąą$™XZ+«DźöŐüNTmńL[˝y÷¶t÷´¨±•n{gŇ[C vb몞-ă «äâE!kW5;đĆÔ<Č«ÓÝ?Žz<üăC€)Ă•ˇ[ł,˝žśżĘ·˛žzET ¨_źĆ—W/6ô“jtŞłÝ}4ÍoÔ%JC’0/Ş,¨Ó}› k`Ö^÷˝˙ÂVgw©éţ¶Z{»m×>5]äł™†ř©nP»5ϲV±&Óíźä­9î ,EôôJ©˙źŽrWĐSÇvĎ\ŃNE÷Šî9íVčwjc÷ü€s4uţů«Ú;ěÜł˙™Żf«gÇ|ÇÇý:樳 {Ô1ĽŘśłbëń˙z×YÍĎîR«`ßZ!©ź†oë÷úDżĆqJÓ¦^9u?çŘVBuă~çYÍďxg˛ßZŠŠj¸‰Á˙:Ö1€‚ o*ý©±•†Ď8©u5UXS \őkţý¤•ď _ä×Áą_šŻ¸çuŻLPs×›OkҲNąĘeŠŞËjµ#ţjÂr igÎęâu=+š×˛/ óڞo7•éČž™©ěTF×UÝEu=O•›z71A?őˇ·źŃěünµíuŚ]zĎűSÍß ŐP°ďT¤ŽšDeŽć…ÂŽÍîű@IDATé9ÚˇôÜz¦g^wR#Ă‰Ş­ë§jćŇ-ęŔN]yŞF¶ćč˝Ńä…›žůzvÜ éő''˙°ťéĎ–üĂÔÖŕ «•RÇsOu ęýŔđ‡˙Ôş[3ŹJľęsăďďOő{§¨ OL°Ę¤áʠۉ+Oh`¸ńĐćtçsď‡ÓÔf˘z…b*ąŢˇú\óÜß Í óâpa÷ş†hťvPuÂţýétUÄÓÝ`íŠ%tS§yęRďłu˙ŁnIT«NÓfŤ‹zÔŃhăžiîż°eߏň«Ťk­˘¦ÍGßő.řŤ«•nRŁtŃBŠĘŻCT†qs}űr±VŹMĽv]GCŘŃ‘ŘýqÖň­úsĎ>G‘Íŕ‰I‰đľehcd‹P%2GIÔ‡cŽýă»#©C·Űú6«_Ą¤ęđ/X˝}Ř´ŐĎ~3Çź˛V?pŔ9&¬©e¨!Z§z?yőKăU¬FĹâŞÂ »ś¸÷¦\ŘĘDłĘ|â/ÇŐWxËđ–{ÂĽ zc©»F{žzì6>jĄkźéł/}flBRÓ°KŹ­—Đ*îÄ!źQî$7'˛gfr»“úZjĘgř§ď‚:ˇS•™RĹ T,»oÓă[ýŻ+(Ő čŐ˛Šˇ‡Ju×xăkżčůłYÍŇŞ¨˘‹Éě[Őöа9-RĹ:w[§0ŹZŇ *|”/ö0ĄˇZÔąIÖ1-*«ëCţZK áŃulۨ›0őęehîmŘ\.^˛vźvŐźúr¶ź§*¶÷yp„.SŠĂꪢѥŮQ•+…bżż\­ýVTĘNŤť=E¤re¸¸Gťçż™·[‰â¦ń+s†ć‡yq8·k­·†.Đč«ć}ŃÝŁú¤3wKgȡt±Bަ'öÄj¶üđźŽRź†ö™žÓşe]¸z»ţüFEó\Ë>SEĎęçö4L#€@® Z—ë1;€Sŕďç´pTNQ U0×ÓH¬ú+X źzQqćhüě9nÚ}¨÷î×Ď7®z„"~/Ć+žÔ¦ęŃ^oČÉâ~T-!5zşŕ S×$÷~0­O»ö>ď”­ęÍ™Łuq7ť7ön”zë­Ď¨téEöĚL×&šŹ*·j¨eCťVŐSĐđ±lUcÔŠÖiÎßĎmˇ‡»-Ľ˝ ĘyôĚuö9†iµŽî g%_Ąó¨Ą˘˘ćĐ Eh‡Ňpô3·čů«Űwşýű 1¸ŕÝů«ż×®ö8W3·9%ç0µ5>şńÝłĎYÁßnĄ7 †— ö”Ö´ľĹîJO©\J-ôŇ5:´6‘&B»8čuě“—·Uť5óoJŠt ĆU+_ÜÉŐ'6\´f{Ýęuµ~^o>ŐÔo¦ˇś,BÜ!đ[3ţ!€@ŢPŚL­Ď<÷WµĂ<çŰg&ŞÓşë¶z÷lőĎóʬQÁtKdß®yZőzĽ°•9M𥧴­®îQ éµGjjáHplËĘ j8fćÄŹMŞ—V<7-%ůŚJK™•IdĎĚtí`˘ůÔ­lŚĎ›:ę~îĘv†‰.Ň­Z·y®ćQKD%ϡŠ0ĄçńÍčLýőżä¨ônâÁ‹ZŐ©T2˝yćŽÜÂÔ®ťU"íÁujćw•Ę•A roę“#ŰM‡yqĐ`âżul®ÇÂ÷D}€¸»úuç÷rtźęN“–9˙ü­ůó´´dE& CÖĺĐG±HF@#Á?zikż5ő¸’třĚpď4yáFĎ-–*Včĺk;¨;ĎĄÁgŞ7Źn9şaµŇÁW‰›ňˇ‹Ź2ě‘Vő‡ůł–o±çŁÝy抶ö9Á§ŐŤ XOźą”łňŤ;Iů ÄJň•.–(ź™éÚÇ„ňi[Ď4ł9+=ůÜ{Ţ‘ć4—ŢAKőFä—8ĚŁ– HνP„v(ýqFç_Ňłž_&‰íjXóË{ŐObĹ<˛JÚ·śŢT]ţ§ VMe˙ssżö‰©\TB]â®=©aEíŃĽR«:e“X1]«„yq8«s­7nT‡nĆ>’Ú±s»ÖřzI}Ľ}Sç«NhÔv[IMą˙úĆDu¤Řj¤FÜ"@´.·IöŁ@á‚ůőÚÖ=,©}%uÇűʵĚQ*{úŘ´ęµ}xKWuŐě^›ŁfnO|1ëW·sz™üÉíÝŠI>`§W¬oÝŘ9-m`íĺoU§ÜůG×±ĎqL«!ĆmoOrĚ<µ} ˝uĚŚű±qőŇßŢM=ĺÇM<Áq-+«Oôŕéc)ŐĚđ»{ŹqŹb–h>VúđĎ(kÓ)NDöĚLqż’[ýÖ3šékžÜşZKOË/^Ý>•x´Ě”Cżx ‚B;j)‚DçB‘č1 íP&Z°´¤Wťâťź†Čňďů´LK‘rq&ˇiëĺÓ·tm× ůWöŁ ÷ť†ľSĽ2¨Ą§nĄî9§…ş±oÔ<ݱQ…÷ţÚuŰî@})šłJei‡3;ŐxWŹÔűë°öWŕ˙8·ĹË×¶WΚižĐŕHŹ]Öć?ýş¨ź;sĘÔ—ľ9tĆU;Ýjo¦qN—ZĂčĄ0™#źÔ?Ş^[B».M*ú×±MkI˘TáźQIŇs•Čž™žĄÍčLťźj‚šĘ3‰j^ŚîBrC6ëâ0ŕŽîĘ!Č>†sÔR‰Î…"Ş=Mh‡ŇľŃЦ˙zZS=~«ůdr[Tĺô7oě”Ć:zÉ#§¬š¶*´ú籏\Úşl‰ä+YĄ‹ĽÓŻóÇ›ŞSĄ~eĐ±Ó `c>ńŘ#+Ç=Žj“«ű Ĺ­Ô‹î–ľĂwęemܬҒ Ě‹.ő?=r‚š9'ŮôÜ͵ʌxđř[ű6s÷Eč™Ţ>óôŽ5F÷?ţĽŁk§R×OďČu+h+{ëNÚw™iY ů·ĺ!”Í!€@\ QąLŃĘeőWě÷˙‹vmšĄjbqW´'¸ę„†˝ŰV×@ źŽu†˘ěÉt×{A·:wźÝ"6Ř‚Ţî–ŃýâNßűEC-ţŤ*Ž{ôD˝<|xŔLCgöö­«‡8 ÚŐŻOcőëlźďž6Ôč©TĆ»¬X&ęfXµůl¦;OkÎŰCęŻőQz7®[m řÜ·s~ĽÚs„ŤXzµ~˝ăĚć'·­ű¨»ü ěÚ·wZ»SÚVë?`†_¨4–C­ŠĹď9·ĹyĆş„q·eHţĺ(Śš÷ĚçĎćiy‚]F‡Ŕ„yO]5wŶą+·Î_˝MŁŞ)FVłbńZYĹOnSíŚN5u«äX%ĹŹűö7wýĐi«őHżxÝŽÍ;öÚ›Ďę5˛n:Źn–uz‡š]›VLâ-hŠĹKtőMŰ÷šĽrŃÚk6ďZ˝I·pëV*Ů jÉúUK5¬Z*őČý|ćCź8»R-a?»ł‡UŕŃ3×™şZŁéoŮúťşA¬R®»-ë”=µC umĄĚčDřgTşv'—ť™©°čžać˛-+6ěR`]{ö,T ź"Ĺ Ô˙jÖ}¤±šmlÓóWmÓw|Äô5ÓoŇ-ú96_Ťâ+–*RŁbńcެ˘.ęŃNĺ!*śŁ–:H¦/©î¸ë†s(ă# ÔQÔ¤…OŐďŃęĹkwčl·˛¤«¨~ke•P¨^-«´mP>ú?I™PJWžajďÜłę˘MlŚý-Y·#¶ŐĘ[ąq—¦őzG7  ¨BS§ĆYę.xI $ő+••&vď=°vËnu]V˝|1÷Ű Ý,Őľr =˝}zř˝Bű•·o7ä‹~Mt@'/ܤľ’ő…ݶ{źýRÓËŞ2% i­¶ő+¨etçĆőbŰ^ŕÔ§wíÝ?nî†Q3ÖŽś±F?”;÷üď§M5Ó·îúăe¶~(ő†»cĂŠÇUĹ^ĺKźýéűI«ě%Ńx57öΑÏŘ÷‚iHZ€h]Ňt¬@Đťôţă6¤MŻČő»yÇ>Ť#ˇ[ç·žŢ}ÉDnÁŁu™ŘzŠyfË•b™­Ő93-Š´LčáyŰ®}ŞĄ›ööâqÔěšçPf¨đqłUőĄ ż×¶+_˛°:匛ž©„¦˝˙ŔÁ{ö+°˘šJ ń—,V0]ă,Ą˛ű ­űŐ„ĺ?ő“ß*łžďٶ~KC›ňĹAŃRȶîܧXń"§+Y4ůvĐÉ)iÓ±×ZeJV㉲Š麡’¸ă­Vţ:Ż~qĽŐ´ĺîł›«†µ” Či®“Ůeň‚€^,ÎźÎa‚ ©ŞBĹŇEő$1ir–@¶śQé"âĚL—d,=Jé/˝yşs㨹MŇ>'śC™öb̰LńÂú d) „¦­ĐÉďŰJ±ĽŮąúŕ)« ›ŹH{Ć/Ş—Ú)䇯úćŐ+ןě SgنSČřía Ő+ˇ:?[ć#w2~św(ŮS@@@  Ŕ“W]üôGłMk]u«>쬏î‰y+·~9~ą{~lŽÚkjrů­ĹülĐ»Ěg®hwQ÷:ę5‹Á¦@ "ÉtĽ‘˘S @@@ ‡ ěÜ»_ýďÝďý7|úuÇć·ksWl=ĺ›vř1dlYżĚ™źŤ„겟M#)˘u‘:@@ň„€ydŐą;÷±Ń¤X#Ř9VlŘůŸĺ˝ˇŃ'ěóÓ—[Ď1‡Ź €9H€–°9č`QT@@Č%ő«”jQ«ĚôĄ[üöGÜţÎd _ŻrÉŞĺ‹íŮw`ÚâÍMŰ/˝5żaµRG7«d}d@ Ç P·.Ç2 Ś € €ąAŕş“ĹÝŤ-;÷M^´éۉ+‡N[$T§ /;†Šuq]I€DZ€h]¤…C@@Ü*p~·ÚM"˝{×­YÖ•'4Hožä† ˛ŃşÁŮ € € đ›@üůßľ©sí¬éâhSŻÜG·]¤PteH> €Ů"@´.[ŘŮ( € € pDV™˘#ěuL‹Ę©[śŘşę€;ş—,Z(ő¬Č@ {e"{ýŮ: € €äiňĄŠ|vg÷o&®xsČ‚aż®IÂBĂË>tq«ÍÓňKb묂 v˘ui'%C@ :•ŇÖj&Śâ˛ @đČź?ß©íkčoášío]đŢČŶĹűUAşž-*ëďŘ#++˙ěY‚ Ăň:t(‡™â"€ü.°qŰž^×đBó—)^$@Čąú•_±qתŤ»VlÜąjÓ®µ[v«7şň% —+Y¸|É"ĺKnU»\…ŇErîRr@Ń:‹@@@@U€Q&Bĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € €ÖpX„ € € € €@¨DëBĺfc € € € € –±( ¬[·nţüů«V­Z˝zuě˙íŰ·W®\ąfÍšŐ«WŻQŁFëÖ­K”(ĺ]Čőe[ż~˝Šc7u€ (ŕÉG˘&Ţł7˝ąEÍŠň €áp- Ç™­ ^ľąéő$·Ľ#ďСCygoŮÓÜ!°rĺĘ>řŕ‡~8pŕ€aŹĘ–-{ůĺ—ź|ňÉůóS‡Ôŕ”ÁE·ÜrË”)SěČ—/ßW_}U¬X1űĚlźŢ¸qŁĘ©; MěÜąłJ•*µ~˙§°Ż9°¨XäĹ_츊^vŮegśqF¶ďTÜčësć™gîŢ˝;nĘ ô-űřăŹK•*$q¶§ąńĆ—.]j/FÆ üqűśôž˝éÍÍ^Îś8}ď˝÷Ž7Î^r}á^{í5űś€Ó3fĚřŰßţ0±’餷8eĘ”iŐŞU÷îÝ[¶liţŽĎ™” ‚@ÚŻĄ÷ÜsϢE‹ě%×=ŔO>ůä“ r,ĘĘĘzçťwü®]×\sŤcŹ´zż~ýN9ĺG>ÖÇwß}÷˝÷Ţł>ZŤ7~öŮg­Źć‰‘#Gţűß˙v¤éÔ©Ó}÷ÝçÉÇ<(öon4d—ó¦uëňćqĎ©{­8ťî'|đŕÁ¸ű°yófÝĺ 8đć›onŢĽyÜô$HŻ€ŽŃś9syę™SîÚµkÖ¬YŽ#<{ńÜłgŹc_Š)âx ›#ź\üQ!¶ýű÷ŰwĐď+fOă9­CéČĘ3™}¦~ôoÉ’%_~ůeéŇĄş=öŘcí F -ŻiŮVÉ$řµ4 ţľ}ű~ůĺýo¬_żľýcz§u˝r_˛öîÝëąýF2Äť^ J´ŽšX“&Mš7ož#7Ý–´iÓĆ1Óú¨¦*~řˇ{+Jŕx­e­â9áy5Ö˘gâHÍ x¶DŞĚ9«0Áżą9kż(-!­ ™M¤G@÷z3łcÇŽ„˛[¸páí·ß®w˝ýJ¨Hy$±nňqěl“&Ms˛ëŁP+;qâDCtóŞ[XUşóÎ;=ϟٳg»WŹÎ>şËfźăYx{‚„¦µ×޵”Đ*Ů•xîÜąŽPťJâ8jĎŢďż˙^g‘cGž{îąfÍšŮgĚÍľJ.žÖWOÁ2Ç6mÚÔ1'ŕÇOă­[·öďß_±ÂnÝşÜ"É(đú07’I řµ4 ţ‚ ˇ:m%éËQcäYÝ3R¦ÜôrÚýB(¶ż÷‚ź~ú©»'śp‚* şçÇćĽţúë~[ŃűHýó,ł;7EëÜ3ż­îQđl‰BQsh‚ssčRl2'@ ÁĚŮ’s:tˇżăŽ; ŐĹJ ¶~>ř űů<ťĺ#/—€çStDîŰT­ćÚkŻ5‡ę¬RŔ÷úëŻWM4kŽ5áľ7Őcżg\ĎZ%:ž(éâeôń&éRy®čąăŽ33Heî>ôUŻ^=ÇvććX+·~L݆ű$ę¦wţúĐOL˘+’ł€űäôĽ>3a©] řŐ# ľ;™6çř9° őiŐçug˘ş]î™šŁžC<çk¦çë1]Çť (ĄÎş‹.şČ/ ¨úžßRÍ_ľ|ąa©µH»ŕ®Ó§ĄĹ´¶žâ„ű4૚"©cőŕß\ÇŠ|D˘uś9@@uţo»í¶-[¶$]VÝÁ¨±CŇ«łb‘ým^łfŤŞ[ŞNMđťŇ»÷§žzĘťŢ˝Ź 4PűYwĘÎqßž¦RČqGŰA÷QÓ|Gů¤ŃZnĂ:uę-ZÔ!07ÇZąőc5TGO5őR‡RĹ–1cƤž9 `x}°ŻÂ´Y řŐ# ľ;CEÁÔY›ą©,ő¬§ćY·N}tč͢߶<Łu p§ďŐ«WµjŐÜócs^zé%żE±ůę‚Ćś ¶To4Ýôt;¤›˘ «goš€gKö2GoÝýEÓî8î»rôRx2'3ž*3·˙äś#ÔÖL#¸‹Ş ý‰'ž¨ÇăňĺËë.AQ#F¨›[ĎűEëÚ·oď΄9X¶l™#lQ¸pá(Ô;S/Čž§“ŮaúôéęZăNXÉÖ®]»iÓ&ëcl"§Ü|¨>‘şŞq>•Ź9şnť. •*U˛ď~łW ˝ÝŹRžArło=wO»ź‹ÔéˇFńNbŻ=’ČG«hś™ .¸ ąuY ·@đë{]ćř Ľ–Çw_CÔ»nńâĹý ú|ĎhťgÝ:u¬iŘś;Z§WÚ~Í±ŠąbÝđáĂŐ‹¨cÇG÷ޱŹî »ć«¦ąnü<ÓGgfđł%:eÎq% řÍÍqűEA€h]Čl"%UÂW§ąŽ,Ҩ‚;v´ĎW$¨K—.]»v˝˙ţűíócÓŞ çžÉśĚ dnHµTʬ`®ânîúôéÓ¶m[E~7lŘ ľę<ÉNž<Ů­sßĺ+Űś­Óüűďżď7 ¬úÝW,ҡ¤Ń6üF”Óc†`v¤ŹćG űëŢ5÷Q röjŚwűzwVr’[4ąŇ^*ĎÖRBs?yŮ´çwP±O:é$ÇęęÄ]ýµë×ä§ź~úä“OKőQß÷Lć ´@đëCŇ›Č+Ľ–ÄWŹlîfžž×đ4Rl «wŁGŹ6l×}ÍTłY÷hBÇď]żú꫆MÄŚÖy^Ť=__ĹÝbČ ž-!—*—m.ŕ77—í5»@ZÖĄ…‘L2(ŕŮm‡ŞGµjŐĘs«=zô8űěłÝýěş;vŻ®7l ę©u•žëTÝCmTăĆsÔ-÷şö9޸¤FŞŔĄWťšVÍť *č†)ĹwŚ*•ЧX‚•ĘMesً߮á9­§eUBÔŞj ŞT+V,W®\ŠOŞÚMÝĎi0µÇł< `ž)ü™3gęĺąsçNíiVV–öTÝö§¨§íępß›ŞĄ†ĆwÜq±‚é˝zË–-oşé&÷­§Šd/Ľç›dëŢTqÝmë`©ŘŞř)gí}őlźÖ®žŁ¸ę^!-wńZ·n­˝pĎ8'ŕI’–óSç¶ÎpůëaLaÄŞU«ZřîĂŞň'÷xf>˛’eô»]“E‹ą[K%ç/şŕGS_C]‡őOßn]6?ţřc‡Ľg…Gš´śśŽ<~/ěk©żÚ˙ęôÖcż®Wú©˛/µ¦uýÔőGŻTQHWć$®ź™Ř_/-çžµ›~şÚKIŤřô{§ńŘďţ÷ăňË'é_óL_ü dľnu$Łß} Ńn| HVŃL_awů­q-’’ţ黦ۤ† –)SĆť>Ń9Łu÷Ŕł™ßćtÂ8бT׺‹/ľŘ1Óú¨÷îwWÖRk"`´ÎÓ<ék»µőŕIĺ=Kn? ‚—!Čő<éKŠ»™¸D‡öűâŢóśÔ8tł~ŐzĺĘ•sDĹOł KóŃşj˘nÝş×]wťnA4_ńG=čÚ—Ş×Ţ{ď=GżĹŞĂ¨Vc˛RçÄ|đővú’K.ąě˛ËTH5Çp„Y•óÝwßmMě;˘iývęFSß4@›cQěŁ*´QUďJ%8~üxw/WW_}µŞ‹mK ęçĹpT¤r'ĐżŠ§Ű5ťß}÷]ě>XąĹN*-Ҹlçž{nÉ!ś™:Ž3DŰŐsťßy+U'‰µ;)žźV>šĐI®ÖC:ĐŽitŸꪫôäŕ>jZËńDa>{_~ůĺŘő¬€©+I,öÝ˝{÷#Ź6ť–ďBd/&AüÝ&~sÜą)2Ą–_úŘ|÷0 šďąÖüOÎ$ľZeęÔ©ö]ĐŮ«Gn=«čÜÖuRöĄúAĽňĘ+…ŚÍÔÉ©Ł?lŘ0eb]˛tŇŻÉ©§žÚ»woó;ž÷WeČÜągßkżi]»Tý\*Ä §bw2}+uîÜąłŮA+&÷kžčőAzţůça#ý\>ú裳Č]ţüăŠăŰç7oŢüšk®±Ďqg¨>CtŁ*á¨kłŘOvě·I(uÓ¦ź<Çď =Cżiťl7ß|ł{©şyuÜKĽů曪śnO©ßtµp|ďtŇj|R{2M«Ş¬Î[MÄ˝–&Šďľ€h+ú9””´9Çŕ3zq(ín¸Áp?é(ĽűŁç‹Ço®N]Ç”#÷V}ĺUt$ëŮłgÍš53cuŃÍ›c‘ŢŹşk܉Öy6&UćÉĹĽĄ2Lú+źč٢b$q=·>ąKŠ=M§x‰Î–ß—¸ß\íWF8ô|§{ru¤Ż¶ĺ©  ~=o˝őVŐ~P7JŽ>őnO(Ą±Ň3@v ­Ë.y¶H@UÉT;Ć‘Ô3gOŁ‹¬^„Úçhú¨ŁŽrĚŃGÝé¶^·,î­ÄëfT÷µúQ×KHŤ"zĚ1Ǹ3‰ÍŃ]ťîPőcě—@áß~ű­~´tc}Ćg¸“ýř㏎6żZE’ęĂłŻ~uÔ3ú„ ÔnŃŻ‰˘¶˘[ägžyF}F¸·›Ł}üů÷Şj׿w×r ˘©öŐk×®­^Ď}sĚ·ÖU~ }ÚWŃ´çł“ž'ek8±Lt/¨Ą4:÷üĘlÍ×ď‹Ţí˝űLgÍtOüúű?ý„IĂŻŞTŇżćI\TBý´9^ď) ăŞÓ« =v:vĘđňĚP_]xŕ{@'öۤłćXîÚřşQ$Îó®ŃZKwŔŠAč^ĘšcMhćC=¤G†Pť•XÚGuůäŘGÝĎąµäRÁˇ:ĺ`=u»÷E«¨ćą}sšÖçj <JŻzěúÝŐż#ź ĺĺtëÖÍł¦›gßvz¶6¤{/÷ť®śŐ„ÖŞłŇ[B»ďľű/Ň­ĄQp?Ŕ¨TÖ‘ő,ar'IZÎĎXytľ)î>ľöŇę‘CńeÝěÚgjZUĎ!†ł×Ç‘aěŁ%fČÍľbzż îŤFáb˘ýuLŐUt[l§8íy,âVĺĐöj;6ˇçgÇDi99“ř^h»ŽPťŠŞÁ:u=Cu±Q¸D˝mę¨_ż~îPť}gőĆČł3¬´ěolCîCśâąg/żß´"úixüńÇ1żôćé§źö\šĘŻąç9éąëú ßwGpDéď¬<󷲊%Ó/¸;Cý¸ßqÇöPť•§5ˇćáúmr„Ť¬Ą~ž±'GŕFQTw¨ÎťˇJîţqעęŚ8–Ř}jŮď+3ő2FÇ‘GIŮâaźŮůŔ•†dTÇ#3őÁŤ)\V~<łÂ×ㆠůÓ(‰í–,_˘Q/žŻĺ©ö> Ě1%ýˇÖ•±č`ĺ@˲ôá],H‡F,­ Ęô‰{Á”ţcħ:ŠMë^–ł‹NB"=韤šŚąPűŃPf^ŃËÎśU­}ď­¶{ źlűÔbÄŢ^ cöfRť-5¤ľ)eŽj[d­™Fáć†12c÷ňî±sfĘÔ“ÎŮĹuQ˝ú¸weňGZŻŕţĂţŔ­ÉcŮ@eôžÔ—dG˘ď•Ą-}ř†Yú·ńá&Ěě§,Ŕ0źćŐ>™ecG­¶x<›Ĺm¸†'Z“gOćŁe™¶?R­Łë¶źÔÓÇ0ąěç{íµWP|†Ľ—v źľZ}j4ąĐ«×Q¬KG•X:”Ą`ŮÚ#LžČš/SÁŞ߬LŇŞÇw\‰Ă:ĆHÝ©uŐ^×ő˝˝U±S˙a^ňťö˛îâ~N¬aŢRb•{r‹®6ÓH?_†Ľr©ăH<8¨Żĺ§‹4:ĐßËŹd­nÂ1– ŚgÂŽj3ę†@uXCB §XŠS„V]uUfą2ŃÉz٦M–čnĺ§Č6áĂ)ŚĄQĐŇĽ0d@Ş2b ŽďŘLęŚţŐ‡h<;¤«Šw˝ë]i0L ;ÂBôĚĽyÁâȬĄ|ň}÷»ßeô“–ąˇľUî´ÓN Ç`|šÎ–Ąhťo)’®·Ţz¬łŁTëĎé iŘ©mČ`Ł úé•b”Í—–­9ŤŘIzŐ?Ńą0 mň~•8ugU«Ö%†áňOă¶róÂŢyÚ§Ł÷öZ¨fóŇ1r7®÷ň1˛˛`Y€j5™TXšOŇ« \ÇC‚aU¸4ń^uÎj ÓŚ˘;^ͣĸё™çD˙ĚQôŞľd4śň˝ě{Y᫇”?Î@O`łÉ$ZS©R¦'$ó‚YŘ+FţÓĽÓűYWUVEo¸&ÖqHFš­5QµK/sÖ÷hu饅AC/…BĆZѰ®ZŻ´îťÂŻ&©˝łűk¦z¶J,UëN;í´ ftL ůÁ~¦–ŽuŃ2uŹ|‰dHśF‰ntj&ĆĂŕ`5ϰpaxreg‡´­«ÂL['Kp‡Ăżä;í-¸ZÇjEâý|ř·”~ŻnŃÍ«PÖ«ëçK5Ó¬oTĂ”ehĺS>8˛ćL¦q·Š^őŹŤX=«§F“€jÝhŇ6ŻŽ ´Z7&„Y_ůáĂŮńa+ë¦tđťąúžĄ¦xscąnô sĎ=—9Se\ 4˘'m>˙ůĎ—JąłŽ538raxĘ)§¤C±˝&UëŞCö’Ý ¨Ď6Ţ:Xł¦f,Űç,,‘Ëk®ąć;ěŔ¬ ĆX$a"W>#3ż2@L-sħo5J<b1 ±5KC ßřŚĚˇ9•`UE˙NŐş2ŻŞoű¬|TžbÔłZÇ€É}´>5>FĎÔěK—‹bTë…]a« 5ˇRŐXi}Ł;töO¦QWewŘňúÁBŠäĹ@Ą9U,R6&«Ö%ö^,łřPL\ćĹgv\őĚ5 ÉĆĎ íS {~-ŚŮ›Iµ`‘ml‘&Fá|9/CvjµĘNÇL2MŻÄvÎjë—eĆ'Bh›ľ7°Ú÷gLÂyTÓÁ‰Š§7yř”ďđŕÎźŢ|zX_Ż6q(j˛±ý_ęRqćbŚ‹Őb.Í‹ee–Tб'OóNď”§Úâ±?d.ł V¶ú^›& 5´–Ź§Ş‚‰˛‰á|óEٲeBS±)›Ô™Ö(•ś•QŞô,n ë˘OYwNĄ :…ß;Ő ]qą1Äł: #Űő+–sHG6Z áăM$ť˛żu¦•¤čŞź![Öń}‹‡fYȸdajó¬ËÉd‘¶N™c×>=ąä;í-”¶Ú«µďÉ-…ô{x‹nU…‘{ľ´â–őŤ6cwŽN8ąŐÖaĆ÷ňË/Oë`šPŢsbVŠŚn´Të&-s‚jÚźM†7ţ47_^Őř}ç;ßáŚďĂěÁZFdŚU]°†(é Ř…(ĚŤâq^ARmŽđĺú&l6Çrxq»Új«±~ůG?úѬ$Ddžoµz"aË_&ŃÚX­ü*Ť˙śJë°ťwŢ™ı<Q”öŘcŹč±Há°UÁ8‹<Ь† B3)°M”t!^™Č§•2ĄÁ.xŇ"(wźţô§Q<Ó`¸!@ޱ±˛ł]"ˇ˛ztťFDŽţ°m5RG)f“Y^•C`‚1=-“u8Ĺ[".qÇň$wT›{Č•ű«±B]Şť¤Wý“EŽŞ65ř°Ă‹ë$˘™˛őGUÜaţc¶Chµ.±÷ŇŰůń–[^_)ŮÚghźFâZ¨fJ^cđfÂgîĆÄH´Ăůl:'w›rž^uÎV­˛®^­˘pŻ>â#˘bÎ;ëÓUĄîT,=­€yŇ•“éóńBŽ=¬o«ňăß]ß#â?žřĺŠ,=–Ţ]y>ŇÖĄZ—ľŞőäiŢéýݡ|šsăŞ~n¬.H—˝ô˘é” †<^Ů;~eÂ÷ÂôëcDÍ­˛ąZGOŽŁ#ŞuŚ Ęm1b°č 4Vóĺ‡7tĐ×CđĂ·P~Ś?>ö±ŹeăNŚÎRĹ-D⍑íŇRő‡XĽ{g9 ßұů*.áÍź‡A|Y ‰óÚ€`WŽö> Ů«dlWJÝă°ŚÔAî˛Ë.ěÜRŽł#3)â©ŕ`Ƣ$™gŐ()>Ę́±•uŘÖ[oŤnG´1eĆ”L/ЇÁÁÇü´„ĽCFŚ1$*'M’ĽeĄŘ?MĚäšVăŃ,‘&‡4ÁI'ť„±a6&&.źµy÷K[סę«2RŞPú&ĚT ϶ebë—§&ˇOu0—˝fĹ뢓ôŞVב䏭KŇžÉŰ/o_Pe%ç.”.XÖ¤÷‹™Geóe6zk’ZĎŻ…1{3HůýŞý^ĂÄŞţ޵˛Ť'q“Ď˝ęś]\Ülłu n ©|.Śő\9á{ŢÓţĽůć›—joŃ)“^Ő—4{Ţ÷Ňr¶rW×f坪uÄĹ nŮs'ŢŮzř4'݆÷Bň9[§¬j±T™µĎg[©ŘôsžMißŔ(ď3źů “˛\8,‹T†‰>ŐwÚřĄwUź•1zp0Z+÷ÂJźűMîĄ!©†đ[őU朲cXZ<%Ë-·\©ÖĄ{ħᛸejĺ 3SDÔŐđĄ0" Á  ĽlŻV†u†3Č)Ka]ôěB­+oě¤V>cĂtôä’ehŘ[ÜéýĽ‡·”^ݢ'ÉóĄÉ•Űęběú ĄEĘ>†úŹ…uzżb­m^¦J“âf÷Ő25}$0šTëF“¶yuC€ÉßřĆ7x]©Îmź"XĂŤ;ĘgŚđĚbńáť[v Ď’utGG$1-zFâ`™g±b+Őş(b_Ý1)J…)\Ě.úW?†g,"f†'iÁ8Ë›*+ ÇdŁ#ýäU}= $:]řŢcE"Z6 ĺTúäĂ@ lJľL‚.&’:řîÇëtiäXŽPÓXąye¤®*bűüšľ*“r _§‰R©.”O¦B—˘gŐ$ˇ,60ôŁ•ţ™_±»Ě<»8¬V-mľ2Íj‚µé$=éźX•6Ľ!ď¦R](0Â=šgĺĎŞ6dď Ń«UÎ’"䩍ĵ0fo&|Ç.m JhYµ:¬ľ¶ ÜĘź{26Řb§—mO:'9V; ţm®‹jľ‹d÷©~ľbů…TŽ!Xő&™}äčU}É®ç}Ź4‡üĄöq10Ź6lµ°0ÂŘp…VĎľŞ¸˘ôđiN‚Őv¬vőć!I¶Úç3M¤š 2%—Yß A¬×Yů—yvBü› CŃżęhó Ă^,¦žzj‡•BRqxóűß˙>Kś¨©aÝ÷Ň˝J „_í«ŚŁŇőIbšU ­V…‹±Ú8ŕM˶u<ˇ˛ý+ă@++#Ňg Wî0ƇO„‰jî|«.››9()źl0ŇaŘÉ…–ÍáY4dĂÓŃ“K>”ˇyÉ«!I¤ŐýĽ‡·”^ݢ«UéçK“+·z1výÄHžLł>†0—Iu!oFŘX”† Ů}5KÍC Ś2ŐşQnvÝ`T„ Kđ°1s3Ş}Š9Ł•Dł2V¸+Łó'ÎľLSc3{lRÜáË ß‚XŘ.;Ĺ!#­l°ÂT?ĆčŐ‡čĆośÚúĹŔĄâŔ©8˝%ËĚ P|x˘‘1@D6âIĆafeÓOźRŐ‚1Ś#Č+:ŞQұŕYgťGÇŢ{ďŤ [<Ět€R­kňĹ>K§<¤3°¨öĎţó8% U ÖqńŁxŞZÇ}÷Ý—·‘&:°b(Őşl±ˇ>sđ†VÇł0v´.x=řT?˝r*íeÜ*Ťöť¤'ýłzb#P˝–y-¤–×NVµj]ŇŢŞ_ľ6“~*s‡`C¦6×B5Ó1{3)Ů–¬ęS­f5d{OŇÁ8%Uş{Ň9É´ZÂö×EŮŻHgíµ×ÎŞ,‹3OޱËÜçł`ňé(őěU}IłZĺáô˝´ś­ÜĄúBň°civ~a¶5šÝZk­ĹÍ<*D1ÁŢ>ÍI¶lÇęýˇĎVE‰—Şe­Y†!A&ŔVÇ”ŠčĺJ#mžĹ¤–ýR«ůx*<ť™Ô™js¨BÜSźžY–ĺ‹©aÁŞőŞ‚jżš ĘEUŞĘC­±ˇŤŁ”8m]¶/#f†t2µ.x2°,y¶2¬Ă<íą˛R1>Ůgź}RĎŞZGš©şj+§SľÚ:iF]»‡ÉǬöÂW;L«űyoo)˝şE—•Ą^ĺSŁ·Ď—*·¬oTĂtýਾmmµŐV­†Ü\ČĄZ—•0v$*ď–“¤f*! 0ÔćÇ4—Ě›`-3î°aPŘ>.‹>Dµ®zG­«¦€…Ni¤B"É•$Nýđ‡?¬&UőŚ3°ŞQž.ŐXŐQ©—Ń3y±a”Vę•éS¤t¤^}f›Ďf‰TŁÄ'Ĺ( ^9Ş+ Ć”łŤ/‚6ź+nî@ľÄlłTpB ŚYżřĹ/VGäe1^Čtź´Ő±~9^OŁDwµoÄłŃŃ&÷fHGY/˘`×Óu5VűNJ2śţÉ…ŹqhV#,hJy=†a˝đ莎Ř3Oµ.YB–Á0ÜĂJ%&Ű$µşŞf,ÜLŞë®ßňůˇś7G”Séi„x C¸˘ĘU/v¦”¦j]h»átÎ6­ßţş(ű÷Fd¦`üK-J[lěČR Á6e¨2~}ɱÚÄĂď{±âUGU-JCrŻ,?6Ł`M>5ń.ý˛Ňۧ9Y“WZÜŐűC5dĐłčŇŤËé0“Ěd¸˛ ”](¦OvŃPŠî!UţaĽ‘}gb-ŕę˘ĺ S”$ÍşDĘŮňÎŚg˛ ż FÜVăŇîžţבLËŮĐ]Bőgś‘¦Ŕă,އi<®´IÄŠĽ:$"§Y"xňťŹé 1Ya–_µ±ŻŞuÜŽJůŚâUÇNiF]»KzYRC^ň1|Ů Ş˝…đeH<[ÝĎ{~K!ŻáߢË*ĐLĺ͡·Ď—2Sę’]ąĺ]‹0Ý=8čáŐď¸Ěp'ÍęŻŇ˙łĺŚ«ő”Ŕ¨P­5ÔfÔĽŮŽä"0Žw->̶Zőź`|cçKo2čkĺ“X@IDATZ?ŚTҕږ°aČVÁx·ŹźzĘçÖXŐw*f6•_(&ý0ě;ţřăË‹Z&ú§™ňŘ+ †–—†‰ŁŁŚÂ¸6νşîşë˛ DäËaŐ*¦Éşčž¦­ľg!«‡hľčŞĺKB Ě(™…ĄÓ.â)–/)'`–ß'cx łŇCÜ 7«‰gÁ8¬ŽcĘ`íĄ _ő©ć•Ť«˛Ýu’á÷O$ű˛Wđ‚×J^§ŘĺmZ!{Qiß{CÝ)|y Vů·Om„®…2Ó±p3]Y0,GŞ« d}¬<¬~±`m©6* ˝±É#»ý”KJg+R żsRŕ.® RĄ(€Yq&ÇTIâٰ–F^=©ohٞ‰‡Ů÷B˛í˙˛ëUW]Ő>L<‹]9+c°J=3 ăC§·Oóć÷Ceolµ’#÷śR@ÉnÎÜâJ=7Vżt”™2–~±+Łd>­¤Ş–nEQ颥a#Ł8ćLdif†uś-»V:®Ń›Ă/vôŐęäV¨–ëŇ´yÖÄň´rd6‚1¤áűSöJż"pKISŁúŚ~Ë­“Jt!vŽHHi ÁM[§ł•'‰—ť­„—M?ݱzĐóżĂżäC‘š÷–Nďç=żĄ h‡4yK)u›(Çým –žbŚűĺ/ą CLÉXA/]1'Ť‹»Ş´Qëă–_žy#Ę’muXŽcĘôm>—ţťúTóĘ^ł4»č$=éźě›•„C¦N”žÁ‡«¦|=ĂR íECöŢTuŹ‘’Ň©ŤÄµ0fo&Ü–Ë ‡{`iÖŞS˙.:*Ńů:˛ÝvŰ{ě±iR¸SŁČžtNŇě⺨®ÝSö+oX}LĘěĚr¤WőĄT=ď{¤ŮäÇ×»Ýwßť šaxŁĂnú裏‡=|š“`Ăű!gËáJµĹ ܤŃKµ—đáoőÇg':@v*šügţ­«jőĘvKŘi§ťH!˝ß†±&ËžŹ†eĎÓ!辰l áwÔWËٵj¦X’öŽ˘|6 –Ż©ů^ÖUP2ÓErd0śábř˝ď}/¦Žźüä'éaw)j„ŔMzf›d»85üK>dÚ°·¸Óűyo)˝şEO’çK“+·Ł‹‘&k˙T~® ůÖ_ýVÝŚ5vĘő"†yu·ĘK tM@µ®ktFA,©VZŻđ±Ą\l;‚/'‡z(aĘÁS ÂWľŇŕ™čŐŻ©1ŮŞaSąŚZ5dĎ8§€v©!V‡\¤6äŔŻ…m¤:ĆĘź°T v(ŚÔYÓ'+aú”Şć•­ ‘EGŞăńśy¦i–ViFzˢ¤‡ŘA¤‡ÁÝ^ŕ+ĂGěéřJY]Ą8ĽĚł†K{«·*–6bYµüm´Q,RăăęrňY^oŞš˛`í1*Ă´ęŠ!d•F›NŇ«ţY˝–Ű|>E©/=«Ú˝7TąTýđĎ’ÂgČÔFâZł7“ęl©Z <äßj¤÷™V)”wZBĆÇJŻ:'ivz]´ŠR­T™8ϸҮ°Ş2¤Ě{X_ĘßŰľG‚ͬĘ~Ü?űŮĎŘBŞÚÄeRXŮÓ‹ Ńۧ9U;gŠ=¦lGNU[˙rZ@¸š`ŞřĬă /Ě4 ü;}¶–‰ ŔĄK^`Ŕ’-ŐşŇÂý=ďyOVÎ!ďĄ1|CřĂď«ŐŤĹŇQBăYź-%śÖ‘`Ö±!\®ŃʰŽWZimC5@±ŠîÔQeŢŞ§‡ăÎ%ó­–ĽÚ˛Ő+«Ő8§‡·”ޢ«U¨6S˛»ç ś›\ąĂżÓZTG†q:ylúč(/"NUű@Ś˘CŁO@µnô™›ăĐ0#gA±,ÜA” _˛2",ŐşhÇTÝMµ|É)“Í|0őâ!šy˛ 8_ř3Ď6‡qEůh$VúřI©N-|A-­ęd±Í6Űđ}‰dăôöOHSĆŤâ5D«yµ*XHjČ(Ő!cl ¬<á°ŞvĹĄ—«QŞž ˇ0«)ß B` ™%—’¬&‚gYG†nľZţ6V`i:,x—-ß“žŤîösťb°ö>0fo !|«EpÂŮ’ţm:IŻúgiőIľm:RuL–•ła]Ę!>fĄč?dj#q- ™ihµ6m—^˝j,˛ë¨`i!«î25n§e”q«+ÚDµnŇÖ·ěW”?mŽPťęb\¤ĄRRĘěa}Iąš]v‰…*´ \V6†ŇAF_úŇ—ř¶ÁŚ? oQç«·4fÓ“coźć¤_¶cőţ@Čęב*1>Ą°VoZxÜĄIu™5¦6SşŞĎ¦†_’baJá‰Sl™®ÖĘg°j1XT73˙¤úĄ1`ó®U¨Âož ué(pÄŇŢQ΄Íľ<Ë Ű$’â ÁV]uUľÂ–QXö÷ä“O.ý;ő©ŞuŐŰ)çZnX°®/ů~ĂŢBřŽú@o)=ĽE—•­6SµA»{ľ4äÖŰjŕ´łUßňÚđźwŢy”3űUoÂY%0šTëF“¶y5%P}ŹÍF3Ő´ŞwŢĺ—_>®š)ĄÓ bš¬M¶˙ţűg9ňRwŇI'¦jĂëb5©f+Gůe\zËb•ĎŞ40òl2Ń)6ł~˛Ç«Ő`†%ÎGxV’ŠžeÁĘ×88Ęâáź>JK•“ŐçkH-ĹGěBcýÚ׾–-á˛`4ĎŽ´;ďĽs›'zţ–uÄ’ź_”AÓŔla\ľ’aŰذüL¤íŇGÎ]Ö‹Ľ(g{KĂŽ:IűgőUś ĽZZć’¤†‘avQT ¤˝7D,ˇq—ť§ Fô4µ‘¸ĘćHď±â­*’îac‘]Y°ŚFV¶6‡>ř ÷ç,@“Iµ´HµAéúvqó¬®ëWť ”őä§}ěm}ɱd›v§¬˝Ę˛µ śĹms¶žü0DϸK.ąŰŤjrÄż·Os,«V˝?2ŞđArͶwÇ“ß/Ku¦4©.łn3&Á°ŽE!Búń/Kp´ßS(†ŚŽę-7ť¤ 縑W¦)—›$T­ĂĘz‘{z/Ť…)CVá—ÁÚtż2pŐÔ(–ˇ‰ŁTë˛XËž)™m]žĂV[Áň»ěŠ~ôŁ•e`ó¬N6â žUů€S(ŹĺŰf qyőňyĆnDŃň.$ţRţRÇLó©ĽŇ1ü-+nŐ~ő‡ęzĺëAZ<Üĺ“/×VëĹźęęHŠŐ-äş0¬cMĂŞTÇęłL nţlćóriis^{Ę*Đ%ľůÍof8lhXWFQꞒ]ŮsŇ2tÚIzŘ?«ŻTˇlJZ稣Žâ‹qZrÜĽ”FŁŞpjČŢK0ŢXxŕ,©*Ą!S‰kˇlÄôţ{4o&ä[ řťęˇü%Xü«MÖ—›đᇞú7/]A­ëaçěôş $Ľ—ź%xu,g¸—$‰^­~’׳8/˛‡ő $Ëěşî{!Áö™ç{Č!‡da>đ„ťáĆÓŠVĂźýěgËG'ŻyDďíÓĽůý¬Ë"1c´Ľ-đ5ë§?ýiVSłFguŽrËâňl*—ÁĺŮT}¶vńl5Oů소Đ ڱ^ܶ"ŁťÝK©QiXG:ĺ%źŤ+B^Íá— ¶ę«UŞ”3«H¬lCGŐ 1ĆE§‹úfô,ç,ÇS8V^yĺęÄLVG-7‘H#väfüĂ·Ć4JyŐs¶•ć•FěÂÝ«K>dÝĽ·tz?ŻöŤ.^zx‹ýçK€\^hĺ•[vˇVă2­ľĺńbČ'śpĂŹŹŐ–ĘEl9›ÝWcx„Të&!|łnI úµ–™ 'žxâ{ßűŢň†„Ř}ě;ßůN6dÄźĺŠăšbŮbĆ!{ćl˛É&égL¶Ů:ýôӳ‘iś‡‹5Vv–C6`eĺl 6>˛1ż˛Ü˘9;A­C,—ŔË>=ĹĽ†\‡¨ÜŹqCą:OÇęšÜiľMv ‹ †#Ą±ďKéŘ%ŽÚÓ¸çśsč˛S`9â#ĘG/k“±ak}H7+ţţřÇ?.‘ď{iÓ—a2źr`Ŕ“±r:–ו/|á ĄćËV¶ĺ@<Ëe’V«–v‰˛Tťv’öĎęÇR :=”ľî2HE0-MH¨KVµ&˝—XUJtň N“Ô˛Rε0fo&ŐÉ5]ʉ«MĐ*5žĽabâĘĘKWÖLrW¦‡ťłÓë‚bT×î©VŞZý¬3“ :ŻŁY}Ó·čÖ—\zŰ÷˛bW©]ů¸/«L\Jv *żäݡ‡Osň޶Ny $:ZY~žwČ+éśn,IůžTÝ)ëĺ‹qŕ†iź+‚;üĄođl*Yˇ\w: 6$5JY—cŘ_"¶q”+ָɽ4¤Ů~G}µšfFľMŤZťjŻÖm°ÁŐ§C«ÔđoeXÇ*˝ĺ\ě7ŰŻžÁ㵺fHCµŽANąr«Â3´ŽCôVa‚Ż.ůZµe«—j§÷ó^ÝRzx‹ýç ›\ą]ŚCľ‘i>/&|°gµ˘0DçŠ`¬Čëdů—†u‡ć_ ô€j]ašTĎĚ;ďĽŐ´~ń‹_ Ľ°ţôŘP‚!ŁX~x^tŃEŐ(ďxÇ;˘?_ym‹‡ÁÁ}ü¸ăŽC@aŚąé|÷»ß-?c *q„0ÂČĆ@ĚkűęWżĘŔ:žř2öýďż”ę(FÜň¬:bhő´2pUÂŕ{{Ę“•bPÁŞckŢĺ"ś!óŠ!ŁŁú(ÍęBÝł­âÎËšć'>ń ^źxšňüľôŇKY°Ł,$ďŐ‡v/1Ó!4í[6(Y·¨úz¦É›^:µŠ…đB+NňĆĹž'śpBŮô„D¬ŠŃi¦Łď¦çT‡×Yóe«ŇhĄ‡ýS‚r7Ăë®»Ž·P,p™ÉČž×WŚdyÁČŠłr6é˝D¬ľ—ëĺ5I­ç×BGÍ1dŕ6VurM)0U›©ô¬–śď™$ADîçŮ]:KŤ·Ä8ó®‡ő­–0ëoYIŞQŞĘlâYľŰ—ÁČ1M°‡ő%ĺjv­ŞÜQŕ T<¬¶,fD<[Sµ‹đ ĘĎo”-,ňŐç9y5Ľ?˛ú•A™;Ř~űíG°ĽŁä,mQ~Ď 2ĽUŞ„ä3çWľňŐeČÄh‡g z”źÁÉfčeG yµ˙Űć‰Ć].U@ŇOwYštÎ5×\3óä°É˝4Äjży‚$[Ąš‘/Ë<¤Oű™°Űoż}™BµĂ‡`LŕXFa¸[.wH°řĂ«¬˛J>úĐ[©u1LpT™ó͉_˛Ő!FÖĄ’^ \%ĐĹ%ߦä壜Ŕťö^ÝRzx‹®V!}DŕeČîž/$ŘäB+ł#b«ë«I`ľ×VDÂ<ů׿ţ5— vh—|‰UέrĎ‚y(Ń$ Z7š´Í«)ô8ÄšŞÂ‚ ż† ±oT:;€ě|N)ă2. CĐĺüPÂóňŕĆŚ´¸ˇ—;Św?ĆŮL8B#(ż]“JÓG>ň‘T“ÇOóŔĺJX0dŽB˛&C(Ţśc‚©™,N’Âż:k˙«Ö%0]”‡eą;'oúЇ(čĘ©¦±śŚ21’ʇM¬řS-qłi8ŐÔf™e–ÔżŠ%`$~iŕŇŤ!Ďꫯ^úOrźę§WšŁŐú‰ˇŔUm:Iű'3¶°f-ą5i…++gµ“d˝—UMŤž-]—˝\vÜqG‚5I­ç×B5Ó¬š‘Ř{ŘXCćK5¤ű3}µ¬j:W <ąü㏖=¬o§×ĺi‘Ąś>YmâjŇţÜĂú6/ ß°˛!pGyĆpŔ̦äK¶ńXÁ.†ý˱Än»íRîáӜމÂUo0!úÓźţôµFVŕž“«¶xŔžüŇŔĄ›™bL2(ý›ř´ŃžÂý0&ŇF­kőĺ¬Ú[Ňžoż Şz‘r5÷VcI†t´Ń7á ľ•)”}8†‰ź˘FYŚ˘SźŕFm/ŐŚG?mZJşŮ§/ěCąâĘ,:ňatÝQř,p—|Hˇao!pG†đ˝şĄôđݰ÷đů‡j¦Ů•[ ÓęújŻ5<Ó«Fs¨źl@ZżÍßVą·‰â) Ś4Őş‘&lúÝŔŠŤŐýűš'‡T—mŇŠĹçĺ6Ă‹ŞTǸęsźű\|© `ŹłR­ă)0‘¶U!ńĺwˇWŽků„ŢĹăŞ|đÁe¦í}.´gŰÇ gÓZW—/i’a|ůË_®’oÂ+ŰŽěŇş—ąwŃIzŐ?) r[Ăk™eáî1…KýKŐŢË«Z+sÇďĆ Sëáµ0fo& *Gí|hc]’QMˤҳ Ý›ŽÁ÷Čě~XćŘƧ•ZÇ-:[Ů˝:¶!ĺV†uśjx/%dřőU¬2Yů4«xĽÉgţťV ik>gV“˘äU˙Şa]«ťIřŢ™Íݦ‰'˝˘<•ŮÖUoGe¬ö>YOn¸‡—<ą4é-ëâ~N¬žÜRzu‹ž$Ď yĺvt16y"S~|xhŇÉ«¬Í{cČËż•×ŃÉŘ\$ĐžŁvŤč–Š0 ĎeVu1/ćżěłĎ>ń°˝»ů1Ç“ÎMĂ3ŔeŐŇŞ n y•íw†"V~\mő´¨ڞ#»ÖVÇXiyÂ’j|XK=qłćWüUťkÖŞ`!–(gţVŁ`8ŮŃÚsX52 ™ÉA™ycVţęau‹jČVž)árđA¬O}ęSCŚŽDgfŚVąLr˙jďŞ6_,jť¤Wý3”«/» b٢WPzNů2™U­yďmźcH¶yj=ĽĆěͤ:[*ăŰkHGő2V € ëcţŕ?H—ň g{Ő9»¸.ŞW_zç‰ĺ/«Źü‘Y‰I^ĄbĆĽWő%»ž÷˝Xßö“]iĄ•Ú‡IĎň°ŢrË-ůfVš ˙i2jrEBm¬®“ŕŔâěü`ęÜY÷(;ÁxΙ>™´ä”ůV}Ę,Á€Üp?%®ĘV D4ż—’cřőŐ*Őě:ŞiâY…Ć7ýnš¦SUëčUt¬Ň…Ě”FÇÍǽ÷Ţ;óluXí9č>©|YĺÓ*ÁVţńěá%ߤ·Pć.î硦ÿĄôę=Iž/M®ÜŽ.ĆćµŕŁÔ·ľő­Ş;!K©0€Ś‡Ń‘ÝWŁż LZ΄ť´üÍ˝,°X’źĄ ĚJK,&ń 7Üđ]ďz×U¸GcÖńĂţ°TĘbš¬>Îćłí'q0Eřck-V7çËvŚ›9°ŕ G’*ż*ó±( Ěa«± ż!#ˇ }ýë_Ż.-ŚÇîl»ě˛K…‘‰kŚăÔ€Ž JUŤŇęÉÇb‚, Čő˛Ë.++}Zݰi@i Ă´w A¶Đţ,ý$•ŘŘá7 ʦĚ÷O¤O6-ד"0VC˙ňkn,|U­ă,"`Ô«|b MťN<ěá%ߤ·P…j[u´ĘĂżĄôęÝĽ ĺÍąëçK5ÓěĘ­†iŶ,´[fÔÇ{Ů™gžÉě%~|ľÂŢśá–ËkçťwćűíŇö îVóńËúH`4 LQý\3š%0/ 4!€#Îđ㮍ľŔ'=oţňC)íĹÚ¤Ěë=Ů”Ď .F–¤ŔvťuÖáo›¸Ů)< n˙Cđb4ĂěRC§c!yĘ–……C6~e…54D4^V±ů_~ůĺYܤˇ%ŕ(”0dÁü/ ú ‡&¦MA‡JËÔc¦ óÉťçë¨f8ŃŘ–ţ‰˘Ç—=ľ?3,¦ Ă´YN‘ĆrÜŢöOöŢĹ’k‹š;CĐXŃÇŰOuš›ËĹÎőE¦ŚŞ1[ŕBëčľ‘`Ě^ ˝m¬¬ÖcđĐúŽÍ‡E›®ÂőČö©4c6)âbä/OsnĹÜř‹ťEU)ÓěÉÓĽÓű_z0áaš!·/T3|%ęčöőţ÷żźńLZ=aO-Ć6ě±ÎC–E!x¶"ĺđĘĘK)ďáiřqw `*>YU¤W—ü(ô˛ć ÂäöHęyOfÓ >çđRż0lĂ #[Ř‘/űe÷zŰm·mĹ$ś ;I°›©$  H@€ş'pď˝÷–‘Ýb˘d˘Ź$0Řć™gžźţô§gžyć)§śrß}÷µŞělłÍ¶âŠ+nąĺ–ě,Ń*ŚţS¦xíµ×ĆT,Ś$  H@€$ĐžŔ+ŻĽrĎ=÷daZ-á”óPŔ@`‰€;Ç˙üńW_}uĆgśiüoˇ…Zd‘E˛ĘVj€ ¨Ö păZ5 H@€$  H@€$ >#ŕşu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3Şu}Ö`W€$  H@€$  H`€ ¨Ö păZ5 H@€$  H@€$ ># Z×g fq%  H@€$  H@€€jÝ7®U“€$  H@€$  H@č3S÷Yy-®$  H  đě /˙ă㇠ďqłĎ8íâóÎ8ÓôÓTĎN&ž÷?öÜďţ~×íńě[[űßËţ{ýźřŰ›Î2ĂcW_}m·Ł/<ëęűŁOćřçíŹmü™łżňî•ŘjÉ씇Ă'đÝżÜü­?ÝŇ9˙K›gŞčđÓ7 H@€$ ±OŔuëĆ~YB H@Hŕ…—^ůŃŮ·ný…sT7:5ÄÄěď7>4:yŤ…\νöTŞ›jĘ)V[|öu—žŁżXĽ˙ÜűÔ‡N¸<â@*ʤ:ćŔn°ěÜsÍřşů{&¤ů^÷řýűîÇq0‰uéf^váYv\{ˇÍWš/ Ü(YÇť~3“jď|𙦝j9fXs‰9öŮlń%ćź9řáY·<öô‹1âm÷?ŤťÚ|łM˙Žő žw>ôĚIçÜvĺ­ŹÜrßÓ‹Îý¦ŤW‡Éą_ýýő!ëÇ}d»Ą ůü‹Ż|ęä«CĘżÁrsóŹ7ž{íýLţç7· ţ=ń<…ů׏˙űî'fś~jŚćV]löw®żH:§őŠ['lű@”Oí2AŞĂÍßiąÓ®¸çš;ĆÇQńkn|Ť%ćŔMšŃÚ‘=(Î8l“ âqŠßzËÎ}ö›®ů˙ţúŇ+ŻrxÝ]Oüřś[÷Űb‰ń'{óçĺW^=éÜŰ.űĎ#˙ľë‰'žyqÁ9gXbľ™ß·Ůâĺ„ĐW^}őgŢrÉŤCÔ¨´Ë.4 ÁzŰR3Ď0qS‘łŻą˙ěkîŁpÔú“;/wéÍŹśpć°(DĹfp§µzçz‹¦›f|â§˙ 5YwéąÖ[f.ě1Ď»î~ľŮ§_q‘Ů>ňöĄŁv+üÇËţű—+ďý÷]ŹßűŘsË-4ËŞ‹ĎN˙yë2Q0§\t'éE3O? -Nx÷FožaÚqă1l)íĺ·<SţĹů·“;’L/ĽţˇżĽ.że•ĹfŹÁvăNQÄôuH@€$  Ś2ŐşQnv€&w¨W+-:k €Ju×ĂĎŽ4‘%ćź Ţ‘Ń˝Ź>łC8;ô¤>˙ŇÄíX‘Ť??˙Žmłäaď\1µűě/®ůÎźoŠqź|îĄűţĘ[=ţŻ˙9ákľc˝E9Ĺ>iú(2ź˙ĺżŘ( ¨u—Ýüđî߸8n đßGž˝č†‡Îąöď#)˘cČÔş_~5Î`eÎéW˙ot1L˙ú†lŐzđŻ(z>öä§S.Ľ“ýî@ŔüŇŻg\}ď®ëN ĂŮŁ÷^ő–űź n¤ĂŕřÇM·ÖýÔ.ËĄR]@uvß`‘źž{{8„@pôäď>˝Ď±˙¸â–‰iŇ=ĐăĐďŢ·éâßÜgµË}Ź=GČ‹o8ŻžüĂ”ň7ßůă׉bâm"2™ôŰI#Ţz˙ÓĚůýÝ%w˙öăëGłĘ8_ţíuqĎ{}Ž‚ýěĽŰ˙÷SF%ŽüŃŻüĂĄwÇ‚ť˙ďů‡J{ä»WN×őĂäí{ýĎç~ů/7Fg<ýŞ{ŹüýżOűĚĆHŤWÝú(&žĹńý3oá/ ŠZwÍŹĹ^’+ŘĽwŠ"-‰n H@€$ Ń$0égŻŚfmÍK€&9·­ľŔ_Ţ"ü;ţ€5Gˇż˝ä®TŞ‹ţÁqŕ÷.żńżăÔ´6?6ú|ű—ĎŹR] ‰Ţ¤şč“9~ü·Ű‚Tý±Ŕz÷·.™(ŐĹoxęĎfźű˘UđKíŃö=öŇmżxîw˙rÓµw>ÎLX¬ąäś{lđćđo®Y¦ĂçA“ q™kąÍj wöwĎ ß}n|}Üčӵ㥗_Ýń+¤R]šÔŹţvë÷Ď şr›/ś›JuiČŰ|f«ĂĎĄ.©gp§R]<{öżîgÜxyQŞ‹žpüĄ žţá©T1çúă?˝úČßMkŚ?đ'~vu*ŐĹŔŹ>őâî_żč‰g'ZeĆSC::ęĆijˇH#ę–€$  H@ŞuŁŮ,$  H`Ň`Jé˙Ľ{¨ý ăÍúž{ńĺ/üzâęl«żeöď¸ćO^g»5&ęSČC·Ü7ÁôěgçÝS ä­ß{űżľý¶mV›?x2u )ÜÇí?.‘[ąSţg˝oí;Î" ±ďą'ń1W÷m«Ď˙±·/ťŞi1V+ÇÔSM1÷xM {@ îB0¦îľűЇě°L´§CŞcno8»őŞóO™¬ÄÇTĘOť|Ízźä'b‹‰Sl2ĺ’KÝ}bçĺścś6÷řÓ/Ĺ0¬ĘÝ™Ńé]&đG‚dĂ€daş8üî_nޱľş×*ďŮd1÷Ţd±e>ôç`HxĘXtÉŁO˝!†<ńCkożÖ‚ápÓç]űĐ3‚” ,4焾!+ńťúÉ ¦ă¸ÁsKüŁ,ăßc÷_=LF‰»íÓOĹnŔ$Ů7Ď3c´ő#üá{¬xŔ–ăÖďŰgł·ěńŤ‹N»bśz‹hxęĄwďµńbřÇÝ”<$»řĽ3ţů3żiü¶Ľ(†l­üŃţvYwa üŹ›â/ţĚxm#évÚŤCFáo§(Ҹş%  H@€Fš€jÝH6} H@U¨lŃđ*ËőňöÚxÜ,NfĆSlJ®Îö±í— j] …(lçNG^°ŔěÓżu™ą×]zÎď°&ĤZ9źyáĺpĂ´ ŐqĐĆ>­íŐ:Śăţř© çź}‚vvë}lĘÎĘe¬|3e×VÓăěX}ŹM'płÄr ÍĘŢç^ű@,CŚÂĽN /˝ůásż¸ŰĹÎ>ÓŰ4°H –9¤:ü)^şĄC˛ů!*g\ÁpÖ7M¤:˘O;ÍTßŮwő›îť°7«ż1§!ĺ·Ě7S”ęđYj™·]cţ?^vO8Ë>™Z·ĂZ ©ŽěË‚ń÷Ů×['úŕvš)w^{áŕô í¨Ö=űü8MöÖ×WýĂ=ď¬ÓA8^tîżşüÔ:V0Ś>űmń– ŐáłÇ‹ľđú2v©Ĺb ÜŢŃi7NSëEQ·$  H@Ŕ(P­Čf! H@“ŔTSNyŇęEąůuő÷ň Ď’ŽąĄű˘˛uC8ĹΡl»±¸ŰŻ/ľ“ř0ťđKďZiő·ĚĎ–ŽŰś(±-˝ŕ„ dC0rGđŠ3[˸K-0S”ę8›*DÁ>®Ś‚ĎŹMĐłpł%˙^|ů¶k¸čúŮ•WÓűĐ’ŽúýőGě±uŹ©ĹşGźqÉ>ţÜ<łNĎ#ĚÄđYx®R­3 Ü‘›ý%bx6˛nŰ®±Ŕ¶o8C™*ÄłYŰáŹ4Ő:Zy«dV)g—^`b[§ŇdL0u,1ßLé^±łż>Í6„A7ŚóvńyĎ·˙žĆŤnáľýőľ¸›gâž'łĎ4í˙lżL Ü©ŁÓnś¦ßŠ4˘n H@€$ Q  Z7 ÍB€FŹ&fŃxŤÄć™e:ĚßV\tÖÔĚ*Î`ĄXŃĐ)†EÓž~~ś)’Ö+Żľ:Ő”S~ôíK#¨}űO7•ćil˘şůçĎůő!ëmľň|­*ůÔł ë0óôí×8$ńi¦žâ…—&¬CW¦.ŻĆŮęće,Ěß2O4µŤ–ź‡řcČvÖ5÷}ćç×°\Z†~‡c±ygŚJ%Šä3ĎżśÂůëU÷˛»Ĺ—÷\Łł8ó:Ł{8Ž^7—#‘9fž¶MRmÚŽXé6¸ĎüßIĐśťi††=3M?M›bĐ^x)‡\†iü|áĆďůζŻ]™Bź6(ŞÝ8MŞ#iDÝ€$  H@Ł@ aë(”Ć,$  H@Ă$ŔVlĽĐ>4¦8‹K±˙+佤:R`Ć+jŽ©§šňă;-·Ďf‹c·…ÎĹĘq©P‚÷ńźţłŤZ·ČÜgË^÷ÄI¸¤ĚĘzíEäł´.é,Ë÷lĽ{¤gŁ{ýĺćbv熟>+¨€Ř…ýős›DK±éŢ8ŐvkŚ›şóW/Qţ3~? =–c‹‹¸}óŹ7|f·B€ ŻpŻo_–¦˙ď'W˝iÚ‰‡%çźhŽsďÂ1߬ÓÇXw?ôöľ`2Ű)„łsÎűšűßqô…aó‡i¦šňö¶G­cc„¸»č~ß˝ôëď]mŁć¦0ha—ßňČ˙üřŞËjă·¤ŕđ3».˙—+îą}ü YďŰţKçşÓ˛Ű­±Ŕr ÍÂ>­|ď˛Ç{7Y|ńů&އńűźń«kăaęŔ¬ÚŽ”v……gý×řÝ?Đ?zâ•ǰv…żűűÝQŞĂj’}$ŘđI1Ô [żýŽ»‘‹S/Ť·ű»űá ¶u Ď9ÓźÓ¬{î¦ŔĚ&YÚt˙ă/ýчÖaâ0–€řţeąňŢs¨{犫żeâŽÇţĺ&şý3ŔďťńźX*zHtGGěBl9[@IDATŃ'utÔŤÓş%  H@€Ć8Őş1Ţ@OŔäKŕńg^Ś;±¶ź.Ú)Ł•ß<Űno]ř×ßEDRŢű;˙äĎ®ĆR,j=ř/9˙LaŮeś3´Çź·G*»Í®ö?§o°ÜÜIH{AŞĂÍ%ć@ĂA"eaٸ«n{Śą¨+,2ë±ű­qÄî+n~Ř9ŕ‡˝[Ş”φŮäáco_úk§Ţ@xrŮá+ç/4ç č„qCUüß±Ţ"ÁʡíśkďčČô]߼ł¬ě§ú†LYéo˙­–nlčŽ;`Í­Ź87˛É,ËŰń/f}ú…°®_ć˙Đ“/|ýÇ•°ümşâ¸Í’áě’ ĚĚ҄̇ ‡XŘ1ó4­Rě.ë,“!ÇÜłL÷­}V‹Ĺ@¤ŁąŁT÷Ć©§üÎľ«Łµ‘;"#»s°{I, ˝(Ju¨Ą'~hí8ŤzÓ'B@÷Ä$ó·&Ě«ŤŃŁŁy7ŽQtH@€$  Ś}ŞucżŤ,ˇ$ %€Ö¦nS˝.džŤSŰ„ěâÔsĚpŢ—6Ű{“Ĺʸ.7÷ĹGn±Ö’g&"$ýě#ë2ą˛ ŚŃÓ?˝ař;-‡]^ň¶_ć?µ!‚Ô\ă÷<]u±Ů>±ór§~rò=Ť4Ř™‡orŘ;WHw{ŕ,şŰˇ;.{ća›DÝO,¶ţńŐ-w|}ˇ´Hplżć‚—}m«tń»ŕŔ–K\~ôV۬6žC2=p«%‚Ĺ!öbl‹ÜËŔťúüćő?ąórQ˙ Ń1WÄśţĚ–Ť ô¶Ąţü™ŤŘ$úĹ;ćý«˙ŕk+<ߌÁ"2 6 î»z†ßőĐłě×Á|ŘůgŻ»ßůĐ3ÔŽĂm•Ĺfk’mpŮ­5§›fJ°"^űZ4ďĆíÓń¬$  H@ŔX  Z7ZÁ2H@Ŕ€Řâ°żĹ5řŽy˙a2´›žpůĎĎż#Tž™žĚ—ěyěVQ ‘ýR~Ë) H@€$ 1K`Oµc¶ÜL€$ĐGf}Ó/˝ů‘PŕŹ<ÝĄćZtž7]uëŁěDk±Ëş#ľÔZĚkřjÄżá§c €$  H@@F@µ.âˇ$  H ÷ŮaŮ‹®č™Ć-ńĆţ g˙ëţ,VµcSĚÓC H@€$  H`2$ŕLŘɰѭňdGŕá‡>ţřăźzę©É®ćVxdĽímoŰpÉ{#ŚL&ę·?c¶¨L€$0r´­9¶¦,±B©îsźűÜX)Ťĺč ,°€j]͸ú[ćřÓg6b“öm¸÷Ń禟vŞ…ćaÉůgžcü±]$h ŚA_|ń׾öµ1X0‹Ô_>űŮĎöW-­$  H ·TëzËÓÔ$0 «ş5ÖXcŁŤ6‹ĺłLýF`ĹWě·"ʎň˛hĎ7QCŐł(“=u×]÷C™ě1 KçťwŢĺ—_îl€.ńM€€jÝ5¦U‘@[HuGuTŰ ž”€$  ‹ŔŰÇ˙†•„‘'c‡z(jÝd ŔŞK@€&R€$  H@€$  H@Ŕ! Z7FÂbH@€$  H@€$  Hŕ ΄µH@Ŕxć™gN=őÔW_}uę©§Ţe—]¦™f2{îąçnľůćÇ{ě…^xĺ•W6ß|óŕ?‚ĺ0i H ůË_yäb°Ýâ‹/ŢITĂJ@€$  —€jÝp _€ÚřÓźţôď˙›‹-¶XäîąçžźýěgO>ůdڵńĆ«ÖE:R÷ß˙ăŹ?|^xáf!=«{äĽéMoşč˘‹H˙ľűîűđ‡?<í´ÓŽ\^¦, H@€$p&lÄC H@čoĽń_˙úWHnłÍ6 ŽżţőŻ©T׳ĚLh üă˙řéë?dŁA¬â­Ó:ë¬3ýôÓS8ÔŇ3Î8cŚ–ŇbI@€$ % Z7  kµ$  LjĚ~e2](Ĺ‚ .¸č˘‹÷˙űßX´Ůf›můĺ—×°.Ń!1BŕŤo|ăÚkŻ s饗>üđĂc¤`C€$  LTë&‡V¶Ž€&k®ą&ľáŻżţúˇ/˝ôkŐ7së>ö±Źí±Ç,iW–ʵížzę©ŇżŤú ż6z{Š÷:J°axŞđÚkŻ5Iąa‚!)ČwľUš”­ÓĽĆ·ŰH5\“·Şl{˙öĹn/‰°€#ÄÚçÎľüňËĎ>űl“„yńĹ›„l“&ćuSM5‰P—żýíoMR3Ś$  H@@OT^z’®‰H@ŔdN ,zŚt–]vYţóźSŮü7Ůd“™fš)ŕşţúë1äyŕÂlYćâÍ;ďĽDg©ű)¦"„á/‰ßrË-áÍ+®˝öÚK.ąäŃGÝpĂ ·Řb‹,:HíŹüc8ÄĘŹUó™¨K”EYd‰%– }DĂż˙ýď7ÝtÓí·ßNHě™˝űć7ż9&‚ă‰'ž8çśsXL !=qşé¦Ă'óÍ7­Ľé¦›RŁ…vĽë®»ÂáÖ[o=Ď<ó7…fpżĺ-oYo˝őp·ďoiR»í¶uĽňĘ+!6ăŚ3śľ±Â +„ă_:ĂYgťE|đAô2ŞUĘI—ĂsQ L·¤ű!śŃŽłÎ:+}cÍ5פąÓŔ˛\p[¸ĐEąľFsS B¦Áp7I“ňÓB{1ĄťľŻÓ,5%  H@€zK@µ®·U>č ĐˇşG d#¤şŞZ‡8»śO;í4ęâŽo˘űHy÷ÝwŹ3˛Ńcx¦|FµŽ6Ťţ¤Ôşöý-Męç?˙9='äűôÓO“?z- ń—żü%í«†GőůQGš%.žBµdáľXüi}$E$BZç€@ĺ i’Ą˛1îřNô8'Úî;ě Đ<ͨÖQBn­µÖЉë€$  H@9΄9¶¦, H`ň%€@+Ď t·q`–Iui`$Źh°–úăRŞËÂŁ‰D©.ž"ëTŞ ţč\¬ŻĄ1 TŞ‹qqŕ˙űß˙>ő nT•(ŐĄg1*D > üŇł©+-´žŕjËE©.úŕ¸á† ŁT—žBĚúÁ~UąôTé‰ öă˙8Ju10…A( ‡Ýĺ•Ju1Y$'4»xŘťZ¤ňVH„* Š–Mßiíű[”ęŇdŃXQÖ‚ýž©T—†D!ĄČyÁ“~uĘ)§”u gQăEAC2•ęŇdĘI¶Ó4 ź^ĽéEť&®[€$  H ç´­ë9R”€$ 7D Ěý DöÜsO4…źüä'áyvËáf:'¦m^xađç/SĂÔTô tşŕŹy6ALë‹Á2Y gę1kuĹWDľAFIÁ8ŽÉŞ‘Wđ§`Ł1!)xbâÇÔBlÓĐ›x<1ŁC Ę&‡r ¦0yI+X‡á‰(hČlMÜLă )đwÉ%—\y啱cB±bŽdđG»aj'ně×bH, <×\sQT˛ŽţÁľ¶=1¸ŁľxÂ‰ŠŠ@řÇ`ÁAHÂ3ó©1ž˘ŘU1GMý.řSr<‡“Ŕ©/ú#U‹É­Š)ŔĚ ĄWÄɰ›oľ9})v§X¶Ş>uÎ0Ă `Ś|°dNëĆo\ŤŇ©g«ţf1skľ(­˘śRS¦NSÓ(ÔRH–t¤еđ§W„2`.ŠÝ"n:|T{™T‹Ů]—+Ń6č°°"ŐDŐĹÄ/DÇ”z\Dr’B𤱶ÜrK ńš§IDš€â41n„HJ­)C˛ţ•€$  H@ Şu#AŐ4%  LîRkݍ !´Ą¦^ČŃrÍ+=!Ä)–(GLŚÚRKU­cą:&3˘ú5äţţ÷żź%˝ŚÂLĎ ‘eź}öAOˇ_˙ú×c‚\‚ňg´°]&«ˇEµŽXH{éDÔ~Űm· ™ÓúŤo|9ÂÁ™$ÖPď~÷»Ă¬a¦.Fµ.”3«´ ,G­I nŘjEI+$ÎaĚÝ<[DÖ›űáÂÚöŰoź‰/ĚĎ Ëޱ\BHţ˛4^ŠZô»ßý.ř2]竜ÔnQ B˛A%DWâśX5–Ď+×ű QĘżH{¬?|ŃŚäÂŕđŐş6ýŤ^í0e“É“O>9äKóˇ¬!űţă˙>üevęk¬ŃŹ?ţřŕF¦ Ç>€?]ÍaŐăÁ Íˇ÷ˇrâ™ęÎTµ ‰B91˘Ść~hµtÝći†ÂĐ4ÁŽÜ‰@üý+ H@€$0rTëFŽ­)K@L `†n+›‹>Ą#Z?qę­o}k”#P˘ž•‹‰°„?FCńpH˘^ꉽRTëXŃ ©O4üŁZdDdŽ €`…ěÂBu¨Ń/dJĹËÜ‘˝‚'ÉbJE´`Ż„áŇᇰ8P@©‰…1Aücúظ±C8…čI٤bH©YőŤuŚ);)tô»4"úc8DJŁ˘µW Öć aÂŮ®óÂŚ1'µ¸î@&dŃÝ_$ł e>4ATëŇŇv—xűţF'‰ž R’x-5‚l´¶ĂŤ€Ë€t‹‰5\đˇ«Ă$ éoÇs ±č¨¨~ĺ‘xŚžÖ‹VľüňËĂ)z] i']Ąyš!bTë8¤.Şu‘§ H@€$0rTëFŽ­)K@L °,Z´ˇĂR,lńŮžÓBc€lŞcziO9ŻjmS+QLáTęNµD´,"ş!…<ýôÓ™H—,Ly,•GÎbU†AOaÍ>䕨–ađIĺ¶D <1XŞ Ď8i—CT6¦S-•âNŕŽj]„ř•Eé:Żtł*™,Łć‡¤śňI-ň¨rŮ…š§LČöý-îVŇÄb.®s‡Ţšâ%d*Ąž®ŐşpE`|Šidś#L¦o#éňcăZćGłŻ.MC€0Á9dĘÖ"Á‘ý ¶ ÓŚqÓ2Gĺ1žŐ! H@€$0&~q‰ÔMS€&sĄěUU!ÎfQŇC$Ô:,$Ő[ˇ§Z<< ™pŠ•_*Ő…Y«­˘ŕŹÔŇćl8…¶rć™g¶—ęg ăN™p‰>řÄ•Ńp·ů•0Ű.OE¬ëĽšŔ)3mâZ¬‰^ĂGˇ9údŽöý-Ë:kš6ŤH.YłâÜ{ßű^,=ł2pHŰ1Óö{ßűü™f[(}BŐ¦Ł—úl<ĄC€$  H`„ä¶#”ŤÉJ@ŔäC€©sča>#V?h™fQ˘`­ş¸K&ŽÔX ™,†Gß)%ž!%ł˝;GФ0eŠ%ÁbŽ9ŚŘ(±?ËŔ…]şKśÍ+RK¨ĺ—_žýŽŠA\ÜŽ#¤Ě‚q1‹lFpjݰâ[ Ě$VVŁ‹‡©#®zvęÍĽ–-öĄ>.ÜĆ!–bÁÚ15ľKĹâf–iűţFÖ)¸ó‰ŕź.k’©OTýX­ďü 6wěRÂ_:FZ˘`•ÉäqJuäw˝ë]ičŽŔ›¤ÉLŰ1•ÓY´1Y€$  H@=' Z×s¤&( H@o`vóţćߡߵ‡ÂbXqóJv·D±Šá9ŚîI¸fkÉĹb°IEĐΰoĘÔ“¦ˇ#M–ÝvŰm·ńşë®ËRH…¦C˛cŔ*«¬°l8…8•ňd­˝(NE}'‹ŢŃá¨ĺŐÜŞŘ*F}3N/Ą^Q±Jg(§ ]\á®#10 Çě×pȬ[Ö"ڧ(OĘŠShyŃnQ =.!Ů6jÄŰlłÍvŰmGÓłüČFiŹtPĂѻنKÜ8Ë`lI’ zĂ4cIÂüŮpéĹł:$  H@€F‚€jÝHP5M H@“;ŢęŁZÇŠZCŞu¬ÇĎľ bÄŮgźÍ. ±=űŔFš‹îQv¤šÂ Ę 6ĹĄkŠuQ¤4Ů8Ąt^xaL-¨T ¬kŐźSO=­‡b rB,Žt±?Ö8c5×\“t.»ě2–Ţ‹?ůÉOFwŽ`ž6:yQĽ¨O YT&śţâż`Ű\Ś4Ůú6ną@D¶hŃÓĺŘŔ‚™!†c°şôŇK‡LżM¶|Ĺ,ái,].kS„9fŃR€¸Ëí/ůËÝwߪö›ßü&ި”-l÷Đ ikvS!q¶‘EŽŚ• ógi…¨Ö…děč!lŕ‹ýf(0}€d›§bĄ+âŃ ŰÔÝS€$  H@˝" Z×+’¦# H@ °gĺm·ÝŽ™(š :%.ö`ÂfÜűőśńżäü8'bĘşë®›yŽÂaФ°WŠŞÇI'ťÄ~ťh.é$AJŇĹf¦ŃŠčTźyµH6©ÁţÁŽblµŐVqz,‚ÔĹ_ÜŞúXZ­˝öÚ(G!ćTgśqFL*xbp§[¶J§˝ 3˘yĄ‹¦!P"ăî¸ăŽqÚ6ĹC“bťÁ,©Ĺ˝té˘Qfó„ăŹ?> ÜőáYăYtš#ĐĆDî¸ăŽ gŮ9äŘcŹÍBrČέaĆ7Ň^Të.¸ŕ”G¦Óbm—îĘv˝@šÄ4/č}ČvßúÖ·0Śňib‡Ě‡ŁyšFFÄš?”ľre˝pĘż€$  H@˝%ŕ.˝ĺij€$0ŽŔŠ+®ADŮ.úTŰn»mşŕWńb§ťvJµ›,ŔH˛P]Ěýe$“ę8ŰĹ$J4Ł8»Ű7X©.]é•0ěN°ä’KF±)GUtCÚKç]"ůŐ/DD?Ýa‡ŇD†ăąĽ¨r,ĆŚČjŃf3ú7wlľůć‘ĆtčVeÜ A–ţĂńˇco¸á†!tŢM6٤Mjěôd5Â+ŐsQ÷ČĚäë8)ţ N±Ľă J“ͤ:Î†ĺ ›§IjQ+Ľ +¤éë–€$  H@9Şu#ÇÖ”%  LľЉ˘=]úÂ߆ë˛tĐA+­´R†‰ś|pş%BşčXľôéTć+Ó_gťuÖ[o˝TDc§Qf&n˝őÖ1»`«ĹŢ4X<‹#-FČbşé¦cO€T‘A-Âé#ů§B\ô©¸˘şŘ^{í…9UŘ™”m.6ŢxăwżűÝ1—¸éčCBĘěˇHźM >đ¤SAcô!ibŕćy•`C"2Ędiրà˛šiĚ˝t `+­ Ť%Z0&GHŇ©"1N!~-ő áÓ"ĹŞ4Pöpu! 6ڤ™fłÍ6Ű{ď˝Ëéá MŤrĆďűŢ÷>Ä»˛GÁ„ęěąçž10{‰xŕé-ˇ„h…űďż?Ć}á°Ł4ŁÔNŤŘĄZe=%  H@€zN`Šřy¶çI› $0Fzčˇ_űÚ×9䣎:jŚÉbLÎ;ďĽ3Ď<3Ô”mĐAÖš•ŕĘÇŹ‰ĄČXóĚ3O©k4LŞçÁČZ`쀅rd*Ę '/¬Ţ/Śĺ˘ řŰ$5ڧ‚ŠÄśÜN8!DAŢÚwß}Óč'Y” m®=Ąé4qŹP^Ô”éźôô,Śă˘Ž™ ÄcŽ9&ř ˇb‹‡ˇ"f‰Daşn)x…Ŕ$K\˛ Lw{žž|ňÉ×_}H Y™ŽAˇS´łV­ÉŚ­0F»SBbQ€(˝ĄUĂÍâqĚ~Ąű…=[('MYM9&K` îH6ovš&čľň•Ż„ĺË~•ĄćˇzBŔKO0š$  ×­€F´ €Ć"µÖZ‹˝JĂ& , Ö\­cŇ+ÖIüĆ`­>ZiĂ)- ł2«3c˛H?_ýęWăô[l¸V]uUÎ"3±NZ †@ÝÁ1šX8‹`ÝPłnžěi˛ÇKÜů¤:»IÉ # H@€$ĐŐş. E€†&€áĎúëŻĎ¶eu| ë:t4C´ €ö„˛sçťw†óżýíoŮŠv‰Mwí¬N%n‘¤ŢhIu8nLĚÔětÁ–q o]>€®!…@!°rĺĘíŰ·gË8úôĘV) ! „€B@! „€y‡€Ľuy‡­, }Ť@Íš5Ď;ďĽôvh˘OŻ}=QŤ'„€B@! „€B@Ä o] 0 B@éŇĄëׯÜqÇĄă°CMôéUźUSB@! „€B@!P4·®hľW=U±Eࢋ.?~|J‡ťqŐˇ‰~±ĹJ.„€B@! „€B " o]|)š’Č9]şti۶m˛Ăn۶m¸óĐAýś¦žB@! „€B@! „@¦·.ÓĘžČo.ľřb¦ç°#ŞnŔ€ÜEÇhć÷|5ľB@! „€B@!…€ĽuYX¨%ŠQ˘D žĹ8줳ĎeŁę ¦˝Ą†B@! „€B@!P(Y&ˇ9!A8ăőřăŹë­·°‰ĂŽHşC=”ö·ß~kŁę¸DG§Áfv™B@+žţů~řÁ>r zőęe/ EcÔ¨Qî†Ő!š6mZ(f®I ! „€EyëŠü+ÖG8;ÂxëxxvË–-Łńꫯ®^˝Ú¡ó%,j! „@v¸ôŇKwîÜi{ťqĆ…Î[÷›ßüfîÜąö¨č:|řp{©†B@! ňeÂć#řZä'žxbµjŐ¬uă¤s]uÜEÇ*¨!„€B #°{÷îbŽ€_! „€(8Č[WpŢ…f"2†@éŇĄĎ=÷ÜsÜE'AA·„€B@!°o «zěر“&Mb8ţŇvó¬÷Í4ŠB@…€Ľuęuh2B c$'ş&ßÍŘ$dH! „€‰P©ŁyóćdRŹ3EţŇF‚<±źn ! „€(ĘČ[W”ß®ž­8#ĐąsçvíÚ@ÎÝŕ- …€B@!°Ďřóź˙|ć™g.Y˛Ä rîzr] ! „€(&Č[WL^´ł8"@'/Žé™…€B@|Bŕ±Ç»óÎ;çîăŹ?ž  [B@! Š*ű˙ď˙+ŞĎ¦ç*|řá‡Ë—/·OÚ±cÇNť:ń­&{bÔ¨Q ,رcGűöí»térřá‡Ó°šÁĆ÷ßOµ>“'Ož>}:G1†ÖŁGŞĽíż˙ţ'Nś3gŽíŘ Aľ}űÚËŘXż~}ť:uĽĘ/%J”ฉš5kŔ kJB@!PX(S¦Św&ě+ŻĽ˛k×®—_~ůý÷ß_ąr%í:°ţzčˇüM~®Ť7r‚ůĽyóć˙řá’uŠ%¬aƧśrJ×®]“»s—%o„ 3fĚ`ůĆNąrĺX¦é+ŕĽÚRĄJE-´nÝÚ=¶˙ţĚÜU[·nÝ´iÓ\ m&fâÓ‡ Ć<íÝJ•*ťvÚiöŇ48ąâĄ—^ +ŢžYc‡(,Ť-[¶đ‚¶nÝšŻť'm$öR ! „€A€}2śb ¦XFńĘ‘ęęP’ěŃGu%qmî«®şjܸqž~:RM=ađ’8|mÁ[Qáe—]FšŞ'żá†đúy ^ćŚĂdpűŘÔš5kŇ1}Í4 JM! „@ÁG@Ţş‚˙Ž4Ă #@]›_|Ń5Ęv=µi\I‘i—.]š˘{öqh#±—j! „€ŘgŞć®żß~űí_ţňotRMëÖ­KĹ:On.˝řŹ?ţxčСAÍ wۆ ‚·\ám·Ý6dČWBűâ‹/ţŰßţć ÷ýe”Ăěű9djÄňĺ˧i*}Í4 JM! „@ÁG@Ţş‚˙Ž4Ăl#ѧDÝkŻ˝öÄOP].Ú˙Ćo¤€ť‘SČć˙ř‡§S±bĹË/żś‚ŮÓąöÚk8 ˙KqS_ݶ÷ČşB@!Kęׯ˙Űßţ–žîąçžŁŹ>:jmđŕÁčdäD»{[eM›651z„ÉSLöÁÄyçá(÷ňúëŻw/isÄ]wÝ…eŞ^Üzë­ŢňMdßčŃŁ˝.Ţ%ňčč O>ůä}v2i¶8Ś7ĎÂuٶmŰ4'śľfšĄ&„€B  ‘ęw2"ň ŻB3˙äŞT©Â)±î|ţđ‡?D˙)’ábt˘ü›ßôćZxď˝÷J–,é)§L§ŕd[&Ď_÷ˇÔB@!cĽS&XejÔ¨A2¬kx4oéärřđáF‡5ďîSO=ĺv§íŮ5iŇÄ*Ś9ŇëÎňýÁX7Ýt“§C™<«=e‚úhŃôŁŽ:*xD•Ç@rĘSÍ.‡±ĎRÄ zo'îÍÂř€šłB@Ü P#†âVtÉ‹9O?ý4{ű.„Î5oŢÜ•Đ^Ľx±‘L›6Í»uÍ5×xG©{ě±çźľ§V.MHťë Ń+ÓT…€…˛\‰ s§ÍáNžGŚ»óçĎ7: {óĎ?gź}¶Űťđöµk׺’~řÁ^@gۦAPü1Çă /ąä/:/ZůÎęĎť;÷´ÓN#?×Jhp<Óş&]ť ¶łËa28ôľ7Ő­[·N8!ĺ¸č ™RM B@! Š~¸P{<=NqC rĺĘŢę=5LýŠ+®đ"ěě‘Ömg{ťzę©¶m¤öŔˇíeájp€?ňî»Â…†f+„€G€$Ö~ýúyfË–-ˢŚĚ•Űe·ĎŹ{kÇŽÓ§O'uٲeśű4eĘ”yóćٻцµcoákłmÓŔ!8uęTxµň *ضמ’ńî»ďVŞTÉÓĚŁËp<šÉ>3K4e×®]W¬X7b Љ»+ąB@"Ś€ĽuEřĺÇG‹ĆĐŽ8âËň—,YâÝŠ Đ˘E Ľ~˛zĘ…â’:>˙ú׿ř[(f«I ! „@ˇC {÷îÁ9·lŮŇ“Űő×ČI2%xíż˙ý/~1[RÖëĽôě Ó±cǨfPU‹“0+·Ť»›Yy8Lf'°ď­|đÁź|ňÉé§ź>qâÄčč|©¨Nô–$B@! Š<Ę„-ňݏx= >µŕתUË“Ż^˝ Ţ7öđÝ[ěly!Y0^…·WÁoďł ÍP! 2Ž@őęŐ6ŁŢş5kÖXM˘ç:uęD,CeËU‡…¨·Ž˘oÖr¦ţóź7oŢś)kÉv˛Ëa’­–»”&üôÓO_zé%2^ůq0i#Á‘ç.,,Ąy ! „€Č=Š­Ë=†˛P€KW±'ĐŮąR ›6ár¸áÜ~- =SżŢöíŰmw5„€B@‹€WîÍĘŁ™§fýEaÓ¦M˝zőúâ‹/¬˛×ŔÓ— ]”˝užµś]~ůĺ—”’ŕtÚśuŹ%h-»&h¤0 yqxlůĆÉkÎB@! ňĹÖĺ°2›?DwÚÍ<˘Ĺh5jdnqŔś;×]»v¬[·Ž[®¦ÚB@! „€A ®ôŘŞU«<ěúű˙÷QWݡ‡J8Ű›oľÉÂMÁ»„ă6lčY޲e‹'ÉČ壏>úůçź§4¬•Aľ”­B8Śí«†B@!PÄPl]{ˇĹýq‚Ž6@;v¬Ťýµ€·Îcá“'On۶­§˙Ţ{ďy] ! „€Ď>űŚ@őRĄJy€ ÷$vý3fŚ{«D‰C† ńDZľ|ą«ă¶YľÉ”t%RáťtÁ6ŰĹ_ěž$KâíŤ7ŢčörŰíÚµĂQ‹pÆ VN÷«ŻľúăŹ?¶ÓđŠÝ¶m›§Ŕĺś9s˘Â8I8Lś)É…€B@ÂŽ€bë űÔü†ŔŇĄK)Vý3Ń~ű‘‡ňđĂ{B»'Ď1vŢ­›nş‰H:W¸sçÎÁ»’˘ÝŢ˝{7?şH2â·‡ýŁű§h# §B@l!ŔşIˇ1Ż •%˘ë/ç´˘Ć*ăť‹ŁÍsŐá2ó–c׾Ď­W^yĹU ýÎ;ďĽřâ‹aa?žĎŐŻWŻŢ#p&FWüńăÇ?űěł®2mŻš-łő*Üm—0śgŤËp¨I,ŕĎ7Đ#38pŁŐQl5„€B@ä­+8ďB3É —\r‰[ÁNĆ k×®u­łßˇC#ńöá˘|ć™g˛Eo˛Z-ZtÔQGĹĺř¸f‹L›X†·ß~űä“OîÝ»÷‘GÉăwÜqü ›={6λ"óz! „€Č 7ÜpK§5Čúűß˙ŢË„-[¶lź>}ĐaĄöjşEóX˙ţ÷ż[k¦aÖeÓ&λűŘcŹyđëy:=zôđ$ö’áÍáé—_~yôtř?ţńŹŢ čyëŘčúë_˙j­ŃřÓźţ„›Ď•¤lg—ä4Xś¶nÝŠűF×·o_ |ćŘcŹĺKÂKáUşßĄâŚ’ž]!  ,Ę„-°ŻFË!„nßľýŻýk˛Y9ďőŤ7Ţŕ¬1ĎÖůçźocëŽ9ćvŁFŤruHxéر#‡Ă–+WŽ˝n÷VnóĂićĚ™P-ďäÂ… *4t–ä&$GÓuů©Ó¦MŠaxŕE =šB@d öşzöěyĺ•W=Çą¬žď k—^z©9e˘víÚĄK—vv“&Mb•éÚµ+jÄCÝwß}÷ÜsŹ77Ä{ŕŔÍ›7w ñ`ť‡Ă«˙ţlËýç?˙6lkµ,ťŁ 8ię˙řlj'žčö%ĘŹB{wß}·˛zu6¸Ë 7n$Ďף¶cB#»&ÁT±˝Ĺ—ŠdR°ńłáJ~ń×_Í7‡Ż_ąwß}—ú'8ěř¦ńEĺĚY/ŁąŘâ¦B@‚†ŔţÚY*hŻDóÉŐŞUăPąlu«Aî4h`{M™2Ň–Ý §śr ?E¬‘BÝ 1„-hRx^ýőÇśtČ.a~wńáwîËsÎ9‡°;Üťxî’(糖 ! „@Î(S¦ ;:ŮęËúËA uëÖ5˝rź1c†gˇsçÎĬ±.{YĄFŤ]´őë×Ű./żüň AěeĘĆoűŰţóźV­uëÖn6.>ľ÷ßßŢe3oäČ‘ö’‹ Á6ěŽ4[ĎŁç*ǵ9CăŽ;î0w3Âaâ*†rČ Ž9Ž.!?ŕąçžcË–KČ P>cČĚP±bĹÓO?ťh;N5!š/3·Š!bzd! „€(Č(¶ żÍ-OřŐŻ~ĺşęŁK—.ÔŞK¬rĺĘÉ …÷.ÎlAďpüńÇß|óÍÄÔ€·Ž$bn™mj ÁzqäÝ˙ý/_üÁ|óÍ7ÖŁWxĐĚ…€B` pÝu×YWĂĂܦNťŠŹ,誣 k»EwÖYgqjDš3'ďÖ[oMS5ĺpë¸ú¬×\sŤ•}ôчv˝ 6ń Ęs,Śr›*z š#2ĂA"´É­6dĆňCfpęńEâ¨_ň0đöâu%1Ö8őŠ&z"! „€(ĽüŚ…ŢÇĐĚ…€A€ňjlËǡ톩G3kĐ˙Ë_ţ2tčĐ*UŞű˛ťNíjÂĘ‚w Żß<ä˝^xá…¤řá‡äď¤ĂVqĎ‘Ş3aÂ~´@sńŮye‰ / šąB@ä ˘ĚLŃ·`w—Č-µ1eF‡:wGqDPß©2víµ×ş ,@ô˛Ě’mJ¨»•Ä5ŘĄcµŠ[ĺ˝ýă ™Á+— ľK8éčHÄĺąçž‹ó®řT>I Ž„€B  o]Ax šCĆ(_ľ<{¤gśqF4ŁŇ$Çç 7o«ÜŽM¶ôIQ0`€ůÉÆßDFćlŻ^˝ V™F… ÜËÂŐ&@€Ú|Ú§žz żÔ–§CćSpGT5§M›Ć1yŘ[riÓqöĄ9„Ô„€B !@­XVüMŃő—Ę ÉJ`ť÷8,˛ăN|SԟŠ{Ë-·Pb,šjŠ)×8ŞRôWJ•ô[† *«VŹną¦˘mvň˘u­&Łă¤:DőęŐ­Đ4H¤ť5kVÔß穹—ąá0®ťâÓ†uđ­ă,Žf÷‘3˛§KźĚĐť8;r« Ä{óÍ79€‚/$5‰Č+>ęI…€B Ŕ" şuöŐhbi!ŕŐ|ÁOG=Ů,…Ŕ-Y˛„˝SŇd¨KĄéÉwĆŻ˘ęŚ…Š›5kćvąţúëďşë.WR(ÚS* ÁMńÓQĄŽ°8{”DćĎŻ2 ˘ AW\qEŁFŤř±A1»čݵW! „€(tpBçE° ÄâÂúŰ˝{÷„;óttÁŐ2ţ|ň9}‚”UöĎXM˛őě ÇŇŹŚăË1—íC!đí¤“NâX¤l™Ę™2%ů8%§!5ŃxŞˇĄ´“w&ĺĐ…]—|†H˙§ź~zôčŃôČMiH .c^áś#݆o ČLa˙žhţB@BŤ€Ľu…úőiňűĹ1Ýôˇ^sţ©«Ďď *O»ÚěŰ»ŐjÜ{ソűÝď<µ‚ÉŹ(ü¤Ż^˝šąLMEB ¨gÇ3˘ ä°Ë°˛#„€EÜs˘ŠLĘçbuâĉ&ĚźĽW¶fSvIG÷d†S}Ił€Ň̤št„€B Ź(™GveVČśĄd‰;[NŁ#(ĎÝŠg·ś”W‡vË–-=IAľ$čż$5łyŽK#r0ŮUGı„ýúőŁěűŐ"T!!»„tŇO† B. ±]uŐUíÚµ#˛ .ď¸ cĄą ! „€s¤»Bf8MŞF0f2™„çHyDŁpJôBf82+îŃđúQÖę„lmrâ0›˛ÄٵiÓFd&1É…€B ď·.ď°•ĺÂ92ž·OVŹ=®ĽňJň:qlM™2ĺ…^€˝ąĎCĽţýű»’ۆžňZBęH5"¤Ď]»=č jŐŞ…ŁÍ$ňŕ¶ĂÂá‡NQv°䫯ľ >,; 6c}v°[Bń÷‘Z"šDLB! „€B  ™Y»v-UwÇŤGb–@fLJr‹-Řzlܸ1Qr°”nÝşŐ¨Q&łlŮ2K0"5Üy–ĚšÍÉż”ű¨\ąrÉ’úݔλ’ŽB@d­:™ÁQV /¸ä:věHa÷Ěa®Äk_~ůĺŃŞŘžNľ_Bmˇ›0ZŽ€Ŕa7fĚŽ’rS¦JöŘ-…~‹ŁÖŹ[s§k×®ČçĚ™C]!ŞAdˇČž).ůPG†©ůMěŕř(SüËňŮĺűWBB@!P¸0îłuëÖAf gü…„ Ś{ Č”-Ćşuë’Óę†ůwéŇÂ_R8Pęâšú‘ËüűĹĚiÁ Ôç%Ł‚ÝGĽ~"3.\j ! „@Ţ! şuy‡­,ď 2Ró…Ń>}úŕ„JsĆÇüСCíiöÚ÷jTÚf˙™Ó넏&P[ćFH”l˘áhŘŮz,'Ž?cá͸­Z´aÜřé~ń‹_pJ –I1ŽŞI"„€B x"Säˇ#Ý•Ó!3ř×R’¸G„C‡źx]p\>™™>}úÔ©S9–źť«mĂg°ÉÉ'4hdITM! „€™E@ŢşĚâ)kűL1]EĎ:ë,üPÉPşt髯ľúöŰo§š[˛f>Ţ%¤Î”¨›9s&ą7nLHažě“*‚7Ťă5Ř=Nx4Ăt‰ž#łÓ¦M#!…"2  Łe/łMš4!ąŻ(çôü°Ä„'Ň-! „€A S&#“)hFŘbä(‰Ç·|†H·dľÁü©ŕѶmŰV­ZXg‚ŕ\ťű€ČqüŁ·yófR 3)7 Ů}„Ď0‡ĆöîÝ›w§ÄXRµ…€B ă(6ăĘŕ>E iÓ¦n`‡ěÜąłmg«AMčE…yä‘ńăÇłKҨµçŁj Agçž{.šV^ĐpMÜŽä«RÇSţ†[-!¤Žx:¨'®:><LÔ¸ęâŘ­ŮL¦î6ŇLPĂ} ™ćľD怏1łĂ{HŢ1őě(Ô—P! „@1A S¦Ág€Tpä+N´Ź>úJď+@IDATFx]™!žŽŤ@¨ÉŞ$ş&ď;¬ŕ3ĐÜmüíСV­Zkb  ™í۷òŰK/˝™áÝy䑌Ą8» b ! „@îPl]î1”…˘‰(ęă§#ĺż˙!Ů%fÂđZFŢzë-2; —|âfIĺѨęrě±ÇRĽŹ»8ĺ¨ÜHř JcÇŽ…¶ÍǢšftĂe‚MoŽőŕCŠŚD47îI.„€B ¸!— xÁ‚O>ůäŰożm6ăŘŕ@fŘk$9ŕ”SNiذaBĽ[Đr`)±ś3K‰:&€Ů 2rH Ô…‚Ľl=^sÍ5(˘ČLqű–ęy…€űyëö ÎEä!l8łĺűć›o>đŔË—/Ç–ŕ8cĐJ¨-çŢš“^ŮRFâÍ/ĘSŁş $3…8DĽu|đ‡Ć˛íě™r/ˇŃ„ć‘?Bíż‹.şľ[ĄJWAm! „€B x"@đuźzę)Ľuëׯ‡Qą‡Ç Ž´‚NDÉL°ośš!&A2cR^ 9á„.»ě2˛Č˝MĐ×-! „€9@@Ţş€¦.B !€›Śč6Î{ť;v!‘¦KŠ1ő›ŁCoP] ! „€EČĚŇĄK_|ńEĘ’@f &Ć-îa ¦«_ż>ÖCfĚQ­VÓR۰·Ľ†§Ŕ%$Š$\ uE&L@f0…Ď'µD9äÓN;í裏f&–VycéR! „@vPÝşě"&}!P ŕ( 8ĺÚµk©µG•:j»ŽŠ×ĚŁžv®řČČ<…Vâ #ű•ż„×!´ ^#z+Î2M°‰ł#%„uěKpÇ6µg–Kě0yö̉DŤ^¸ę¨5Sąrĺä)EMI"„€B@^Ř_Ä#¶rĺJČĚÂ… á3™äÓ$ 3lřáŞăô*Bę`q»}Q&c€Šă3čĂařP“—mEε€e1=čJa&OŘNĄJ•d†ş"lâł‹:hGB! „€A[„EB!P `Ă9oŢĽgź}–” ę­ŕ˙Šcź< ¤“l¨í€ ’öÔ׸.AyPqOnŇr9ă‚8;öÉ™’4Ů…Ć{xŐUWz衢 »¬tK! „@‘A2Ă‘¬¸çîż˙~ČŚ9ĆÁ#îĂBfŕ őęŐ;î¸ăř‹ĚÜM輕ŽvGŹ Ý"c€©&“âě 3°¬“O>™2#Ƈ(źťűúÔB@ě" o]v“ľČOŚ/lذaC† a:ÍŞ.Ý»wg _ŰĹqÜ1ňę>yTß•°1ífĎ™jzřě’÷Éá¸8ˇÝÝşu,vtď»ď>Fpf%—¨3‰”¨;ţřă©ęRµjŐäg°\Ó6\ý … <(´ĘÔ™8q" /ě˘ÓNČŤ…Ôâ¤ă¸7ŠŮńěĄsv-ĎĺNLm! „€B ° `N“Xłf dćÓO?Ĺa—°{ÇCá# @fúôéÓ Av OęŃď’ŽQ‰±”…Öě2óÉ'ź:@ĹŹ2cÜ|Tů€ĚqÄ:t 1Ç_Âč–B@yë\4Ô  :RE^xáüt8ąâH¤™7{ÎÓÁ{ôčÍ…)šä Ż—wé=sÜÝlÉŁĘH µě˘“;kÖ¬ &xăz—Ěśě]ήĹçxóÍ7óPěi{:şB@!  8śšĘA ^˙裏2“OÇłYOH©Ż”¨ŘŔř ÷¨…wéw7[ň 2›¦<Ţ:|v™‡Sbć<é„ţá0éĐ3o¶şB@!E@Ţş(&’|FK…ĘŁŔk!¸P[Ž$c:aZdXP$jKH›·|P˛LOč]zCÄÝ Ę]ˇŰvmš,W Ř™â/<e¸ ^Ž koŢĽyŻ^˝z÷îŤŇ<š§¦K! „€B @!™!tÁ‚Ď<ó ÁtË—/_ąre2™Á·…W‹S«§ö.+ľqlEI…+qŰA˘·\‰Űv-CfđŮ‘+™Áa‡çŽ2\ŻÍ*ő=8ď Óľ}űÓO?Ý>š§©K! „€Ĺc[(Ô6i©ä‚;nÜ8¨-!uđ¸ÉáϢ,ą˘-[¶Ä«E;[yÁ Ţ8z7‡¨<Î,DÂĘś‰›ćň?#;ž:8(ĎÎgÚ´i$–îŁŐ¤˛wín˘·˘’enÁY!©xŮjćóf÷ř$Ŕ€9|Ęwä×N¡·8ěŇĎ—‰NO! „€B —°pCf†>ňÇUw9WŠ5=Á¬qW‘жm[Č dŔsŐŃ×R ¦Ě-OŮ»Śv· Ń[QI‚2· ™ŹQf‚óĆÂFlÔ¸· 3”ÉđˇHŽKś•A} …€B x" şuĹó˝ë© Đ5¸ÚĆŤ'MšôŘcŹ‘ o‹sT1c"éđÓqPiˇÖKSD!a#×>°Ń4—ŮŐ7C`!Ř1[–=e~%†Ě ŕ€Ď.KÂиę¦NťĘöőÜąs µŁ"5%`hŔ•ícŞ!„€B@ěX— ©ŁŽGŘ2„Ő™đş2Ăb ™Á3Ő¦MütäŔâ§ó椞Ž%ŮR6Fč’d†r{¸ę 3¸©gÂ(DĆ‘ »ł¤SĚ›7}Nź0Ő‡ÁÇ>š÷ČşB@b…@řWw±‚@+ň ¶ť_{íµ^xaôčцĚ%3Î U7`ŔśS;;í`Ż .AyPTF3ŽŕŤ…q–ÍÁř9[cÔ¨Qd”«55ţ2ö±;wîÜ˝{÷ë®»÷%?ě]5„€B@ĽF—Ó¬Yłn»í¶Ź>ú1Öý¸ĄßĚ„Ĺ>Ăą¨oŐvĚĄAŁä™±Ă±ł¸fÍš·ß~2tŘŮ÷ÂLŘ|ŤSO=őꫯćô‰¨űŇ*«!„€ĹyëŠĎ»Ö“ ŘP}őŐWyäNL3qd “Ă1G<U]pK±g ‡ÝF©'‚Bc9z+*‰Ót-Ó+Žŕšîéq5]ăFΆ<ĽŘmć ą 6pś×Ĺ^‡[ôP˙łĎ>›„ŠŮqÔ¬UPC! „€Č X©‡ F<ÝÂ… 9`8˛„QXŻ!0ŠxËÂ]´É ŰŤ0ĚP–—żřďâ¨ŕRG-©Đ~ýú{ě±@„<RÝB@˘Ť€ęÖí÷«§+X@ÝpĎqŢ+ě–Ú.Ó¦MŁX ů# ł¬[·năĆŤ‰ăÔW¶[ńCąQu^GXťýx·˘—V“Fô®'ń”Í%:q}­ľg'xé)ó€pV8=qsä·ňÔ°[ř.či.lŘłc{ź˘9_~ůeőęŐá¸Ę% ˘-ˇB@\"@<‡˝BfŢ˙ý)S¦ŕŞ‹«Ńf"E”äŠx@fLńŠ‚Cf,Ą‰bâń“¨‚+ń”ą„‡Ŕdřp’ ®@fř¸Mˇ­ĚK’[•lĐâФ;Łú’! „@‘G@YcEţë Ä‹QkŮ”¨{ďÇU]‚tÍL EŁęp‹-(€ŇŁGčšű$–şX®¦i[}.“»dWÓŐO6îj¦śʇüřĽňě¸ä6mÚ„Ď.î÷;üś¨‹”c:8­‚8D|v•+WNř=EI! „€B Önłăˇ3®:üt %ęXĘ9 ŠŤF‚é(2ۧO/ÇÓdV`çcő‘$wI_Ówő“Ť»šÉsŔĘ˙řÎAę¸4qd†}ÇŮłg«™aĂ’ş~¤ŕé™1ŻI…€Ĺ e«׭‡Í7đÓMź>ťŞ.'NÄm‡ź.™áQŐ…¨ş_üâp<ÜvŢĽăúfKžGĘqfy„ŕ­ 0ŞŚĎŽD~PÄÚCĂ»„ óŰ˙&źßýîw ékOY—B@! „@š°1ƉX¬­öĎXÁăqc?^ŞłÎ:‹#_‰y÷F‰ë›-y)Ǚ傷‚¨2éśh?bÄÉ“''x9éhČ çN@fţň—ż@fä°óľ?şB@yä­+ňŻXϰ}úŕľůć›Ë—/'µŁN&#.Śs$§#U„mXŇ(ôą•&A4FňNŮÎ$nď)‚jAˇ±Ě-8.č‘ëĘśˇF¨ťgÓ˝äW?ęׯÎ9çPĘšg˝ŕDWYm! „€B ‡zhĚ1l›qx[hqK6Fđ4AfzőęE)üMčMňÎYśµ <(dÜ <(ŚS¶ň¸^(¸ź ZPH/#ÇIg wĄĎ¸˝6§OŔgŕ0çž{nďŢ˝»téâ'zúşB@˘„€ęÖĄ·©g)XPŐeÎś9/żü2%ęČk žZr‰:6N›5kĆ&j»víČ%°[®÷Iç9Ý.)ő3¨ěšrŰ)ç€B‚>·14´7)®° 6“’´ ć· €ńtP[$A‚]yĐHPg9Ź”ăĚĆM#NŽ÷Ťč9śqđ×%K–;šqř4[Ů”¸>óĚ3Ď8ă Ł–aÇu‘\! „@±EWÝâĹ‹oĽńFŞîOÉnńÁ1G‰şSO=•í4|IČă–űlÉĘAaÜy¤g6nqrěŕ§1ÂdŘ⥝`#ä´Řľ}{^ ;‘)ëĄĐE! „€(¤Č[WH_ś¦]ŕ0|ëůçźg šúÁ”¨Ă—„G)a˘¤‡pÚW§Nť ^¦D]Ô…$mžĐ»ôFŚ»”…Ě–ÄÍńëĚŮd&1.ŔÔaăšKî —X ž‘ż9]]„€B@%đ‘’IqşŹ>ú&C#yßęB>&:ńiÓ¦ UępŐĺxIĄŁ÷É8¶®ý\wMąíĄ;¸™Ź‰­@Âdâ’3`/D>B{ 3U«VE“ľnŢqć .B@!PPl]|)šRaB.—ť6mÔöţűď§0*!¤w"ĽŽ;Ž:Š*l8›Ľşů‚B:FĺQ‰µw+( #Ć ăäq–ŁóŚÓ ĘIŐáóé§ź.Z´Č Ş1 Ěä{öěÉ[ 1–śn0ŔNI ! „€EČ ë&瓾ńĆňŇ$3ýúőŁDŃłJKpPŞAyP§'Ď–‘Ś(›/‰gĘ»4:Á9S2Ăî/AvlCňjâúBffdÓ÷˘‹.‚Ěđ ”Lk\ŤĽC€šÔ?ü0)qo'ď†N¶Ě·‚_W]u߇dMÝB ŕ# o]ÁGšaÁEjËÎóí·ßN<i ěs&ŻŮP(ňD:věHö+±]xXSÍăĹu ĘBěDĺQ‰E3x+(Ěĺ W7tň„= řIŤó”JĚD;R7Đv÷ ©e/š’믿ľK—.Ť5ÇőPŇĄB@yđAfpŇ}ţůç˙ĘŃ)WdČ̡‡ ź1"w»+Ř7}!hdĺ”Ó NŢű Ĺé9!3DĚMť:uÖ¬Y9RîĂł`/!3€O&,>»+®¸2Óąsg‘‹O5xG·ÝvŰŕÁóČ~îÍ2·[nąĹţĘČ˝AYB _Đ™°ů»-ôŕš4iµŇFŤ‘"–ýĎ„§b›‹ #˝zőjŐŞQ]\â*ŠŁk®»ĐşĘVfPî ]knŰq•­0#–FÜáP°#Ұ·l#8a#´:Ör*8Ş/תU‹mO~~Ě1Ľ’h´#Ýq¶;Ŕiwř[IIćt¶K.ą¤FŤ¤–¸ăŞ-„€B H"@dĐŠ+^{íµ?ü2C~űŽ OJ©ŻÇ{lË–-©˝[śÉ (YBŰRKfÜ»¤V9h„»|ŕ3”6®WŻ^×®]Iŕ€Ěđj˘…>g+/7ë?˙ůO*«ę™©[·®ČŚ{F.ś¬ŇěW¨Ő¶rĂĂ2b9SF¶,›´mí,sĚž\óuĘ”qŮB`# oÝ>\Ăz`EmLÇi¤xëŘů4I—qß‚ŃÚŞ.đ'w Úöb5µmŰ€ŘvÎAłĆT.ŤÇYÎĄY3·Ü§/ţĐ2eĘP÷*1TáăŇbČlńĺq†ď–?ŻĆ/Âq­jk: —$B@!P4`ůăL\<¬€cÇŽ5§‘Fw¶ěĂB] 3¬ŹřŹ(Q™!?ŔŢuŃ;ČŚ|v.V9nóöů—iÄŤs̱ټčh&‰eľ`擳QfŻŘ˛~ëÎhßR%hPŁ\Ýje‰Ţ‹Ţ->’áSÖLYĽqŮ;–oŘQ©\©Ć5+´kPéĚĂT:©|äÖŻż}{ňęů«żš·ú«/¶ěl|Hů–u+µ«_ůŘNµ˘xnŮńíÔ%› ¤5+Ô¦~ĺ⯞ä­Ó×@¤‹)“C‡}óÍ7Ůfź3Ú‹Mü0Â^4|ËY2íx)9_Ţ)3cÜťšş·ŇWvçŚc$(4ُ·˘Ęî¬5ÓŃýťž‘đ—X€ţýű“ŞLµfŇ–‰ł#aÄíkŰĽP^ë[o˝…Ú /Ľđë_˙šwWłfMh®ŐQC! „@ˇF2ĂöŐ}÷Ý™!ꏷÔzOG°9Ĺ"N=őT*EŘ1şv›^AyP~PĆ)ŰA˝GHiÄŐO©Ě(V?÷ĘÖ”™Ľű×÷Ś­_ ’{Řa‡˝÷Ţ{T˛ă$·ŻmÓÝ™÷ß˙ő×_żúę«ÉŤ%R‰±˘7ŔÖ8»IÝŔa—c;ű #Óc’|yŠĺă~oł5ú=oÎ}íÓ•q]J—<ŕĽ^ ˙|FŰ+§“)ů[w~ůŐޢCŤk–Ov‡ejĐ;Soú㩟-ÚëGűIsŤ;^™ý§ÓŰ\Ř·ńO¬˙ĺ+ôÜĄ_šiź…{Ó–RrČťUů祇vlT%«Ă~űÍYąőÔ;ÇIű•ÇÝŮß˝«v‘G@Ţş"˙Šő€ąEJ´|ůrś8śúJ,`NĄ†]Pv2Í®&®"B´¬«—„ąkgPî ­}ŻaŤ¸ĘV7˘«ě´—ÖU¶Łcĺ\ş·\ąµć6┍ÜíîiÚKWÇZ¶w‘X„ŕOP€Iq%†Ž8;Π€ÄXkńwP~ĂÜsĎ=0]î Ađ»ňZ]5µ…€B@" .ä°™ˇ®+K!űX óç>K'd¦QŁF”‚u÷éĺ. ÁĹ+w•ăF *[aÜygŮ18íäéysłĘ4ě-Űpí[Mwá!ś&A–+Ü’:Ľ®™¸ÍcČ '˙őŻ 6ŚĐĽË.»Ścµ”4ŕBťÝ6ďËÄÖÁ! ~l“ä;Ă'ř5Ëîłőżý~÷ÓŁ–Ľ1aĺ';¶Nµ˛AťL |wÁ?ßšg¬ŤąăĎĄ•©QŇ´łxí¶˝í›ďúk7sÍźíţß˙.î×ÄUŘ˝űgÝ=nÄç{7ŹĽóüW×<¨ a1D@ż?‹áK×#§‹hdG’z€ďfĚ1Tu!Śëo¨-ě>„—‡ZuÔcfŤt™Y\ß”r—˝匬ľQł4Ž©¨ý|™6ݦ|ůňĐ\ö–qޱ#Ť×•ÜęĽD‘g†ä8/\¸~ŇPö…9ś¶FwVí%‰B@ţâĘ٬‚Ď2ĂÚ—ŕk0d†#›Xř 3uęÔ!°ËťWyć·‡SűĎH>žóĹ˙útă¶=©ľtĽâˇ‰Ło?¦TIýܰ€߆ĽuĹ÷ÝëÉ>}:‘t=ôI&Ë ÁU‡ś88é¨ęBŢ+Ţ—]™%Ę,4m¶»tYyPTv5Ó±ě±ĂąB×5îjĆ)[ą«l-¸f­& >V?e«§löv>Vß Ç%‡¬áQĄZ6ŮáÇϙ3šëôŘŰDź1ś—!ć-}ôŃW]uU xËQ}I„€B@ŘkäP‚;'k+]2™áŇöíŰCfXďđć°\˛şŹă]š[v‘ĺŇ*…(ĺAaś˛+·ĂąBÚQą+ɲ;g;bPč Tö¦ç]ŇĹ|Ś}{2C;Ž=ňČ#)f™aků'ݬ˙5úĽ}sĹ<€2ĎÎFMfi«ŹHň1»äJń6öŃ;I3猌JY“C*SśŠpAďƇ]˙žńL!śżz›ë­ŁÚÚS#Ď^ą…Ć®ďv·¬S±uýJ§vŻwL‡ZŢdľůö{˛\ÇĚúSżpH•2 .ÇA §vŻ[şäžłf­Ř2rúşÉ‹ö:ČĽ0féčYë±f˝]ň0äĂ%ř°hívş÷iWóš[üýő9›·‹~ýĺ®=©%Ť7'®3{= >wžßń“y_>đîü…k¶ýö¤ż<ş©‘oŘşóˇá f,Ű2{ĺÖňeJviRµs㪎jP©ěŢ2ÖT¬3šü=ăđúÖUÇ%řüőÝó±Q´đK«‰ÍvďýżÓv *ż?¸Ży:Ł@0ÝČŰúvÝ{ßý°'4dÖŠ­O¸řňţÍlw5Š-ňÖŰWŻ @ʱTÄÓ‘*˛rĺJh.®ş€ŢO"ÎŘ"V‹ó^5jT»vm 0ł)m¸”el4X)-Á2—?Čú_«Ź˛•Z!’ ÜÚ^^Ăq•­0β'÷lšË¨WâZ“§iÖŞ; âäŞE'L>lĹŠqşťqĆ‹-"ČŽ3$•رÜ—1|H6™5kżdHv&ô înµ…€B@ä „Ő°ś=÷Üs¸ę8P‚5W]tM´sc!ă( 5ö˘¨ÓjJÔ™ŐÍ]ă°ŕ]Z ¶aÜᬵ ÜZS^Ăq•­0β'÷lšË¨WâYpoą3IÓ˛;˘ŰÝ3ë]zĆÝ»ĐN¸(ŮĘÄm·zőj6›yű®qŰ2C>_LöđĆŮąäđ áéĐX‹Rr`ůŕ ăo˛fţ޵“Ě»yů…łĚzëÖlĘúĹ„ăěŹC¦íü.«vŮřďů1Ë®>ľůŕAímÔŘÂ5_ üëŐ›˛ęŇlűfî32F|wţ;˙ŻO…2Ą¦.Ţtë‹3\<ý`—µŞ”1ŢşI ľ<çŢńö܆Użţxî†g®§şÜş-{´%Íxë&,řňÉ‘‹Ť©Vu+‘¬jÚŰŞ@ÇQ­”ś31n{nmŢŹÉĽ4n9OôÚŤ=Yů˛ü'źÎ˙rűÎďĘ´÷,AîönwđĂWvÝÓwżý\÷ĺ„ůYž»?źŃĆuŐeŽÎ8§g˙|´Ô\ş>A#Ńßâ‰@Ö·­x>żžZ ¶őŕCTť©ę‚_&!ĘťôŇŘ“$ Á­ę’Ľ(‚ĺŇ,FOî’ţ ňĚfĘrÔ¬™RF¦˝/Ť3a†s§ÍKÄ[ÇE·KŘ*^9ś¶Ń-S$ł#7–4"~ÉP)†1dčţk’¦B@;ľ̉8vďşë.IpŘ•%B@!°/ ś…läČ‘Ź?ţ¸!3î*ť 鮸çŽ;î8Ȍ묱ë¬ŰÝ ±ăĘŁf‘Ä)ĺAaĐlv-»ú)ç§7=#OǬµě*'›Ą WßHĽż®¶ů°…ř—atžľą„ĚŕÔŁÚÉłÄâÝtÓMřj)ľT–ĐC€—’ň˝x]ňĺ2OçI¶Ç>X´}gÖˇ¨íě9N´Öżü7«:ۡM«^vLÓK•xíÓoM^mpxjÔâ+ŹkÖ´V…Ďmš·zŻOę¨Ö5î<ż±rdŞ^ţĐÄŻwíńľ źşŹް—ţp䏖pi,ÄÚčŕňí9ýćßoĎ·®şR%čßéµ+X‡Í(ÇýµN9bĺŕCŤx@ëŞ#u÷śž ·óÝsc–qĆ+w Ů#·÷–łŰI×§mM†0–‰é{|Ä"ţă˛UÝŠG´ŞŃżc-ţs˙mşnÍ5b5ĂklňwţęŻŕ¤¶¤•¨Q<·®xľw=ő^đʱíĚéź÷ÜsĎÜąs‰§Űľ}{˛«j۵kדN: J„ËCî˙Űő;(t•­fÂËČ–‘¨rTbÇŠ»eĺîô¬î®ÜZłŤM{ËZ°’¨Ůč­¨Ä šRn‡ł“Ś6ŚŢ,ů Íš5#Ä’ě!˘G*cúË–5§O 2ä„N ^LTM! „€űx ·Ë>¸`ÁöśRî;KNÉłcŽ9†x:!qŐ×Ó ‡˛ňôY…«4b…čeWb…Ćš{+–Ť‘ŕß”–íLŇפK:ĘÖ˛«ď>ňŕÇçUrçůBh'Mš™ n@b&Ă $¸w9NŤ(Î;@Y …€Aŕ˙˝0ý®ˇshűÝn\W.,Ő+Ł É‹c—Żů)­µcŁ*ĂoécR>©1wé^ůd:”oătÔ.ď:}Y–CíŔ’%ę×([±l©“şÖýÍ [He5ö9,µ^őrüG«őÖ޲ĆQŔź…Íhň÷® ;]rt>c÷ą÷Ž˙ŕóµöV°qó™mĎďÝJyÜ%°Î†ăqvÄÇwö7éş»Ő;ňOî/Ľü˙ťŐ–hOţ¦;ˇv‹ť`ŤÂÜU_ńß#7Ż]áşSZť}dC#߲=«:vťj±Ţ:*–,±?§LĐ ä¦í»ŞWT™lańý+o]ń}÷Ĺüɡ)pYöźÉÚ'µqăĆ„lŕb×RۨQ#hµ](îM´<,%ݞš4¬˛mDߎŐOб˝r¦L÷”Ć­ĺ”Ó¶šŮ2›wĘf łâ!“Đ\JÚqE|pŰ‘0ő޲) P|pŘ‘=ÔĄKľ |5„€B@ě3đÓqzĹéX’Řj‚Ě$W©ĚđiŐŞG-QĄŽŞnTť™¶]+łË LGzŃöMß23É™2C»oÄZvç×Ë*§´ějfK9nh;g×2ĘŢĄU3 CfŘQ&üźŘIČ _‰č$d!AvśŁE–5y•+ŕ!©KgüçJlűî‹:›ďäĚĺ[¬đ7'´p«łý~`+ă­CÁ¨™2pFäŚuM®ÖµYUf& ÖH¶ćlź1ËVŮŽE/óÝ€Ňđş śä[Á](ŤGf˘‰MkÔČś…ĚD÷ˇ­e5„@Ƈ”çĚBçĚ­k˛\Wmë˙,·šÜŇěoÎEĺčôŹl] <{:ľ*iĺżýö›[Ą|éKú5ąá´ÖdŃFµ’Ą_dąŘZţÜgo1:/›Ůjĺ¶Ń§í!¶MÜ^{‰›/ÎÓ·~óŢR9űÇS[óߊ ;>śąnÂüŤćoXúĹĎeć ByžÝ7Ďn/Mcý–o8’bőƬÔu" ]_§§ŻË‼uĹç]ëI÷"µ?~5DĘBI]·Ş‹ĄDADŘsćäcŹ=¶nÝş¤Ť¸ &÷Ľ*hiÄÉ3ŚS6rďé‚Ę)…ŚkíXe+Éě„Í3Zăv8w #Z}k!Me6ś©ňC%‡čń›‡­f~ŇuÔQĽ}Şâ˘ý裏(ŘĽjŐ*îšIš)ńĄZ˛d )HV¨†B@ĽC€Ž2d™gžy†#Xpµ°l%ŹH‰: łvěŘÇMˇ#3a噇7p…n»s,Ăś•YI¸č¬Űü Î2WŮk—üů ÎňŽ]ا1®IOß\զƿޚ÷ěĄć’ŚÝłŹĚš^ăšĺ˙qQç©K6q€†Q OoQrŤj–_´vořŢ}ĂćŢ|V;Ł0nÎüë“ożßM ^ął<3Íkg…ăMý-žd}'Šçóë©‹ ĐH-;ŤăĆŤŁŞ ¤$ąŞ t ä†ÔW*őBwŘ”vi“‹›K•\y°ť3ecŠľqs@ÁXNPpç“eÓ=Ůľ}:”Ńô.Ý ĐNľ»o”q·Qâ‡H:âéČá7ďšW߲eKNUc/š‚>ćô‰ňĺËłóĚ‘ÁŢÄŐdűÚęR! „@Ć`Ĺa©b‰°nN±§ô&a]fĺ2+E<5jÄţSéŇĄăôí˘§ŕ>Nn”é›0Dn,»3ڶ­en%LŔt´Ęîl˝¬f¶ĚfVٸŰŘt4”†ŔČ 5=`2|H©QŁ—pÚjŐŞAk92Ř<¦ý‹§^J·ŻŐWCp}LŻş˘{‹ęVíŤ +mۨ=úţÂŐ?žVÁ?"| ¸lăW»HAýÇĐ9ö‡iK6'xëŐĚňÎYůŐä…»6«fF1‡´ÚS6šŐ®`u*”)yb×:örńÚmŰŞŽwP©•Ę•˛Ů¬OŹZězëL—Ę岢ülűŘNµ¬·îŢaóŽ?´őďĐ/{`IlǢ­ÁÇYśĄk' FqF@Ţşâüö‹ĹłĂ<ŕ˛#6ęťwޡ’®©ł¤\ ‚R‹§¦WŻ^4lU—‚@ČÜ9¸ď/ř8žrPÇ5âę'+§Żií»]¬08ŠŐ ޵}M#gĘôĹOG%ś¶K—.ĹŤ»eˢ ÄEËA,.ZSŔ…:Ü|ໞ·Žb/7+] ! „€Č jw°`Íš5ëé§źfß÷ kźŕ(,ޏęj×®Ťk†uüeE3švÝä2®»µ™GĘ®Y;–™·˘łrőŁw] ékš^ŮŇw•ÝAS˛ĘÁ»nww&é([Ët„ĚđŠÍwÝh8‰!3xč¬Ěŕ˘5TNˇӱś±îßďĚ·úé48ÓÖ&«r|ÄŃjőiW“Ž#§Ż;űîqćđ‡R%XúŘ@Π°úŞG&Q_ŻAŤrüźńęM_?4|á¨ëŚ…óúµŰ[w仟­6…í(Ţ7đŽ1<­őI]ë´©Wéďtşň‘IÖ&Ť‹ű6iR+Ë{ho­u±BÓ ŞńĽ^Ť<ˇ.‹ňÖ—¨GEÇŰŚ¤ľ>ůä“4 µŤŐ¦ĆA‰d śsÎ9śdĎv´§é’K•‚B:Fĺ®k!7ĘŢ =łA˦‹™LÜ\;Ái»Â8#Vî*›ŃŁĘVľkÄĘÂ8eO+Ąž nÜůóçă§«^˝:ńt˝{÷nÝş5Żžxşč$Ł&Kć{˝%‰B@Ś ŔBC7LćŮgź%ś5Ë]ţ˘C°JH™éС~:OÁ훳ő4hQ‚ň ĐSöfh.íÜ<ĺ <}ˇkÜťrk$(÷„ĆŽ÷7hÁ QvŤXyP§ěÉńá‡÷2C˝N¨gs±Oź>íŰ·Çg—ćőL€ďUAĽÇŃĄČ.U9ëú˙ż‚ŽÄ‹]ôďO˙ôěçDŠ­üňkkŞyí ôŮăWâěWë­»ú±Ď†N\Ĺą®ś»:vöVąďOŢ®˛f7ń«G'á’<¨=±{·ťÓţÁýu[vţáé©¶o¶ňđű“[ţcč\zQśî”;ÇÔ«^Oá gć„ŃU(SŠě݇Ő}sŇ*c˙…±ËřŻtÉđÖyUíĐÇ˙hÔˇ{čĘĂÜö‘ąäŮ›źźÎćŇű»iű.ęúE öq&/ĺüC<_ ĘÂd8Ôµ{÷î.Ýîqótĺv>®Pm!]p˘ÍX¶eŢę˝y'„ąŞU8đË»?Ô•Ç6#[vę’ÍF(6W“ö€Îµ{µ9Řűµ?䯯Î6mśVü·|ĂvĽu‡5Ż~ËŮíţňß™^ś1±f6ťÖ3wyĂimĂ´Ą{çăzéŇĄIŐż]ĐŃô}čĘ®¤µşUö(<ç™=´iŐţ˛‹+Ä;ů÷ ;Ýú ŮpĺŃökź®Ä×ůÔoş'‰í(IŃC@Ţş˘÷N‹ű‘@UütÔţÇ#3oޗ핾2šüÂá›Ŕ4…~H&˘Ş ˇ”5kÖ$%„ĚĽzÚním;śB@! ö1DmłĄ„źo‡@f(Z—PV ęBć#ááxëš4i¢V˛dI»\z“O^=Ý^ɚͬ˛±ćÚdĚÎ![svg’0 WÍBť otlŻ”šîśŮ{&9WUę8cVĎ,d†-gJňę ©łĆí|Ô9@ d‰¬SJÓě^§ZŮŃw}ă>ćĂ%^\oŹţŞ[­*eŚĽTÉ^ýcĎżż1‡ęož·‹Ęqřň~wr+N’5Ę8Ë®=©ĺS#•ć™ýĂŔV¸ĆţýöüéK7ăĹëܸJ˙NµĎëٰÝoß±ím”ŘkÍł`Ő>řżľľ»ŕo̵%ä¸E†,CîjŃ —g|vôŇ{†ÎĺŚWĎÚ!•şńô6ç÷ndő­u|çÚ7ügš *´·8b‚ĂÓ×™ňvÖÁѱx낹Ŕ¶—E@m"˙ĚzŔ˘Štłzőjލż÷Ţ{9ô  Ô6ŽAeLUŠzśvÚiuęÔ1!uqú7ď®wi± ĘBşĺAaP9NÓNĆí§'wű ćLg6ÎZpzAaÔ2j|řťCě–U]8é•ZË”¨#š’˝h^}Ęş)S¦\qĹî iăň#ĎřMO®K! „€9C2Cę+ĺn˝őV( Ű,d|‚Ö 3¬hÔńŔUwâ‰'â¬á„4ăô­WÁm[…8#ű^ŮNÉmö–iÄÉs˙,q–ăäîĬŽmďşÂč„é‹c?;ŽÄÓU™˝jËdOÁeľ ĐĎŽwɱZ'ťt’'ä[„ËŹň l`{·tiSď­_<éwÜqÇK/˝TŻÇ%MŹ.Xé.y÷ĘOź4hĐM7ÝÄ˙-đőŔ{‹7ß;pq6aÇQ­;żÝMU¸Öő+U-®3Ăá ×n[ľaǦm»jT:Ô–u+V* ţćŰď9jö›o8¨Ôµ«–-wx´“[Ą÷üXĽn[çß7ďŽňpĎýîôżÉ_ďú~ć­Úş˙ţűµ®WąeťŠĆfÔÂ÷?ě^ş~űň _čGm;2y9[–ł/86ŞěJ¶ěřvÁęŻŔç‹­;99—HŔu*’f»aëÎS˙6vă¶]ďÝÚ—Zxnµ‹'ţWĽx˘ §.Pqăî»ďfí\µjUĘu,ZDŐťwŢy;vÄŰâň'w=sĺA”┭ܵ`…ŠĘ] ÉĘf2¦KśfÎ&ěZ6mc?ťéŮ™¸ĘVµtäÉÓNÇ‚7"ĽŠpËI“&Q·”Ďl·nÝ8P?Űŕ ! „€ČxŕËÔ‡(@IDATęx°lAlÜU/8ČĚŔÉ‚¤Ş«ě-…ÁľV§lĺéX6Ę®&ö­Úî­ <(´“t®¦k9NŽŽąĺÎÁ Ťe÷VTٵŐŚZ0ďŻ5’Ž«ŚôqÚâ¤7n!ub'IáW¶śŰµk™qő˝qu)ö=¸Ňăż”CSÜŤ˙Üdăş”)]’ŠuîÝţGmŢľ·~ôý—u5Fř÷âÖw«źM·5ćŇś9ŃsÍjWä?wJé´9+–^ţó”qVľ}sďmß|‡ Ď»ĄË≀ĽuĹó˝µ§ţěłĎ¨°ű裏âŽa§‘˝G—EźÖTu0`ŃU&ůŃĄ8n_+w…QFb•ą´úA! QyTbŠ»eĺÁáÜiXSnĂvŹjš[Ö, QŽ3bĺîîTmŰjzsŽĘ «„Ú˛ů̇3Fř@mŮyĆ9Ë´ ĄDb-'4RÎ*ˇŻn ! „€H‚éâfß‘ŕ)âÁSşęŞV­zÄG@fČ-bd¸˘Ëz†qĘFî.âqšvÄt”ăŚXąk$8m«É]W9*ç.çŠÂżbĹ vŁŮ}dÓúŠöČ#Ź$E ýČ)3;\pn B„n݉ 6š źú·1‡·¨Ń°fą©‹7ŮrxÜ:ăđú…ë‰x¨B4aM5OHë—jžÎ@Ć…@Ž0Ev!µxë¨ę‚«ŽĐô„Ş.p r9ä‚ިęBť22\b”ÎLâô3Ë~ÜQ2bŮ5č>fFŚî1ë4C¤i5‚+a·dÁkŮ‹ć 4Ţ5oś-hvü°!!eę+¦9˘ ©ÚB@! ŇG€…†˝%¦ćÎťËÖ# Cf –0ň ­b÷‘Ą-ÍÍ›Rt‘5 ăzR^zCä޲g0ăĆ ;Dî'lfčÚLÎŚN N[CfŘt$W€“Cxď8j!3T©ăŐăĽ36ţfęA†Đ-!/\JëŹçl0ećľŢőĂČţQ”śëÜ8u|_ľL^ ”Č[—")P /°–YłfQŐ…u´ ©‹›+<‰B¸ę¨ęröŮgsZĄ\e—Ǹ¤ĘĘBׂ׶úÖ VH;(w…žA{iŚxšÉ–=ekІíHêن˝‹¦ş˝<9—ŃOJ#™µŚ»WÝš5kđÓ}ţůç¸ę"Ť5ęŃŁě–6)«şDźB! „€G2Ă?ÝŕÁˇ4ÔK&3ě3F™9ůä“YŃŘ€t§”r=Ť[‘]#nŰę§´LŻ ˛kÍm•­Íč®$hĘôЉJL÷8ąkܶ㔭ܝžš)Y#ÁFPk8ĚşuëŘ“Ća˝!ŚŽŁ$Č`Ó‘D‘™ ž+ş6«6ě¦^˙÷Ṉ̌sľđĽfĺţőËCt©íÉu) ňÖ˘—Ą©îEC†ČO<1qâDÎ~%ő•˝G—$E‘b şK—.8k(đÁ¶$dnäv R%ěXyJĺ ¦kvĐHPč*[Ë)…(đ±úÖ˛•p× Ôő/ŤĐę»ĘVč±ňĽS¶#Ú±¬ÄLżćß{ťKy¶ůXę|<člŻ^˝(íAâe>¸ ŞąBKˇ\ËVf:r× mŤXˇk–.VîŤh­ŮFś¦•»–­Đő.­MÓ»”…žA{§śRî>‹µF.kęąĚž={Æ 0]B)IęÚµ+żm8‹đş4«ÔąfMŰ 7tT_! „€ Ŕ^FŹýÜsĎÍ™3ż IŽÉK ě…uśŹ™ˇîj:G ŘőÔµl…Ě-yđ‚F‚BşÇÉÓ·lŤÄM!ě-Űpí'Ě!z+*qMyí8ĺ”ňŕ<1™áË@%É_|ń–$ş¶lŮ2ĂiżđXłďčM#ÍK3hÜĐi‘š(p‚ŞQ-ŻFłĘ ňÖĺ=őÝwŔ-•˘DÝ´iÓ&LđńÇSä%ů4 ¸,ŰŹ¤=včСU«VĆYăr—KąOâę¸ň4ŰydÖŚľďŤç ¦śsÍ~÷ăvKfFČĹ8żg¨çÂ{§F!ÁÉU]r?™4żRB@bŽńt+W®\ľ|ů1c 3”¨K&3&ĚńJś8 °,#EŔ]¶‚‹, »:9Ŕ<ŹĚÚ™DíçrÂĆrÔ¬‘ç‘ń šĺk@N4n\ »Ź|0ÇňŢ ™Iąĺś‘ůŘw¤†B@ä/ňÖĺ/ţ=50vqŐá§»ýöŰçÍ›g6ăzBÔLU<5lD~řálEZe—ĆĄä4qĘ)ĺ)-3cÄŐŚ3T¶Oä5\#Ü2ö]apDWg#VÍ6P¶ĆB;Ϭ{i-xĘV´ŚÔ–ź:ä‰ŕĂĺ‹A‘sd‹PŐ…‚>ś%â”Ý6öłŰEúB@! ˘° ô˝cÇb¦ţýďs48h˘šV™Á1עE‹ž={BfđÓŮeŃ6PNąTĹ)§”§´ĚčÖ«l…ŢôŚÜŐ´mDŤ¸’ěZ¶}iŘ Ř†Ýč¸BŰË.:[$qĘVg™/ě…Mhq·Ś<Ą‘¸îXvűţ8ÔφsďƱňl)»C[ ®křp9>Ź”ŕÔWR_ ©Ł¤ ąBD"$ÇÓŮgqg•,´wŐB@!-Hw]°`ÁC=™ˇľ*AáÉ®:BęXŃ DŐ]V7|7ÁĄ9¤”»Ë\î•­×l¶¦a-­Wn…FÇÜ Q°ň VÇtÍşhDZr×”¦c$¨Ś5|¸Ô.$3€/\´„RRÂ2Cí]N´7łMţëÎĘj…ö®B@!PŔ·®€ż â;=łýţűďżüňË‹-Z˝z5n;„ Ŕe{÷†ŇTuˇT™QvÉJ*ˇfĺ®rÜXFŮŐ´ÝÓ1hܵcěG%¦cśů?9 ®: y°ó\·n]JÔµmŰ–2ěLćr®–]EíäžčŤçެ™jŢ÷,3a$ąź¶g–§ł‰Ü¤ľ’-B•:>ô%93Éá¬4˛ž‰Ş‹ľ2WgÜŐQ[! „@.€ĚŽ“něر6™ČvL 3PČ ;ަŢ.ţš4㪒ç]dŤ~.WĂ<2kć¶ďŤç ¦śsśY|¸|=˛ä{RřV@eŮn$ńW§cÁm^kśŮ„.ş%„@ÎŕźŰÜU_™ľĺ*YżF9kç7ŹöÝ{BIšÖŞ oť…EŤ " o]Á”©Ü"Ŕ˙ÂWpĚQ¶]čwŢy“Ľ 7"Ý•}Hv#IÁOçmBbÓĺO.ż ĘÂŕąš(¤´ŚŽéâj-aTŮŃ5'*…vÂĆŽ;˘;CÓ—» oulĂ5˘ŕĘŤeď/C cľxčřŮCę+U]ČuĄ8]ÇŽ©ë‚«Î{őž‘”—ŃiD%)ŤHA! „ {K2ďż˙~Č ©Ż °°Ěá#<śµěŇK/ĹSC„¸«Ďz”r‘Eß.[qËşkÓ¶ă”SĘípÖT´aŚxšÖrś;Ţ-ϲµ`äFŮşÝăä®M«CĂöµ 4­BP‚+w-۶±Ś_6'NśHö+gd‘Â~3q”ýúőĂU—fkÖk§zu)„@]ßíîqĂűćÖqťk˝|ÝQA5 …@^ o]^ *›9D€=F2H}ĹUlj$$»ę 4PŰ_ţň—$Ś*Ó5t$”X˛Ĺ]5+ 3˘lŤŘ±¬„ź <(ô”ą´Ó¶úV˛Çt*㮲µ@Ż Ü i ě^ţ8Ôφłwăć”»s@#lAă§ăë1ţ|B ¶ůJÖ3§IOG0B˛«ÎťĆžů9źŕ­ Đ餦B@0,Rxa{ě1Č Ä†ŠuÉd†ő«FŤ—\r qU,łńtŢJä^ş«dP2ݨܕ Ň˛k$¨śľĐεloekz®rpÖ¬7Vô k$[–éhő­#ä»AľČŚ3(b±Ag2ĂVC•şd2ăZ¦í~ě)…®‚ÚB@ä’%ö˙.鬠ÜŘV_!°yëô=(° MŢë‹/ľ™4i4—ŤÇ ó`şPâé¨"¤g ;Š1›]hĂŠřkűÚFô9-…ru¬ý¨Ü•D ZI˛ײ«éĘ­)·á*{31·\a‚˛kÓ´ă”­˛;¨˝ÚĆݵÝŐB@bŽ Ö¸qăFŤE)Č ‡ÚłĹaBň#d†Ô×cŽ9†ż\şu<Ě"kú˛ą—®AoÝ4·¬Kwń˛rWčZsŰV9hÄł§ě4mW3ĄeWŮ1ٲ«lŤ…fVÇ›’%înJąŃ6gĎžMáBSŕ…`:śłd=ĂgL ‘™č;•¤đ"Ŕ—ßýRx$ać3˙uÂÎÝuĄJ$Ő—,P$ ¤[ąA@޺ܠ§ľ™A€˙ Ł’ËĚ™3'Ožűť›ű´®—u¶Ű—üqČ4kflN[ş™˙žłěęă›ÔľTÉ˝h“m|ř˝˙ĎŢ›ŔkuV÷ţg8Ěó<“@C ’ɨIŻujbíŐ[kŻZëŐżíím­ímű±­wĐ[MŁ­¶Uk­ÓIB† 8ĚăáĚóůßwÁâqďçŮď»Ď@°¶¸łözÖłžµűŔó;ë™v‹MIQá—¶KcxăHĂ/ž?r߆š˙ń ňw*•1~H®}úŰî¶F}>őĘ1ţeű_Xň±·]ˇúęc ľwÓÖ×O©f˙‰¦ ;Ożűť[gý݇—ˇ˙âOw:Ő¬äČţâß^ś9n°dëľůË=zĘ„›­Ë Ĺáő#őűă—ő8‹§š ě»Oîýéź®q“ŚţýîqŕŞkn?R۲íŤSřůúÇWÜ}ýt Ő„Kžüş{iĽą˝ĹŔARű•Ż|…č„˝]X@˛ćü »ş0» šËȤĽ‚˛ĺIčU‰Ň{«^=«&ź0\cő µHőŞÁ@•ŢhQ†Śsę]Ďýgś3ěxL¦cŁvćf˘%«EXFÄJçĺË—3ő€Ů”ü$,}u˝Ešyő^eġ=†€!`ŠŰ}ůË_Ţ´i=ĂŞwz[z±wżűݦVAftäIűťś=2ŐŘuîĘ9ť¸úÖXĂ ąuăT9dśSz Ať„Ś˝zW©qF„Ϭ`űxěÜą“ YÂTĘ3f\sÍ5ü§KXúj=•>dy {4Bhű“ď>ď-=Ußö›_\żîoß2lPß_·÷“˙ĽŐk‰ňŢG^cŞÝ>tuÜŔMŐiéă/ůŢS{?pÓLŐŹń§ţyëO7Tä±»»ŕŹżó|mc»¤ŐÚ;şŢőůu{Ž6Ä-Ń|ó—oĚť<ôŁoťă-MVö r”q·¤?öĎľđĄ;e¦áŹ7ěwSuűßűÇ-‹§Ź;ů|ţ4b`Ź#–­»żÚ%óÁrܰaś†ĽLśXŔfŘy—Ó˛V¬XÁö.,~„Ýşx©’kŕĘj¬Ęx‹Zä'‰}ţĆů[â9byÔPÓĆ÷qyLn7dL-ĹM…1üzĂaŻüH0˝wď^~óaŐ3ŁĐäéPI–VŘmÄCňc¨]o­TĆ^¦4 CŔ¸  ĂąY.Kâ{Ő1Î{a‡kŻ˝véŇĄ,~dßU(ígóé‰ÔX<¸˝­ëSKU™ÓąëąŤ#nőŃŰ„–¶×@_áÓaHC"ÄŁrĂ€Ě0ŤîřńăPNÇb’Ż!E źÓBeő,÷]äx‹}eśŕÇŠ.sšŰ:ţúG/+WĎńÎk§Ô6¶‘z“©vŐÇÉ1˝wŐT,?÷Ăó–×Ěů_ß2»Ľ´řľŤűÚrP<˙úŘŰćĚž0DŞpÝ•Łß»r*™©/<°ăd}«čź~őx<[GQ˛ńşWŽiŞ®˘´E¸ËçŚ|ôąĂżxá0Ů:®ż{pçÇß~ĹĐAĄßxüuMŐU–˙ć ÓIĎýhĂţ-»OJ_ěu˛u_ýč ^ů·ďŮ(J@řďš?¨âWÎě–"ą÷ ţč[gĆcŰŹčÜ@¦űí;Ţ8c\ć—ßď>ąGŰúÚď­¸mńřĆÖNÖҲć}gW7s-[§]‚eë.Ťďx±ľäůSlWÇᬉsŘ Ś–#_Y0rçťwę{Ć-µH—6%»–®“P-×>dŁ~zfśÓmüµEo] Ă[Şu#nSS7Ů^cp›Ó*, ‚ÝňKÎîÝ»9őQhňtüb©]˝z5k`!»^'âP]ąţä<íó4KhČŠ CŔ0.mč)g‚Ělßľ=DfŘľ1§›nşéŽ;îĐĹŹ9»·×K6v-]´Cµ\űŤúQăś–REěó1VĎÚ–Ţşjě-Ťxŕ±ga$;źI$Z˛´ <3Öřú믳ß.űx°\2Ă.uÓ§O'Q ™á,‘Hu7ňäÖ]ËHÓń"W“Ö­[×äËű7Ő>}vč¬ńög7WUdRن”ö__XČŽ‘­ű·uűtą(;ľýüŢ\V’Ég‘,űÝ{7‘C&—ÄZÔ{?˛\*ę}á´á|ćĆʲŚgöh{˙˙{FŠ^?\Ż6*ä4ţÚś]`K•żz˙˘Źe'Ç}ř¶Ůď˙ëŢšIi±P÷gk>xóĚŻ<ňšşýß\ú_nÉĚăűí[fÎűÄĎ$cHĽ>;ôµ´ť?öuěđŠ·/›¨ăBo ¸÷Ł×üĆŞĚvx¤÷|¶ţ…ęZńĎ"YÉÖ©ýaهVŚ.(řü–śi:;›ă!™ć˘FŔ˛uőç»čçp vxáô4¶ŕŤ3 Ru0›}čC˛ôŐ5p‰Žę˝J0R˝ZşJdWÂTśD,˝žŐyČŘmŃëA•®ĄşŤ(yô^^'^%Ő˝zŻ2děęÝ9‰ÄĚ4űÓń«ě˛ —ĺ4’t$jŮŐ%aÚmËőŇc* é]·&†€!`^zě±Çî˝÷^/™aăV>Ţu×]ôkäěÜľĆŰEz•´¨úś"ṏ©śqžÍ%úńĆŕéĘjěőŕ*‘{oě:Ń€]e¤EÝ‹<d†-w!3¤íXćĚA"×_=CŹPŮ2·9őéUJi¨(¤Wź&y"Ŕmjů‘ŰgKŞÍűośŢzn»éc«ĐĽ´ďl^ ůżÝyĄ¤ę¤îüú<ÉÖE̤”ű;Żť,©:äełFŞľ©µCerżqä|Ěă‡W<ńŇQ©;}ěů…YL÷»kő4ć¬IŃđŞRIŐńČ|Ŕ{~÷š]‡ę¤¨›z EyiŃ{®›*íňOŮŇ™#57×Ôr6]ČézäĹ»˙׺I#+WĎ»jîčüŘ ŽţşvżÄ°lÝ%öA/¦×aüůţűďgŰ]25‘ Y$ÂřóŞU«dĎ2ŮŐĹKÂxaŃGźđzf솭\%˛ę5 ¦Ô1ŤŽźv©c‡¦‘›ă Ř­,‚Új­ř«©·Č«ŚD’Ź˝kc˛!`†€!Bŕg?űŮĆŤ™Hé€čČHÓÜ}÷Ý AĺIfhÂuâö€Ş÷*©Ň{Ă‹^ŰŠ¸uĂózđ*%€xQ\ă U•j Ď«÷*ÝAVϮޫtŤŐ3ŰąŔdŘÄ<Ä2ĂN»˛đ™ĄŻĚ¦ÔÝ–ńąÔŹ«÷*1H«w}šl¤B`Żł§ŰĚqçW°ŽRţ‡ż>ĎuőÚąôĘSeß4Ž…-.*”9_śúęÖyî¤óö#‡d¶ŔK¸’Ťůۡ‹[qň_ľ|vůjÄáŃÚfΗP%GF¨ŚđkË'ýZÁ$W“Jî1s& Ńcpiqä`ś–ËQł'Qüđ™}üAĂáżů­Ĺ×ĚĄĄ&\X¶îŇřŽß[đď)ëÖ®]KŞŽáÇČ 0ÉFuÜe˙]ˇ&!‚"uC¤*â9cסë¤ĂpIvëZ"'GÂN°t_JkĺcŻĆÉ‘DbvŤiEňtµµµđZ–ľrü+?0Z6`fWVż˛š_oÜ UÎ'ČžK­Tţµ! CŔ0.CŘĆíęŘ´!ňúĐN˙T2C)ýKÎ.¦÷ť¬†ëMő©b°µ®Wp[Éébź`é:”Ś5$­•Ęę9íŐłkL-VŔdXîJžŽźĆ›ššŘ˘NN“ŕëŹ7®˘˘Â­®Ńş®\ĄWÎaĽVŞÄťćrFŕhm‹ľţ¨ˇĺ*Ç]‰I‘NÁ32Pě ×Đ’ů]ŹU¨ť]]ĹEgO†!R¤#’Ť[;8ËBÜ&ÜŰ;»ŹžÉ÷Őüx‹z ĹĘRŻCWůéwĚíęîţňC»xSWŹĽi׉·üĹÚţŃőoY2!RdŹ5)ţz\ÔďiÁ4HÖŔo‹ćçěÄLžŽĄ%P.l\3ĺ=®2ôŽbśŹ%Ô3˛·Š ¸®ŹDk…ÜşUúĐŘuĺ6ŃçaŕPŰJ†Bwu!OÇĚrVÓ'GŚ1gÎVż’¨ ĺé"ŻyLn7Ů8ą®”&ŰDüŰŁ!`†Ŕ%Ź=“Ş6oŢLŹď# 3tgr¨L­˘ŁtÍňě7ĆžS×m1âJJŐł×XŞč=ăü-qžÓŘ5@Ö—RA#ŚnĹśĆn$ÉĆ”BeYúʧ'I'Kh‹YuśöË겴‘D"…“ŰŤÔŠG˝ĆÉ6‘*öx9#ŔşK}ýšŤşL•Ś›&ňĘKŠI䱫ť®=x˛yĘčó«2Ď4µIŞW¬ÜڤęÔź+JŮSOvť«*/ůúÇŻőş7Ľbؠ󩱚ăg—ÄŠ1KM9)BäŃCËÝU˝^oeżBQR\ôÇďž˙áŰf=¸ů çf<łă¸›$‘÷ÇßŮnٺȹŘ-[w±Á‹5~– p,ËFĽ›ĽĽôŇK°[R9kÖ¬÷Ç•śťĽ°R / s•Ř‹±WIiHŻEÚ–4ş‹×ŘőěŐ{•ř÷ę˝ĘqDďŤŮžWIőd˝[˛1– Aóe™‰ŔžÜĚŻäă˛űňňĺËYýʬşä<]¤!}ݏ>®ă^]ąB*c·˘É†€!`—pőë×Óť‘ł‹wv1cߏoĽ‘)ÎJ“üÉ ĆŢÎ׫ »úx„”F.q±Ô˝zŻRÜj‘×*1VKä>ŞđĄ "ł‘Üż|jŐ‡Ę#÷źlÜĎŞL}ä¨ •]3Uö­0gâ“»2§Ę6·u^ŐáUgד6´´żqäěęW”liWXČ_˘Lă{Ź5Ô7·ëÔ¶;>÷„®6}ö˙Ľ5í«î;ö-»Ő}÷É˝˙Ű^ßŐŐ˝}ďé<]Íńµ˘çÝwĄÝ/j,[wQľ‹8xŔ>ôĐC¬p¶ö`$/Ćš‚0VÉd+Ůť—´ŽŇ)}s·ş[ęŐ{•¸ŠëăiŃŐk ®3×Oź»á©sWé†ęĘ^cUbé:Q˝*U±äQ‹0†Î>÷ÜsňeOź>-§¤-X°`ĹŠp\¨­“çĆ÷©Ą€jŇ»]ŮëŮ50Ů0 CŔ`üéľűîc’Iv.0–@˘aÖŐ/ůË;vpĐRW^ye/ÉL¤{ŇN–¶Ü"Ő{•c7r‘µzÄŇ«÷*C~BĆ9őî‹ÄŽ4ç§ňśŹ1ĂɰS8*űx@feäđ–ľBfŘÄcذa׏FëFĄJŻŢ« »Ţ\9äĵ1Ů!pÍěóg>ÜűČ®;Ż™Äôş'›ţŃ9wue61GŃ˙ą˙Uńóí'ö¬ś;†Ó`yÜúúÉżţáËęź-áTî'aáÔᬠĹ9Í>úĎ~ó+Y™ËtąŹmó#ŰI٬'ýË÷-ÂňĹěá,žýô7¶}őcËŮ_ヘ5šŞ1¸ěĘIçłR÷ł:Řű ýůÇ/˙l—4úĐÖ·,_QVĚaŁŔ{şşľ93$ěş”°lÝĄô5/¦w!qĂńövË 2äꫯftěرšššgź}–©XÓ§O‡ăĘ<;Č4H(ˇr’5Îß’ŚŐˇ }‚˝šIĹ|,©’ż±Ćň¬IČR Dp+&Wq-©‹1_™ßgřećŤ7Ţŕ@ ŮŐ…ś,CЬaő+w2wüi4ąˇŢKÝüý‹eţö‘ŘěŃ0 Cŕ’D€WŮ­,ľý.ů!3LľŰ·o“ďx}( ]!} ™g‡Rz·ëLîkň·ŔŐ>äV "(dŻfZ1§ĄI>ĆůxVqžŹ[,ÝZ9«DŚ!3lM‡ľ’§Cŕk’§ťBiR'űxÄÇs6¤"¤2NőîęĽM¸š|ů đö«'.ś6\–¸’ŇşĺĎźúÜái˙őůS‡˝˛˙L{çŮŽ^ýĎŮYRú[÷ŚĂ©µo;ČŃ´˛ŠV”źĽóJůG€)-.Ďí9˝ćłż–{?˛Üű"ýĹĽÉĂ8ľ¶¶1łAęž# Ëţđç7ÎK†‘”¨¤ęĐŻ3ŠĺŔŢŔLy‘"`Ůş‹ôĂ]ôaĂ_:ĎÖ‘Ź[ąr%ô˛˛2Äőꫯ˛cć^‘ł“X,$áP!^Ú!˙Ľz‹âŘEYÜ@5ůXŞ ‚ ‚şŠZ ý…4Ž´yŚyĚÇ]]AIľ•Ť]XG–¬[ůŔnŻ»î:ňtś,q›ó1'>®‡¸q\“lď–šl†€!`(äécĎÖq ąö5Ł$Ł·{÷n,‰$O™áXldžťôJŢľIűYo©†!‚óÓ>§± ¸Ţ\9ŹZ«Obpý'{Ž”F]?q9c>"ĂĚ|MRuX Č #Ž|h |&î9Y“Śd¤nÄ8ň1ć1§AĽŠi üŐřŰ˙Ľä®˙ű4łş¤‰uj3´˛ôź¸N2[ŤŐ˛;Ö‰ÁáÓÍj‰@^ŹôVżnZ'ÍŤVńĄ/űĐ=›[‡†Űó{Ok$e%E÷üî5ł'dηe˘ßm‹Ç?ţÂ)mjíäŹZţ§ĺ“~˙Ž+ä‘ÝâÖ,«–8<Óئ–qˇź (-)úĘGVh†‘ońýuŐnë¤?÷ţĹ®ĆäKËÖ]ń˘|¨-c’q2Á¬şŰożťWš?>{ô>ţřălŢĚv0/Ľđ3łŘ „­Íd!Xę$ηâ+¤ŹűTŤTäoN5j´E×X•®[dŐ÷źq¤ĹxŔnăüĂă+Ăhźyć&Čῌ?óůXýJŞŽßRČşz›v_\ ĽĘHl9ŤŐ .ÄýÇ5ńZ¦1 CŔ¸l`БòâCʬŽ2CNgáÂ…™m۶1‹ ćLµÉ°“…“t©‘^UAU»ˇü•ň-Ä^«Łt=¸žµČ5'Ţ{˛g׉¶čUzc)óÔ',EŢHĽJm‘Rľ/fË–-Ě‘dč‘vUvđ€¦BfČşzÉŚë6X¨(®Źk"®âŹŢ*^eĽ®i ĚŢzňŻoc®ÜŽgÓpb@Âë_?˝ĘÝÓmҨAOţÍmňťçż˝vOÄÉšůcżöńkÝ3+ČšElä‘uśLÇDą'Q¦2¦ űëÍúŰ!ôíç6f—ÄjCó&ýçO\·`ępŐüčŹn`ď˙ţɫҢč™IǬş˙y÷Bý ýźĽ{ţţ㍯Ş×ş"0µ­=›âsL…ÎÚ‹x&7§šŇ’ł«[É0~÷˙[őŮď=żß™´(fěd÷w/ĽöŠó;ju.j~e¸ě˘~ ţâB€}y!˛ń#&X9ňµŻ}Ťw‘ë9qâI:v:cŞ(l1†ątéR’>¬%á,QĄ *¸Px•¨^·–+{ ĽJ×­x™%—zkąJWvCU9dŕŐ«RőB6®™]]É<~3Aŕ×ľźŚŤ{ŘĘšË$JzA·#tŰr˝ˇŹ<ŞĄWďUj•¸·}\ż}űöO|â®+drŽ3gÎdŢDDoʆ€!`—<änčÚ8p ’°›0aÂ>(Ż™!×C’ŽŢýÎ 3PŇyĚĆ‚óąŁC”…±ŇďÄ{ź¸FŐ"´(.Ämâ©ŃG#žCĄ^˝«tĺOojă­¨JÔ>.„l"zćÓ5440/2Ăč#¬•oÇgđ.JÂŽo'«=ňi"â\«xő^eB•}\ĎĎá{Ţóu%|ŚńTŢj)˛GA$IÔň#Árôó7óü`ĘĘß™}ŰP˝ţřj6~ó}ď{ßg?űY~ib‹!ţµá_ĺÎ'xŢ}ßńĆťęöm6¦jéĚG Ullé`†Ý«5µ-m]$Č®š:läŕňqżęÉŻí8pf˙ń¦éc«XŠ™(x5,Ű:ş–ĚČlW^ÝśGâd-s W”¸çކޢź ŕp‰Ý‡ëźß{ęd}[eY1Ë“ů(WÄ¶Ř Eeú‹ ›[wq}ŻK'ZţÝŹP[y·Lţ†łIň 0!h} —$ďČßŃMĘúvó…-±ś„*8”{Zڤąx-Ć•i5ç=2ŇnÄ­”ö>ŕ>q+«Eŕ‚üCŽ•„n!|J~'aÍĽ!˛«Kď#Źŕă>ö«s·!“ CŔ0.7čb 3ŢŽF»T ĂTdyč ÉëŃKÂdČíŮłG6÷`ď3şHČ „WTô:LĆV›‹őŔUÄŹ^ç˝÷<Ýňväe؆…Ĺ˲ŠŤäX…Ě0îČŁ‹Uďq˝ĹĺţöoŃ4†€ Ŕ_Őécó'@8ŐŁř“ŹqżÚLSĹźśM°ŃŰ5łGń'§%çNđ'§™ôlĹńń0´].%,[w)}Í‹ď]r2IŘ1ÜÇÂX37lŘ k*źxâ ¨ŮĐwÍš5,«$űŁc›ź.t‹DďjBđy=x•xéĹą”Ş ‚ ‚ëÄ«ÄŔŐ‹çČ]›{ő^eġ>†ŚŃó ż„đÓ!™;Éu.ÁŻđZľ0sžúÉG˝¦WďU&´˛÷ęEé-JhŠ CŔ0.röŮ“WŽ…Ő5•ëÖ­ă¸X˛u¬6 Ł$y‡%ý)>Ő-Ź.ŚŞG)E®ĆµŚČ®©×H•Ţu¨6€ XŞW‰«w=«¬"Ć^˝W©®"BČ=d†‹%™µk×2‹Š%̆§M›ĆęW>"ś3â0á1ôš^˝WŮ·ÎÓ6‘Đş†€!`ô+–­ëWxÍy sĘN­+]Ľx1Kĺô .ü‰‹=DĐłů ăŇđ]Śą”¨ qP$‚ęU^•c·Hí]cUş–ČŞWc”ú( É]Ť]'^Ą×ł«t=äŁw㉷×ŕS.·j{ňäÉ­[·2™Žő>äé˙8eĘ”›oľyőęŐŢ#_qâ6}Ϋ_)Ą^űT~zďAă4Á0 CŔČ2qśK@VnĆŚôě®đÔSO‘ âb¶Ý˘E‹ÖâÄXÖ ŕÓíayt;/·HôqŤFĄE®őď*Ő2Ôśk±‰7ç¤ňśÓŘőڬönxŞT㸆"ą"E|9ő•)uľk–oşé¦kŻ˝žÉIoŞÎmýśă_ůjŞDđ‡ô©Ś˝NBÜLîµŐ›YyÚłşýT‹úÉłą5 Ź€eë.<ćÖb€0±’±M¶axóĄ—^bą%ą!çb©ŁÖlä Ó•µ$ŇF„iĂŞwŚ*1sőZËBĆŞw=¨˝>†RŻ·–ZşJ7άö9=SŃkqČ#۸°6™ŤŰ8˝—Áp4D–ŤůRdW™˙ČWóR۸+7*·4­Ţ­«rZ'!{uh‚!`†€!Č D…-:GşHŃ"sÇţĽ/ľř";H<˙üót ňz$†ÔąöČhÜîIôqŤTtőęĘ’ÝzŰRϡşę_ Ü0Té:÷*ŐO\Pűśž©ë5Žű”-ÉvîÜÉu,“Đř$OŮĄŽ/ĄŰ ĆëF4nTnQZ˝[Wĺ´NBöęĐ„´đĹ%ë ëżĚź´.€=áIś -kÂ0úó< ˙Ú0φ@ź @Żs…ż2Q mě`NLé"Ctřđa`2úK.ŚM$CÔľBÓ‘WčŤ7×UÄs?ąĄĹ>ńŹ–ag6Ďć7 ŚČAi,äazîÜąłfÍbµßÂ}ß> Ău‘űÉ?ąŤoʆ€!`—<Bf 10 ;ŮŃŤr‡ÉĐ™655ńk6ű{0Éńpěą–÷G®ő†Đc‡®“s|˘é˝ç[i±?ÜBfHĎ1Ă‘Yu†!eJd†źáC¸ďŰW¸E|ęcďßQ]ą‚¸í'çnC—¤ůi|ç;ßÉΆ¬ň‘Í(ů}äÍ–đř÷„ź[ţőŕźÂsżB$x·ČdCŔČX¶n ‹ÍŹ˝›ż°$vĹ.VŲ<–• ě•Ć(zfŢ1.MÚKíźTp{SUŇR>zo@^'^%ŐCzń)%~ŤJ׉W‰«Ď‘{¤!-őęăJüĂK łl¸ĂęW…&[:cĆ ĆźW®\IžN~QĎÉ‚7`Ż?!˝·‰qZ˝×ą) CŔ0 ž!@ßĘĘJH żí“‚ð\€„Ýúőëé[YË®ŻěőAňÎ%3´%ť˛Ű‹ąÝ4ZŇ{vŤ˝T©1W/q%wJ2™!Č€x‹+ăP`ăU&čănŚűÄą·ESzŕ§š‹iţňľ˙ýď'ÉËt–•07bě­ra”„ÄŹ.żűYć@NA‘7öÂ`­†@ `Ůşţ@Ő|ö;ô=đ'ş%öyK±“±P–Ä=zôá‡¦Ł‚ćŢqÇ$őô(zާqű-—ĺäÔ_c· @t˝áy•TŚëăýHˇ"Ń»1¨gŽHjňt¬©««Č2Ąń†nŕsŔŔŠ ţEřŃҸ>®Iëű“„"oŻR7Á0 CŔč1ôł.ŽŇb§WÎŃbnצM›ča9V Vłyóć·żýíĚXg1A¤•PߍY¨(ˇ[çÚĺ©Őät‹#ŕÁ}˙!'Úśë¤OŚ]'Ź*e}ŔĆŤIʞ§i;6AľńĆgĎžÍçó™q=ŕÄ˝âEqŤÚ{‹ňWŠŻ=E^˝W©ń'ü rńSďĺwůËËŕ4ŐŃň›…łFH#Q!’%ěňü˛ff X,[7`?Ť–¬%!Çŕ3ăŇ̳۶m”‹a.&Ůq‡l1Ű‹ýěÜÍě\żtoúčv±Ş÷*©âęŐ+¨‡±WŻJőŚŕ>zť«1Ąę$Ô˘kězseqâZşn9düß%€—•;ü:Ąě$Č®.äéŕvëúWŮm"YI©×XkE„qZ}Ä­=†€!`ý„żW“"IÄĐĽ2âÖĆBiXmǨ$Síčd±ŚÇŕöÔ‘Î.ą[ŹçďŮۢ*đ¬MËc‚s7 u‚˝Wď*ă>EŁN\cU2Š<{r1Öˆ*hH‰r-_ľśŻÎy®pýk0^eäuÔ8$¤u˛ů7}ŕGČMŐ1‘ bڍ/›ű Ť0HŐ±!¸ »Ľ¬U1 €€eëÂW°z€/vp\éś _,Ďda&ÇŲş„ Öx"©÷ť«ň?÷5úĘmÄyďÝdÄg>aÓ.yşě1Ľµ˛« ŁĐřaúĘ+Ż^˛Ąr&Żxë“8ÝŔ"rżúďW瑱GCŔ0 C€ţ2ĂĹşWňD 7’•ă’ťy;;;á6éÎĽE@듞+NzďV|F<÷Ţ­Ľ~Ä­bňŹ$ŮáF!3ĐERuăĆŤc|—”(©:–e(Ľ!?ÚP/…~ő߯Î{ůâiu~Ţř=‚ż§$ÂČ1“á‘Tň› 8±I`üC!żň$ý5ąHż‚…m\VX¶î˛úÜ—ňËŇ!‘-býi#Ří–-[8Ą”qirv»wďf°=»Čů¤Ţ~ËUjŹëU‚cHď…8d¬zm.§g­‚%µ"ŹÚşč]·9=kݸ%D–Tűą€$ŃĹ‹¦+Âk׬YĂÁŻäCÁßő’#!©™WďUj•¸ŕµ÷*©ŇÇÝŞqŞ*^?¦4 CŔ0ŕWkV ¬^˝šíw!3Ď<ó d-íŘZŤ•$•X6 ™!Łärőé*µŰň*©Ň«7W«^›ËéY«`I­ČŁ6Şúü=k]ÔŹ&*ĘdşíŰ·KžŽÜ(üö°˙J‚#âÁűčĆ1Ĺ5‘*‘GŻ˝WIĹ>âSĹ8UŻźËVÉŹ“dëř±!‡Î#ěWfŘńÓőć+±ń̬:v\iŮşËögŐ^ü’A Ż_°/™·µąä€ĽrĘc¤ŚŽ˛Z“SLd—yäKˇb·ÝvŮ%—ŤąLN;ZUŞčT‰ěŐ{•}b¬NÜ&PşW<eB»^'Ř{ő^e‚óČŰŮc2üĽńw“‰0,‘IŤ1«n<@˛uQ!ˇ˘q˙š$ż •†Ŕ@CŔ˛uí‹X<˝E˛E/ĹYK—.ĺpX2JĎ?˙ü‹/ľČˇ±,ääÎĐ4L 9ËŮŰùȫ÷*CM„Ś“ő”j*Ä›P'®Ť*±Źë]Ť0źRË(4ű^3Ąj˰3K_ó—YŠüž·îj"nµČ«÷*µJ\Ů{ő^eܧjŇÚkE CŔ0 ^"@—M+;ó2Ö™y饗8S‹“ť¸s%ŰŘMš4‰;6n˙îm×5p{7ŻŢ«ôşE2NÖSŞa¨oBť¸6ŞÄŢ«w•Ř0Їaé+IOvd%,ě…©‹śĆËĘb óYń©ˇző^ĄV‰ !{ŻŢ«ŚűTMZ{­hB~ödnEČ’¶ÓTÝ› 5ńpž$ěM.4čăďbCŔ¸(Čń›öEń¤!G€ľŠu"tTŚ,‘ˇcI,Ňp\Ö’Ŕk™µ.™&JÝn,ŢźőI×ëşí‡ňľ®[Ţ7Á!ą9~Ő7ÜÉܑ܄Ô2u‘()Qm´÷-Ş+Wč'·nȦ•HŁöh†€!`$ ]˘˝B陸“’ăb:Ҭ%yůĺ—9^ŤÍJXQÂ&w+V¬`?;’wĐܨ ßłŰáą˝˛ę˝JG€Ţ9» U%d†3îI9=ýôÓfŘAfX:Ŕ1x‚đäÓşv÷»ýšę˝Ę fě}Ť-†«cňtś<Ć–»›7ofn3ěĐłMĘĘ•+YŔXtŐ­űĘn}Ąw}ŞrîľKĎŚ˝T™Đ®6gB~fä"&y:6TĺBꉍć¸KžN/dÖ–!`ô-–­ë[<ÍŰ@D€ľŠĹ Ą.Z´hçÎť@Á‚Z~řařîW\{·1pťݦ–.éQ%(xő^eČŘŐçôě#{Żd'Äí8}ú4{ZłúŘŘ…ůtZđY¶lóé ¶dîÄąű.ÚśW™`OQBuŰ nCEq}\ É CŔ0 ť83éŘč…±†é©Y7đóź˙śńHgg’A5Y4gHJ ÜţN•8ńę˝Ę±«ĎéŮ5Fö^ÉN 2ĂÎ'[·ne9y:ŘecŤ@Č {zŔ÷r¦ęÜwtĂH«w몜ż“ü-“ť‡üh-R!Ŕ!1j 4l ,Ő»±!` d,[7żŽĹÖgcbĚ~6wî\ä}űö‘‚Ćq± ™;V˲™óě"k""}^ĽKv ⥑HeL]µĎéYŤ±Ě§–ب[† YYCzŽ]] ý,·aÖ‰°± wvĆv«ž#ď%ŹęÍ[Q&GJ#ŹWńÇTö©Śăm™Ć0 CŔ¸0@`H°8€Fćą“­cĐ&@N >CWN—MfŠÍ@"!ą=xĽăK.Mĺ*bĚŁ:Ź·2¦Š«2F/6˛î•Ó$8d d€dé+ăµsćĚ‘óǸçĚf&4 Á8^×ÄşšTö©ŚÝVLî%úăÝK?VÝ0 8–­‹cbšKşR8.¤ Kî ˛Ëč++JXěIňŽlů)8.I=™@"Ň%'p#×2ÁLšč'c×­ű.n<Ȱ[ŇsP[.cŃČpYđaů0‹…ÁŠMsBŐ]˝WvŰň¨2ËTéWçŹ †€!`†@ż"@ĎNžŽU±˛QěĂKsňt\ôă ł±…;ĚJZĘËâĘP/éZ†lô}űÉŘu«m!Dâ2CîrĎž=/8Td0q0ĄŽi‰›„ęnQ\Ž´7PMţ–=«’ÖZ{ŤĘCŔ0 7ËÖ˝éźŔ¸ @Ý ¸P7ĆĄŻąćšuëÖ±ś„lÄŽ;dŽü[Ŕ°l–UndTĚÉx\Bé«Ţ«¤•¸ŢŐ` ĽĆ®ŇµtőČń‹VŘÉ…|ĺSO=ĹŢ.Čd0ˇřóçĎgsÖŚ¸U"!i‘WďUR%¤Wo®2NĄOeś!~B®ÜM6 CŔ0úúzČ ci 1^}őŐlÍFŠŠ=ě87–Ţ|Ó¦M«V­2#é<Ť‡Š9ű2—H¸ĆŞ÷*i"®w5¨ŻqHŃóąh…ĄvÝ%e ™– _ýőkÝ*‘¨¤(%ö^c· W§Ň§2NŽ0äĘŤŮdCŔ0 €ŔŻä#B@!pŘĐ'ą@IDATa Ǭ±;: ·cĎf†¦9:ö?ţă?X=±dÉxŢŚ3”ćBn”ećCtĽĆŞä]'ŞWĄj"–ť†D­Č/Šk¤JHqÓ8äÇ«Ď_I»^ăśńxă7Ą!`†€!ĐßH·ĹRv•˝őÖ[Ů´Ž´ÔĆŤŮÜăäÉ“żřĹ/ŘÚ‚=yŮy–s˘čâ…'PK CBǧÁ{ŤU‰™ëDőŞTŤ8T=Źn‘ę˝Ę±ř„Ŕ§ăŔ YúJb2ŚČ2Ëŕ«¤ę´ ©ĺŢăEqŤÚ'©Ť !ăTúTĆ4ťÖ^Ł5Á0 C` !`ŮşöE,ž ‡Ž]ęXNÂik ĂľöÚk\h.i;‚ ŤĹ#L—Ôkc˝aą´2bbKjćÖM6ÎßRś«}Č-[Ű:tăäČÓ±3»şČ~.,a_?vކÖN¨şľ‚+ôź1­¤ržÖ>­s÷­M6 CŔ0Ţ\čŻŮ™—1H @€„ĆŔa€¤»gŁ:zrvěĚ«ăpń€•9Ä‹’{I·b˛%žűÖ L 3l¶ËNÄ7öŢ%O‡aJŐq‡ăKΨÜWNeLĹTö©ŚűŰąűÖ&†€!` L,[70ż‹Euá€Ěq1úJV‚ű /ŔtIcqg ˛xKŽFe’‘É]B q/±ˇ4c}ŰTĆI(u«ŻCnŽhŘí† `đYźYĚ(4ăó0]5 ů7‡‡¸q\ă6”\ęZzťG ÜÇTž]çT令­î6m˛!`†€!ĐŻ°™‰*NŚĺl(ćšŃ4†di,V†’Řâ„w†'ÉëŃŁqa w‰*ˇŹĂLúA±äž`,6yzV‡jźÓ3U0ćuHD’žcÜ‘é„6­Ě0âČDBR“đő©­D„|ÚŇ*qă¸FŤ’K]Ë~5Ž;OX$N{4 CŔ¸ŔX¶înÍ 8„Ď‘°[Ľx1I+–‚˛á ŰŘ‘ŞŰ¶m IĐ0Ăîşë®#g'ĆÂuDvé`N2vÝ*@^ăü•řQc Ś;ílQÇ}\dî`öÓ§Oë[ßĘ€ĽśCO­Đ[¤Ň‡Śőí"‚×Ţ«LĐ[”ÖIČ>°=†€!`éńIĆ‘«˘gg)(d†őˇ{÷îe’1Č3f°)íÍ7ß!3ĽuĄşĽNÎ~0d¬z×*qžSźl¬ŐÉB˛C»yđ^VđÖď|ç;™RGÖR?ŠÚ«&«÷y=DjąŹ^{ŻŇŰśşŠW‰kÄ8­^›0Á0 C`ŕ#`Ůş˙Ť, „‘‰f¬ ˝ýöŰa´$¶ÖŻ_Ď54ľ /dS0§Ę˛P””!)ąTÁ- E/Ćęł„ęޢśJ ٱ±‘U˝Ű·oç-fgPšą„lAÍ|:&Ó±:FRun0nŘůëC–®·Ş×Ç5â*¤§Ô[äU†Ś#ŃÚŁ!`†€!0Ŕ`m,Ënąĺ6á…̬]»–śŁtŇ[¦ž‘Ţrwć協T¨€2Ôc*jěZŞ2â!YďzpăQ'™††Ż'OÇ„AYŰ ™áÜ™3g2Ż0yÝkÄżľ‚WďUj•¸˛÷ęóWJC©ě˝Ćń€Mc†€!0đ°lÝŔ˙F—W„ŚĎpą]cA[ä­ä5fŰÉćÍ\VŹÂw)…é˛ —\ذÎG  >ňŽńꑊ©ěŐSŇ‚†ť;vŚsâXKžŽôăĎĚ%d˝ {öőßuIüCšTUúŐO ţU…mzCŔ0 CŔE ŢqDzv׸oe˘g‡Ě˝b|‘U˘¤çŘĆŽq;!30öł2ĂÎĽýGfx/÷­ă¸/ž`É(#d†ý…Yôʢ‚'lë^ÉH2Ś*¬Ěő–SN&R=•1uSŮ÷ź±ĽE*˙‘·GCŔ0 7ËÖ˝‰ŕ[ÓeŠp\–“ŔnŞ…éÂq…&"°™1Ľ‡ĄŁ¤ó—ÖT—Ö•·ŇG/IŇR×Ŕ•CčHÝś–PŰ–––şş:¶¨cVŁĐÍÍÍĽ«zIŇq.Ë` >Ô úśM¸uăĆqM˛˝[‘“]EŚyLe7M\oČ4†€!`†Ŕ€E–‡!“EzŽUd»ŕ0ÜIu1†ÇR†îX˸ťÎJS~"/ĄŹŢ>Ń-U™Š^ăJjźl ™!ŰxćĚŽ|ݲe y:¦×Afŕ0Ó¦Mă{Vżâ-ä'¤ŹÄ#Źqă¸Ć­\ęZ"§2Nkw×Dâ±GCŔ0 Ž€eëř˛đ’ČŤR˝ţ€‰ˇfhî‚ LGŞ‹5¤›7ofPwçÎť MłĂ+/ÔeĎfi]X‘ P» É ŇŐ{c‹Ţ­˛Ä­=z”<«E čmmmđő3f°a {0ˡńP݉‡ç¶î–†ô®ŤĘ!cŻŢ«ÄU*}*c‰©%w7ň+µ1Á0 CŔ!ęDÜ=T·Çzś“Ě‚´°•Ű_đ‚ĚđbŇ=dë8}bĹŠ—¸˛4íz 2d¬z×*©®zUĘ|ŔuëÖAftd”‘€!3P¦Ô‘g$TjiEŤ!®‘˘´zuč !'ŘÄ‹âuĺ-Ę_émNť+†‡‘Gµ7Á0 C` !`ŮşöE,ž…Ľi¦Ú± ‘Ť{˛—K ďÚkŻ%gÇD<ĆĄ ť‘jî0$/IR%69ŮRÜ8®°\˝Ě§{ůĺ—IŐAÄYú Mg>‚g>»ňI¨nqŠ'¤ĎçÄs˛eČHŻ>]!d×Ç5®‘ĹF-U[šĆ0 CŔř@fX@n릛n‚0 Ťa3;&¬±Ý[ôBfdžÓîxť~%3řWéaU/óé 3 ‘rę×ÁÉĘqę›í˛QÇżň.ˇ5ĽźúuŇ굢+¤u˛w}Ş2öę˝Ju…1<ş–&†€!` L,[70ż‹E•i™‡˛ŔĽĽgŤ¨B¶‹‹ąiȤä`‡LUca,㽤ĆŘ kfH„aĂ•ż,˝öi_ ?pëúúz‰0«Ž]]XíBx„=iŇ$ň‰Ěd\ť‘Řzŕ?çKő‡Ďţ‹¶ż=ç„Ë CŔ0 HŐ{z9CN©EÂ]Afm,LFv¶eži;&1 Ta¤ĆR52NőjňBâ"CǢ]’‰ś&{2CxĚŞăE¤ĹřωUÚ/’ŹC±é§h%`é?˙ůżŁY†€!`ô!–­ëC0ÍUß g!Ř7íĺň"#ĚXÁb™aÇÚX“>ńĤĂďE`9 #ŇdÄX+;ŮaĚ[HŘnđŢŐ$7ޏe:űÜsĎ ä ›“§c‘şoĽQV‹P%ÔśWďUĘ«%„)Jë$dq+Ź!cŻ>®ŚkÜV’K]K“ CŔ0 ŢNÄí»#öŕQB2CΠ޲aÆšš2b˛Ô¶ŔjYČ ńHŢU$f7r÷ŐTď*Cď"Ć®ĄV—¶ŘĄ2Ă”:˘âË"O7dČB]łf ㎰,YúęmÂő¬^Ą4§69…´NBöކBĆ^}\)š¸^Ú é˝‘Ň0 C`@!`Ůşő9,? TĂĺyţĘŽ¶—~¤:Ä‘l»3ÍŤ­[·2ĎŽÝšźţyö…a™›ż°ŕTŮ$µRâ”;i$Ş‘0˝úd%ŮMŹžzę)Fˇ™O‡O¶^f¸8cŃĐ\iEý($qŤ›š‰ŕ5…ŚSéS÷ r`‰7×č;†ŠÄŔ!`†@2ˇ~$Bś„UY†ôTL(Š—†ŚCz ĚCŔ0 C ‚}‡Ű§GJ#Ź MţN">s>BfCÇL|6çe‰ÇR±Ý-4†säađ¸dŘŢ’‹x$$ąk+©ěąz5¬{•™tÜišŔ8ő•‘QöŰ%c(;îé\?·nÜy\Łö EjŁBČ8­^şBZ'!{ń)ĄjŁ‚Ű"rH1łGCŔ0 €eëη°H‚0_ŚWŘ$ÎĄ€Á é Ň’X#ńcQ,“¤sîX{äČ„áľl Ă$;vŘvúÎ׿2ÎäéX-Âu˛« íRR;k֬ٳg3·.yúĽ÷ôRZ¬RµĐOÎűÉmŞW3cCŔ0 ËŮłB™Ć{ö>A&mg?±0ĘČ®±!H!3LµĂ@fŘ*FA1÷&ěx]˘ĄQřŚlQÇ,żŔpX bA.d†M˝yş7®üMű!ňôÜOnólÝĚ CŔ0.0–­»Ŕ€[sy!ˇ# ö˛ŇŢĆH/¤-NřĽN#NÔ&Ďęjź @s!˛l ·páB(ćÚµkYBRWWÇF0ŚN/_ľś=V|ß•° IZwcP9°č#J!˛äwďŢÍř3gş ’4dC˝›oľ™)u„©ĄŻJ2VoÁkďUR1¤Źř”ÇqZ}ź8÷:1Ą!`†€!A ŇI1ÇQň2PĚVËs$/âD›Pň š ¸b.ŰĘ•+›››Y ™aŁ˘}öŮga¬$`šŃGMśQ…ËmŃ}tc˝«ˇŹ\4Ácq AfĐ0öIśú ™aŤŰ„Ę©ô!cőĽö^%CúOy ç©™őĚą7BS†€!` (,[7 >‡ăGŕôéÓĚ c°—Ycڏ2ĚËD6×Ôĺ®Ţ+‡čNĎś°•VHÁt™×Ć"ňt›7ofaěcŹ=Ćp44÷şë®c|Xh®´Îťć`ęn0€WI+äé`Ҥź|ňIN“ gÇ™ně‘,äY~+#önuA ®IĐ‡Ś©â-Ę_ň6o‹ÉÎĄ ÷žÖ öˇ*®[“ CŔ0 /Ě#cHŹNś +Řb@r*b©L ˘Ź?†ş¤ü=Oń#d†ÁE’‰l©™aňţÓO?Í ;Ri$$ťG ÂCÎ.Ó#fSiBfp%ŹâSbk¤2Ăq´Ě§“»ŘůWČ y±đvńâĹp'iBěőî:T%‚WďUJ-oQţĘP‹ νUĽ-z-Ĺ3¨Ć«Ä5Éa$ř—Šv7 CŔ8X¶nŕ| ‹ä,.óPÂ'‰*RTP:’\ÇgŐ†ŽK»U"8ЇŇűr’§ĚČÇÍź?Îţ/lűB†‘qcNź`Ä=ĹÜI¨éKAŽ‘ĺ’$4ˇh¸łTä•W^ĺżúę«Ü±Î’\¶l ;Ř3žHu}T!ţ˛qŤ‡„P•¸>® ůT˝·ŠWI•^˝©˛ éS9×VL0 CŔ¸Ěp»éÖŃĐcTďĚ™3ôÚL˛#AćöÝn-ĐeŞ ^bśÓu±2#»jŔada¬äď`8N~PĘ!/…ŢBýK ú(­‹2C˛–¤˙ 3(Y€CČ h0"‹g™Áçľ Ôu5®Ď>d1ÓÇ˝WďUŞ«¸ŕµ÷*©Ň‹ŰHiäQ›N«×Š&†€!` 4,[7ĐľĹăGňÁĹNmL.c;î<˛$˙µ$~ż}¤%ńÄĆ.0o2‰DČć/ŚCFÉÖ1~NđčY‹W„ņÁ3äžş8!ý‡7h.ĆäţHұ8…_Y Śç‡žéőŤzV=g­ţóŹg°í?˙9_Í CŔ0 Ś>’±‚@fČÜŃa‘śbĹW¨ÖÓKď ™!kFîp-Nke‡\ ¦Af°!Ń–g̸Ą./™!U·k×.R–Ľóé8°KČ Ôź}ţ¦ýÇŘš¤Ł­ĄŁ˝Ąłµ­ł˝Ą«ł?¤Ü ٬&Bú˛¸¤¸¤¬¸¬˘¤Ľ˘¨”1ćâ´o×Á§ŤÄě CŔ0.<–­»đ[‹)Óx!JÖĆÂa‘Ivq×qŘäI.Ĺ›×CČ Ć /ł*–]W—fCö°Ű±c[Ŕp1FÍÖr3gÎdý ¬T†Ó©B<’ܵE™QČÄű¦l·_X[[˦đhť{|N™8őS” mČ'lB~âN°äb,pĹŠ¤ŇXË94–yv7Ýt[p@fHŘ6`,ňR$0ŠČńń¦!Č N`q$(!3ĚŞcG<Δđľ‚z”ző^e¤˘ű˛÷ęUI†®˝µˇ­ˇ®µ±ľ ł˝ »ł˘´¬˛jPĹĐA%eĺĹ%Ą…E$늺ş»:ŰŰ;;;Zš››Ž7ślëu•–T *«ZZ9¸¨řüŻ`ę\Ă‹k´Á[ęU†Ś]o&†€!` XÎw6D Ěp€’¤c„–‹!_ĆĄaŠäěPş«0Ü*q9ÄiÄ2N[ăĐ$8bŔţzdÓXËÚU6gaZ›Ů=řŕ˛[ é6V”ŔV W⍦ĺ-xä‚Ţ´iI:YĚ"fŇqxěY7{vc'®Fä>ѧr’Ę ˝ö^eČXŢ©%wŃ„ě{ŕ\š`†€!`ôú)!ôőŚĂ1m 2#3Úň'3ęË(˘‰<# 9‘Ü‹Äd†AGö°#ÚGydëÖ­ěpwýő×Cfŕ$^2C¬3Ŕž<ŐÉ÷ń˛CfÔ„ĎđĘŕ‰3OHOuoQţJ nŻšě4ş¦¦Ó':šĎ”“Çś8}ZŐ°‘ĺWTfňt%%Ĺ…Eśč…°‚.2•]ťť ÖŢÖÚÚŇÜÔÚÜŘTwşöÔ‰şÚ#MÇÚŠĘ• AćÎMŰ)úí4€śjÝĄę#>#íŃ0 C`ŕ `Ůşó-,’Ľ€ÁpA ±†Gr±W1ǰÂö­ĆĐ4ĄqG^eܬŻ4„2—˝™a«L‘c- ĂËś€†ţĉrh†.ý "owg_gVŃʤ<ćÖˇÇ “őXýJúŹE( ĹG˘MEżúϨúÉy>nĹF-U`ĺ}Leěő`JCŔ0 C „!Čdş,—Év˝ŕ.dFxNĵ"š~}”nQBeL”Ü2kWÉ»AfŘ™2Ě06I)dF"¤˘–ľb)ä˝a -K_1fjŰďBŢ"/•Ş/î?c€猝¶Ôźl>}¬°»cÔ1#g.1f|eŐŇŠŠ’ěâÖ˘âÜë[3x¶äë¶675Öן>yúřáSÇŽÔť:TZ5ĽlČČŇňJŇ«ú5#ďyT3ŻĘŘëÁ”†€!`č/ü$, ă˛E’ç®V'k.¸ ţĂ ř"ÔvK)w)ęŚns®‡´>ĹÁ°ÄŮ,xa0ކ@ŽCÖNť:ʼn±yeP]¨9ož]]O·mŰ6.Żf©ČŇĄK™—‡7Ş9ô"ń*ů[şuSŐJeL+9ís¸ˇşrŞŠ©ŚÝVL6 CŔ¸l ďČŮ}@WčńŢ&LŹĎ˘!3tý‡ĚČ»°b€#­8e‚¬y7– @f¶lŮB¶Ž­9ŕHRŤBŇ0 ”qGÝâ@ ‘Ľ†ŐŻ0ćÖÁ‹ň˙ńČ ¦şĘß2g6ˇ#I×\{¬Ş˘búĚYŁ'L2b$«^KKË4ÖęůŚ2—–ń§|PUŐđQ#ÇMś8mvý™ÓµÇ®ŮSwtOKůŕňaŁKĘĺO5ÓľiZű|ŢËl CŔ0úËÖő+ĽćĽď€ÇÄ52Ś;,,“ěŘüEƥݶC…Š®Y˛Üc'°pFŹÉ¸Ý~űí‹/fseö|yńĹYNÂě9˛oĚĽc VšŔÎ!ë<đ6r6ĎÓ§O_˝z5ђ΋éŤĘ«¤bHń)Ź!ăTúTĆ †üô>ňçŢۢ) CŔ0 ü€~(™ˇ»ˇ÷W2C’‹ikdÄzĆHžë3Ô1]02C0vë­·2‚QĆpZ=i;Č ë[Ię6iÇÇ{LŠ @¤óXpË-·@fxY÷ĄDöľšW‰}Hw›`r‚žMçšëNµś<<¨˛üĘů‹GOž>dč°ŇňAˇit »66656647eNBëdđ¸°Ů¬ů­\%S56>“ňřS1dčđ±ăÇMťyúčáŐ»OÝ[T1¬rÄNĄă„Ő› ©Śµ– †€!`O9ĂµŘ A€ĽÔ„D|—;2L—śÓ(‚)2,CÓ  …ČMź_i;,–ńä… ˛÷ÜSO=USSâ×G}tĎž=p_†¬Y3B.ŹQh’w·Ývf¬:Ń™wú.ŢČ˝JŞ„ôęÍBĆ©ô©Ś" ůqV9děŐ{•âĘ[„Ň«×ÖM0 CŔ0R!ĺ2™YZBf„Ćp§»!aÇľlš Ű…e‚çP÷Ô'd†v#~PČ Ľ…Űl°+Ö?ţřă, `ăŽë®»2Ă”:ćßAfÖ¬Y3ţ|ŽŘ’™w‘‰×H•>â0Ů8äDôÜ;ZŽŐwµĎşňŞńÓgW ă_Y¦Š`„xĎž˝ŻďŢ]]Íią‡O?UßŘĐŇÜĘzŹ®ŚŻÂŇââňě^„ăĆŹ›4qÂôé3f_1{ĆŚéŚŃĘ×dÂ]YyeiYűߍ?éء}ŢŘY{䍲!c*†ŤvĆ&Ľ‘„-‘{¨(¤ŹT·GCŔ0 7ËÖ˝éźŔ"?Ť€>Ęp4 ;ňtâĹéś8ĆŔ&ěK®hKáçP ©śÄÝKuh7\ŤÄˇBsÉÓ±îőŕÁ<2źjËô:ö§ď.Z´!ϡőxshB/˘Ćj ‚ĺňŻ’żĄ6š\%RyT'q!K­Ű*Z×CŔ0 Ëxß×(2Ш Iá ČĂ ¨™!g™‘q»T<$ˇĹT~4N¤.!6989ć•yvđ–ľBŔkĆňX& 2ąŚŚd†ąuL1sý$Ä暉śl)Ť<Ć˝E4jl>u´µöŘřI“§^1ř ĺ•ČUŞ=–|ŽÍĎnŮşeëŽ;¨©=S×ÜÔÄű¶3lĚqwgwy¶îŞrćΕtt’‡íî*,.)+\U5räđ)S¦ÎźŐ5Ë—/ZĽAe ă*)-Á•†€!`\,[wap¶Vú Xě "W¸wö„JÂa“$ȲŚč<ĺҀЫܷB1"ZƲh—S&Ř̦K掝ˇć0ZRuś•Ʋ‚Ď'Ş„¶Üęyšő¦JÚ&rÚç4pŁŤČů×Íß2Ň„=†€!`˝D@Č NČĐŃďÓ%ˇAć"çE¶NĆa5ji±˙Č Ĺ»H‰2ĂVt‚d…,Ń2čHžJ#gż˛o/d†Ó±x…HŔŢÇxC^3oH!KŐ';ďlk©;şż´«uŢŇk&Nż˛bđvBÖş°Ęęę굿\űĚú ;wě8uętsKs{k+K< śü)Čś RT™8rĐíËĆŽ3¤­˝«©­óđń¦÷žÚWsü@MÉ®ťŻoÚ¸é§?}ÍűV­^uăšHw2đĚçă`Ůc&T >lÔ¸ťŰ76ÝW9fr1{äe»×H’…äwL®kĄ†€!` ËÖ ´/bń¤F˛ČA‘qiY e„ßpg';H$ IHŰE&©ĄnÉGX]'ůse˘e${ö¤ăZ¶lŮÚµkى™mě”fť,Ű03í¦ęB Ě«÷*ÝP#˛×Ţ«¤b*}*ăç‘€ĺ1•óTĆi#ń†gJCŔ0 C O„Ě`,dĂĄÄFČ ;i¶#/–§ĎłPźH•<ÉŚx2ĂŠö¤[˛dÉĆŤwîÜą~ýzČ #Žě˝ ™!ɨ‘„Úőę˝JuĽö^%uUÎíÍ ővŤź8i1şČŮYŹO°k×k?ř·<öč/>ÔŢŃŢŐÎ4ş–˘nö§ËDQX™OG˘Ž˙WU”\5eč˛+G—–±x™’‚Ö)+‹ŰęĘJ٬°őđé†ÚÓ'™‡řÄÚ'ţĺ[“o}Ë­ď~Ď»X) ĺcüąĽ˛j⬹C†ŤÚőü¦Ăw—ŤśTV5Ě=ÔBĂŽĽ~Z}¤ş=†€!` @,[7?Ęĺ„#O¦č"EYËp/J ż0-6ł#g_”3(zŕßm+$‡¨R¨9ě™UG)4wîÜą¬Ůż?ëؤ™u˛ÂnC>˝zŻ2­ŕ*Ť»Šk´®·(er$ÚŠ ^Ď NĽö^e˛“P ĚCŔ0 C@ ËőţÉé@ŐąäŽ7Č 9;öłcÇ4!30śdW=+ uv„áu}&łŘŐ!CGŔŚ>"3«ŽlťĚ ůôę˝JoÓŞ U‰ë#Bo­?ŐxdĎĚ+ĚYz]yĺ`}M,Ůśä_ż÷ý˙đG55Ú;Ű»[ŰşşÚŠřQQA&w6ţ[8|pŮŞy¦Ť\^Zś]Ó|¶§ĘŇ’Ůă‡^»`BYIáë«w<ÓUTŇŮVÎ65<őÄ“żţ®wľű=ďž:u ţÓ7tĚŘE«oüňć7^}…Łi+†ŽäPYŠ"ÁKăů+Ĺ×^\ŮÝ0 C`@!`Ůşő9,łD¤“ăŕ|ĚŹ#ĂĹĘV/X0WڎڔĘZ—ćÎĹş 8.wśŕJq¤-Ż[ŻRůś·4%Ń [×=z”ř™j7eĘveůĎ?ŕü-5Úü«äo)ÎSŮ÷źqŁHš`†€!p™#ďË 3LŽcY(Łt˝}}„Ěd2a3ZTğРąĂdđ6ČŚĽw9_‚ 9ű•‹Ă(Ľ/ČFśĐOKţ–ę!Ď*5ź9ŮttďUWŻ~Ő5ĄÎr]ć ˛čőŢżżwŰÖm­ím€Î¦vL¦+&IǸLKgߌ˙0«®¤¨pÖÄa7/›\^^ŇÚÂ.vť%Ą˛˘ą ­˝óLSë‰ú–#'Š‹ ›ÚÚ))(hďęččęliîhŰąkWÍ=_yvÓ¦ßţĐ‡Ö¬ą±˘˛‚\`EŐ9KŻ/+ŻÚů–ւ®˛ˇŁÝ•ąň¦yľfŚĄŠÝ CŔ0Ţ\,[÷ćâo­ç…Ľ–Ő˛b Cn Câr]Č#Ś &C‡FĆĄłůşNĄa`hXH‚[,Ýę©äIŠ„„ĎdKěá߯Ľň »˝`Ěö.ś,Aj2T+dÄ2ň·O©÷Ć˝qNä Š?¤÷Ć,ĘTUR'4jE†€!`†@¨ I:¦Ĺ1dČ™‘¬—k/QrĎäęşČíd&Ů!Ŕg 3T‡ĆŕSG]ůˡľOZwýä´$¶Ý»wł/۱±iCʎZ®g•#Ć‘G5S!§Z"DŚyl«Żm9¶wáŠë§^ąmăÔdč·żůío}óŰÇŽËäÔÚ›‹şÚ3y:™O—ýXŠBff]A!YąŽ®îAE'j›ůsŐôQĺ•%¨^ŰjçţÚ'Ź×µóóČŃrhlQa7§Rtµ7uu¶5tv¬[·~ďŢęßüÍ÷Ýýľ»ÇOO0ĄeĺÓç_]TRĽóąÍ-ÝCGÉ ;ŤÓ+D^ÓkcJCŔ0 ‹ËÖ]źér’•lÇ 1mnn&×ĆĹ™\¤íaźd—ˇMŮŁ' ‹r‡ÚĘ 4‚x`’ťfŮĆří2Ş#GŽ@ľáµ¬ÄÇqŤÝ8Cz×Fĺ±WďUâ*•>•±ĆĽ~ĽĘ7+Âx̦1 CŔ0dřµ_ű5H{ş1±Ž;T2!ă¦f*Ŕ(‚Ć@`„Ćp×G’w8ihh€Ě0ś ’Č8P‡ý$¸}1KG9e‚׹úꫡ4’Ű®kśŹŢµQ9•Ż1‹wŰëkkv,ąvÍ´ą‹‹KĎâŹńš_řż_xđ§5·6w·µ¶7gçÓe×˝î9®(B†8fÉcWA÷ľc ?zb÷!o©;Óض«ćô¸áUÍ­/î;yě yşÂÖv¬2˛űĐufXjwQ19»¶Î6ľmçľ˝űľúŐÜ·˙ź~ö3ü´`Ęq±Ó®\ŚĹÎí›Ű‹KJŞ€43eOˇPÁ«¤4¤×Š&†€!` X,[7`?ÍĺK,\VÄ2dnJÚN.É»ĆĆFfÉ1¶¬– %E0ZaşR”!GŮ=VŘ˙…ęe&˛±ÁŠVŚqĎľz¤!x9Żă˛[ ·ˇŢµQ9děŐ{•¸J«÷V 9ŃP#‚×Ţ«ô6§ŢâUâ1NĐ‡Š´ CŔ0 AŔí2”H ɂ̚A€ĚHňNČŚş %ŕîέĂW4Aňގ>Şă“ěX„B¸~¤JDÓOŹPŻŞŞ*î®|ô®ŤČ©<„Śqh]í­§öď·xŮÔ«–hŞ®«ł‹‰ő—µnÝúÎŽöB¶¨+ɬ{íĚZŚsłę$I—˝źÍŢ!·´uľZ} K–+c»íŤ“ĹE§¨CŠeI1ívwaÇ´:u“¨ă˙…$đ€©¨ «Łł©»»Łîtçý÷Ýz˙řďM8?„7}Ţ’Žö¶]/ngv_IĺPĽˇ—+ôš!=µŠÎyµ˙†€!` ,[7 >‘ŞM))áÎEÎŽĚť$ďx„z‡¦ńL´;fJvŃĂÖx$ĺÇf´áľ›O0 6ii˛.çiťôź}ZĎ‘ŕ©.x;yA:>ź¤\Éśžc׼Nďß9}Ƭ+–®fňšĽ>ĐíxőŐĎ~ćĎ6oى]m LzËlQÇËdłue^,óźłBFź}Ěz8›B#QG•ڦ›ă}»94¶„Íę˛flŞLifz$ź '™d]&e‡›®Â®ě»Z»Ú»š›şżóťď¶´4ňSźš2e2UIŘÍX°¬µ©ˇzďŢBpEUĆŕrß4`bjCŔ0 ‹ËÖ]ß鲍2Î9`«š°ˇ©© ú¤‰6ˇR‚ŘYZ•e´¸‚QAI$䌄‘¬Ť%1u–¤ž x<׹kyaäP<ŢÖÓ“,cKMM §č"“JĂĽźLů˛QŁFMś8QŽ˘$㍂'‡ŰrhFuu5çfŕx1s¦1â„ěš={ö`1ż``CEI›ň™(•oJ+´ÎwaĘŔ¤I“ćĎźĎâ6®Fď6ť˙kćo©ţ{PEëš`†€!`ÄűúDáô}ty2vČŁ&Ú"|FquóPKX đf˛?ťťĚ°Ł3eZ—¤ňń0ÄŔm(RĄ˙CÁx[Leڇűî®Îú#ŐĂš·âfÝ«ŮoďĎţôϟݼ93®µˇ¸Ćx.+@‚)¶,?ÉÎł“HĎ&éÎţ'«ËZ‘Ḛ̈ăŢŮ•Ůđ.łćć®ʬkî*"qGJ"’u™śšÂn–Ü2Ç®˝©µ©đ‡?ř„÷“źüo'MÄOYyĺě%×Őť>uşîDaqIqiyÂ;Jd‘{ZűHu{4 CŔ¸đX¶îÂcn-ö—üěJ–ÇĘ4 &ňA˛ér¤ 쥖 \Cjy„zA‹‘ńž,f’“‚ć 1‹řq“yOÎęęJü¨7•ŐÁ«xQ\˛ĎäË^|ńĹçž{n×®]¤ŘřťA ©2Ľ‘ŔNZ“ÄŮäÉ“ŻşęŞ3fŚ9¸hńđáĂ۶mŰľ}ű믿Î,9~gpťPťK?Á-“ˇCIňŽ$ ŰQŹ3üeZŐÉô ;ú^Bf]l¦ś>dskKÁľ˙ˇ‡üîG—Łuq8hđ°yËŻßú䣼Báč‰îkşa„ô®ŤÉ†€!`ËÖ ĚďbQĺ…¬ : %żCŢG6ł#Ĺ"m‡Ţő"Ś%t9CŽÎ]ŘŁĚđĄ®.ňVřa\® Ů=g’ůŻxp5 rĄr‚˙oÓ!ă=ď»~ýúź˙üç¤Ăxq`Ů)É8gLgF[Fěů€_!XŻĘś8ňqüŽD̶›;w.i;~7ذasĺČśň+©·iÓ¦M0L{‚0ȇr‘Ôăô[<“t[±bŢE‹89Žćř”řä’W#f‚á»ŕą~;věxúé§·lŮž28AX°`Űu/Y˛„Š^4Tz} âEqŤú1Á0 CŔčsčg…Ěk#aQˇŰ•u JEČ ­cŹ’.Kâ™N“^ŚK&¶ÓMÓŰŇ­»1kW’qĺ-Jĺ!?^ç!ă>˙Ýťíµűw/\ľrÔ¸Ě Są8¸ěK_ü»'źx˘›„Z«/U—MĽńʲ˘Uvn’.ű 2·łăśgţ |łÖLÚc$â‰Ő±đť˘îLö®˝ł›ĂdÉŇQťSg ‹8*–) ZZ ˙ĺ_ľ3~â„÷Ľ÷ÝP2ŞŤ;iö‚%Ż>·ą˝´˛´r°~…82qŤ”‰†€!`ż’θ8B¶(/i ů3 h DH¸K]’;’ĺáNę=6Š™ŘKbO‘¶H.f–Q ęb.׺zS µ÷­ó[Á«Żľú˝ď}ŹYuäéXßzŰm·‘˙"ű6fĚčŞAUĽĽĽx(†Ł;:`˙ZrmLÁci>ňh\O>ů$&üŽ1eĘ”·˝ímřá_ćÜ‘¶ôđž´Čť´ĆI¦Ź¬(™Vl ‹X ŰÔÚŃÜ‘I›fĆś‹‹ĘJʇ .S^JÖoéŇĄďz×»Č2˝îűß˙ţONšŰÚŹ×6ž©mjë쀖©Ş3lČČQŁHęš|¶ŽÎ Żě{lŰë‡NśilnoɬŽeóĺ‚’’âŠňŇaUㆠšú(sý>đ,\¸Ż©/Â$AźWÄ­=†€!`}Žd &Ă]VĹ ™ˇW…ĎDČ Ý¨\ôËÁ^Dć *˝3d†yîLÓcxŚ*ˇ°ŠâUňď1ó·”VĽö^%ö!}<`LŰ››ÚëŽĎ[}Wiy…Ńs[·~őżÎÝÍEÝŮm?~%U—ů\†éÜ˙Î Y8ÔLéąKö­ă Uö$‰‚Yc‡Ěž0ä੦ťĎ44wwłOk_łŰŐ±>¶« Ł 3cŹyfć]{gkawÉž7ŞżńO˙dPYIńüăO54ß´öŤĂ'ĺ7Ť QÍlÍś!Ć\ĘVQZL‹×ΛrÓŇ™ó§ŤÇ;ޱrĺĘo}ë[˙đ˙Ŕ"Ů/}éKűŘÇ–/_. »ä׏ŔĘ8R× CŔ0 Ţ# =‘Üéőd;ŘÄt¬FČ =ud\ cČ ]'1dúËěÔ<¨.é 9Đ Wv@KKfÄsÚw¤iÚ•"u{©Ä/ŘZw˛ąî$'B”VVU Ĺ1©ňî‘¶x< BgGý±ęéłçŽś4EmęÎśą÷ËěбBňdí­EĄÝYu™ç °p’Ś$ŹBi2Ů9wYo™‡Ěşsą2äL%)CbĹc–JÇŻ?|ĐŕĘŇí{NžijĎúíbőkf3»®â‚’ÎlÂ.łŤ•>lk,.üôÓëúéCŁ~‡¤ë(\Žš0uŇŚűŞk ^W^)­xQÍY$v7 CŔX¶n`~—Ë:ŞáČR¦ÜČHö ň Á%[Ç•ś&|qą.0¦9%Îáµ–ĺ_B1…éŠ[¤˘„@gXUWčE¨*­äá#h’ŕ<^äjxfĂ}ó›ßdÄžDŰç?˙y6ë*,züą=?۴㵚ăő-­0ülĂ$E8ËS ›ÉÜ Ş;lТăW\5mŃĚńłgϦ‰ş¦Ö‡7żöógwľVs‚iy™˝s2K=Î{¨ml>r˛~Wͱ§_Ü3¸˛|âč!×Í›v۲ŮÓÇŹşýš+ĎśřІWÜřʉÚf·3D—ý]ř_w“óX‡»ëŔń7žztók+L˝ű¦Ĺł'MúÔ§>µxńâ?˙ó?gIďß˙ýßôŁ]µjUä7ś¸ŻŻ€z•Z°O[%îÄ4†€!`— ˇ.#OÓ ­Ćě~x ·\őőőč™gG‘ë%ŹBf$U'w4\Čr‡Éěßż2OŮR6Ďoá}7€<ýxͼαŚëEÓŢŇ\»ď¨ČÔ©3Á¨îäńŐ/C[ĘŻ:ş´jhqÉů±U©éhi*hnµp‡ńJđĂrßşg6ww67––dŽ$Ř2ÂąÜ\Vd%ěYę–yĚa“ –“˝ †Ś>–——•˛ŹGĆ ě[;şYúʢD1´^1~(,é…ę“-lYGj®»‹/Ȇ.Ĺ]L·ëěî,Ěě`Ç:Řěv]­íÝE˙ţď?\ľbůŞŐ«řô¬‡ť:gńá}űÚÚšşJ2ë!ĽŔ†”‚I¨Ôô†€!`ËÖ śoa‘ôBA I¤lXń÷‘|łÉ`«03Ú m—áZYš%wJ±„ÎjČꔝa‡L]*RŠššÖę˝ú‰Kń"řö·żÍ(ýí·ßţĹ/~qň”)‡NÔă‘-O>˙Fck[6µv>ż¦#Ăňâ$ďČżu´v6¶¶?]żűŔńÖÎΙF˛^u÷Á?xâ…uĎď%%'9ľ,ŃĄ^–ŐfáČzËLdşÝéúćÚ†&ń=ľm÷ ‹fĽc“í†}číËçMű­źoÝYs¤3śęh:ş;Žť©č™WźýĐűn^ňźVÍ{ë[ßĘXóüÁ°Ťkc™Dɱń„]ÎĎŃO€çl× CŔ0 Ň%ANčΠl†B‚LJŠąË™ęâvj"SQęBfŚä“á˘b¤ő>|tĂč·]ť'ŢŘ>űŠys–®*«Dđlî×ÔPćřáSG=°÷Ě–’ňŞŠŁËŹ(Őyg]] ÇLť=wččĚáŞ\vřŕÁţĆ·»;::;ZŠ9”•iüY$3i¸,$ňČ]4N’ĺ%<Âd2ă™Ýe…ĂWŚZ1jHĹ°Š’ŠňâŇ’Ě~tŮüYw'ĂŤťÝu-m;jÎśinTĘ»LvŻĽ´hćŘ!'ęZŢ8Zź rŐՙ٭ŽS' »86KG±„x¶u´•Uď­~ŕţfÍž5yrć|ڎŁĆLš6sOuuW٠ⲳ {彸Űe†€!pi `ŮşKă;^oâ|^˘‰ •C »2ŐN¦ČQ¤ě0ĆK0]îhxĆG Đ sĆŐáÇČŔ^oTÁŚKĐW!źŹz—ŢÔőúŚ(‰˙ţűďghťóX?÷ąĎMž<…ŧ_ř÷§·ď>ȶ 1ÍPÔło ćÜ«f đĽěĘÉw\;oüÁäÎľýčÖM;j—uň@ÍsN2+]»8ólß±Úk_ŘĽóŔ]7-Ľíę97.ś9nřŕŻ=ĽyĂKŐ–v–2ź ĺl]BÝw´öŢű7T9ý;o[ĆŘ{îąçCú‡N°0–…˝Ěä{Q)ňúgÝ„őjŕ !'®ŤÉ†€!`†@>„ú”‹P2™aě©ńě®+űĚÂI´"‚’:Ah † =wˇ4Čî ÚAfggDůĽ6ˇéeuŻ[UÖŮ7~ôE7Ľ­¨řěŻ0%ĺĺ•UĂGŹťzĺÂŽ6¦;rüĐţcöžÜ˝·«¨¸lČAĂÇ”t4ÖÎ\řŽłi4F ŰÚ~đý}uÇÎ’â"6€ăü‡ űed‰2iµĚ“ ˘Ď”“MËÜG )ź1®jĘČŞ™TÇÖsî­<;âyfíU–·vtUVŔ±ă\Ř‚CĘfŚ|Ľ®Ąž ě łŮąLÂŽ=ěŠJŕž™ wÝÄ€%ëaŰ;š‹K«~ţđŁoyË[Řu$ł˙`Qń¤ŮWŐTżŃŃÖ\XR&śç|“>I1ôšÎ0 C` "`ŮşřU.óŕŠ”÷•Ě?`0ÂhY9ÂB8®\č!©nChp%— YĂt1ŕB Ó…Ń ÷ĺHSh.«HđŔ.0)6ˇń*ŠëC~Ré˝ĆŚĄ“Ďâp 6ľůČG>˛`Á‚uM_˝ÓÖ]Hm±Őq<˙CUĽcĺüůÓÇ1î;ŹmŰđju†]¦ySÍÄutuî®9~Ď}Ďě9tň}·,ť7uܧßs}sKëó»Ź0Ŕ¬fLVÓÝĐŇúă§^¬knýä;W]}őŐĚä¬ ¨˝ďľű~˙÷źĎ­ö*Äa‰kڵČCŔ0 C ú—T}bBDCPún˛utĺÜY1Ŕ$M@E(Ő`\Y*JŞNĆ ©.d†GŽY‡ĚĐ]2Eť»D›FźĽNČżWW6ź>˛č¦·jŞNß:łÝGÉ—Śž4}äÄ©W,YŮPú̱CGkö®yyŇ´ŮĂFŹ{Ü9|đG?úIIQi{[=Ţ2“łeŕÄ›fź3÷Ś-éł±C+çM:mLŐ 2f&fc$ÝFu¤zGg7'vU–łŻšĐ~‘W×TŹ +mńĚŇYBÉLš$s—IŐe†Q3ëa íę8~ňÄ#Ź<˛pŃÂ)S3[ď =n̸ń‡Ośęî¬*(*‹cĄ/+‚Ý CŔ0.:,[wŃ}˛Ë"ŕçŕĺ…@ĺ‚ëD˛o0T†ťˇą¤í ¬TĆ'E)qŽĄTä.”ĄČ2@Í#—ÁmŞ3UŤĄ—ÇÇIB`n$nä UÔ,T7­‡¤)ź~úiä׬Ys×]w1Ěű“őŻ<ýR5$?žÓĽĂČKfOX1oʱÓő¬eăŽ}Ńs\×[#IIëŚ"×5µüđ©—ŽžnüČť×N›0âżß}Óç˙uí+ŐÇ(ň…1/čěîzôŮ]ěó‰__}Ë-·|úÓźf;ŢńÖ[ouŹ aĺŤ)dŚ>TäőcJCŔ0 Ëä^#€®h ˘ë@€ŠŔgęęę…Ţ(ŕXâź ĆÂÎCQVq~žEXÁˇC‡d?‘dź:ŚDâęqë>ze÷-\oQWGç ÁĂ\Q9›·+(+6jÜĐc&ÍYŘŢŇtúř‘ňĘAŮÄ[ĆśĂç}ř‘˝ŐűJˇ|.ÁR‰,8YČ2’ťf?ʤě˛sâĘK çNľhÚđÁĺe]g—Ăfěăóé˛Úł·Ž ÎÝĘ‹ŮĎNő¤ć†V•Î?´®ąýd} zĘHŘÁ8 #“ĽË˘J$ŕ@ţŽóaKJ=˝î™ß¸{Ď„‰řܤő&L›säČş®öÖâŇ_Ů”o^ôD*ŇŘL0 CŔ śď6H@†!Đç/€ Á%C'I:ôđWČ.„UĚ„ËbÉ…śĺCţFuń AR—Ámv0]a8Á8éóWč™C‰GîĽ '·rľéĹ»ďľ{Ä‘űŽž~xă+¬ŮđĺÂ’ÄááUw\wUyiÉú—«×˝´§µµŚ’ęä*ËRáÂŽÎεŰ_żç'ëß8xbÎä1źţŤ9‚6»B×_źZśYűđ3;|ć•ÂâŢ‹5°|”Í›7óľţ:Y «Č„lLo†€!` (čą$ř Ů: âČăZn@IDATݎ§ËËr™(™QŢ™V#FîhpHÎŽ9z˛×|?h´­€€vŮŚ©6ś9•gT™yj%%‡Žź>{ĸIZ«±ˇţÁ*,(îčh%/Ć&s.ÉňŔŚ&Ł>7śImĚĐň[NĽnÎŞŠlŞŽŻ!Ôo@h珂‚ʲ’˛Ěľtg?"â4s›珛3a(çRp˛Ťb úŮ- 3ů;®L$ÄÔÝÁľĂ‡n|fcmm­45büäĘňrŽMŕYÝŮŃI…Xě™9®‚ŚhXú8Ř-k¨Ńop p p p Ś6 p´n´=®Oa‚WA‡Č?%6|SlJĂÁĄđ;ŠŮ!¸•íOÂ=˘Ž,>Y.őtŃKř„| Gţ$Mëęęµ\P$j¨Ý˛±†´č”Y,Î÷®]»ŕ©#D´˘˘ĽÇřpëâ8¦yaË7'Ó˛dęŁA·~wý®ú6â“­ß‘ą J«Ëřd[ÝÓomôB §T]sötŁÎÄ5†íno}k7lŚvx"mmm8óH˙\T­´ ;¨4ÎŔ-Ŕ-Ŕ-Ŕ-Ŕ- °— iD =o‡G‡MÍ ĹÎł':¬&!9]*“ đŕه˘qťFkEył~ÄPÜ ÷Ćf6̬ʙ]ťk7,üô@%¸7Ŕę(3*ÖĆŁa(ýČëŕÔ tŤ«¨\ „Ż˙.´úÉéýJ„đ[nnnnbŽÖťłóISµs2$ŤTÇ«óÁ?«Š(”‰Ŕ…nÁÜ ˇ”ps1#n)éŔKěřŇ[°‚óÔ××ČoçěÔ5UîaQî>š f, ţ7–ą`ÁěÚ6´ąŹtôŔů;šqđ;¸ů…YgŚ/éń¶lőúIÉČ^Ä9ŐfĽđáÖw7ÖF˘±«O›9®á(j€Üßp$ÖîöÁW-,,ÄÓ`Šç¨¨}¬´‹ÚP‘MNL‹Y>śS¸¸¸¸N[ Đ7üsřű·6 ©3Ĺŕ¨3ô “bĘ&vf(|4ĐKo! Î F1gđźřľÂr ©ż^ÉZ´ÚÜ1ÓšÚ:W>˙÷µËź;´cCoW›PQU.X™ô{WŻ]§ËĐ!zXp`phm­<ŘC8Ő‡m55%ŽĹS KJś&“.N*A¤yĹ3B±(ĘšŤúiÄ2sGǤҬYŐ9v‹žoÂ<ć^ˇ!ŕv=8u×Îťx@TjMčőń(ÉKâE$RdćlÜÜÜÜ'ĐĽĘÄ 4>źú8Y@Í/;FŁBđ Y·`Ćpx ôí gDČÍŽ‡÷)Ą¸t)ŇĹDß&o'aÖLY墟ŰÓÝĽ~•6úľ-ÓQR9ÖUZíČ+4š-I$×;ŇPż˙A1 ú‚ČŵH˙“O‚ÔÁ>¤NkUľmAM>bX9äŽÝż bĎŁ{Dwq¤9Î0čµf#ÜH]Ü]ÇÓĂ!ľP8şĺP—/LrďB(Ž×i‘ÉNxjpŮĄâ4ŕŽí;{{űrssÁc±;-k8‚'e"[ťýWöłđďÜÜÜÜŁÝ­íOë§h5/$™Ă$!tÇ>(BH€dÁ[ĄŰŃŘ´„(şSŤ»čx´Ôť…HÚFB(‘bvđt‘P˛łł©Ł,›?AP\‹"‘PëR¤S"TBd(»âââęęj uM˝ř„bjZ©ŃmVSMyA ŢSßÚŢ磫Ć9L:âaë[ÜĎľ·ůŢĎ/ž=ľlńÔ1ŻŻÚÉ Ž´’la©lEŠÖ`Ăä˝rJfÖĹÜÜÜÜÜC¶€Ú«^Gę2!„ĘÇž ¶ÓaX"Ř>¤2菅î5b,ő…ŕ*Po‡:3 Ă#´à ÁáQSŚ*ťYé/§Đ®´čfŹĐÚ2u›9·8 …˝}µµµ»·o2 EeUůĺUŮůe6g6Ó5˘±čľ]»»{z‰}cQŤ¨H+ăA gš|‡iÁx—IŻ‚ÖŢćYĽ|´í™FłŮŕ÷…˝^Ő¬Ęŕ`GŻOm “,oŔSt9­Ëňú|Á=‡Űq‚MŻâ}ĘǦK٬3d¬ŘT{öŚę%Ó«Ż9{ں݇›şúŢŃČAAśN$7 čŠKV$Ş1§» ÎĎ-Ŕ-Ŕ-Ŕ-Ŕ-®Ô^LŠŻ6±pĽîáźPO® Ü wřěččč† DÁEť40>! ‡W[ęŇŕ˝9€¤@‚<ş f:D<µĽŤ±¸$t9…2¤E§ĚX„‰Ü´@ÂL&g.ž…ü}M흇ëčâѬĽ‚˘Ę19eNWˇŢ`¤łÄ˘±}{wŁt®ž¬Xĺú‘¶ŕ`•áËjŇÍ—źe5EÁF!]Ѥwf[Ĺ`І‚€ ‰ÝÂDß@˛šő1?vHEÔţ&„¶şý ]>‡Y_–‡´uZ»Ĺ0ˇÔy¨­ŻŰ‹C›ÄíĆcp»Z[ŰÚ;:đ¤¨c™™•ťqřNEÂý‚ľ«v€·¸¸¸¸F«8Z7ZźĚ骼 ącˇčĄe!ąL:\,m\pU± n  „§K!9ĐáËb @=¸°ř$ş Řt,umŃF˘@|\8¸Ô©Â-ťZíS ąUĹčŠü Ň'pµq„Pbź/€íY6*ņA«+ÍĎ*ČÉlěč=ĐÜ™öř§égÆ3Âu_YµóŚqĄăJóćN,cőžH\zĽ…j7_µ>`vš¸OJR´I˙$Ňďi1Kó{nnnnnáŐ/›°·Ň-$—IEI$ĂW'°9ęĚĐ^ĽqÔ¸śPpÁŤőgĐŃŔ'ť Î ĄŔÂţ%p@ g˝h¨]U%·jŁÄô‡ĐĄf­ÎhĎ6Úś1W,ĽŘ˝së¦ďů®¸r<• ϬîŔ!d²G+ňcú]®šbgEž­Şë•hĂJŃH\oČâP)É*’%bŐn҇Â19\‡˛/ŮÝŘł§ąÇn2Dă5E$éÍsÇ;¶ę†#B„Áw„Ž(îéëmkm CÔ±´e:‘k0ÁŇ?uŠÖëgçßą¸¸¸FŁ8Z7ź ×Ibt}ęnJ„ zKgÁXě<ĂÓĄ>đnÖÁ-@¤®-ĽXPĐKg¤źLčhc P?ęű&×!Ýe¦ÎŹŮ± ¨ßĘĂ# †ŕŘĄwa:Äh”ć9 z]ŹÇßŇíˇëMOJĘÜŽřŢZÍš]ő›÷Y4­zéŚ1l>Řă“•Ź@˛˝Î™i†>8>€aŮ`—ĘTd~q p p p p { ¤űĆňK–Ngľ Ľ¬ Ż~zÎŽ:3ÔŤÁ'.ĚgĚÔi3ťBĐŔ…^´qÁ™ÁÖă v˘Ě˛Q0§Č ¶A™ˇ-Îĺ“#f:˝Ĺh1eću×młĚlŠh0ĐÔÖ¶xĐäŔ&H&e`‹á#'Ó8µŇIF©k Ç:;=đ‹BÁh$ [±IŽj ÖjŇűBl”ŐŮěţjLp9ŃŃ^–Ă#™T’ŐÔékrGQC}LqUaöÖŇZPĚhĐ»ś68¸‡ÂJq„¸$ž‚X16ŠôÔ‰bQĽÍ-Ŕ-Ŕ-Ŕ-Ŕ-pb- řţ˘ţ ;8-đdhH,783ĐĐńľfÎ śȡ }B8ŃĆ‹mĹY]¸Ú¨´či1SťĹâČ‘ˇ·Řú•ŚűĽ^·»kĆ9}Î —‘‘˝‡3©8+Űj'u• R8E ,±tô§ 3é24®6‚ «CˇŘ©ĺŮůN Ć‚, Őôl»©ş(łÓňĂ÷%'ępĹ㤠Ź.u»»äL'4qX’¸bô6][ŃQü3- ŔČŹ<ňČŹüă´FOfü›ýáĽÇsR>··Ŕ[€Łu#nR.p¸Pó3Žç+‡ę€O8ŻŘI†“ żŤŠĹ~"Apz‹n\ÓC=\Ô9&XŃ ˇţ®x]ŕLb&pŠ™)§ś’„.aĆtĐüĐD€í€¦)$7I˘ş ±Ů¤ĎÍDé±H»ŰëöLz}±+s|©«˛(;?ËnÔë=ţŔĆ®Íű›Ű{9’­Ra6ü-@pƤ⅓+¦WçeŰ (†¦‰Ăɵ[Śd·ą˛`{]kôč`X 8íć› {ÎČ3Ť5Ň,#`>9…*ˇHW$*(ÍIÜÜÜÜÜ2 ¨˝DŇ~5Ę$§N :ŕµg°ő[ŕĚ€‚“YČA3Ůá˝PLđý$6/-‰U“wI„đ[nnnnŃox XÍ]¶sć9®\věţDÄ (-?Dí…•–AŤOť8pZŕÉŕ¨p`v4Y>(N§“93ÔŤÁ'FáÝ MŇőÔ=պҥ+.™@@x¨ËŢ«4śŻđڰX‚¤ą˝Áµµm{{ĆfŽ+Î̲"RapĚ Ä@621J—…ZűpŽśV”ătýş̱™eÄí GHŕ.˝ßő<Ž~]IŔݱ±HTµ_€ô»šaĄ|ü^Ýä© ëŕ˙ăŽ:ă‰ďˇ(<ý7‹¶Ăů5ŇűÚʶź?mëd«Š¶w…6xW®í~ňŬë/sÝ;*LłŢ˝/ĽÓý÷)sńŁ?6\ČŃş-ÇŮN/ p´îôzŢ'ËjŐ\Š´^6#"Db1ČÄGđÂFŘQŘQ±pvAÁ…^Řáí—:»iŠËfr*§Ňäbĺth‚ě{8^%÷ďß?f\Ma– ďn‰>Ü’âe@ëŮÚíycÍî˙~¸˝«Ç‡­áꢜëÎťqćäJO řÉÖşő»ę‘ŢnBąkƸ˘˝ mŻ@$™7©<ĎaýtOĂňu{®=w沙cQ|ě>ŘrŔb1ÚL&Ŕ…n$j9ÚŚŃXő%Jósŕ‰lذÖFlQQ–,·Śś"·3‚3cŕŤcmhwO¤ŁŰP^¬5©ţů‘Šž•k#­^¦xFŻ3Ž­0M¬F†!1ýX´ă‘¨gĺš =edč\ŮÖąÓŽĹ,ÇT&–Đůđ?éZ«%çöĎÓéN^á ×ÝŘľúgÝpąë;·ˇá߼«÷ĺ÷p*!Tßóř e…ĆĘűŇö‹+ľ]{<ńĽłŠ˛i3m¶ĹłÂL5U?»Ź©ă7OXťáĽúűůg ó÷ .n¨˝GŇzč#"D¬mĂ?»‚$Ľđ[ŕ´ŕ‚K×™yA˝Řw¤Î t@j+ľ[—٦öHŃĺ+E,ś8RŰ?¬źYc0ĚFC˘ëhW‹ÄşÂ&šr臟DV­Ńô›ęşö5÷UÚ'–81;D: Žĺa)wuÂě= Pi÷"®ĚĐGP ť™éş„ó^ńp8âóúđěđŚú×Kľ‹m"¦óö,câ‡˙€ÖásŽŰŞ$ ˙ŞÇ y^ďęÍÍwýŠÄ‡+]ńP¬RđŁo(ős··Ŕp-ŔŃşáZŹ?…-@]EG‡ú¬pdńÚ¦v±ÁŮĄ.Ľ%ŠÓ)ş¶ÇŮhĐđ"Ją755ŐŐŐ!%\QžĂb4Âař i(Ĺö.ęž\ţé o'ţ 4ÄpÄă™Sqž__»gß‘D§VäçdŮ,mn©h¦~Á@Ú9R§Â Űs¤˝©ĂóÚŞť«űĎϬŘÜŮëź™źcł`_T·A0H‰ËYm kÖ¬w2f̰©Ý*>\5fN?>iéřýSţM»Â‡„ h.ÎĎúÂ%9_ľFcdé‡ŇĐĄëoĎű×nI6pöąó 󝓌Ł+ŇÚŃtűʍpŰ’ą''Zéüc­Óĺes´NńG%t Á·&ńófž11Ňénűáű–(fĆÁ„Ŕ¦]˝/˝k¬©*üĺ·,ł&‹{Si#.©é?ĄśRµřńTFqfveĎţ€ťďŁ řâ™ů™sŰYfNb<§XCţľÎ . @đ…W#vfp‹.ęĚ€ůÄšEľ 5}„•iˇ:«ĆÝÍf+b!„…‹¶ô ĂBcZ”‘UX#ńb4_(şŁŢ}¸ÝW•g[äČÉDHS@ě6vů=ÁHi¶(ŰŃ‹2ĹŃą˛N ˇŮbtąěn˙ÎúnĚ›@ęp´4§ÇëčĐ(€:Dřfdŕ€dVvž”’HN ŕąŕźţŤŔçÇçHîł‹§†"Ń\‡ŐZ[Ý}ŐKz T…™<đIăŃu{đ…E˘ŞüŚĽ,˛‡Üăń·t{áK‹˝\„‡Ě[d6jk÷nÝşé¤I“¨ĺŮ„b;0˘ZCŤtµ.5Qś> „›Űľp·Ř ÄŹA¤±µăźěyńťň˙>¤Ď;Ĺ×b1Ď»«]r{ů 8vaqC°r2Z çĹ·©ÚşÜ,Ű’9Ť·Ţç[˝Ym!ˇ˝uGn˝żâ•?źŔ4jjşťňtŘE»zb}Ţžg_Ç—ˇşÔyő…Ç4B†Mţ6QtäŹCMHŠĂ©@*/MléŃ“tđ|>p0ĐđapáőJÉ5@*S¦HŹ]Ü•„‡Í˘ČŁŃęÄ ů32č‹Cc±[słłŔ¬ŐęH ;Á;Á'NşeľËĐt3$Ŕ.ŇIp8áŐŚj0Ż?ŮŮŘs°Ý[žgWhĎsł˙­˝ţőű;›yý‘™ŐŮ8=Lo4ôM(J;@Ĺ,(óęîö›€Ą’˘[0éĹî¦FŻŐ ą99xRt@IňP‰B§ JO(ü «uQiü3‰`:8Ąř·@wč“pžđ.¦äpĐş`íˇHS] ¶4JžüĄĺŚÉô7L/Ż›żié ˝ŢÖ+˘u8|óůuYd;?• ö‰Bç··€`ŽÖń„Qg±1§Sľž…ç I2śvŃ(ú‰XŔs4™"OáűR÷7‰ń\â¶š>©ÓĹ“R,))Y˝z5;ź×ă´YĘóťÍ˝:c"’B<µbř$6ÜářâhžÝ rŔEscç^ú~,ń;5šŽOŹ7m·dgZh䆢LF„‹äeA±Z`›‚ošŚÄół31i›Űßë ˇ:Ân6ή)Ň÷á‡-…óŠłu ­KÝVĐ$-f¦9oŚ hŮđĹ{Ž‚ęDŇĂuGZľ˙ŰŇżý\DÉ&0Á®G˙Sđ“˙Iˇ§–,8Đ8ŢçűÔZÖH®iŕÄ•č¸üÜľWVŐiµ¦Ic`Ăŕ®HťFŮb=}8%WůÚc#©—•šÄ€>x¤ăÁÇI„ěYłŰŮ/z„¬řť"~cŞšx 9E!jĂ!JQ#"‡ޡř„ßgí#×-FŃhYxpołX±äm5}R§‹'•Ś’Ü2Mtâ¨h>ŻłżCo´ há!\ź€Ëáx]ÄÄTˇź yŚSŔׂˇJ@Ô·{Kr­Ą9ÖÖ E2ßi°µÉŞ- ötăľPnŹÍ¤cŮéŔŤĆ=}Vc"[™´h,´Ŕ!?„ÁZó ňZ xCá¨^o†€íPżBq:5[)2s˘˘`C\°Ă§"Ď(!2%©ÎCÓ e%Ř@ŰŇůÖŮSŘ-~yćÝ{[ËÝż¦˙Ćť¬ T˘čřÝß}ë¶°? ú’ÇgÎÉşţ3úü\1'k»źyµç…w“6Ž«ö—űŤ/"] cŕ nÓÓ­;=źűIłjĽcu»nŠ bâ0…$Îş YlMĂy‚; 7v§A‡× OW¬Ď me’łśB»ÔččwAŤĘĘJ8ߨšÚÔÜ\XZ>¶$oÍÎz&?•ńb#Ř]×dÚŚÄ;5Ťµ÷x»ű|v«Éa5'ĹĽé „{˝ D<, ·ľŚ óŠÁ€|vŹ0XĐAA]8Ą5eŮc‹ó€ĺ­Zµ –"YZZÚďצ˛&Â#6ŁHd˝Ľq,,ŕ]µ*'$ôHřĄ/Čë}éěŮR˘÷˝5ţ­{,Ó' yö‚_ßmť7ť Ç‘˝N7ňu=öďPía*Đ·n«šd ‰)zŤ©sŞÍ5"tü§ő{2•IápWŻy.îfQ2vÉر0AL'‘u÷j,ćc’_,µý|ňk!K’NŰ÷ńF„‚]LI4†,–ľ°čp˙úm’jÚöe B„öJňŮ,ŢO66Ţöx0Ä(xˇcĂ™4ÜĎľ^ţŇĂƲ"ÖEí>FÄ;_ľµ[Kźü’ä2:op ś†ŕhÝiřĐů’ʉŕşáf‡Oň&Źź Żsś–‘R’L †$˝iu)Š‚˙ $ ®¶ŰíĆńşňĘŞšr—^ź†Ű ‘äÁŽ´FXÚ¤*Ĺű|!Ź?Tá°eešĂ‘|qčńŹ´÷Báňü,„čvöŠóÓĹÍFbUđŕpźx^¬tć¸RT¨ąnÝ:üi1{ölróж˘Mälśrb-ŕďĎö5\÷~)ç¶ĎˇÍŘş oCŔ Ő ‡’†ÖĘŠÝźŠ2V•fĚž‚|˙ ×ÜE)Č&Fô3ÜŇç2¸§µĎpJë°J ěç/ĉCiíľw>ÁˇŞŕž@58#ZZhť?#ű¶«ĺ^©d`÷Ó/‹7Ą]ßý2ä0ŠëľŰMă+éСƶ˙‰¶‘?çKWŁjhn{ŕŹ”h?ďLóŚ =ŤśhîCrËě)ąwݤĎa'K(ăŔ§wŐ¦îż%0#ü©‰şl ˘ÔtÇŹă!!5ŹN[ř«o#ĄĺۉŤt­Ó^ü‡ű™ ´lĹFˇB"-÷C÷S/Á•G}p"oŽyZMÖ/cq78›ó ŘŤ\Îë.Í<!măłç…·ú^˙Ţf^ĽŘyÍE=˙}ÓóŢP <˙'˙Ó÷ęJ÷3ݎřNÎŕaáůćÜńńź(ŕdÖůđż[÷`Űqnú‚\Ce)r)f^˛D‚ÜőĽ5Mgž8&°Ôš Wî×®cb1*˙ţŻzŢţ$ÜĐL{ńęک,ą_jâ;BČŰń(„őÓe;ÍSĆĺ}űfóäq6~«heŔN`%˛˙~_$BöŞ Wžg(r) 9exŰb-đ[€řŕG :šĄ ĐŰ%Y,ř“ô¦Ţ5Brâ:Ł­§+ʇŮqňmě¸ńř ŤýBě«řČŃÚ#A/ě)±ňŤ”…rđâFË#yQ’Ô  ŁHö:ŤĺsQÂŐaŃőä \ňUŔĐPŁąŰ׎Ѹդ?Ł*×b¡?˘‰pĹáA šĽ`śFkŔĄeeR¦O lžž®p Qż:L †’OšĚżĄo“Ú°PžýŔ¤ľtóÔńŚ9ŇÜ^wîMÖ3gÚÍĆ®§iňXĽŃ°“Áh#ÚëiţćĎĹPť!ÚŃÝ|×/+^|XLD[ Ő±.˙ş­xĄfßxŁđ·ŔihŽÖť†ýTX˛Ú+3­WŃ0…H†Ó[x·¸ŕËÂŁĹÖ4\`vÝÝݤz—>ĄnŠbĺĎ,E66hvb‹‹‹ŰŰŰwďŢ˝ôÜsËňłťVs_ °Ś±%o>Á‰„“š”Y]BŢ@Čj68,@ë´—…ŤĹ¶jYvĆŘʢ좜ĚĂ­nÉÉĚţ+™ p¸çM,G}·×V®`‡5Ι3öOŞŰ@§| *v€CÔł"ż…7‡k„N0¶ĹsXŰ~öÜ®~´.t žŃG¤áß°É ĂÚž÷×5ëWé%Öë âk÷î§^.ű×ć) /6Dëyn9ăŚűˇ}‡đĺţ׫%ű™}é|Ö%i ŕĐeżh±ľČ…Řă„Y7\ĆĐşÇËč±`˘u°UtŰ~ú‹T…Şřę{ëăâG~hť3U25˝5V—y?ú”ýëÂć9qÚĺ߼éüh[k·¬Ä‹l.T™`S·Âđé™Lŕť~6Ú9p”Ć[ď'Š.‘8n‰ŻśŻ^ p=řëš É0čě….÷żßvIGÍDđ«çÝU”‚sp °l×c˙đZůĆ_Y™`lď㯠vblČÔ/”.Áó-{ćúQiř+ĹóÎ'´M˙†Ńč->ńW4q:žÂďeqßÖą‰”â’™X4đwNýçľiL@ѶNďĘNߪMEż˙~ćE‹Ĺś'¶éęĹb^ąŽÂ q^}ŻŔ"”%’Ůß<š‰Ůó˛ź gZ·jŻ•ăéĚ@a±´-ř2Zř-x±âÜ:p:83Říb)† eR›Č)r:x0…§ś_ŤBéřçf°Ř;[›¨XqmÜřWnVcK—VgĹC:·J~ŇÔu—´N‡b˘SuäTą$|Ă˙ôś?Q•8QÂwü3÷GÖîëŘ×l[`/ËłYŚzŁe(„áG}`‚.O°©Ë‡<ż`CŁ4ÇV•o;;M~ż€ 9ě§%ő+&N¨Ét$j"EŁ‘žÎŽ”*ö‚$užQHĺJŇĄ2‚“ʞ xRŘpřz"jŐ<}vŞëŹĆčˇcÜj¬fä°CÉ,çç.dQ ű>Ůí&ô¸LSĆţňŰŘő~řió=˙˙®@ lŢŤ 0y&;L„8Yě‡!„Ű$‚€Śľĺq´Žš‚ž¶H >8m­Ă~ü- µŔ˙H] µ×çqBŔt4ó $A›zN©«ˇ¶B±K,YÂŔnŽ3ćČ‘#›6m"…&˛m®l[oc°?€u03ʔ䭂ŞŹ%€bÁpŞk%h6±“>FťV··ˇ˝ĂíE×écŠ·×µöůYŠ:MĂăq+ŽŘ‰8¤z™T™7ˇ<_›ýő׌–———••ÁÔT1¶pąžj]ŠtE˘\&§ ßäÜJy1•łiL`¸?É1(şěTsłáâ°ą¸7q+ÚÓç߼«ďµ÷"lűůźĹPăAô–ďţ¶ňŤżPbç#ϡ:1'˘&›ďüEĺ›/‡1řÖlnůŢ˙˛[ë‚€WÄhëJ±ضWΉ›ŞV<Ą.ŕ eŢtV3CëĽďŻcŇě.Âpŕ’Ś"n¤n+ń(y^ľ„Řőčż%PťČšuá,”˘s\ľÔóćG´Ë·j3 LzBđY`K˙źzÎÖ‰‡Ł-†ęXpHλë&P€6~ĺö—㡠˙§ŰŰ~ůXÁŹľAońł”€J z¨"& ś‡öv=ňLďËďÚĎ™ť-s¦˘^Šu>‚˛…¸lĘ!|¦¸dѧ 3¨ŽŃ¶ţřOöeg20‘uť¨ şÎß?u˘f™yű#dQ¨şřO$/ +wßÔÉő‘ŹĄü©K˙p„бŽ&łĂˇulC‹Ŕ-şFD Eő¨d|Ę{ĺ”$kL0#Í›ŮÚŰŘđöYěäÝ_°…eÇU×7węôĆH0×Ę—Ńšp8f4’¸SbyÇ‘Ůčńş~LđŠvrę `lsŰ{»›úĆŘ*ňí6#‰ş•č‘áX¬©Ű×чÔ$ëŻ'vű‚‘¨•D$YÉE’oä{č :‹Ń2uúT‡#ń*ÄŇz{Ý‘¸NŻ#ŮöŢ©iJÄónA,Pňןľâë8X'áĂ®$Eî:z:ë†Ëóľ} ÍěO-~r€–Y\Ű÷%›k´Ře” uČ9PöÜďGű5lŻ`ÉĽü–[ŕtłGëN·'~š®7ąŹ’˘ß©&D>ś âÂľ4­łF!$5 ’§˘Č¦Hdĺ˝r \튊 ä Ůľ};NŘŮ,™•…Ůű:ĽĹ¤©5Ő|Cˇ qÔT侊}i|áÔž—I~+8šÉŕ:­NÓÖĺŮÓŘ>®ĚµpJĺ{kű|A:Ňş{}H“›i%{Ý"9ËΗi18p`Æ Řüź5kVň=ąM¨ţŠtE˘âz9q¤,€3hňchŔSpŕ…Ma_ĹÚCh$  ä|í:*3°ëË ‡ĘžY×]ŠĐKh‡2÷t G®şibšXťyń’¨»‘›Q¸ Ż´ďíOč98ƆJ­5Ţţ#şŐŚ[lA—üőg, UĚ™^[«ęL3(îŁc‘ć)ҰYQ”óĘeh݇źf<ŕŁuRÇ‚ş­Ô$(ĐuZ}aRăőľş’őüüNűy cľ@ëÂÁ1J÷¬\ ´Îvö<řúSCZ=ŇÚ—Ě˙úĂçB"D”Ic d'qČ?´&(e?!÷ôT n!0娻pf3ÉŮş„şÍČž­K× É_Lđ:R¨&D>ś”ŁvȤ/"]gF>—ś"Ö™Î(ć·§"˝R:wLđz;[)Z“Őľ`ţśw>ZŹ®pĐÍ@ťŕWÝ´q ŤČĂŃď˝$úA'ˇŻĹP4ÁD8÷Ů Ůxquő…Ö÷÷4őM)s–ĺY­F˝86ŁÜÂÁş@Ôî@l-˘|(î#ŃŻdĽpáčääŢ'D×jĘĘJÇ×ÔŕqP†ľ®vňhIä2(Ŕu‘ž” a‘Ú„ăźÜ©YÇë°7Ůőä‹xą(Ć«ÂÉÁ&ţµ ˝DŠs )đዿ˘ËĎĹáqËÜi9_ţ’+N‹M,ć˙“„"[¶"?'r ś>ŕhÝéó¬OÖ•ÁĎ`>Ę \3SţÜ&ęEŤ¬>lŠĹ:D¸ÚŤŤŤ{öě9cîüÉ•oŻH«”\¶şá§# `8ä¤ëß[VD|ÖÄ5ŕröSż ŕş]ő 'WŽ)ÎťTYp ©>4ő|Ű{˝€ťv3N×QľkAŽmnMąÉ¨÷Ýw>bçţüůX]şfQÔ‡G‰|ë·5~ĺ‡ÂDD#CE±íl‚‹‹8‹™6*™Ĺ3â6÷Îło¸ }0´Hb!‘ŻçĄwY覲˙Nç$JZ«™Î¨4ßš-´ÉÚŽÜrÆ •%ĄOýѦ”8źy÷Üš{Ç `bĂő÷° P«Şˇu87§yŕôPŤĂGZ‘•($˘h©&XWÄ'u[Ą˛.”Ť+zč>IŁŽ;+BVä hmVüĺ€Z ­?Nd˝IXŰdÄ*zźO€eŢk)Z‡č6©ă2rŘMrË˙ë7:áą–mą÷AĘ:t ü2q˙űu6ÄuĎ—rľr n‘üîŔĽkhµ ˝k?¢ęŮ9>–Ę'éňă·gBXppľţýr şîűŞećDÚ•â’™ÚČ»űÖÜŻ^‹6J"@7M< &ŞË˙ţíýOř-26\w7ű·,×ÇPUŠÇ:ĚĽuCx=ťp†é 7^ÄëĂä3›Ë)¬+ÝDÁgĐYěm  *ĆŃá86˙¬EůűGgŹO«3Ćb!ě’Óm˘`XpâUY#š(Î%`8âŰř˛°Ă-±‡0 őV(fGç!˛âö…VímĎi4UŘ«\¶L Âo‰t¸RÍ]>$ě%S“Ź‘„ÍÂ%HčBq-„`z´3ŞI ?oAA>{]-GĽÁ0IȧŐA,†­JŚ!ˇM˙7AŰţţť[  `óÉu÷­řB• ďÇwú>Ý&9ĐŤAıÂ)˛.žÍ6Ϩlěa#_m?z;X?ű¦Ľ,¬í¬YLqž  ćŚÎܧ§8Zwz>wľęŁ, ć»¨ů:G &N—ň»„Gďp :‰pÉ­DÜ*2P",Š"31Ž×!vÁ™ §TÚ-¦P„ěëĘEI(8Âl{Ľ¶śTQ°`Rů”Ş€w1M c{˝¤l¶Ý’ełBŃX<ńŇůÉîí·VěÚµ ;Égžy&ŤĐĎÂÖ.&˘ť:]lp‰~{ě,€4ĂMwýÂ+hLƢß~O ‚ mö˘‡ĘCÇĆQ ĺ@˝ű™WY-…ľĺ">*¨âąĂ<äE(%‰űV˝°ŐĚúXµYPŕ°˘(ëJŢlÝ«Ř.ů(y/‚4Ĺ?±¨ÝĆxpŘ*ćók­F7W,ˇuź­C;Ć€^Ö–7R·•|¬„‚C|b¨˝JJÖâ> lŢ…Żîżţ JL8Ż:ź !ńż®ZŐ{ţŔ_đëçiŻ}Ůüţ˘mń'BGŮ­$ŤčáÉ‚­hăѤ<”ĄŠŮ@4P§,]W.Ă ’Z·‹g#›Btýk·"[""mî„11woű˙>QüĐ}¸K}Ét:|â$Şš˛[dÄcm~0aŔ*-e¨ŽEĽ^p‹ĎR JV{Ń˙‘Şîď%BŐH}!ňál¬ĽKNˇĆP¤+ÁĎčđUôVGoËAwkc^I%…¨ŘK.ľhĹÇź˘2v Ń›–¤ě8ęxťpfލI2ç˘ÔVŘ‘,sä„ńm`d°Ł˘2Α{v ٦ËęÜßą·©§*ߎct€đĐGęË ú"’Ő€r˘0X4{}$F˛`ŤÖ‚¨‚iÓ¦O›6ÍŇ˙›ÜÝŢÜÝÝúzR:fŘ#e˧Jú”w1ŢŕXÇŘY2‡śŻ_ź'ěbRĽ¬ }·ÓN–6$T×H»ĘZńęŁHXáY±Ć÷ɦĐţĂb±xA÷ü獜/“ęüâŕÔ­ÔDśa´X@ÍĂ`.ČqStřš¨I K@Żś.§0!r &wĘ”)ëׯ߶mŠ»YŚć ů{KsÇĘ¡„'h7MŠ˝ş˝8˘zĹ6łĂjîő»<~Ô:KĆ+7uíÎĂĎťŕĘ*ýĚ™wjó†‚xľľ@8Š ÎĂn5ÁEF*™…“KÇ—ąŰĺ…^ŔÁ:”»ť9s&CëҲ ćWăOŢ%Rś7GҨ)ŃxŰýÁÝ™PCyQńŁ?6OË(CnčrśâSl8Íd]tĆ×"RĘ„ &ÜÜ~äĆď˛S]´Kc4JŚvv3e´N;k§ŐhűĹŁ¶Ąó´sňQ8ŞšśAźź#fĐĄ¬Şîjť™´Ş†wő¦Rżő|@&>Ó„j±XI;u[IĘoĺyĺŕ‰ôźÝOĽ `ůö®–{ţQłoů,DáĎTÇĄçt˙ýE*ůěÄŕZćgÂ`Á©µ'bźĺĘ€"~¸ěÔ¤"'Î]˛!ČSäčř\˘ {Ţ[Óţ‹ÇX©YśJ ŁR_2›1Ľ¬ŤF’_hb6ކäPň :ŻşŔńŮó¸#©= “ΙQ[łÔxät9…ĘQ¤+ŮĽ’†§é,ÎĆý;Z‡Cvgť»lú„gÖmŻŐ­á`/@2Š’řŚśŁ0Zbŕu„Â1Tf8aŤĆ« ĽÂŕ"źýĐ=!Dé´“¸MšxŻ/Ľą®‹˛÷#PÂ`ă&­é>ô¨ś%pÓŹNOЧxśŃhĐę/ľô⢢BÖßZżżĎÖ荧Ă4ÉĐDI…Y± Â.§0!ĽÁ- fCQ>{ůâ]îׯďEˇ­5ŮXZ •—ˇ•]?¸U"í]€í:˙ô/Ů .ާŕG‚3ÁN/b7TÁé-̶»˛l`mw{qN•őč‘héě[ľnO›ŰłtćŘ)ŐÔ†q@Źě>› :x ˝öâůl&#ŠKĽ˙ţű~żѢEN'9u´Ľ!ŢŤ Á‡¨Ái< Ý_ů 1Tç¸ę‚Ęĺ¨NŃ®ř#G‘Óv`CvŐéKňsďş©üĄ‡Çn}Ĺ<#‘\ډBÜ"k#ăkăx oĂúčŻHŔzŃ:Ćn1Wçźža·â\1˙@VšLm€MÖ 7&\dÚă[·•±¦T;X‘™—śM™Q3·ë/Ď!o4˝u\qm¨}¦n+5 tŮď" \®ďÜVýń3ů?ůŰ9ó4˛óqżű;ţÁR ™BVÚF(¨÷ŁDä2‚GĚ’rëč‡Ű"‡"!ěůFÝ˝,Q¨¦±”˘ě›pŃľš ńU;ă üH0 ĐĦě@IDAT@f »ľ÷eFaˇĘi-™ çŤ!X@ Őá‡Äů…KĘ_ücőЧq*öŘAuCĐSqř=•J[QČq&Šő٩Œi[,GÎĚه÷ďń{ztŤ&ݰüę«/C ťŃ¬ŃęI¬©€’ä,ń÷Ä}!ô89a‡Ě.ô “Ŕ+Á%ŕ`8gGŁ˝á ú!p#-ťŔ.h@`5 „'F‘8Xľ7éłlätS!°­=ţ`0˘Ń“ZÓfL_´x;”ÁŰën<|ĐŽkt8ů´‘H…†7Ž× ŞŇ™će’y[  §ŤglHţPőťŘšÂ]¸±EínúnpĎŔĆ*M+ŚÚô¨GAżÜO˝Ś>˝+'ëÚKXąyĐ{ţűfŰOˇśÖłÎ@f:ń(„.VĽü§Î??ËbL¤g˛h,­¸Ü„¸‘źô‚—>Ň‚j}«·0vFdIĂq岞gI­R\ťřmŕźžC%Gc‡Â@Nn«ŁÇ ~ç߼»ű‰ç)"kJźü%ł¶îq?·śĄ¨ŞiDY rŘÄ2}ęPŘ ÉŕŘ™-ÉnSoĘ‹3B‰őڬ= @Ť†/ÜÍ*9 B ¦v~î6„yCúN_€ …űŢü™Y/K"ł!ÚĆŠ|¦ľd­c9Ĺ śÎíT×Ý‹śč(a?čŻjfÄoŚ´üµWLZBÔ”I‹>|M AM\5N9]N‘K“PčťŮćŹję÷l­™˝2`ŰňÂËŻzó­wß_łÍh˛ýn­6N´iŇáŘń‹pę %^É ;qç NŇIú ›pŹ02'Ję1µ 8G9â@&ŇĐŽ´ăY6“Ó2pR ^Y‡7ĐÖă!#ŃŚ’÷×_]EE9[`óÝťÝ=qťQ§‚y…ăuô ›‘1‹É{ĹśĽ}š[Ŕ2o:â|o¤vlŮŤ°E›ŘĎ;ÓXV„.Ëś©ţuŰ(vţúŢţᑦv±ű$FîĄq"··łGë)xcY@Í“HËg=Ĺ„°Çٶ®Tč0 ŐjEę:ś­[łfM((ĘqN¬p­ŢQo4 ę™ę'őČ<ľ"R‘˝.×a­osë2†`÷¸ĚĺWL Ź#mî6·7­§†ău=ľĺk÷Î[2bĹÜ ĄomŘg[M(g né•‹§8¬¦Ý»wżóÎ;8X·téR@ŠŞ§bĹb˘š1oŹ;ö1ÔqL {ąťŹť!آŮći5Ŕ¤.şžN füŢ·RT ç߯ű>JÔ ĹY'śB1ü™”Ž H®·hw/íőéAb2`X¬Š+éF‘Óv˙z•2÷ţß{Ö…3tŘ´łűźŻ0 (úÉÚ´až<SŢ·nî}u%β4č)´qŽń»źy ľ˛ˇČ…ťj´]±*ĄŤ_ű J—b?.˛¸ž©\‰TĽ…J0¬Ždp¨\!¦ČŰ©ŰJ>69% bŐ”ÇűńFűE‹a˘gyCëĐ+ŢĄG­‰Î?ţS"6S©¬„GńAÓb›4ßőËâ‡ÄÖýä‹ ŞCFĹ`]Ť"GE!·8ĺbž2Îż~;Ţz˙C‘¶.śD9ĽHk§˙Óm˙ű$›×<˝í!,™IŕŤÔ-¨®ő?dßö9€ÔÇôťÚë#­×â1ŁĄ®Ěh“š´´č)2ăxť)Żd˙öŤg™mŇŤăuEe7ßtĂ–ť?ęńúuFk$äÓčE@@7ŘEiP+đ4RevBÍV I /‚ŐaŞbcŮňÄŤ<”Źpvň·CRćęrl–}GH¬o÷u÷5z ˝s–žu™™‰CŮ8'xx˙no”ž€ě+®#ĘCOPp‰U 3Ë(~Ë- ±ŢbĹüÁá+ľÎNKč­±¦Şčwß§mśMöĽő ËU>Ô/ń( €ŘSx›[€[ ‰8Z—Ä8ĽëÔ´@r%u·uřÖI® zˇ ăaŤçUă7›Í(źşbĹŠÚÚÚ˝{÷Ťź0iáäŠ5;ΩČGBĺh[Ź‘ŞN«©¦<óľ&9'ĽPŁ^;ą˛`linC{Ďö­p‚9µ'“‚¬-n;pIm͂ɕ×/›ą±¶AµV“Ń6wzćN(›SSOůŃGmjj˛Űíçź> H™‚šM(«¤Wr« Ž“FÚ × ‚ý$%˙Ŕé0J 7´N«!…ú†tő˝ţA’qät›pxĘ8¦<Řľzä–ű,Ók|źî@)ńXŞý#\ź(GĐrďođ%fCđf–P@ML¤m„‡äŢńŮxß_‡Ü.ösXçLcĄ׬ţĘoČÇŞQ‚Ű÷ąIşőŤSЬV¬Ú@ü¶ÉĽâÜ.q@.ŞÁ^yž?٧n+6$ņiň8ÔrĄUY‘ź®néM$*@D9 QXCŚ'“ u8ĆČꊤ8Ż-÷ÎŘű‚‹®÷˘Ť¬y}/żG‰ř vĹ dľx/ţ^ÇožŔ—¶ůe )·S_2@dąNIŃřą*˙ďC)2ŹZ¶ä/©SŢ™Q|.j6č`°föµGďŮ\sĆ":ŮëźwńĄç­xöĄ· &[ ‚hרAKĘ5€`]Â˙Ä#-r–4’–#5č€ë@Očb°a'ýFZt Z¤řŔ­pÄŽH$1ł8Xg1ŕdťN‡ôC_8˛żŮíŹëăZCiiéŤ7}±´¬”ŚĹŹ7îßŐŢŮŐ´z†S¨ŽFÂâ‘°¤t†T«f*‰r $·ę/Uľő86 Q6Ú1¨—ŽÂćbîׯ‡“ð#ĎCŮ3żéxčiDĐw“Ź_ĽY7\†:é4«¬Ćjf]jŤAóůŞ ätnSĆ­;eĺi±5źăxzĄÔĐjš wD”ˇň“Ěžw*fţ„Ňw>ÝÓë I8¬C‘Ů™ăŠs3mëw7ě:ÜBÜNâ÷¦qA¦/y铝SŞ §V-šZ•ç´a+»©ŁÇ ~ůŇ9Yvó§ź®íµ×|> ş˛˛2V_‚N“şMRçLcśu¨@"°ˇq+řů]T"ăÚ~şź¶™+>ńÇfňoÚ…Bśp:óđµĆŻ˙D±t,|Sl8‹ëZ°á´‘ýĄ«áły8^‡°Yhb™;U‚]~ü'ü!'2čmŢÝ·” µ_Ĺh ¤Ě Ö&›ş­’QěB>Á‚źÝŮro"°ťÔ&ZmţýwǢJŻŕÎZFĚüĚ9řCťÝ¦Ű^ŮóÜ›â¸Z±<)śřĂß0”(Ż/ať?#˙ľŻ¶ýěĎâQҶFSđ‹o™'Ž}K–Jă÷)X€‚ň)0+–$Żžq!ŇŇ[M™Ń„ W›B¬g*<Ś?-fŚ?NËY\eű6Ż/3Ůž•ř}hudßřĄ[wě©Ý˛ë€ÉâzÝMڰ#ÇÓď…@gäTťPwBh’“Öä7±^ÓéńK™`{ŕ˘ň€ş!­G,âB^9°S&"LŔéť„Üv‚fČR’cÍsŮox8B=Á6o4CkFĆá›o˝ićĚY3Ŕ8\žž®{¶á`]\O5 jŕ‰uđ‘®}¨XţÉ- h­Ů”󥫳o¸Łˇ8ż¦n…śÎ)ܧ§†îžžöâ«> NU˙•âtýěĘßSBŮ”E¤óň0%`¸\a9‘Í"aNN3ü8¤(FeXÄľýöŰ‘p¨Ľ kL©‹dXěęî lŘ{\ăËňçM¬$suŕBră©UES* ;z˝[6·şűP¶u ;ĺśÝŐ;m©mFu‰«—L˝hnŤĹ¤˙tď‘3Ć–LSŚÔĚO>ůd[[BB–,Y‚d.TpňµeSľäĚTx*PR ýÁÇŹÜňýúkîjúúO»ź~9ŇŐźŮ:•ń§1O(ĺ2aâŕGŤ5ń f9­úţ-RË«ËoĄřĎ?B*›uó•’CŇ1&S›ĺČűÎm®űng”®Ç˙KŰ^ńŇÆJ’wL|éK Ęź(óü…”(.QĘŘ࣊»Ĺ˝Ţ—ß…ď[ňř/l‹ç°Íj0XćM«xý/¨±Âĺ űy łoąJ\!j—üőgđłĺĚr ş¦ŚctHgĐ#tüŘŹ|±ď´lĹ„§ŘXř»ďéňsĺü¦©ăKźú•mÉI—$ŃžCšJ9Őöó‰µűWÇxPó®ěŮßćÜţyÉ,řŮČşń üĚ 0íBĆCëYł¤l8|wëUŻ?f[¶@ŢŠméüĘĺu^u>ëMqÉD[˝B.&‡6p¬RBá·ÇÍě•$ˇ$ŃA'TÓ_;9BĢd¬yĘx(Ź gäĂ ×7J ĚSk ĄäG—]ŘTÔ'ÚđĹŘhg¬Jźţ5b'ţ"ťˇ˛)ŰĐUłďm çQ·:mţżćúÁWQŠĹdőů9Ŕ"Ó:YVůÚcG <ú~yÍwʦ‘ €´l%[)š…±ÁׇŁŞ=Řą?ÚÓ ôĹ…żʏ!ÎЇ(]Ë̉â^´ŐöóÄ*_řáşľ÷•śŻ_Ş=Ü{(‰'Ź5M ¤˝eĆ—d É-Ň–ţíç¨wŚź üDÚ:u9YČľ‡^8 aĆm*KĆě5µďČÇ‚Rôŕ˝řRěâÄeµ÷ý­’˘VŁAČĐtPĄH„)Ң§Ĺ¬ŃęĚ®Š»wVÖUO f7Y¬ç^zeýáCřËżµ.1GŇćÎť»rĺĘ­[·®Yłfá˘%‹¦Vż»q?Ü>Á]d¤ X˛ĎxeŐ΢\űç–Lżü¬ÉłĆ—~´ýŕćÚF 2k\I®Ăşą¶éPKĽR¤jIËň’É=y˙‘®żĽ¶ć{×.-q9đwíÚőÇ?ţG!víÚµ«V­B­ ÔšŔ-ÝyĆ »ĺË—ß|óÍsćĚÂ!;¦€ŘV”ŠśČř=¬ó}˛‘ÝŞ5Pý%Diť§s p Ĺ‘hhß!ńŔ¬ë?łlb os ś,P{ݤőJ=±Bg&‘>>ą9…=hyÜ[auÝţÝŽĽµăfś‰[0㳸|Ě˙Üó=ě>ţçŐ• ° żĺUQ/5¸Jólă‹ű›{·{q¤ÍjÔ–çefŮŤíî@“Űďrđe´čĎ‘Ăsý 2˝^‡wą™¦ěLSsŹź¦_™ýŚĘś1…™pQÉxF[_xÍAĎ®¦ľń5ăřŃ‹/Fę*,‹޵Ąv×vżĆ¦ŃéOčPšV8O—“tü.1J ¤“Ű$1–ăŕŕŕeŕhÝ({ \ťcc5×dô8ľŠëVT[‘áiŃdŤ;¶ĽĽĽĄĄĺĹ_<űěłgŤ/A8ěöş˝ndY* ł&”ĺG"śbËwšżpÎôkĎ™‰Déţn©ËoĎáöu-mn|ĐA$*.^­uŘL(Ńëó#PQşČµçőz5b±íííx|¨•†Ř‚‚‚ĘĘJčłaÆúúz˛CˇŘ’’µç›–­ÔĹZ÷ľÜśGL•µŁÝľŹ7˘(¬‡¸FŔŠ…,F@îI(ÂŁšiŃÓb¦şÁVZÉěŞÜľîK¦łtědxŔNWZ5ţÎďÝoĎ´˙óů7z<ł]ôő…"Á,»ĺłgUN[°sűŁoěDBŢ%“ŠM/¶Zôm]ľ5;›Qř¨śŃ€Â/đwĐ:"V×tfŁ…bqŽ”°ĘÂfš sĆäN.ÍŇccđb±ťÁuzşUŐ•żţő/gĎ›‡ęڞMuű¶o\Ý5ĆŤł†č°'J},,Ś€w¸!‘°ôn© U/1ŃÍżq p p p Ś> p´nô=®‘’ŕv(‘•ibďD™cD©jş Y ęcĄ¨ŁÚějĂ)?ts8óćÍ{îąç>üđĂşşşâ˛ŠKćOÜYךôxń '”ąţçĘ…SŞ QRH’_tŃE¨ö€ ­:­Î(ęBL¬(DĚěşÝ ˙x{ă捂˙ަ‘2Q!-ůĆUg~fţdŁ^GÝ84wć™g>|1ĽŘí¶ŰíŞ+,,„AëÖ­»úę«·mۆ.?˘•Ř´ÎLŽÖ‹ŠJ„ÖŮSŽ…ä“K&ÎĘKëž\K8ÚöľřNp×ţ㣀Öf=>ťł$yIü“$ś°„ůÄZ&ąŞrÝŇâ—0KnĹÂh™yţHčÓŻÎYvy^q9(„AŁAŠ︳jĚżüő‰u›÷ĆÍöH,úÜŞúu»[µ÷y‚˝A‹đX!mś jÂřC‘P(Š/»¸ŔŕőŔďFbPÔ‡˘Q^vsĆşJs¬ŕ D÷µůŐ5şv›ýÚ+.řňí·Ož:•©ŠSuM‡7ôv[o0ĂšĄŐč°(¸>‰X×~śŽŕvýpiíě$±›7¸¸¸¸Fˇ8Z7 Ęé®’šWÁ‘ăf aj˘6ú'Y‹â¨a©Ĺ$B°m‹ÝăůóçżőÖ[(ÝđůĎľ ¸ä‚Ů5O,_ŻxĽľ_i®ăć g/žZ€ďá‡ơ<*ą··§ŘPgÖĺĘß[ßţřňőöąlÁ¤/ž7kZuáĚqE‡Űş„ŮSěľŮm†ófŤłšŚ+6ďđß+ŰşüYóăK¦T”ć9-&#˛?÷zÍ]}(J;Ą˘ŕü9ăQâăŹ?®­­E—ÓédF–,\üóŁÖĄFŹ·uYŽXJČ ~!@Ď2wŔ|Ŕ)Ăa௛SćYň…śjČĽ|©ő¬YÇaU€ę˛ľxŮqh4Lˇöaď¦ă¦äđ5Q”|!ŠCäD9…™E­K‘®Hd˘ä ÂŹ*ŮEÁ®¦őoż<çÜË\eU4‡Ťű9—^]=nÂs˙|úĹ×ß;ŇÚŐÔ¶ÖâájC´tűęšÝŮN‹Á őyCŽtďnę-ϳۭƀA¶Zé3ŔqŠ„c¤­7Đá ägYfUćÔgYMş^ä@{`G“ˇŻŕś:iÂŤ7Ţpéĺ—eçć1mQn¶íHÝÖŹŢníńgXsPĚ+FRŽ Ň¶'Ő$€ËIp:Cp2ĺfENd3ň····Ŕ¨˛˙óiT=®L2 ¨ąÉýĹd‡Ú7|MÔ$H4J‘ŤŽRcV¤S˘ĹbY˛d @·C‡!$öŢ{ď]:kĚÚ]‡·lÁöŻXT0s9l×,ťyáśńHu‡¬Ź=ö,ʤ*Ŕé¦M›ö­o}ë’K.isű^řhűÇŰęˇČ‡Ű ZöěéŐ%®,›Ĺd-őÓuÉͲą˛H®şµ;ęşű‚zcFź/řކÚw7Ô Ž*9U‡Ü1c‹r®]:céă : ŠĂŢ}÷ݨ;árą¦L™8RqíXWşt±)Űć™Ă ÍŠ]bî×®ăyë$6á·ÜÜ'Öą_ůü‰Uŕ´š]ítŇ93j ‘?ÍÔ91VŤY‘®H”+Ŕ(~ŔsĆěÂ`wËš÷^žuÖů%c'iu‰żŚĐ¨š4ă[?¨>kń˘?÷ü‡«7uą5&s,é ŢŘĐŘŐĚqŰĽë o«ďÎsăť>GBŚô\]0íë x}!¤ł›;&ż<Ďf4čŰűBëyjŰm˝!d±++-Ľě’‹?ýĆ×L$đ[˙‹F›ěÚ˛jE‡/’aAÁ-JŇ©Ód˛ëç%đůůˇGęČw,”Ü"ż¸¸ŽŤâ‘hçĂ˙¤˛µVKÎíüMzl }zKĺhÝéýüOłŐKĽ´TV?Úť!,!É2QkůćŘáxÝ?ţńŔmUcÇ_µxj][—×RFÇŞsX,—,tŐ˘)==î—^z ˇŻH{7sćĚÉ“'ٶ,"jKKËş˝ţ˙[˝ă˝Ťµá()7$*ĐV«ÓHÄHzţ"MěY#–lkIććPyë4Zd°ËĐX,@‡cKsçM(_<Ł*Űf ‡CoľůćwżűÝ˝{÷¤»âŠ+ŘáŮ Ç\iŤu\ą¬ďŐ•ILM»tyŮÖE‰0ŢA™9·····€˘ŇzCQ ŁĘź‚ţŠvÓ• TΔ]ę1¬]ůĆ”^÷Řéó ¤¶CÂi1Ů /ĽrÚś3×~đŢ+Ż˝±úÓ­í]˝ťˇ-ýż-]šX8 eÄ‘Ě.¶ů`»Ů ť7.?Ú5:6Ť‡‚¨Ĺ Ç2˛¬f·?¶ţ°Żˇ+Řî yQŁ^_YVrŢyç|öŞ«&M›n0&jż’ĹăáP nǦ]›ÖôDôZ{ĘP$Öő˙Ů{8˝Š*ď?é5űľ‘µ›!@DöDpEĐa^AGqFťwftÔwýűŽŁă:.(긎ľ(¸ CŘwvČJBö}ëÎ˙{źÓ9©Ô­ş}ďó<Ýý¤sî'\Î=uęÔ©ß}ú©óünUÝ$›J¶¨ë íJýOd˛Ą$aJ®˝]’K;†Ŕ^Ú·ďŘrĎŁrÍbšţÇ!2[ĺ®ţZ[G†olÝ^ČLŞĆÖUKóT%4±đŽ{µ÷ rV÷jUrY­Hđs•/f™S?`Ŕ€7ľńŤĽśM|ń‹_ĽţúëO=˛uŃʵ?ľőq^ěŔ..řé×ÔtĆ1S˙âŤÇ´íÜ~ë­·ţň—żĽîşë.ąä’3f0±3RŇWW®űőÝOýîţg7lŢňĽ(í´Łć=łLŰÉÂT^[–=®!ç„««/íu÷ţ‹ŢpúŃżľn3ÇÝŘíM̉ńP°aČČm»ÚîľíŹ«—/™qüéCGŚ®oěx+ř5ľëäsÎć‰Gîš;÷®ű~uѲ ›¶îŘął±ßî]°umíŰŰÚîyyÓŇ }XîĘ“FŢ'±«m÷ö]»yqÄú­»8oß™ĐiÍÍĽČ~ěŚĂ=ýôSO?ó¬)O­ohtcfîަőkć?xç—ěhÔ·˙ ^C‘ptÄŃAĆ%űëŃŁDÁE—,ęea,ţ“"[–Ę e^RŰΆ€!ŕ#ĐľaÓŇ÷~R´ýç9ů—_ń-ěÚč2Ś­ë2hÍqĹł«$3Éw«S5żŚcN ů‰9 F’6Nk˛ ÚÇŞđHvҤI^xáŹüă[ną…ysoűŰ/;sÖö»~}ď3۶íĐŻéŚYżď‚9šęçνç'?ů TÝ[ßúV¸-Űwľ¶nĂËËV=ô̢űź}uńĘő0w<đĐŻńÍÇOÇGŤ6%± WWZ‘A 9ěd]ÂĐţM'Lź Ź‘ą”Ł­­mÍęŐ̤»ůć›aYÉ Ě§c÷˝ÓN; ¦Ćm*îĄĘ…ôŇ®ÖM }ő‹Ţţáť –¤‹DĂnMĂŢqA¬ÔôUA€ĎĂüůóqŤQ¨ä{ď˝—‰xţđ‡?ll]dÖ¶Ż[·NŠ&Ož 4Ű•ű]ů*[´hÔ3ł»č‰'ž¸˙‚o‘@l¬ ćiÄ*¬®+÷SČCĐ8ż2·´“´¦Ó^{U ·µnă–{|xŲųO>kÂ!G0ß­®®ăŬ䎇ŤśsĆyÇžzÖe _|ćÉyO<1ďŮç^X´důšu¶nŰs×¶»Ď‚µ»¬)˝ä*ÉU“]ĺëëš›šFŚ0v̨©·Ě:účcçĚ™6ýđAC†i"đB‰ť;·­Zşč…y/^şĽ­ß> Í|HN¶ŁŰ“Á˘L™JWjG©şD]:DđşŮŃP$)’R;†@NXJß·©q÷Žť9íÍĚ(}~Ó–QߪÝŚ@0ó4GÉ)ć!gőlç…Jc‘d;‰Ő*Ş×Vdz¤ĆĂ?ü…/|aĐ Agź}ö_ýŮI'ĚüüŇU“F;aú¤ć†ľźúÔ§0†ŰŐÖţüâ×ořýCĎ/YŬ·;wŐŐ×5ÔŐ ě×ÄŐ O8üôŁÜż‘‰oüNÁ+6ł®ŮÁŮ„î[ßúě?_!_¶oßľzőę+VđS–·I,X°€ůtč™Â‚Ü .¸ćŃ]R6& Ž1?®YáSţß7Wüý—7ţ~®«Gî;°˙¨ży÷«ßćéí˛ş<÷ÜsO>ů¤řd~euť÷bo<đŔC=$|Ď{Ţ3uęÔ^ÖŮý®ÍÍͧśr /ěćFpž>}úđáěZeGoC 6˛äĚF*¬^E4c‘d7«UTlĄ¨ěëëš8ióÖŹżđĘŞŐżšqÄó‡Î:ařA›ôí´UWß8iÚ ţťű–·o^·fĹňĹK^]Ľlé’ĺ+W¬[łnÓ¦-Űwlç!%Óőúők&ˇ9rdKkëä)“ÇOś2bô^B‘—Ľ˛R`Ăš×_}nŢ+/<»aÇî>FłÚKžv ˙&ź ÎrČD:H:.Ĺa‡ľtˇJŻ­,ž™]12ĘŘcĄ®ľmýFh¬†Ń#\e¶śü` gfewŽ#żqű–­l*שËäŻEEőąz'Ţ ęľ˙?woÝ–\ÖGĂ.Š|8·­ŰĐ·?tÚ;3Ř0¶n˙˝wy#P4é‰%Oénŕą¨ó´“ MÚ9oP˝ě˛ËV®\ÉĽ¤O~ň“Ěé8ďĽóŽź>ńÄ“1^ż~ý=>Č:Y̲QÝŁŹ>zĆg´ŚqńÉGĽ´tŐëë73Ź7?ŚŇ˙ĐIŁŽž:~äŕţTyčˇÇ‡ vđ´Că 2bě3b`VÂ.Yľ¶néŇĄ®)HBÉń$žnüřń‡r籉×,żś$]ײ~Č ńßüÔ¶g^Úx˝۟}ą}óVŇŢ;ř˘łŕň\K“«ŽżŽ~˙űߋۉ'¶´´T˝ shtÇ<‹aw”ŽŰn»Ť)ĎÝÖ´5t !Pt̟̀dQç…ŔŻşs’Š©Ó~~×®V,[űĐc‹^}ůGµNź5t̸††&Ň7<ř¸Á#ÇđoÚĚ=ŰŃînkc“]–ĆîNćÜ`P—ĚôŹţ†Ođa/‘];7­[˝lá źzíúMmý†öŘĆ‚ŢAÄ•ŢţšlZěÉ!óé’5µI,:˝®Ł°¸U·ď&hlĽőž żţÓöçě\´Ľo˙ćƉăś0kř{ßÖ4é ŠŤ·Ţ»ţ§7o~᮫(Ş:¸yzë 7ž<üŞK“Ďďžcý/˙°é¶űąęŰŘ0ć˙\ËÖĎë~zóŽEËŽŠOěGüŐ$Őb^ČXŞđúć5ßůĹćąIűĆÍ Ćö?z:[Ö »âÍ{Bčř?„×ęŻ˙dŰĽçKňö±#[&b6řͧ s·ňźţ˝m}Çž*ÔŮńĘŇźüJă¤ŘĄ:ňµżů‚8Ş:hüW?á:ĎEűÖmËŻűĽÔxú~2¬úҶ<řdűş ő#†6O?xćŢ5đ¤Ů®[ţ´7üżŰÖţđ×;.iß´…",űu+xťm3ń]¨z‰ll]/ą‘˝©n†á~łwÚG·˘kśÓI¬ş¸ĘéÄm·ęr0 ’¦cú`T_L¨ąęŞ«Řýí©§žşöÚkŮýŤ—NtĐAĚe»ăŽ;Xmşxńbč°^xásźűsÜN8á„9‡Ś;ńđ‰L|šăŕ§%EO?ý4o˝çž{p[ÇÔş`ŁJ˛ÜaCú‘ěľţúëlŃLÍjě…¤c=#“é`dXíČfdăĆŤKót“öT¦ÍTSÔ^*ö›1ŤęÄ„îA`ŢĽy«V%©!Ç©§ž*BđĚmÍůçĚ‚ëôG+čS”L&őVagKQÎ` Eq‰sw’i§aä1Řşu+äO/Źq†MÎ.Ó HţđůóĎđ&EĆ—O%kxiŽOEΆƚ`x_¶šĹ„Ś°Ů‚ó¸ăŽ»ďľű¨ËŰ®y@ÂüâÓ×&îRčŁĺVt»–ÓI¬ş¸ĘéÄm·ęr0 ’¦cú`T1ăüzţr§M;Ę`őĘ×7-ŰňÚš{<;żő°Ă'rĨqŮĚŽ)xŃą?ü¸oŢ—Ň FYęßę»vn۰vŐň…/.yůůŐë6´5é;x,$ßîä+ś×żrŻvŕ’ŻtÉkاÍže°‰ŃDe]+íÇş/Ąv62hß¶}ĺgľ±ţ?;ž†bą{˶/ĽÂżu?ůí„ë?;謤:ÔŐĘ/|wÝ~ízk_żqëOňoË]ŹŽűňßéŁëíĎ-Üô§{Ĺ^oëŁÉ&rěX°xÍ·?Řň»ďĘ^Ď…Śq‚‡e×ţóög^Úă˛Ď®Ą+6ňď÷s·=ńěŘĎ˙µN ŰňŔĽĺůĽ‹bĽëµUüŰúŔônŇO˙2qÝţŽ.««¶××@,Ö’°uíí›çv,Mŕ-j“ XEĹaűKݶ醶µĚ`Űšő[î{śăţďdž^vľ8ç‰ŔŇ«?±ů®‡µ-,7ßů˙F|ŕňŃ˙ű/Ý"“{ĆÖő‚›Ř›»Ë045ÉÓůqŇiđŰŹ3‡×Ż<©’¶ĚĐ»Ćü$>ꨣXwăŤ7˛7˙÷ż˙ýţđ‡üúĺg'żŇÉ_aîXgúŇK/±$–)xlĄô¦7˝iÚ´ie ÜĹ[ĚWݦ”%uwŢy'ËTaÓĘć x»Ĺ¨!y)-ÓýČh=ôPŢI‡CÖ 8ßđ±Ăn§2úž]t’VŠ;×°Ă Ţ’‰?®»ďľ›O&źR>?&L9sć±Çî™±§ ô4;ťÁýńɇ4a"¤0–ş‘ő×ü™H ¦vvŘaĽU™uŮ۶műěg?{˙ý÷ł‘˘”˛:=Kti”Ď-ĆÇs {ĂACówÄËşGŤ…^öâŃRy"yä‘GpN[üi\|ńĹP–üň—Č7ä#Ŕuë»őË-~ ¶ťżî1cĆHžyć&Ő§ĽŻoüÉăů¤“Nęô{$Y´.~˝K´ĚĚĄďŕϬX =ňČ#ĄTĎ`ţ§?ý‰ZüíCfŃřđĺĂŇf5íö0^¸p!Xńç µĘ|ŢŁŹ>šuńĽ´›N;HLaă-[¶ lÇT(W¶&§Č|Ŕđ&JľŽxŞ•¶fÍީͽCĎ7Ő]wÝĹó ><<´ ľů†$©ĄçNĂKć [G`ĽnB=°ß!>:ý#r{Z#NbaŞv9Üř‘QvŞQ´qĐŘŤ‹Ú‹“~ýűOťÚ ¶víš5;űoz}ëŠőŹ yjŢÄ “&M;tÄř–ˇ#F%Ď)ëÚN»¬agL¤ăÇö®¶][7nXłbÉňW_Z±tÉĆ­;v÷ŇgđAđ€Éćż@·/O—ps — W*LX×ň‡ë™j‡KŹŞsŤaµ^űë˙oâŹ:f˘ąE.U§z¶†łő‘˙Ą:5ć§Ô˛ë>çRu®¦é±0vü×˙eŰÚőKß÷ŹĚĽs TŢúđS+?˙í±źľF5ů…ň `®\°‰˙ôÍAçźV?x ĄkľősŹŞs«€Ř€“ŹxŠźŮş6&ďw[·ßÝ2 8A –jh‚’¦Úq‹6aPTĆ<1„,`ůż˘ożývfsđ›źßźpěş›ŔŹRćßń#–—Q°4zâwżűťpśˇBř1ĎŕMGŞŰó8#·l”xD2·®Žßáüś&š–I=±nőAĄŰ–'íJŻ˘]ö,&Ë—/—ŕVĽO čöłźa&2t5r@TA‚č„84L#…0Ňî@Ŕá™îꫯ†ăŁĎ$¤ŚŘđ‡ž–†ż.‘a‘t7Ä7T„Ú;ßůNČľŤ7Š ´ „Ńűß˙~ĺ sF1¤máúO|r†›;w.dSe=PmčLś^"÷UÇA7ů3ÂHm‡żJxO–gBAjQZ€S ~úÓźRKlŔ=Ýä•5Jë3÷ç?˙ąľňcţúčńj8mîě?ţă?R5|_ń­EÎřŔŕ+ł;Č]ăµ9.hÜ,ćC´i łfÍ˙@MŔ"łćšoHm;Hä4§JZÜeŘŘBśFbB-#_ ÝëÚq:aPTĆ<ŁÚ•1ă´sK´¶¶Ô÷­[·aĂîşĆ5;űnÚÝwÍË‹^^řęĐ!ýĆŽ›0fâ”áŁĆ :˘˙€lăU×7y+ŹMZ-aŇ8Jď…M‚koßŐ¶cűÖÍÖ­_ýÚŞĄ‹W®Xľyë¶¶şćÝMűU_Wźíf†oRSî>çä(ąKşSbé’âҡ_)‰Éž*RTŞ–¬xK=§5Zd‚!D€Igkż×ńlćĂ|Áémë6˛ “÷ Ła%ćĆ˙ľgÄ{޶kĺę5×˙—:i>|ęđ«ßÚ·©‰őł:ű šió˝Ź <ů5S…śCŢr6Íŕą”>Űöřłjŕ ŮĆđqŰź~±Ăľ±ađy§61mË˝ŹmąçQQ˛YÍŽż}/ëmW}o[}†ľőŤM‡LIüî™”‡<ć?Č7»–ŻZń_–ęMÓ¦Śţßďíźő_ őĂ˙âĎe›oOV sěf7Í—őź}8ň†ßŢQŇ%§±˙|Ý sOn߲Ť•ątPô›îxŔŘ:…¨wĆÖőŽűŘ{zA2Ě'$é=ýtz"ý öÚ±*G,Ă'4GKKË»ßýn^ďŔ/g~m’ł2C„źîň˙Ě3ĎdZ ?ŕů±Ę/[¦Ŕ@IpČ!ÔřˇËÔhůťčKű®äďë€ţŤCöă™5SlX …Q•@€äŰ,{8mťůk*»‚Ru®’©^2ťJ”Đ.UçZ˘çŤÉ0_®Yç[yząTŞNKů“ůÁ~ —*@ô<ţřăĐĺ˘)#—uR·°Hpvĺ˝sŇŁęÔ-ÔĚćUW]ĺ*3dĄę\›Ç{ŚŻ–գܲe Č@Źş*ĂuÂŁAŔ1Ă%·ăżř…KŐ©%l ±Aعʴ|ÓM7Aă{/měj<ŞŽ_ŮăRu®13 ąéW\qĘBaóĄÇÔ<č]* Ë—łëŮäG =âTe «ĺ^ÓĺtŻ+¸+|jT1ç¬-Ü2ąnńŇM›6&üY}ý¶>M;’?Ćö×6ĽÚďĄýëôëǶżCFŚ4dxó€Mýú76ňW’—äíĽáuç®Ű`Ü7¬Ý°~ő¦uë·lŮşŁOßÝőÍ}šö<śŤíĽÚ1îŕéČŁPĐZrěˇýŇ<]R«DĆ%VUG¬ZQ;i‚!Pëý§Ý۶KŐ†qŁ&ýüËőC“Ý0řčł×›č·Ü˙lÝşźÝŇń˛…>}ž8ůW_«ëźĽPeđEg.}ď'7ßń€ŻýޥٺƖ ňE™;V?rŘk˙1ŢńJ`®Y§Ć~u«Tç<ňš?őá+á—/şüo¶>ڧŘŚĽî/Öýüąä<úcďńľËXsúňń—I_Ú7l‚ątĆń»^_łâ:lY;čś“´bZ¨Š1źľfřź_ś„ńö7-<űÝ;_]&ţBŘş/ľŞ-ÂÓŐ Đ0fäOţŐŠĎ|]ôrÔĆ„^€€±u˝ŕ&Zö" éËŢë=’$4{®:ůŹ;I˛°ÔCQ‚ÎŻĚča'pv,:ăHSÄŚŹK/˝ôüóĎgâ ¤T?AI1™ÂRA¸ȵßüć7üȤz’6BוÖo$IežcwźÁš†łËrźÝ2żŹą{ÔKSfčí=uôlĘîA€)ZÚd±ĘžŔĎ*¸<¨(6%z łX«Č‡¶nKŞđaF ‘›ĂňFQ˛TvQôÜĘ%¬ľLŐ°ŔśÉˇĽ¬–łVÄb*ś•§P9˘gqĄ°ueGÂÔ?ć‚1ĹŚŐťęÚ]Űő^Ăź9 „u1ěąçž €Ě“EŻö¬Eeé+“ˇuŠ™,+†QRłl|Ţź)Ć,e%fţƉY©:`dóA9îĽlAŚ™ÔĆ Ddî ěž(ůFbÚ_>ƤE¸3ôôŚ2WŽ0Äg3đęU8A8ń E}áś/_†bĆ7$Ť×Ë/ż¬L.w–÷ö@5ć [7ŕăF[‡s>ä-ĆÖeÜŚŢU•Ňß0ýîq'‹!­Ok2şFQĐ>¨ŚÇü«“äiĺ¤ Ë—˝¶ióĆ„‚+-·ďÓ·aWßćM}űlďŰwăööU+6ô]ľ¦ľO[ßÝm ÉÂXžO©i\];óŰŘo®ľ†®oă€>†˛-ß˙<•„RkgvwtĎ[(äć& g‹:7HŠ8DăĘš¤I-ÍÂKvÚ)סɆ@6Ęa6ôň7+4ôťöí×,u'ŚEŕ ęjÄŐ— U‡†*›©)[·ý…WÔLŢ)!Tš~ł¦«žÝßTVˇScޡĆ|M¬űĹďäŇ}•íć˙ypčĺ(هmW_*fDÂ>q;wĚ”Ż^řq•@1ô­çvD[_ßoć!ŠżBŃpĐč]Ë_›×?˙ť×˙ĺ{ýŽ<¬˙ś™đ’NśĄűń‰ť{ĆÖőŽűŘű{Ě34ké´˙ÁęÔĘďă.u˘]¶’V¦5Ů‚ńÇśäŃó{R~Ą§ŤaC=?ČŘ‘Y“Q 2C`×–Áýű čß´eóf~«óË™¶’äŐ9ŇŤja°(żRüíµ j Xc )öčk®ąFx&jIć=° ¦ĆĺnÎ>űl™đ5eĘeëř(ÂaA˝i["ŕ™MŮ ötE­đ˘VzrÉvu_úŇ—TĎžŹěŹĆ%ÓŻ~ő+Ń+ýT^$Ćľ“Bmł1śî¬ç˛„€đGĐ@ĘÖ±§«Î)ĺ=¤P“b٧«t!YŞô(»ąĺdë ę™(+gY×ÉTq׳ÖÚÚúŔĎŢŃłttÎś9bŔŇf^ -2ä) Kš]íDĂâ•ďî,¬“…8㛾2ŁĚ^TÄöˇ}Hbc+˝ýčGZŘ€Oü/ßůÎwÔŚŮÇgťu—\ýő:Ł–“UΰĺSŠîŁzv?äŞ4a˙B cdÉ™ŤÄ<ä¬.pu©˝#ÁV*TĆ⺍ŁÚ•v&Žíµ›7m*ńl<|ě“đmÉ$¸ľí}Űw×5s ;GFŮ–$*ňF¶™+ɉ!ż ëqÎÂE˛ů\{bÎŰ´Jµđב‹rĺH¶§ ˝J'Ř$~śŁD vđtęMʱw M4Š!°cĎÜ.Ş5µ$;ČŃ8nôČľsĎUň˙//ŇËćéIˇ/6Uyײ•ĽUą<Ń72E ę‡ Q9(dł2·mŐŢ„pőWÂŁ9ŻeŘůjG+ě»çryC.:3ŘtNe!(\ź ĆÔ `¦BÇ„bđ…g¬uV÷ŮŐ¶íńgř·ö»ż¬=‚WL ˝4ŮH׎ބ€±u˝énZ_ #ËcH†ňűŞ–“´ź´F˘Šé1ÇŚú 2č6#ж 1…­#Łäi3Yi†ŻDvÔĐőőu›Ů†yÍśđŰUďH,ÂŢsž6E1'˘Ź•›0e·!Ŕ}DÓć„sŃK Q”aű3&µÁűH©đY)Âł0Ă ţŤęŕV>¦‚źVŽłTÜ5S˛Od¨4¦ď1uK.ŮRŮOd--/–¨ U‡7ř,ńÉYgŞ&ŹŔDB5;ůä“ ^.ůK„‡R¶Î5Sű ¶zk‚Lďřñęl;d÷ḭ́@dŞš¸ĄEz'4™h¸M_˙úb+2@IDATשĹÔ3X?&ĺá<«Ôy”(y•„ĆĆ­ÁŹŇ—n•aô+§—.Ę'DßPáţ˘fß=nkѰ]¶NáŇvM0ŕWĄ:tŞe†sRČNŇ~Ň #¦3ęĘ ŰŚHÄ ß~cÇŽYÓĐŔŁ4BŐQ«.ŮŞŽë’ôľ,ˇĐ’iuÉRVÎ °{XpI:”Ř3=/1L^ „Eiő+ĺI¶)çä‚dv\27O‹DP3˝D“%{ÜĘ‘T+5Úq˝ď˙¤GrŢ·Ä® m«÷2_uC÷>=J›˛*S•}›UF¨kîČ%řdĆé>GÝ ¬ p÷1Ĺ[¦qۆMž}đ’żI·k:g0h\TY6Ů]“0F}ôj~b­ýţŤ:ŰNĂăeµŻ}ě˙˛zwřUÉCb;z ĆÖőš[y v$–p©PpÄp¨"…š€Şă uضYndr]˛.!DĆŚÇUÇR\ňCşŚ{Z(ć*be®ş~AÉo!Úe S!‚°FŰŐĂŻ)['[ÚńămřĂX®¨Ě‘[%(C Ũ:ě•Yů8Ą“‚ď(/7 ĺ%1çQ…š±Se÷’…đtJą<×Ě“=ü™1§»żż –ÉŻVç Eeë$0V4ózh]í‹-;»±ŕ”ăć›o澼“AAv<íĺ¦ËµKkłŮ:w:!10›XýňŠ•]A&N Űeë€Úuhr/C 6`•1öíżČÄ@¨bŹĘk‚o›QŁG546n*˝b’ ÚŽŔ¸AĄËŇ&"ŃC Ő7ÔKŘ ‡—ÜĹ$/ž.!ă’4uď9ĺéĐ ‹§uE ěÄÉľÉ->“îěIxĄÔł‘ęv6ĘC€u—şQÚÎ%{źáµó’”g;ˇ%Ű7ÎÖÔ:q×ŇťKWô›y¨¶¸sŮŢąđuÔ%ÝtŐÁćz}›•É˙ť˙l©ń 1»ťWTí\ňšk¶ýĹWÚÖw ëÍÓ&縹öž\Šśô˘6ő9úoß;üÝ—lüăÝ›ď|hËCOň -EXőĺ {÷%ö=ŕb˛żËĆÖíďw°ĆËĄňőÄ<VN'19«Ë]‰9‘Ň WT Ö *cź€qPTâą^ŤaLŕ ŕ;ř˶,ÉËŇä‰ńžś2łčI[GČ;ÖüÂO\?V &9nhAGPó3.ŞŹů7}Ź# 4q0 Ż(M0Á†đ–ŹáĂśÍÜą4S°ÝüJýN(/~Oćo«SK%±ô s/‰9öçă5ÁÜ7W“ü:u]u‹Îő/&i “Ô®şęŞßţö·şaś:#VÚ˘˙đ‡?¬“ µT·EŹ3őbÓ**¸d(+yUź!ˇ\4l·ăúńČhĹŠj ŘźFˇ[Yˇ“Xu€ŞJŮ~h=@P»wĆ颴FÝ‹ň+ů–1bxC}ýĆ„ťgî[‰KX8şÖ±&€9nI˘%Wź|ąá„“/“Ž·ą&–‰Qé HŹDWRK)zLĽo!ďrŻýž´JjIŁéNĄ5†ť lš&ŹďŘ ¶OźmŹÎďSzUxďęĘú¦Ôpʱ“~ü/MS'éKW×ßř߼‰U=s©rÓÔÉ*w…ŔźݎŘńÂ+âĽéŕIÍÓ¦ i¸í©Ž=ގó0ÓÚVŻcÍoÓ”ńhvďj[|ĹGŃHéäżÖ˙Ř#Ô2B?F\®bëăĎ®ýţI[ýŹ9bâ ź'Úmóž[÷źżßđ_=kˇMYŰë†dň~Ť€±uűőí;°‚ĎČ6$MÉGĚIN±ęŇtN'bsÔ•ÁţfXĆŠ‚ú ’sęů‘‰%+ ŰÚvÁ»1Q®#E í(›ęF îĎÓh¦>±Ź©R¬"ôSŐH$Áđ‚Ji3VÓ;‘šX+0˙Ď›¬÷LbŮ(;1gJŐîË@ŮÝ =s˛”Şc+:c2Š×|ď{ßËxQCˇżzm=[(/’lźEKŮ«N_ŤŠŕ®ŘU”đ E“%ĉŕ,‘¸,zw7@mWcv5Ęú±Ĺ›Í1çîŮgźĺěn GEް"•U±ęÄx nyăŢÔŔ]$«JW€ĂŐKfđą”î»Ţő.-r>QrY(l— tWŃşžMŢďČ_ňźÄśTî<ó;Á8IPTĆî`Ě8ż>fY^Řä!C‡ …¶c&oÂż—x:áÚÄř/YěÚÁźaś¨ůVZúĘ+bىŽv%™„“˛OG‘”ĽĘ{!Ň\jOGfŇS©¸×8~w\“ ýfŢç'ż•Ň 7Ý6ŕäŮ/:kŰcó×ţř7ZĄ˙q3‘źwĘşÝ$ĘÍ·Ýżęß~ČË%Xłąá7·Ż˝ţ—j<čĽdÇŢ.=šźŞlݲk>;ţ˙a·mţ‹Ż}ü‹Ű÷Ěú΋Ć}î#PZ:«nůG>?ţë˙Ř·óÚ~ĄT]ßć¦ć™‡xŃÂúÉߦ§×Ë®b÷öí7WÚ|÷ŁÎ?­ń Ń‰Ť“R¶ŽŇľŤFďčÝč ‚ÝÎŢp­±„,ť¸t)VU#ćPzá•z—ťö´}!c`‡bă,3ăvîÜŐŘPßŘ,aé<Ş>»ű55Ž2€éxĐ+ĚáG53Y”­+ Ͳ/dÜi_̠ۀ1Ń…Ť|ęÜőë[ŮM.Y<Ë{WµĎ˛.ŚEţËżüKQň‘đh ­ŐuBF˘ŁGŹ1é#ď<ĺ=§Ú_.UĆLĺláé§źfő«Ř€?™Úµë‡"¸<ĄVa¬ŕăÔX,y9¬’†\pÁE]Äďgö†ă˛.§µTĐÂę+ xÁo¨é–´®»ňi­ Ż&MÝżŹđtI2‘đÖ ©+lrѰeý¬xPľ/#+ÚßĐĎgş#Ý™ĎÄÂ(;†Cş™.JkŇh¸šBöŔŔAë“=ě6íܱ3y_„đt˛]iŇ šä(%<|?ú”–ľ&!+UG)‘´÷iO ÷ĐŁĄji’+wt6ÂÓu”–ţ'Ţ3ş™Qäş2Ů!o9{ő×ţc碎| ‹.2}öVšp7ŕÄŮĎ<žw­JéęŻý®%rĂř1ݰĄÚčŹ]˝éO÷î.íŁ·ăů…Żś{ußýä˛#žúşaW\€<ňş+µ;ŰžxvÁ©űĽ7˘•M÷ í:ę˛đ˛•/Íľ„¶NúÉ>P¨A×AŃ|Ä!ĽŠW^eËţt Ďú_ýŽ:¶~űł ´ő¦C¦4ŚĄ—&ôöYŠŇ úc]čIČŃť}ŮÓ¦˙˙îŚ!O[n|yě±Ń*yě Çś“/˛m[·s@żĆţÍMťÍďŽěu`˙ćaúó€zѢEüÄerSžÉ;yž>ĆÂÖU@‚¦¬\"ĂÝDĚŤ ćÎ;ď„úĺůĺ/÷>é…ŁimmĹŇeFdNł'x5Ş»9šë°ę˛ţĐęÁH”ęâEÚAX0p`m,‹‚{ě1Ţ«E®™*ŚT/6eăąźţô§jĂĽH9ů––Uţüç?—ÉwÄĂŰcuY.ëŽĺŰ`˛KgŢÂź'sîxŤ,Ó!Ő‰»ŚT•ÚÁCÝ»« Ý 7ÜŔÇcîÜąßýîw‹ţ±»ůąĐ»Ä˙ă˙žĘÁ;a‰ˇhŘî‡ŮćÖéMÜ_>ş3`mÔş3†őˇĆŇbR×ĘuŽűÂG÷yă„–UU`ĆÜŘO_ăşô¨ş1źľF¶ŐrÉą21Đ5VyŔiÇŤĽćĎĺ˛~Č ~ł÷&Eíë7n¦ăq¦Ú»BAQ?xŕŘĎ^§ AŰm}č©­> sס¬«ó‰żRz6·®wÜÇŢŮ r‹tDzÓĎ>čAlrú‰yČY]Ú*ęűXŻ\Ć, é ÇuťĹBŘ1ŰŢač€~űď}*•î‚«iďł{ä°u›7odB żŇů /ëj]3•ÝFU‰Ô•1c×›É5ŽtŰ‚ŹYµę˛'nä·–W| 'Č‹)Ąî~ôŁńâQ^5ŕ.EÄXfHyŞu©ß*݉»kŰM7Ý1wÉ%—đjTťevGéđz tŇI'yĘŚË?•Ďüeq+Säţýß˙]JyËę7ľń Ď’ËłĎ>[¸{ľtfÜ]wÝ5ţ|–ÓÂĂş/ÇĐwA;8sćLŢ6«kśy6Ŕ‘n1ŹćŤo|Ł|YaĚ$»Ż|ĺ+PŔĘ0˘ä×8L"Bˇ°±wCŇ™‰číŘż =ú'ź§;:‰U§éüaÄśÄ<`«’îr̲ľ±Ä®’Ö¤Łĺ[n¶ŽÇ9˛·i[Ô•Ř·„˘Kxş˝ŰϡĆ ç%Ü]˛j6á×äŚ@IbVRîm±”ďfË»=<ťXî5(IR1Oä^E»4˛tîIS~ýőe×ţóÎW:¦Š‹}Ă„±ľý÷mM-ZnůÎkźř·Ťż˝Ăó Ő5ţkźp7Scľ›g#—Ľ#‚?›>Ą×(«Ť ^• 16C/;żé–•źůú¶';6Ş“Š‰ýŰ?ôź}xG[őő“~öĄU_şaÍwţsĎLľ{×Ĺc>őAxŐŹúŘŐ+ţîK;ď]–‘ń׺'Úşţ{{”Ф Ľ‘fW›6¤‚Űk^ĺ!úˇo;ŻO}Ýë_¸ľmĺjµˇůČCGü=O=ÎÓŰĺţŽ€±uűű<ŕâĎČEü'›źśNbŐi3§,3śdĆľ·0č!¨Ś54*c$Ż l Ȇ  소?Ś}č˛ú:=jko7bP˙¦%K†˛”lmž8ďµ(I^sniş(­űŢő¦2ƅ쵢 Ý€ŔQGĄďâ„¶f$O»Ľ T·6cŁş[nąEjńąuW_Ş+Ř“¨6• Ý łĚî˝÷^ ›é„üŮʲâ /ĽňK—{ý‚5{ë[ßęažAžK(¶ÓO?],ˇGĎ:ë,XÁXEŢôŞw–Z0tşHvŹĂ­ŘÚÚŞóţb$~¦żĹ:čzË–YÉ VżţőŻŐĚŁę(•Ť˙ …Ť7e$ůF5¶Náí5BlLÉźEEĺNşÎCţ;Ś!¨ĚčrĐ>¨,ę$Ř7ľ9łeÇ®ť»’†d=lb˝ď†MÂŢ% OmçŢb‰Mbć%ž.QěáéńÇŘÁ"ןĘů-µŠ 2Pr­·˙pçâ×¶?żpç˘eŤĆö;ň°Ć‰cÓđĘ×ń_ýDűçţš×ŞbĽ{űŽćC[šmŐůwZ…őŞüÓKĹvŘËŇK K(ąÉ7}rŤ=ěxG-Daóô‰ÜóĚoŁ˙î}#>ô®IŔŻđ˘Ř~GLkž1­®ź˙Ú®'Í>ř®ź´­]żkĹjţ‚ĺͶLLG+Mä„‚†{ńV/*ąóŕ_şhč%çąř,ŢŐ»mţKmë7CĂř±t ¨ÓƦé[× n˘uˇXţáfEÝVĂą ö˘1 Ůç7Köcq"‹ÎXřvĐäÖ1Ă564´µóě(‹´#‘í߿騩 Đďîyó)3ÂüwE[ţHĄüöů-ř›˛`2Ů M ⑝Čřxç;ßɬ1Ý_ $Î;Ţń}mč‰'žČ'öľűîK¶/0Χťvż ţđ‡?†E oxĂD®Ę9ČvĺŹD;čĂź ”ŹtĚF«@1EŽw2¸ŻIĄ”ťÝ®˝öZfŰÍ›7OŤEŕŻňňË/—­ýĽ˘ŘĺźýŮź±Š–ąlú‡Ć^x—^z©âOĹsÎ9vţĆotW€˘§;ozÓ›Üy|tęꫯ†˘e=˝_Ň4üńgžy¦˛ü±ÂŐ^sÍ5L¸ä3/IE>p‚p˛¬Űoę$ĆăŽ;oĽŁ–g RQÎĐ‘|Ć€K. …-ßźR¬ü_ňn3&÷.ôoÄëV-$3eÇë”×G.ó[JÝBöůŤsZň˝ÁÔΆť»vµ1ůş}w˛ťţµ"s”&Úí.˝˘tYŠ˙IQixAş“śKsôH—HŠÄ ŃĹy:Ş{ĄŢeâÓC řLóĘTykj§n ŞúĎžÁżN-»Ô€ż ŢiËżN[a…)ŻXĺ_ç–ÇÖÚ©™tLú|äź6dB/FŔŘş^|s÷×®ąI†źÁt}źÜÖÝÖş9’XRv©6r×g8gi[­łŚŽçsŽ?áŕń#F đÚšŤŢ /Ô¶¶ÝGLudë¸ć†:hśrĘ)yŔݰ›ŮŐłK˝^ŘeŹ Ŕô:aëůŇÚÚJW”ŤĘĄŮĽ Ň„™\˛¦RKů±JÇx 0€ňŮÓůwb ýůĎ^+zě ‡§äňă˙xZÉÇ;í*$¬ÁäH»…űÜç>—Ö5RLţÂü8ż6ůĺ)KS1"úŃËÉA)×ĐRÁ÷xť«˘`ńżĆ\3Y€¬"Ŕ—ýýß˙=,?fL—#îŻqPÖL펻çž{.DÄw–¨XśKxžçŚÔĹ_ŚOşĆlůŤíľFC{Š™Xjž%÷Á~P"'¨L"wwTűüa?ńÄÚÄŃG­˛ ű îŔ‘g«nżÜÖ]ĎÝI, )»Ô ąëŚÓÎłŰňJ”1Ąľľ­ľľŽU±”ŠAň}ß̹֞ÆC{¤rI˝W_bç+—§ÓZž@]’łIÓzé ŮĄž±]†€!`ô8ĆÖőř-°˛%ščdUŢSV#NbafÎî=•řŚéE1ă˘ú='?ňů5ÎŻMfÓ0_ć–±GL»bíF5đb:Óȡý/xĂô ه.Xđ2Ű˝“ţsĚ12ő¦h$Aű Ň‹Ä˝,jďÖ5ą›`:źy#Ł„­KÇŔŰ <•Ö«z%Ͱhiw Ý nLQ v?g¸6Ž`i!ežť|2%Ť#ŹgŘ4%Ô˛í˝2‰ňŹüŁTaá‡>ô!ˇęžyćwzfˇůů#ď4l͇zHÂŚ}žł»lĄµ@l4É9úKGjÁI,‰0gw‚N‚JÜĆôÁ˘qQ˝tÇ;g;á „/™dz]{;–ímlĂŰG¦Ú‹" ~ä go©uŻZ䵫Đ«[5 ž‡ Ť)ËCŕÁmkż¸&ë…ĺą­¤!URÝę†@M!`l]MÝ &/™GÎÜ…–bNň{č 'Á¨ŇĘ´F°+¤Źgô+ŁŠ gŇP~Űó×52QĺŚ3Ď>}ÖÁŹ˝´lÍĆ-Ą ě:ž$óô¸´Ó +ÝęÇ tቇź}ě!}vm˙ŮĎ~Ć˙ĚÄÁ ®‚Ť••G.ńÇś»}4ą¦`:3ŕXëJTěhĆ´,>~5ˇSS0IßŐóř>űŮĎ2›’ýćY©ţĽ¶§¨Ű'ź|’ zók : ¦Šč‡-č3g6s’łş4]-'ęG·kieZŁö±˘ >¨ÄUQ˝¶î ůť07™Š|·0ťŞ®nwÇ«$đ ·C˙ÖUWĘŚ´(Ř(Ą˘W37δt’63MČ$î§wlä_Ő»şŠ7ÇĽ«›3˙†€!ĐE[×EŔšŰ2 ±ć9ó’2[Ý·Z0Lş3†}#ňŻbúvĄë.5ÖÄ1Ý4ótŘ.Š=ă˙űż˙›'Ń2˙•sźX°zăÖŇvÉŇV¨57ÖóŘĂ&Ž>ói'ϜҾcŰď~÷{6®bf ďĚźmäďf~Kí”T)Ł˘z0ˇ`Ź98Ţ<ŔÔh»ŕrÔnĂšŘ/`¶Ú!‡ňâ‹/J´ěŮçN©Cɢڋ.ş¨GúÂb:¶ä“¦gÍšĄ/·í‘`¬Ńň`ĽHÝśE¤ľtsĆ" Vé:ci.ż˙N-Ém8ä]±r¦ ÝßáéÄ&ć\+Ş€}ĚXz”>‹}ŃZi?¸†[Ŕń–·Ľ…·ĆóX…Ç<2§’ÜŁ‘áŮ6|1smśÖhTEjă ž˝$0|ő1$yEµŞ.öŔRŠđŕÚ„î‰&»tŹ•ýż.ţÔdźRŘ:^‹Ä Â#źgëxç »Ç°Óc‡·Ť|±ž›µ!`ôĆÖőöÖr*f2r—śÎcrV—îĆś¸``4 *©Ô•1ă>ć{zM©śą”Ăłommť={öÍ7ßü˝ď}Ňš‹Ž?ěĽăŰ´uŰ®¶ÝÍŤ 4±ĚuëÖ-kV,dÁŢ>ů›ßü†g•gśqŻĹ„ďŰă8ÜGJ˝;µWW¨ŠסÉ=…Ŕřńă?ýéOË %mí©0¬]A€7Wđ˘dTVžÖ,Dőć7ż™ —,YÂËIř6ăw5“‚YCMQF;sćĚ3’·éOú‰EfMW@ˇl!Ł­Ř•Ó…Ő%°7llbf…ôAă ’Öú RBUĐ<ď2ć9Ź^˙ŠeK;H-Ţ+o“9ŃŘ0pe.G:f5Ë(Rň ŔŤŕŕË™‘‚LCfPÖ['ńD(Ńćé—ن@m"Đ“ůhm"bQŐ&Á!EăďĹöÂAŃGdˇí”ŞëęF6°ÄᄱÉa+ałqłRC Ć0¶®ĆoĐ^pŘc(ĘJĐT/ä'ŘbĚyÚs~KݎXEĎL.cĆůő1KüÇŠŠę+Ź<ÖbĐs,ň“>ćÜô†€!`†@6±‘%ť-dř©Š“ ˙üžó[z Ĺ*zfr3Î©Ź™UĹy0`UĆšęJu•‚öA%ucú´[ÓE€?[™­&Kb™R'łęjsbă 09MŃ>š˝!`ÔĆÖŐν°Hr!1b~ň;ÉoëX,ôEž·ü–R1fO©öHmT¨¤Ń.uB`A˙Ae BĆvi†€!`”@lčѱ8ŹĎĘťj.R,ôEž«ü–R1fďvGmTđĺ2VÔçWĆ<=dô¨}!ă4¦É09 „§ŁVňy|VцŘđĆYx:ą¬˘seÝŚ€±uÝ ¸5×9îWhq+şÍt‘“Ş4çĆ)rĚmÚMĐ8¨Ś»nµ˘ ni¶‡XĎ\ĆŚ‹ę+tk.čÖ”†€!`†@~Ü!¦‹ňŚ`ÜÖ]łt$ů-]?ťĘ1·ÁŠAă ’ę1˝xöJ˝Km˝¨^+şBQ'1{×§Ę1ă >¨TW&TţŽ8`Äđ\kŕXŐűk C §0¶®§·v{-E‡íŚaµ¨«üâ™v»Ôţ`ň[v]ŔCWűĎßSł4 CŔ0zBbF&C ą*ŁË]çôÜ €—qŹzq•ě/î¸uÍ0şcëşdk˘|byRˇˇ±vśđbAfTńŠbŇúŚÓĆŇJQ˝[yNbŤVîĽgšű˘µ‚qšŇ0 Cŕ@C 6|ôšdF;¨Bž[4*ń–Ö§5Úh¬¨¨^şBQ'1{×§Ę1ă >¨TWiAě‹ÖJű1Ť!`†@÷ `l]÷ŕl­TXޱ?&ľł9˝ v0¨dÓEiŤŢÚ˘TÎŞ Ú•T‰éE1ăŞč 9)dě‹Âe‚!`†€!P!±QÉM :m˘śhŔ*HŘÁŘ‚Ę}†±¶ĺŮx—xNkbÍeč‹:‰µôTĆ‚)d CśŰŮ0 C –0¶®–ďŽĹVŚ FłşÂNËŞ‹$†XŞ˝ nłAĄk rK±QKÔI†PČ?…ě»Î¸K#ɀˊ CŔ0 ˘dʆéD˘¨˙üö±HĽÔ,-¸mi©«ŚÉť{ŢeĚ­č SĄ}×wi$ŮY©!`†@÷#`l]÷cn-f!@ŠĚrĽĽ0ËEĹeÁđÚť1äěD,T­Ţ©Z¦…üuó[ŇJ~ăü–nđ…j2v[1Ů0 CŔČ@ =ľts‘@˘íć02 ҢX¨®awj¦ö®P¨Vr+Á篒ßŇ…ĹdCŔ0 ÚGŔŘşÚżGa‚@0)”q=¸9ýÄ<ä¬.mĹśH©wŽőAĄçĐ˝ŚŮőA%Ţ é »ˇşrQ'…쳍cĄnx&†€!`A2‘Ş$9ťÄÂČY]şsR¨ăA'AeĐmv$A?A%~ é Ç"/ę$fô3}¬4čĘ”†€!`=€±u=ľ5])±„ŁPĆIú©°z}•ń§=gť•â6X”_™Iĺag;O™Ödô1ž) CŔ0 ˛ C…ň™ ťÄŞÓ©Ba(8Śů,ŞWź*ň3Ć[¬(­Ok$^Cu…qUô1'Ýtc3Ů0 C Ö0¶®ÖîĹÍśĘK+4–÷t$±^Ä"{ŻÔ»ŚůDźßRťŞŇ©±gŕ]jŁA!żq~Ë`C¦4 CŔ0bĆîO!j'’˘X‰˝ÄŻ˝P!ćÍŐ2¦b!űlătiZă†ęÉ]gě5d—†€!`5‹€±u5{k,°ňČHqş3K.# ŞČáuĄ§‰]ć·Tů«ä·,伋Üj E›(jď¶e˛!`†€!PbQw&3t$FF bꮕÖÄPĘo©ňWÉoYÔy×y.‰Ř—Ź6d‚!`†@Ź#`l]Źß /±ś##_L»®'±0Ľ€cf1˝W].cĆ…ô…Śi7hTcÎ<椾±v'V+Ł Vd†€!`¸Ć’ý.™‰uÄí¬Č1Ë>íM̸ľq¬Ń“`ŘEťÄśőAe¬EŐÇjĹâ7˝!`†@O!`l]O!oíFĐ4"gćŞöžÇśŐĄV̉”ćts’łşĆŹź « RkyB̸ľ1µ÷b–Ë“ ˙BĆA1e†ž"; CŔ0 txĘ™¨˝ç3gu©sBi~?1'ů=h0AWAĄ×k˝Ě0Žőů•44ÖNilť 1?i}ZŁÎcEi}ZSFĚÚ® †€!`=Ž€±u=~ ,€(Á´Łh˛ő^¤  Ş ­Ä [Č…ě r^Ôs—:/#ŕ˝0Ą!`†€!D 6ĐT7…6í*»- еĺĆŁr!cjĺ·ĎoYF0]ęĽP7‹kgM0 CŔ¨qŚ­«ńdᕏ@v"ŐťYr,’` AcW‰LEWăbÓ»6ž\¨J!cR{ĽÖÝË<6j_ČŘŤD=d®sä Ŕ3śX‘!`†€!P!îx”vL$ŇfUŃÄ" Ć4N+Ó 5ŁHm\ˇ}!cZqí]Ů @ĺN ÔŇóěęcr…Î UŹĹ`zCŔ0 îAŔŘşîÁŮZ©yF0_Ś5óSą“üÜÝK ;­‰u'Ă>椾1ÁÄěńÇŚú 2ŁĹ }P™á$¶) CŔ0 ˛ŤDůłš®ÜIĚÎsFâz@v/ś´&´ }P™@°‰˘Nbö•;Źy.¤/dŚŮ”†€!`µŚ€±uµ|wĐŘÜä#g¦(Hą]ěşŮIĺaŕ!ćÄí—ĘAă ’*1}°(f\TݎşBQ'Aű 2Řm:]%­Qc CŔ0 2pG–nÎCÖmÝ ľ;#!†XnH®ś¶OkÄľ>fŚ«XQLďF[F$U‚-•1'Ćé°Mc†€!Pű[Wű÷Č"¬XúR(g­4xFg7’t´y4^xé*ž^ć·¤J!ă.µ/Iˇ`ŇÎÓĐCŔ0 C ŤDn Ń aĐDžHŇ6iM§ŃŞŇuĆ]v!$ů-µˇüUň[Şs CŔ0j cëjęvX0>±TŁ6sS?úĘ®é;ÝŚ! ľłK˝ö S·˝˝ť*mĄcWé gŻő˘žcö9őr÷1®sކ††úúzŠäđúĽôšó.ULi†€!`E 6ľ0`uUˇ}÷GB‹t3Ö®t'»Ôër!cęb/Ů ‚¤4"SÍp¤˘×´w‹ÄÓë]Fݞr–ěE2ÍdhKŤ˝vÓ—n‹ŇŠ«IŰ›Ć0 C`ż@ŔŘşýâ6Y>±,$fÇw˘™\:δF ęĘŚî‹=g’ÚuëÖ­YłfŐŞU‹-Z¶lŮĆŤ·nÝşm۶ť;w’ŃÂŕa&ů®{‡b-ş6ťĘŢ­äR4’ÎÂÍ5660`řđáC‡2dČĉGŤ…fذa‰q§ÝtĂȨ˘¸ö&†€!`• .u<Ę㼦ś¤‘ľpNĄ5Ňß >¨ÄľS=YФ.6l źyýő×7oŢŚĚ™|FRš;vó`)tžĺđîBP‰ }äPc‘9; 9 GSSgňrŽŽ(ý÷Â܉CUĎ®Ök»é"Ѥő®C“ CŔ0jcëjç^X$U@ –‚Hî’ł©žÓUĚIÎę´…Ś]?®ěő%]”ÖxUHIÉ_·lŮňÚkŻ-]ştůňĺ\nÚ´I8ÉS‘ĺ ťÝľ}»d±śĹ9g<Ď]z &4Á™Dnä–¬KÍŚI… 4zôh˝ &@çőë×e0Ât_Ňš`ES†€!`UD 6úČ𗳡©žÓUĚIÎę´…Ś]?®ěő%]”Ö¤«–«¬]»vĹŠśaâÖŻ_Oz’Ô&އ‹b É E%F.9Q„OI{hN[TÁk‘K)r č#GÚŤ[$6ś%QA o‘Ô…3ůIéŞCĂĄć٤zz\&l_CřGQáÖŤÍ•šŇ0 C 6Ń×f¬Ő€)Eţ¬B’ž^ ‹€ŠNAŔ™(d“É\ĺa22éěĘ•+/^ gç±uř¬bťFÓ€4*2lúâU”O…äÁ¤ą°u«W݆­#}‡¶¶ŽDŁąą™ÇÚ\zNěŇ0 CŔ(w¨ęÔ‰%3ťBä€-C?™ŚLšVŽĄd2A¶N8ω^jRˇšň„ź^ZqďľĘ¤1<}Lłu#GŽ„¶Ş#‡Á€†3É g­žÝby˝łZ†€!`ÝŹ€±uÝŹąµŘd'.šßä‰,č*ż‡`u·Ý API­NőČ#e-ą§žzjţüůĐsLIą#ÍpâFµÉ‚ ýĺ ‡‘äa»ÄĎmâ f˝ +g9&Ož|Č!‡ŔčAء×'Ő1`÷#,TCŔ0 ^†@öŘÄ—żż1W9ťÄŞkA ’*yôŚéBş‘Ő°€4†cÁ‚, ˝ĽC/~8‹ Á¸BF‘kVT.Ű­WQń—†® i›č9s$ÓęJKhÇŤ×ŇŇ7iŇ$Îpv’ĚĎHüžó˘ť2{CŔ0 žEŔŘşžĹßZ @nA.(H©bYHÎęęŻr?14Q4Ť !ć6żž'ĎwŢyçĽyóب…ÇÎ,‘d7ýśŮm··ĘŕĆAßY#Yů /×ň8šu%ä»Đv3g΄ČKOµŁVĆíč­pYż CŔ0ĘF€#g CLşˇśŐµbUüTʼn†$BĚgN=Ł6dÄO™,ĎŘÍ7'G:ź‰ąő˘ŞÍËX𢗏DéDyÝóĎ?7Ç<;–ǒɰ†`Ú´iwh”łÓžŠ“Xjf‚!`†@Ť `l]ŤÜ cb™DŃĚu§Ĺ/ŞFN¨¬TŇ­ ţá‡&‡#»ĺ‘,ym˛h$µh4$|đÔ©S±$dß7Ţrx~Ë>q$…Ú:I!Ë1P*Ő»Y˘wK]YC%‹\Ç"Vú¨fžDů Bfť)2Ü–kOn#ď|Peđ~‰Ň-reŻ.1“É@5Â-R$–tŤôŚ| ‰ 6"łž—C=¸‚‹›t_ ňŽôěÉ'źdŁŢéÓ§Ë“HfááÁ­č:4Ů0 C –0¶®–ďŽĹÖÉM¬´µ‘s@ĄźzH•‘”s,Ďíţr µdÉ’gź}öąçž{ĺ•W¸Ě<…e#7…ź˘Ź\‚‡\BŐ [‡lÉE<ł%ßĺ{qÎM!ĺí”­Ł.UďÎôIWEĂ9ČÖ‘ŕʲš&É&Ů¶Ž·Áň[<ňrć©»,!!EĆ€oi(Д̰~Ľ-ŽKjAM’Ö+ó(QŮŮ0 CŔ(Ć&RÉd:bŇVž¦ÓCjžZµfCß9XŔ4ŢJO>,ů ú`´U°oä'“4‚›]Č9ČÖ‘ó°'†ë¶Ž˝n©®Ę ¤(ĺČ0Ă€RÎ.['Jô.['2ë!Đ+[Gö§…˝¤1Ątf»—d2ŕCF„1Ůź.ŻŇ»1cĆtúIĂą†€!`5€±u5xS,$Rž©’ZTO˘Ů˝›<RA ň ňĽóÎă“&Ď_Ĺłť CŔ0öŚ­Ű_îÔ'©†ôV2rµgžy†t„ůS<'ä)QÉĎÄR«x0©Oźľ¬Ü>«âÄŤ-ć0CĎZÎ;î¸]]ÜDÓőyúé§ĂÇwÜqĚL\Iv匥&µxäĄ ®ě)=´%HÎŞYôJ5đęjÓu±áÉ€T?ú裹|ŰŰކ̇‡”—KŮČ X9ËbáRŤ˝',ůU€Í7ľńŤ+ŻĽ˛ĄĄ…%rŢkj’!`†€!A@‡ łŕV ęxŚCĂ® ŚVP*ť&3´ N"­íUk»{U%©;=xMÇBŠé©ÍUwűí·3+MňĎnŽTQ~Ö¬Y IfČÓÇ„·+=ŹÄYŤt™3uĄşČž”˘÷”\r¸](ŐΕĚPKJu•3­‚ ˛6ÍĄä0'ťt’—Ěžăy$™,ŢăŹ?‹Ç#F©.ír&á!y†ë‡#Ź<’]>,™QpL0 C`AŔŘşýĺNqjćÄhfŐń¨ĄlĚ0~üxž2ĎźĚ,†ŽzHh>”.Şş&FF Á*AĄíÝwßýŕľüňËUwöŮg3ŽŚÄXâ’ĚVă1/©›ÄŔY×ÍI‹© Ş hÜRu(uŐ Á­«µ\%6âPëŞ7)o*»uŐRSvş)ötś'í|rKxÎ9ç°lňŽ4wîÜąđw.s€vüT·łÎ:K›3Á0 CŔ(„€dŚJpsŚD,T„pa7äÁĐŚ;6#™ˇ9uâ5Íçişî˛ĽҵŇ/fáx衇<ŞîđĂ'‡9á„ŕžüN&ĂÁ°NŠČ@ŻĎ=$iNZôRiÔU˘ÁŇ…TdŠŤł ‡nÜr¸>ÝR Ś!c©íŠ@É~ůĚ@ç1[“I,žĺ‘öý÷ßĎfľÂ܉8;.‰źGłň Óse—†€!`µŚ€±uµ|w,¶x0H‚KjÂăhr\ž¤|…pći*YH:›© |n.•Óa…‘äo1mÉö.," ĐČb[ZZŽ?ţxćÓ ['ÉÄ醊7W#NĐxząäśÄ­Ž‡«)áVAČv¶%ír–ęzĆ€Ź ů=śťĚ¶c…,’ń ‰/ÓĐ0ĂŽ=­á4µzPŔ'G°Č”†€!`†€"@Ƹ ÍÄřĂBC2Ă LŮ$gٵVµ„ôíąÂˇM†ěě&´Ô‹ŤÍ+yś&ŹÁŤ±¸µµ•5­PTÂÖAqĘŁ8‰ÓŤ–Z‚†V\˝\zMkH®Ą8ô,‹:Äłúô\ązfŇŠF%’VH`@2­ ʉ†i†LŰ$™Až†xÂÍÇ :ŻS¶NĂóšłKCŔ0 žBŔŘşžBŢÚ-€™ÄąČŠŇÁÜ:6ď Qcó¶&Č#G!wÉźjS%bĘďˇ@"¦±Đ{aÄ,=Ǭ‰`îˇ*Y$rĘ)§üíßţ­ #>Ĺ2‡*=Aś™śŃ`ĎY/ĄŠk™ÓˇşRoäâęGiN.]ĎR+m&6zV<‡ň€gőüjâ·ÁG?úQMó AŞŕĘ^~\R×­®>qĽrigCŔ0 C †3ÜqX¶Éän¶Re¸!™aáIÉ #´”.áŚůqőéIJÝÚµď 9C2jîűŘĚ»ŚĂ˛˛^Ş€ <Ýg>󡢴kIB"g1ć¬JőŻŞŃşbŻz­+ˇĘY•ž—b ú<É Ćn<ČžFcK›y–\Š1Oy.ËÁól>WůČGXËüM<đś›OYôÉ'ź,öÂ"ë‘óÁSŤ †€!`µ€€}/×Â]°öAŔK}$ŹÁ‚4‚ z!ć,ĆbO˝ňh>…Í;Řľ„‡ŐĽ|€”NíŐiZŁEiÁk] ň;©Ü6sÓkEÎ<óĚkŻ˝– Lěĺ,AVcd-A•Z$>őŇ(*äPś»gmÔőCҨ(ĹF”*«}†ĄV :”0`{[[[o¸á†K.ą„-íÔ›4Ä^|Wô<áw5&†€!`2|(:‘ĚŔÖ‘Ěş°Ţ“Á…ńlÓĆó6Ř:žJ21¬¨}Új2ŻuµL»Ő"O¨Ü:ŚąŠéˇ2Y# ©$¬{ý×ýW“|F”ŇdőSj×ŇSĆęŇ ,˝V´®Ô’łXJŻŐ@ęŞŇmĹUŞ}L©1‡R‘ÇŘ̡#™aÇ^;Ś™aÇô:žtcŔ%1€±{†J~ę\“ CŔ0şcëşpk®0’ H5˛Ň\’°Ď , <ůi.Égž’óŕZćŮn)ł‚†k¨)š«¬P¦­XsAĎ1cÖÚ°®” 2KÓ›–t!­W%EŇG9‹Ą–Şŕ–­‡z–ŠâCC‘!­«‚«o®$3lZGÖGžjsV3;Ĺ“O±©°ŁFŤrki‘ †€!`=…€±u=…Ľµ[&’ŕ˛q ĎIJH/ŘŚ™9˙$»Ě°#Ç…Ń#–6Ňič»9)‰…‘¤S¶ϧ©¤nLBś2e ››°”XR鸸BFŕĚAuWÉĄ«Tç(a¸uĄ˘Zş‚¶’v(‘¨ó ‡bY^„Ň.ô?ŠřŔ€ĎťwŢÉç‡m›H3Z1Ł!” ÉęQşgŘa¶Ŕs5&†€!`Ů0,’ŔŔĘ‘®01%Šd†çŽpvśyú{âv FAź2ŕ‹şB CÚĘ.Őx˛Íť9Ô|xZ,“'Of&ź‘Ź„‡b&igUR$—hÔˇ„áj\ŮsčÖ­Đ!´ŁÄ¬Íj© n ČnGxP 'É ŻŚŁ‰·żýí(Ą›ś‘OÎä<<ˇÔ"ŕ@Yh,á©ŇCŔ0 žEŔŘşžĹßZ/26逕“µ$Đ(0S,ť`Ż“%K–ÉńŇĎNÓ7ÝqăŔą{™-WĹ M¨´Ý´&O6ě†së­·>ţřăü .öĘa×’éÓ§ëĘMI9“AjŻEIuTŤG D)!ilTN •;ÄŰDQ‡psO<ńÄüůóy‡Ż‚%Í%Hڳ͟ÇÖápřťŔâkÖ+qéäµŕÉëe]ĄÉ†€!`†@zť9XËÂX;ö÷`g^ŢŔrE)†’}úô©˛WŠsO“qY'řÇŹ¸’ł×bP)µ\ËÄ…CM’ÝÝ~űípLŚąJlđÇ`ÝŇŇÂ[·–řŃ^‹€0@ö4Şł{±Ł~TŔRş‚ĘbćzC–t«ZyVMCĚ–»$3L?Ä3ą1řŔâiÓ(i—KöçĺŃczˇŔBżéMo"]ÔZ&†€!`ô8ĆÖőř-°öA€”‚cUé"ô äŃ4éô9  á§x(Í Yvăą4ůů.>‚Ň ˇ PČC†“l?^ÓŢ%uĺé÷”wüźÔ˙Č#Ź„f"ź‡~ř©§ž’Ĺ5µ¶¶ň3ŠŠ €OHť« Ą®†6¤Š«{­"fg)6R„Üuy Ǧ-ěZÍďř\~‘ý3˝nŽÉ Ľ‘CvřN§ŞTgňJ¨î™ŠGqÄgśá*M6 CŔ0tČS(d¤ÓKW€Ź#]!™„âÉ” ·lfG2Ă<;J!őÄC†×g:)ÍY]ŚcN˛]yµĽK 2¦WČâćĚ™CŽÇsY†lžAňh–éđ ÁĚmgřfQś¦,äÄ't=«,z·T *´%–®RŤUP3QŞ˝hÄŔµWiNŁJ;TĎžC¦ČÁÁ‘Ě<ýôÓě})É JňÎP™<Ăć]¤vA†÷ž{î!OĆ­w&‹˛Ď=÷Üt äYÚĄ!`†@w"`l]w˘mmu d$d?ň^N’»@ŘÁÎđ€š3ł¨ ó ¤0‹˝»“ę]YÄ©›˘ELÂę˘ÉbO8áŇYž¸’ŢÉB~Ť±˘„źđVĚłăŕ pF:ŹK“ĚŇ (¨ÁŔ OdVĚ‚ŐÝşb“íPm\‡8áé19+Č8z*g\R[@€tCI÷ÉzIOÉkYYC–Ď L€ !|ęAúË/%GóYü#‰@IDATRĄt„­ŻYeŚŻČ. CŔ0 B031ěň8 vŚV gĽęť‘dÎ:ʇ”5’ĚĐ;oěÎŮߢµ`ëN<ńDrfÄ3”ó ’ťOÄßECš‡ŕŔX1”“Ěü  ¤"–yrâ÷Ě$TW‰,Ýt•1M†CŠÔyşş&3t“Ś…>J&C2Ăâ’K>ŕŔEzǦd#¤1đt<‹Ąď^2CÎC-’OiNĎtŽ|Ćö­SLL0 C F0¶®Fn„…Ń ÁÜNs&2WR48&r5xáěáY¨NęFŢFNÓIKńâ` b®‘Äk(ˇˇŚ¶‚Ž‚ödöÇ{,“żxÉ)› Ówr;R=M l&,ůz¶€!ĂăĚÓ{j‘őr ©$|tPú(—śą”s©$9y—Ä)J©"a#*z.%f7rd÷R{ęęe5‡hÔ˝ěĚB IJJ™ˇŔ'Ü ŹŹíşş “{ÜqDZnšÔV)KlÚ4p1ÇÜHU)–łgĎ&-ćsĺŮĄ!`†€!ŕ! c–§çR††Hrž1“´0Ló¸H“Ć#F"¸'ŠËĽŃ*í3¦ÉC#‰Ő-ŞĎn+í-hOjG2Ăüw’ž2R‹Qž1“ńöŠZ A2%ŕŔСĚFd”‡„b1*bĆ ™‰\ "s¦HeÄ^eą”F‘%f7rd÷9\}F2#ů <]ă3ŔÁ˛ÎhČpř<!ý%o§Ł×sŃłq[뽲/Éu6ť ‘j¬”đDZžľňŕ‘Ťwdlú([śĚ›7Ź©v DęĎAÖK‘TŃł[ä‚ňĽZd˛^dD!ą€ 9"ě2gěI%ń€žKAĚ(’[ ů(<‡Č’|Cşq‰’Ŕ8DO^Ž’T•çĚ\Ęon·ĘTˇz. 2x˛v>0ä¦\[6ŚäĘüăq«°€C:ňľ÷˝ŹÝ˝"»4 CŔ0‰děË…7l1pł2‘‡g°0,]d€fŕc3;’F.YűÉäů÷śh»ž™ęBUśŕ9č'¨Ś{áI2ňĘ+ŻžA˛öÁä‰4YŁ?ç`2# ‘“HÂč/2—$3d&’ĚH¶C‹˛&3ř!̨.g.ÝD™0HZDőn2CĆÂÉ a“˝Ś=fČp˛ČčÝdĆĹŤŇvęÔ©$3liaÇ%‘¸f\şnoąĺήY’™Ë/żüÔSOőŠěŇ0 C Çđi‹Č0@ –päÉ8…c‚”<’‡®S¤DL¶bš“­íOfCÖ)Ô•„ˇÎ+q«ÓkŁA Źs$d¬(ąôŇKI…L`6yrKî9żIŮ$‰& ‘>r‰C!}`€ѻƒڢ—Ô@.9Ó‡ "»ĄZ„ !qVe©vR]Šh‚<›„›Ůsüćá1{KK ÷ťôšO’‚cź}Đ}8M/*:MyţůçCţJŠśíÄJ CŔ0@Ľ±CĐ1Q5iĆ)/F†!Fg†i†l¦•1L3pĂٱ0–T']×ÓT†şŞÄI¬nLŻŤˇăG}4OÝŢüć7ClAB T&ë=™Ag‡†"’h/2Fs.Ésđ‰=¸ÔěĄ\ş6ČédĄŘ—Ę;If°ˇłr KCHh´H1Ă9Ťň ™až i-«č>™ ů Ąä3n8ńiXp íŞ!ţxS‰1É’ęM0 CŔ¨Ś­«‘aaT’˛IeŘĚŽě–‡–,i$ł!Ńáé4© ĄŘжś«D¦;Éź2MüÂ2Şx.Čü„¦”\Ě•L7#ŤC&‘%˛:yŢKŚŔ,6ˇđ„ĽăLúË 4©.n5”K7-Rer“B\™¨ŘPęfŇÜ>IRĺĚ%·›ß32ąMRXÎt=÷š|”Ű­łüLś« ń¤…tĚx†ř»řâ‹iQOW4Ť!`†€!P ŚtŚ\$-¤+N'ź|2ű˘ČǦŠÎÍ•!`†@µ0¶®ZHšźę# é ¸ŕ×x)ř#V°_™®ű$3ŘĽz Tža˛Ń ‹a9gÇ®v˛g3 űżŕ;וëÁŐÍYÝş®śí'ÖzLďz6ąşp§řĽÁłQÎ…^xä‘GV׿y3 CŔč•č [Ç$/Ţ|…@ľďĆó0»N“`Q'LËbîc[XưYgŢDŔËŁxI)<`ÎdĎŮy{G4W©r†źXĹ^}šĐđyă16ÉĚŮgźÍ2Xä®hĹ|†€!`TŽ€±u•chş ŇSROžHł0ňŽĄ ¬|„ecż› ş˛Ex€mˇ"ź©ËsiňfĽ±‚&X!‚Cgř·)f§u˝Ŕ‚—ţ3ě‹Ö ş2eůđđëč’K.aŹg[6DÉ”†€!`1HH?Md1&C6´Ó´!ěüĺ&®śö†K’Ň1·ÂW, "2„;‘QšíG8HsYKÂňX’  ĘşŹśŮi ~đĆ=Ü’ÝÂⓇҸ•Ü—<":™Óg%pJI W•Őőŕ“Ŕg†ß?Ľ7Ť‰uL ŮőlěŇ0 CŔČ@@IfxRČ’ň¨:†˘É ˇů8KĆB2#ťy)’d†ń‹##ŞjĺOQň[V+6ó#đI mćÉ4 JUGJcÉŚ}6 CŔ¨eŚ­«ĺ»s€ĆćĄqä$¤¤łĚ†ă`ź`?÷Üsč™(ÇF$°l¤ąŕĺŐU˝T•–D–d…§‹¬ŠĹ!{رŘ·\˛˙ Űî’“=Ç<¨>-äŚ!] u9ŘÉ]”îĄČAeÚĚ4"Ŕ‡‡OËąçž;gÎś+®¸‚φü4ŞĐ­U7 CŔčĹxc4C cé Űž’iŔ©-Z´3É zäéÓ§ó‘W%€‰WWQň’ˇ˙Ř™—d¶î•W^!G’‡š¤4$3LÜ#Mb‹yP}PČF¬®Ľ«Á- : *ÝZ&W><¤µ|üN;í´÷˝ď}$3’9WĹą91 CŔč Ś­ë TÍg5Đ4ެ‚Ľ“G‚dĄĽ×•‡ŇLŻ#ĺeU,+>ŕňĐ“x଄˘N42Ě8xÄŤ[ćčáyٲe<ĺću令ąŤ7Ď`™ö ®(Rź]!ÄÚ튶Ěg>Qlôţ÷żźÍ™RÇg̨ş4J¦1 CŔČF@Gs’ 4’ćkCŇńĽd†”ćé§źFťÇ– =0qi‡ęD‹$ ăăˇ&µHZVŻ^Í’XČ;śă–¬‰×ä`€Ď´qeÉŚBÚ+RŘ[’™ŮłgvŘa|ĆřöĘžZ§ CŔčM[×›îfoî‹ä‘d˘¤dśě4Go!×XľĘŇJYTÂ|4]Ęš3ď$sĹ'±‡ő“¸’ýěd )5ŤrTo,E.ä¶*N µx€óŰéôÓO?őÔS™őŔtË ëľ!`†@%HrB˛ARBľÁ4yë=ü;ó˛0–ś„d†3Gţdc’˛9ČpNšDľD[ÉĘYĚ*‰_ęf¤"En»9ÍÜ*&—Ťź"ćWJ2ĂĆ»Pşe»˛Š†€!`݉€±u݉¶µŐ9$pÁNV2Nž!“m0ń žŽýćŘ_™'É<9äĐE¬Z+Ö°´EjËňj‘Úň š·ŞÁÖᜇ޼˛ ʆ7Ćb†CĎg0ZšóĚbdčcžÓUb–čIý9—˘ö#Oű905ŕĂĽé{š“ĺô·żýíëµ!`†@y0˛pxuÝĀڂ‡…ěČuÂÚUYÄ ąĆެf%“AĎyľH2C‚DöB2řŇK/±éuL§¨f“:•Íë©]–!>N?řÁʨkU CŔ0zcëz|k:€@ţ¬ÎŽG…,b%ű\şt)ĚYé /Ľ€ őF,)©¶áfÉŞtá'OžL~L®ĚbX¨@Č;©N2|2’Ěŕ‡RIf°ˇ¨¦’™˛¶Š†€!`†@oBŔŘşŢt7ÜľĽň }^űůÂŇfK‘Ź"@Çđ64öžś"•×ËJ 4>y"ÍÁŽx˛~‡rŕś÷„˛`–ć„° zűáµUÉMĘhEŠN<ńDÂ~ňÉ'ĺ’Ľść“ÔźLťŽ0Ű Ö—`÷JÜzú“O>b‘ýnč5Ąśy2ĎŢŇtŐŻô‚ľŁ¨˘z7Ţxă˙ĎŢY€iUmo\†î†!†.éî”E ĺrl˝vţTĽâ°Q@$Ą»»»»Â˙ofáf{â›oXű™ç¸ÎÚëěł÷ű}¸ßďÝ…Úď§ 4Ał`t+n‹ź ž•OśNÔ7fÉńŃĐ:űpEŁůü>až 'Äă ţÜ?„řž0kRü¦iL7čСŞu5E@P‚GŔŃAŰú$'‹UQč 3˛#SÂá!ô׌·Af€4ń © eÂŕBŻ·wď^:GzL8=>dQJŕW”_süÚâďéäŤ~~żĘ¨_PE@H řöĘ)ˇńÚĆ$‡€źłÉ"üşÉ퉡c9,Ąá†ÉeŚ$łż2d7JŠE‰Ă€ă2¦Ť<µE ˘(Č.˛rŞCÓ$(ođşŰ‚ÇÓé.Ó&1 ,€ÍŁL™GD“Ş^˝zٲe™I‡ďGs¤ @AýA†ÓÍĐň€…V€‰ź \“Ä$°íbđŔŁBÓ¤ˇ<ŕFâ) 1Y৆¨c2鏥›Äd@®Đś¨i’sá–˛ÄĆŕÖř± ńPuŕ· ‹…ĺg »řQ7rAlęÔ©Ë–-[ż~˝Á ‡ ĆÚŘÇÜö«­(Š€" ÄżNÜô•N7*=,ôµŽn•Ť.›Ţ âÁ@ś}Ťž7ČšP8ťŻúGöÂ2CR2ťŁ ÝŃËŰ5 \ľg[ÜN·‡b=ť_§ąŠ€" (Š@ĘA@Őş”óY§ –Â2b`Ą˘"ÁD×nĄ@Éž*× ’D˝Bo˘(„$č2%C )Ń]‰!k‘´¦ŘxŹaV«tÍZN* •gťŽaóJ•*QU¸8,źćĂËD$-$0¶¸2% M„¸†ÜF»¤iÜzŞuäň:‰ńSë€ĹVëx U•÷bBG}0H"ĂCgü’¨*Ilüţ”mÚNKIÔ–_&TŚ÷ŇpUQëĐ.K•*E…#¶ň8€€Ó0aąĺَ«V­BźŤ÷ŹI TE@P‚A€ţ—îIúb:>:h:;Që若ף/Łż‹±´(ťLgMQt‚”†Č<;ŢBŻJQéÇ Ź±X PR&§/š{řăs—.oť¨@H—:KÝ\˝3ĄÉ÷Z-X?áŔńťîrBR§É—˝hˇÜĄňf/ěÎM!žł‘cć}ĽqĎ’=‡·ě?¶=SúlaąJËc§şĺÉV(;¬›ĽěűíÖl?°öČÉ}s•ĎWˇDţJmjöĚś>›ăÁýÇv,Üđ‡8 ć,Q­d3G€Ţ&oT­KŢźo’lÜQę&~đ1qć4WôJ¤:r)Ö<…].:Ń@¦Ń=őÔSsçÎĺçĽXŘÓÇłęTE@P `şBéqDš,óń`ĐmAZ„ĚĐ_ÓCAiXb|ÁŽť+„Ěyëöł¶mNŹ WaÔŠÇáEtôţ0(d‰Y{ěŠ!]vw|CüŢküveŚĂĎoǨ­$ę&î%1ÔÄŻ-ň˝ě—Ľ˙§Ůn ľr±Ć˝Ű˝[¦PŤ1ń’µeßĘýG·KQĺ‹ÔÍ–é:ʦO]>⣱O>ąÇ´îČÉ˝;®›·něO3˙×±No` IíG‰8wň›ÉŻŹš=đâĄóćÁő»Ž¬ßµŰáÓű?ÔţÍ«t5Y›÷,đóýâÉźŁŘđg·Řąj'{T­Köqn 'i‹Y”ĐnĐ\d+ë@ˇ¤,*žByˇ¤(8`†‘ eżTĘDěc¸› e Î¬±…7˶2ܲ=Ż›§<ÂëL€ýj‚%ŮNlśŹźÓ„±çZďŢ˝!ĺň¬\ĺĄŘ}N…K”(!łŰđŁĐ‘¸•Áv€"1ꎖ‡ŠGÂĎ9O¦ĽI<҉ÇI<ËUŞ!“ÝĚ-ÁŽj‹|†“úPU©W~xđ˛ÁŕŠ“O“$Â?6Hü˘ŕĘçËŻ ů=C.ÁR ŹČ-WümÁ§r; ×”ë;Ĺlɦ©ýFÜ}éŻËÓ™JŠqţâąQłßçŐ#ÚYgÎťzppÍť‡ţ±ńŽpôÔţľ#îZşyÚ:fűŐNɨZ—’?ýÔvQj¸˘!Q!? %ˇŤQkř(ÄÔohÚM.!Żđfâ™´…0„EŠÖµN a!Qˇgˇ›‰ńÚ]¬_¤Ă䄡 ÁéĄ&TĆń ˝8‰úÓy·„‘ĐăxIg´…NfŰIÓ¸š$Á"đ‰m×Vä9I†Ů„™¸;Gić–HˇX&ëˇŮá§( +dé(ňx žČ‹—.¦ş!jB€ă©ČógŮžĎ]âÚc;$8Súěoő{cŃzň˙í­űV=3¤Íˇ»$wţúߍZÇĘŮ?–|c^Q,Ĺ׺Ť,’§Śxć­ßwD·ÓgŹÉ-K_o,Z˙şŻö5µUă:"»oóu¬¨ľ:ĺ ŕŕsh«Çv®)„~ Ţɢ–=2±Ž%$Č4ČvSV—ŕgŻ78«‰7…¸=& U‹v}¬«e"¤5…$°Ű°°0Ţ ¦ż4ŹÄhx¶ĹÓ)EyfmٲeâĉK—.E©D7d¶úőësŔ˘Đ¦˙Ŕ1ŹśŤp{… śA=‹+†Ä&‡E ŻÉĐ4»Ú1˙NF­í™eŽĚëL50PÄŘł™ˇiQë„ŕÍŚNsK™0`¸5 7ŹBďrǸ+ŕö8ʡś)ÁQ ,“ˇu .\ąr%"m'‹ćŁÜ!QAëyťy©)Ö&×öđ.yÄvŠMĽyD¤bŽH‰‘,ě„+Ę‚ǦŻ%î…o:F^8c‚™·ëІo§ĽŽĽőaź9rŰ´wůŻó>6s×ţĆ5ĂÂĐAřź˘Á2™ëÄř-Öč]ÔĎń ‰´§qş ÂĐed–T›„NGÇ&űż@RQµ ¤T20%uT1g™CGĺ)ć@ e­ Ô™ňeź;»i+ě(ßÝzť:u˘€­ ÎMeh Ç€vŁ[mäă»Ř"çq‹!mwÔ »=TĂvŠmšf Â<·ź•Ŕš»@ á÷ ;b-•+*“Ő'͇ońˇóóeăTó.<öGCášE@P?č2ËF§ăPë`Bf +đ+ÁŃýŮav×iűm›út®ô×…0ĺ ŹŁJtyô}ŘkŇŃ(ĐQ ŞM±<Č#° ‘+ş$]*­C$Ŕî1‰tb×3@–¦¶"ŕk,së šL®KĚUĄzTzOJ }ŹďFV3 °“źŘæősHu&±¬ß÷ĽÓ3J2;ućŘëĂ»ÚRť‰ČIô™m;Ýöć˝+úŹü7żBYFŞsřÍ­[Ş›˝ć×/'ľhlăřéO|Öôý¦—)T˝tXu“…2Ř}@Ůj%šŐ(Ő˛JńĆ% VÍś>[ëęQë…í´qĎŇsç#ÄĂ|˝U»ŮąĆnSăßF­Űv`µń«‘’Pµ.%ú׳íÂY+ę ¸˛DšČ,'d&Ś­%Ő`Ę,–wŃźÁqeU,4|ö‰n ¶)i€*O9lÇă<»%yéuŘ4–v9„HéDcŐ• ™®^˝z… ćĚ™łiÓ&*F5ŕî´ Ń đů-A»đĂď™dÇjÎST’„mŞJ»H´EpŕĘ­\Łs˘.Ž[‚Ĺ)ŹhŘT?·î†ă§›«í—/ŚxL0~đä‡B$‹wh#ëřąňPYîĘGI˘]|:4ń´FŤ%K–äóâËŔĄnćŐj(Š€" (~СЏĐéĐ™.‰`g`ż8 D§ăWBĽřéÇ© NtmŚR”FF­Řx ]<ő!,7Ň’")JCJë 3$!3p'Оűwiľ BŚ/ŠUpŚĄi€"ĐđŤ…mň "őĎ*Ф‚„®K ĺ›JRáx˙‡Ć칥›§Žžű!xz”,Xűđ‰˝?Î`ś% Tą­ţcˇiŇM\2ÔLj[¸aÂâMSŞ—lľxÓdsşŘ“ť>e&Ý‚ Ţţ±‡Ěn[łsމ# +t*ś»ô3ß]±u†”Üłeßů+ÉÂۡSű©.uŞZeZÉSnáĆ?X„kŞŘHš)W–‚‘Î}4öIY(wé&•î8áÓôX—Š˙ěůÓŁç fý,ësË޵n× ć±hăDţ¸Mź63{ŘŐ*ÝşMÍžČv¦´ő»;oö"!©˝˙?\0gqĆşŕs'3¦Ëbč=[–|˛+^ç­+Y#gľ‡ZÇq rË•#8R–#&ZTąkĂ®Ĺv/ĆÉL€ł' ć*Î߼uăŚZWˇHÝj%›Ŕ켫F™BîmŐď®&Ďr{ďů7žŇĘÄ›‡ŃµÉslHÇ©¬ř٨N2¦ËúŮŁK2¤ŤÚć»NŮvO|ÖDüÓWŤzě–ń÷íţKďk3±Nüćz6ň”(w,§˝ĄîC=oz]©8wÂ݉ž±†#ëřéCŞÖ9 J·ŞÖĄŔ=Q4ŤgĎž&L`ö݉Ł#Y"*±ËŘ’%Kšŕ—¬Ęt×Ű“°şĂÄăx…&ĺ !!?!ß@LeB§…˘aÁJńŁ»±dŇĚŔ˛Çö« ěśńg”GÚK3 ŮËü2G ć–zJ21p:<Üz:Ýaâá˝đx~6Ô­[·sçÎ^pn{Ű±ß BcňŚĆ“ED˘x qK ¦ŤîDĺ‹ßĆißšś’LcĹp´HnMŚT‰+Ďšx‰‘,üĽ%śI|”$~· ¶†‡‡óYđ)‹É/"/WB˙Ł(Š€" Ä†©xŕ©S§ŇQ¤?2Ĺ@fčd®ă¸'N1bÇX3ňgbÄUäx‹)J ˇŹc”ŽŽŹźAGh »^08GM`5ÔA6ˇ‹4Ú†gMpBĂ8ą‚Ó´h&ńĽ"F2cúe»|ĎĘ{:í§ÔV|QI|±QÁ˙™°FŞŁÎń‚"Ý üyĄ‡:ü/4MÔr¨­űW™üŰt)‡]pN…˝Ř”€<÷ýźo±•^ďvďâĚ–ńň>}اÎ5aCÎÄ0ÎLÖě<ăT#Ą! j]JűÄK{ŃJ ’Ěž>Ę »/ˇ#ÁhË–-Č+D’ ‰Žˇiű»až\ÓđłyˇIŽ1d:^ŤlGM¨$Uâ)†¬ˇć\ɲ ń« 1”IcyDh«ăA»?;@á~ŹřůáÖ0lr)“Ä”4?ů°ěd¶j·ĚÄ€ťË'"âťLa`H»¤´čRŁxŚT@níĘ,ă’ÜÚ6źµq> ˛€Q®Ü’¸ĺ‡„LîăăăĚąŇXü€Ď§‰lgfůQ1)ܦ>j(Š€" (A"@ODzăŤ7ŇK2cÝ1úH—Gb ŚYitd ű±ńBéŇĄéˇLÇ'/ňëŚaAÖŠ0éy©t|LµŁ§C‡ŐKç(łđsĽ"@M¤ÚH =/…_"ýJŽU!¬\_ř“řwÍőúÖ$đŰM%şžů˛˝§ůËíjŢ+őŮq`ť©Xń•ŚŤQ<˙•ŰÇvžŤŚ¨Yş‚ÔéłQ»I:|rĎ´?đ7č×Gę—żůń›?”ca˙Îwţ×̆#ŁhŢňö˙ÍJ…UsF˙óľz©›lÇ.K­C:|÷çűě\c3ßMěl™rÝŰň ţP ™OÇńŻ+·ÎÜl»‰Äŕ\WN¶ĺ0٢ůĘ?/âC±«JÖĘmł9[–ăqM§č2ÓĐÜŞ‘bř‡âbQІ_{ ¸,†­]»6łşDBúqTľ0zë•CPá%Jł„&‘qĽuôdW&a!úÇĄÔPfśáGôˇň0]‚§ŞÇJÚŹ;*lgoÓOP+Č7zŁĺ¦L ŕłŕ Ď$$KpEŹ+żI ţx$ńń™éx棤±1¨+¶Ô“: Ĺ–Ţ‹+ !¶\ ¦Â$ľ\©?‰9hŽ2“ď•üü0/5ŘŻ6N5E@P«C€ľ‰"ş23ťť4č7Mh ¤ë!—DoËL7ŕ3ta~łŰ̱5}]!‰.’wŃ{2˝Žę ™ÁI÷mČŚt¸ÁĽŽÎ—Ld01Ž óĆ(× $ýuĄňüĎ*ŽĐU+ŃĽLˇRHÚĐ xZ G±Ă볂Ք|ćďe°xҦůÇ^ű–ĘđS#O¶°ţ˙ţaNÖ˝šB0ČťµzôĆÝKľ||E¦ôYí,Ű>5ŐWgÔţmFý7$u *G¶Ś—÷8’§Nť=f?îgGM0ügâ@ذ\˝o®Ó7bĺđéďLXü• Yż{Q”Z—§śńpÜÄľŁŰءĎxFL˙/§čv¨ő@Ž,ůŚłPîRĆV#%#Ă÷8%CŁmOhZzôčÁŤ ¬[·1ČŻ#dż–o°6–…$LÇc’]ŕşů•#OŮ]ÁG€dsełPOt+Ą féhńâĹ‘íŕÜ1r\żĘ®†çSžNiT€¬ŔXyćR7Ú…4IbŰ>;F^d^çykâí\óąnŰx܆‰7Y<& C“" (Š€"p ¸ë®»ŕ ha+V¬`N:˝•Ýa™ ŔsćÍ›G {ň2ÉŽÝ{M–źáYŽ L$$ ťN;©4†Y~\‘ę¸B®X ĎaŇ_˛$3(5xD úßw˘žX'ŤŤ÷zÖ+ß±sýG#Y(W©ýG·IĚţŁŰK[Ü86Á<ËĆpŇEíqTˇhÝO^¸dÓ”9kăЉí®ědG.SŐĆ.řüÎFO™F~KóÚňĎc%vĽr^­ă)ąuČys–0aěU×®f/skśý:č×G©•8ďnúB÷ć/›€"yËţ§óç«·ĎŮyh˝8eĘ^–Ś9rdÎ'§Uŕ˙ě÷ç^íöLXô5Röo >Ź\‹ä˝"đŮ~µSŞÖĄ´O<µ– A|ňÉ'7nÜ8räČźţ™!_fiyrSś¬ŕ1cÇ#pzC۶mŮ{ĹŚKCXMË=Ë—\w9đWQĺ8ťĹv‹rGZµjĂé0`&ý±ĘŇž f^Řđ«~’»&8Ýz:ÝaęQE@PB€±=v­Zµę°aĂ 3PÇ’Xű˝)W®\‰r×®];ô˛«#3”éÇÜ2ĂĚ>¦ÔˇÍAfX·ËĐ#ň"cĄĽ2&d†ąxRUw vlŰŻ±ňűŰ/R[P?ČU‹7M’zNXüuĂ;™:skě"yĘb<îi#áői˙Ţ#9ąoîÚ±ój–”zíjö’ ËUŇ”yääŢIK†ÝTínń źŢßdcÎse.‡f4¨p‹yjᆉfG9N‰eW»óÎJ.ŤęÖôűŚWlÎŔ5ϲ›žŘ(€ż/"öź+l¸Ľ'op›?G8Ż3Gsüý`ŞÎőbF˙ŽÔ˙&sT­Kćp"oôŽË˛ĘĘ•+s>,¬Á"ëYmČŁÁ\!‘[¶lá)H'RZB/Ęŕu˛–„™tĽť çí]ę)Gadž ŐŕÖłćęTE@P䊽? =%„̰Ĺ'K@<Ű ‹` v}…Z@f¸eđ˝ŚŰŕ52Ď’Ť“2Ťm †)ÁŽŞÂX¨‹veG ¨—!3đ%345E V4¬ĐiôśÁňČśµż~5éŐ®Ťźe©ěäeß˙0s€)JTĽő».ß:]śV÷·y;g–üíjőZ»sÁ¸…—'ŻĄ ‰:ĽÂ‘µ'N˘`;Ľ-űVČí€ŃlÜł4_Ž˘LÓ›»ö7ÇSoKDí˛Çbá¨˙y˘¦•źY§}íűYűŰüĎ>˙źżźM5ęĹ=f90νG¶<ňqž-_/š·ÜĄż.í9ĽyřźýM}¨]¦Ť<Ű»í» ÖO`c>ąí;˘§Đ6«tgć 9:ÖyîÄ/×ćUş– «j{Ä>vęşýx.˙}Ó˙yf©3I# j]’ţř’Cĺeąe©RĄjŐŞ5xđ`VlÝşÁÎo’ĚüĂ?*TEš-[¶D°cOOŽëéĽ Ô฼‚íóaÇZv’fhšš04Í<;fůáGvd’oô|©§3šxrnOg0ĄiŚ" (Š€" Ä;ěuKâ|Xö°ű-:mذ2C źqżĄŚ]q™™BÜ|óͰĂ~WÍ"ěWSŢÎK9 BE%© óěP …ęČŠż7úůíąmOŢâét?«E@H*T-Ń”IdóÖŤ“ ;ĺőo§Ľ!iBŢěEdâXĹb ŤZ7bĆ;3WŹ.łřă;wĽrTEÍŇ-ĺÁôi3™PĺĐźşőSŽg} M˙gżş¬±%ÜČYď™°XěwK݇~™ű<őѸ'?›đ6çşšrĐ"ŃłgĘËzXN–˙Úťóžţňr%M¤”aö§c1,~á›’EĎ0~áü9‘Űťן:s,s†ěŽ\¦ŕMYö˝Ă)·ĺ ×VµÎ™¤îŚÝqNI˝µZ˙D‹ąÜO>ůî•W^aW¸Ŕd‘†°ßĘüůóß}÷݉'B7ŃÎÜ­ú%wpŹ)&ŤĽXˇB…*Uްl˛ ĺ…ď®^˝zÉ’%čŚěJĂ€ą»(S‚ĂpGŹDš[ ó¬í ŕw„é­" (Š€" $(ĐgžyfĚ1Bfŕ 2©ÍďĄVĹöďß˙÷ßgcÖxFŕ0<=ťöT‰veË–e2`ůňĺŃé†DadŹ`füAfXFc9v™žÁ8%Ć‘ëéô v<«·Š€"x¸ýű­Ş©ŽC`źîüEÚШ(ş5yž\M[v޸păl]‡’%ÎĘĹ›4(yE*ČšČK—.:±kď‘­xj•iÍô˝čiq&?ĘČ™ĄŔ?î¸Ař+bNgKuLâCnŁţ˙ůr×á˙lŁGéĹňW|áΡvFÝríďmŮĎs¶ †Í±ŹÖÄś?ëČŐŰ…€Şu)ęăNÔŤE°cS$0vkţř㏟~úéfÍš±ť ˙Oô¬7Ě] B9{ölvŠAćc!-Ú™g°ŰiSLŰvG:<Ś*ł\ť®X±bĺĘ•ŁÂpqJ` 4—ýěÖŻ_ĎŃo~sĄ™WżŰ#YřMŚ1$ŘÜŞˇ(Š€" (×Č “ět/dćż˙ý/‹ 7ř=gĄÁ .tlc7jÔ¨ożý–ń?v۲ †38Ś`‡Ě°ýnXX‚§^`3$ÉŠDCČĚš5ksGÝ<釻|!1őqD:Â$×/Řń¬Ţ*ŠŔ5F 5Ł-ČWsęçŹ.i^ĺ.·‚VľHÝ/]VŁÔMRTú´ôšÜľÖý©]ç·¦ ÍxGĂ˙ô˝gtHČĺ…€ĚÚë\˙1¶xsW%´oţëWć»e͛ܒ«ŢÝěĄ~ÝÇČĐż—ÓÚôL®1¨ĎgŹ.îŢü•Đžf›*UęŰ<ůńĂ ˛eŠ*ź”5cÎ!ŹŻčÓî=ÎŽŹ}Í–)ĎCíß˙ôáEÓe±ýŘw7{aČă+«—ĽŚ€ťËKŰÖěĹÄCq=u ňBÔLűČ];^í‚€®„M!t’i&k4 Žěá""„ ޞcť»0Ľ#GŽ ŮĂ ga,ÉŹ8.5„׊hČž/ÔAÖĽ0ËRN»Ă`µŃ“¦Çc•´(E@PE@H Đű ™aa)›f0OŤ‘<„0¨ĽĹł†ŚůÁda¦díŚE ĎŕřrÂU¨* UŽDő¨4†+űîQ ˛¨lÇ^­|&ľđ×rDŽŔ˙ÝýÓUÔ•ęĄ.ß=Ůé“műWoÝ·*ňÂŮđ|Šĺ»1{ć<ŽŇre-Ŕ„µž-ß`í'»ŃŹ8„ţ•7{áđĽX:j#Z=Üáý{[ő;x|WäůłĚÎËeÍžcÚÄźŤŚ@tĂXąm–yŃéăÖŐ˙…Ťf÷ĺ/™Ň8ÂÂŘÁŇe˛ćˇiҢ˛ńL±v łó*†7ŕĎvbŁTzpćés'Âr•pdémĘD@Őş”ůą'ŤVCK—.Ífv»`Á‚7Ţx)דÉá„b˛g3ŚłRĄJŤ7F,cLŘ3X ppÖŔ¸ř•Ă<>4;¸,{Eł‡T›é~;wîDżÝ˛†ˇuŞ@łsWĂď]ÔĐ3KJpĽ4.\ČX=02Js™ÉJźéÓ§óËí•Ĺ×FąŤč zÎo ü^h“E@7čšYgúöŰoÓÝĚ12U`ţ˝ąg‡Î‹€żŽHćV E@PEŕ*€!Đ›0z׺ukx„ 8YbňäÉĚ_ŁKrH—ÄŘ$›lp€ŐîÝ»ĂĂĂé»9ÂŹB`n:á~ťx¤ŞĘ@#•„?Ŕ„Ě ÜqŽdűŤ0&ęWS8ĄI2ű-§#‹=Ô©(Š€-^{ţëöç/\>źgĎáMüŮ1ťę=R­dsŰŁ¶"„Pµ. }X)·ŞŃšI8"2‘9Plf‡M×h@IDATĆF0ž4ąŠ\¸&6´2W®\ "„ş!„1ěL­¨›lţÂř9SíČÂEŹ«=ÇŠĚ㞏sÄ`ŐŇLDC6«Ć¦JL¬#‹jŔţ±‡Žc• °$ŕÁ— V|"|XÄ·ů6oŢĚ”ň?Šřžď@É”ś7:™[5E@P«F€5ŘĂftF0z"Č ÄĆŹĚĐyy “"1ćÇ W®şÁ<(d†yvt‹tť *L5`Vt¦$<Ď͠¤`^abboTCP¨^˛ů;='|ůÇ‹«¶Ďv¡ŹvÔĽJRšXçh‚Ţ*ŞÖéw É €®tóÍ77oŢ…ĺťwŢa’S˘ ‘PXĎ6 Ë0Ěj¶˝“Ńl&¸QRÉóă @?‹ÁĺEg¬ya šő,°mj‚ nPvó®Ŕ†Ł&rëpšjŐŞEPč$€×‘Ĺo7<›ź̶čC˛¨ç 8f˘G±†—x$X”Dąšb“ACHňsÂ\i>_>~ńĺaž6š4ŤxÚ‹H‡¨J"XÚ‹“=II¨ůZUE@PDŽ<䦛nb}ë­·Ţ ™™6mKMa ~d†î[Č ›Ů5jÔî›EA’  Źó$F2C'=U‘Α®RA_ ő2ĂđdÉŚgĹÔ©(Š@¬¨RĽńŕŢłvÚ´ăĐú#'öfÉ3kĆ\ě%µž&E ‰#¬dÄ›©ŐO> 4± Ű|€ň†ÍĆ`\:J¤ń˘¤(2Ěqűé§ź‘fa,˛úTđüŇ śç[ܬ— k¬ŢĺĄ(w¬µ„‹‹fÄ•*yâx—g /Â/Wo"ëŐ«'ËU'—+«lx5Ň!¬šő°Ś‡ăA¨‚ył X€‚yvL˛f۱+ ‚Î-őGX4oIüŔňkhËŻ š/-i8ą`%ř!·@Äן2µÁ Iců;tč j]â˙ܵ†Š€" $9čbŠ-úî»ďÂaVěŰ·/ÂśCŔO_6~üxzjVĹBfâŘGŰýťŤžĎ ˛ôţ1 cĄÇ¤ß„E@f(ÁŻ»@ĎóG®ăÖ.GmE@P –»$4KHЍZ—?µ”^gĆ{ўʕ+‡úvăŤ7˛óËČ‘#!» öÂóÜTK9děšIUL(c#<žŤÇ î—ň!AFŃÂŘ«Ž×!ۡ Ázѿ̄QmđRyJü&×R SçXŕÉ<2S>Ľ·zőęěúGĂi2@1éÎÍ:Y7ňüd¨Ő“=¤©*łđ¸Ň’Ŕ¶Á#~~BD…¦I#mäc"ń…^Nř©!ż= űü8ˇ†Ćć“Â&ÉŹů=€5Muć§ŹpK YbcHQâÇĆ Éę€ÔËŻ„H_&9R7rAlęÔ©ĚYXż~˝Á ‡ ĆÚŘÇÜö«­(Š€" Äz%!3l‡r™áČŁůóçÓ#Kçîč⹥_ę ëŃŹĂ`2KÇ÷Ę/?˝6ŁzĚécp Ú@?Nď/]ąyĐmP”giD:üŽ[wQęQE@PR ŞÖĄŔ=™4¦HbÖş ë2ZŕŻHNpYOÚ‡ź„Đ|Č4¨6 ÇH7ă‚—vđZ Axâa‹«_™Ô\’€Çľ `oٲE&ńI řĐXVÍ ÓˇOqN.o‡pnEóŃéŔI L„-®LIăŤče C˘ňČmQZ]@µŽ\^'1~j ·Ő:Ţ&ň^ Qč¨O”V˝Íź‘ !Ň[ÔçwţÓx@ŔjăĆŤüá–B¨ĂŞU«XGpÍRE@Pâ‚= 2C/FżC·K×™ˇGهr—L zCn<Ĺ#\…ĚÓpÇÇ‹‡î›ŠÉo¤LzŘŔd†Gý·ńR1-DPE@HƨZ—Ś?ÜŃ4č)۸Ԯ]›]]>ű쳡C‡˛TÉ&)ä 6t=¤¶Ŕcé¨đ΄Kj‚0dżgškGúŮž d‚›Ó™GuŻS§Î«Żľ*¬ZŢX±bE°…ń#_˛ͦM›D†Íp=?HŔHĚ”yÍŚ«Ă‡§řEĽČŹ 0ç7 gđ±h+“1‘Ţ€Bšo®řI(€üřéÓ§ň’f2í®PˇB׬Éú"E@P‹„„(zôč1pŕ@Č Ý1±g_/1HÉÓâĹ‹›5k BďKPč¤&QwÖ]q'3Ô9@´EZ¸" (Š€"ČPµ.‘@Z˝ €;˛@㥗^şýöŰżúę+N–@fňŁ€d±Ňděر(w¶Ŕ˘H„-Tž ^OA~u‹±xĎ=ť0řŢ˝{Ó.É•«¨`Ř(•,keĆ ̡ßáçJâ–Ń{t+Ý0Đň˘EĽHü`(SŢ$žůh$'ń,Wi6†ą%ŘľĹů C„6©WtXž’… ®8Ł)D­®Ĺ@Ź#Ń ®(q츇ˢcr –yDnąâ‘šp5¶ĽšÉwLB2dH×®]Y„“DIl˝*Š€" ( ŠŰĂ=űěłť:uš4iŇüADoËK=;#şT:h 3Ś-ˇ÷………QH‚VŇQ¸gĹ1ž·žz:=W§" ( ŔĹ‹ľťú†”ś!mć.ŤźN·h™Š@\Ó=Č:i"[P^ĐbXFz»í¶ŰXř Á…żÂb™3ůsó?8.Ş'„"<±–u‘%K–d±$ŞMlßżńRUw…ÝžßË#(hlTÇňOÚErn$„-3TÎ-ĹFâ˛ĐU¬¸Ą4Ô7ăj’'±íЉ<‡GJ6·ĆUč—ĘUäąhße?‘"˝qO.żCLâC§ć\I,ee]3â#ĘRšy †$jA®ÔrÆ ´‘§Š+&ř;\˙«(Š€" \#č›čďBc»:#¤7 Č łćýČ }ôŢ˝{éË裹ä)Ž·˘7ĽF•öyŤt˛rµCÜ;WmE@H˘lŮ·r˙ŃíRůňEęfË”Tw’ąpéü·S^—†äČśOŐş$ú…L6ŐVµ.Ů|”Ú( ˝¦eË–¬ĺd÷eNQ@¨‚Â?~!É "I¬˘eÉ Ěő’ĚĚBŐJ*’M`ÖKĂi°}5ěźyg¶’%ĎŠnĹ•DĆÉ-8Řt_1†Ă„%׾ÚažĎz:Ą4ó¬Ł@‡_‚ír<‘±ťČsü°A‹ź?˙ü“íęh,É,óv5E@PkŚťQŤ5Řm2Ăf˛lßAWĹ$Ý–gMęH =’8w‚ÎŽŤ čÄŃţ<ă›Óîť[Ý´>Š€" żĚůđ·źJä€^SŞ•lĚSŁ(Pµ.0>š›$`Š\ ĆŤ7oŢ<ĄŚnĹ,*č '#$ *Lb5eăĆŤëÖ­ËD­D"ŘyVOĹĎo`:1qâÄĄK—2ő LŘť­~ýú Ôł§›„!oQW0R—8 0†±%ĆĽZÄi-ĹJ¤)Çq/ĐńŠŘ6ÇréŐ«WŻYł†­Đě¨ ůÚ¨ZšE@P®;LGłűé§ź„̰9/#‹vô­Ň˝:jHWÎNv$O‹-X‹ęÇ´qGŘuąő¬05ńó_—JęKE@Hť*$4MúóÎ*Š@b@ QtቭC˛D jŐŞś…ĘÚXölfm,ş «8PC6łă"o±Ós‘"EX{ań«§ŰďöHµ™*Č™•Ŕ;M[¸p![Ű D2ĂŽ,V}˘Ü!Q±‚Xt4®żóěůJCą \fŐ2,đ»47e" ßň” Ą¶:"Ŕ29‹ sçÎÖU«VM™2eĎž=24í®0ăҲ–„‰W„±ü„ă·®ĺĐ´Uőó»[a<śşŔ™°HQLD«âÔWÖŃĐ@)Ö˙2DʇyvL»ĂA3±IôôztylÂÚşwíŘÝG6W oPłTË[ë?š6MşŃs>śż~üň-Ó˙şáݞ…kőĽéu‚ĺ)DÉ7č.v–Ś9^ęňöŮČľ#ş‰łV™Ö•ÂFc2ýDÄál™ň”Č_©[ÓÜ‹Wn›5zÎkw.Řwtkžl…«–hú@›ţÇ$>M>SšĚVܬ3â€ÔI™UGÝĚ{ŐPE@PôMô\Ť5’ýěčé 3tvôt~d†îž196Ľ#Ś.ţüŇŃ_łnÎî»chzóŔaš«(×”¸ľéyáŚyďů‹çvÚ€jöŰüĎ>ě3§@Îb›ö.˙uŢÇ&cîÚ߸†ç­€Z‡¸¶`Ăď’űѸ§&/fGî<¸áőá]6íYjśűŹnăoúĘ‘kwĚňÖOCR_žÝ6oÝř7¸‘ÎDž:s”żÍ{—ýĚôC˛Ŕ„N”b!úÜR”!÷îDĺ‹ßĆißšś’x [ ±˙ÎĽ¬ŁIN©W;^‘,üĽ%1JPLźžy$fGr~Hxx8G#"ۉţH¤y‘Š€" (Š@B V­ZۡCČĚ1cčĘľrôˇvsŘß.žł• 3Ěłc/<;7álż*ąýĆcŚ„«•–¬(1"°xÓd3¬tXő';}ĘL:–¬ľýcŹ‹—ÎóřšťóNDiXˇSáÜĄů3¤Ěž-ű˛8´xţŠ~ŻHš)W–‚ż/˛a÷b‰I’¶a…[K…Ue6ßâM—WÎN[ńă}­ßŠšľ·gůÎCë%2{¦Ľj?ŔjŮUŰgźŢ_śĚŕ;wţLşĐ Ž7ćĎQ îČÉ}eg•«Ń Â-¬T]¸a‚řťŘµjűśĘĹŮa~vHęĐNőĎ[~öÚ_e"!‘g"On?°¶|‘ÚŘC§ö5R›ß±x¶Hžr 7ţÁj_ż2ŐŻx" jť',ęLÎ0׌UŚNwęÔ‰™VlQyÝşu+ú”gł™·EŠ6#íqFÓ˛˛gĎŽčăw'<5x!)V¤íŚćSCž"Ń4JÓÍXMŤ`'łŐh2·,ĄÁ`›Hx"ŢÉ6Yy*2™”]jÔ˘TAnm@L–qÚúťmxqˇŤ,ݸrKÂ`G™ÜÇ'Ë­Ěࣱř™C'ë^Í,?*fjhj˘†" (Š€"T`DŠNŤkÇŽŮ‚˝>mÇŔťµéăě¶ĐeÓ•ÓąCfX!ËĆđčCí°x´Ý @ážuŻYŠ€"ĐlۿƼ"ňüŮ4!ˇ1ѢĘ]v-• †qöDÁ\Ĺů›·nśQë*©ëŢÄMŠęÚäąNuĘ“­·Ź|ry«8ě{š˝Ô˝ůË]?óřgMYťŠÍď•?–|ŰŁĹ«łVŹŽľŤşü«Ĺ«·ÔŤÚ™®BŃzlx'˘“ăß–»¤ cŕÓóf/ŚÍŠÔÉˢv #ĺÎZč˝ű¦0 ŽĂ.îy·4›č‰ßoîžäÚ×G:ĽąNo|8Ęŕ˛~#Ă Â$»iÓ¦±ś¤víÚCÁ¸4#Őń‹Tđ6řČř­ˇ–¦(Š€" (‰ČLéŇĄ9QŞeË–ăÇŹ‡Ěp,‹4;6«ĺÜXČŚľď ccEQbśH`×j(ÉT­ţ˙ţaÎě.gZĘÜ1V§nÜ˝äËÇWČ<5“ŔČ–ńаĹrŃ‘&‹Z±ßőô—­8VŐř1BCŇq@­í‰ŁmËjŠĘ}ŽD€€s‘&×±•ž=mĐĨˇ@ žő…oŇ,E 1#ŔÖfđT¦ÚÉě9d86c&ůq\V€’ภGł…ýď0XN÷6úQU?Üߨ%(Š€" (Š@2@€ý[I9BŠvl¶Ëˇ±~d-ŹD0'2ˇÓAfdO‰ µ@ ŇâÉ[<ťĘŃ,E@¸ŽT(Z÷“‡.Ů4eÎÚß8tbű+;ŮQ«ýǶŹ]đůťŤž ˛†¶V•;k-·˝qĎ•ťéěŇňd‹ÚunŕGŚT—/{Ń65zÖ,ݲDĘO|ÖlíÎyv|\ěT7ÄĎüâü9ŻHČńv•vô>OÖŽQ[°PµÎFC픎lőÖ[omŐŞËCćĎźĎ<;&ٱɋą„ăΙ3géŇĄLÍ«\ąr•*U »ěGšĹp˙>!ĆŹ$řČ‹ŇE@PE@Hę0ßż]»vM›6eŔ¸qăFŹ}ěŘ1ČŚŮUÖŃ@üpžĺË—sZE“&Mŕ3” dĆ’Ţ*) ŹÇ=}ŕŘiuźöďq´‡«Î];–OŃéÄďyČ©{ 97tü&,w©műWIVáçoĎ_iËľâ0úŤ{–ćËQ”ɉs×ţfÂÔP‚A@Őş`P҇Ą1KŽáĺwŢyµŽ…±đW¶wńŁąŚKGDDŔÄćpRv˛ă VŁÄűfv|~˝‘ź?Ĺ}xÚ`E@PE@`_§ĐPxÓ˙ßx㍍7rĹ_|™´ÜA$ĐěX< ™ĂŔ‚ŞU«ĆV!"wp=~¤ż¤8–ŻŹ+Š@¨X¬ˇQëFĚxgćęŃs?p|'>’Y‘*vzëŕô©Ż&˝úÔ­źÖ)ŰÖDşŤ{[öťµfĚŮČSd1GŻÇ{ĺÓ§Í,·ś:ušöµîĂ.’·ě¦=KĹůÜWíĘ®ąrŰ,[Â#+řÓ'¤Żk*/g¬}¨~´é˙ěWmäÉsç#FÎz/ÖĄčŠ@4©E@đD€ÚL˛Cw«[·.CÓŤ7.S¦ [şŕX Fł“Ř)†Ťí< ěü›©*a Ś“ć*Š€" (Š@ řÝȲVvć­U«3ć„̰ 2öw›6mBĽc…A wřçŮ|Ć?Ę™Łjť‘¸Ýó Ĺ­ }:%"Đ­ÉóijZľűđĆ…˙`ë:ŽgĺâM”żEl5‘—.]8tb×Ţ#[ŤÇÓ`Aë#râ«ÉuHuä–Ž>Dµuő&†sigŻăęČ]˝c®‰ąîF­2­»6~ÖnšT)g–×˝nZ¤…€ŞuIëóŇÚ^énąĺ–aÆ=őÔS-Z´`óć´i=f}›šť>}šákÎb›4iĂÔŚ`C=MŔŐ†ň:÷ó;ÂôVPE@PR,¬le';!3]»v-X° gdqXL°jŐŞ~řaěرěj'dĆď´ŠŕQő#-¶?Z\şň>řÂ5҆ź9/Ř3KťŠ@ҧÍ8 ×äöµîgŽ›#,]hĆ;ţ§ď=ŁCB.gU-Ń´sýÇ҇frDÚsîYܶ­ŮóĂ>sËŞéČ*«äŕgÝR·Źřo­÷Č Ɜ‘5c®űZżý`ŰwÍ?΀MĹÜ™‰qvőä˙‡©R±ůĺ/&74$mHęP÷ăxě&g°&˛přÍýZŁTˬsV˛`Ő»›˝ÔŻűSe[ EŔTôŽ~yęW¦ÎˇÄ±«Ë[o˝Ĺśˇ`3;„ˇëqĽZëÖ­K—.ÍL=»4‡ýŃG1vÍz“îÝ»s…ZI€ßżPO˙‹/ľxčĐ!Sň+ŻĽňꫯR” ľ ĂÓĎ:žőôx|WäůłiCÓçĘR Sú¬î·l™·m˙jŻ`Ľâ*ĺË^ÄĆév/9~ú`ٵŠçŻ—ą OPĎŮȤO^ÁŢG?i(ďŞZ˘Ů{÷éOŚ>9îTĘ“C›´ Š@ ›Ů±mókŻ˝Ö±cÇ?˙üsúôé›7oöÜü…*ŕg,z÷îÝcĆŚŕ˛đ¤jŐŞ× {Ăş­ńóFg -3őˇz z衇půRÇ»RÎ- ěđáĂ_}őj¬i5ü†dnŐPE@P’:ëžţůöíŰŻ^˝zĬxĄôlóéřŘÜÉŚHŽŇb‡ś9sB-<ăN?Ňâççq4>’©u{îąçž}öY¦^Üŕxu Ľ4¶důä“OĐLi>ÜŹŹ‰]\`ˇ) mr|!#s^ţn(vYf P,“ËŠä) Ŕ3‹/jÁ\ĹůóĚ5NTBţĚm˘58ăÎ·Šś˛€ŔhddXL€`ÇÄ"Ź ţŔ+âťĚĐ/Cfx—ýv<łfÍŞS§ÇeŔ Đž¸"ç™UvpĘ´A ’yäȰڲe łę˙%PTž~r ÍÁkůĺď|óÍ7ü1?TŔďС{rW©R%ą˘íRE@Hɰó:N›6mŠ+ĆČ"<€Ě‹$´|ůr Xd^jf<ĘĂĚ0śéÔ EqŔŽrÁ°´ VĂ0§ÄP=5Ó—.]ŠÎ¶HV4ťą$š 8ŠMŰků.ĎúÓdřŔXŕźFQč~ţůgP‚̰V€\ę ţ›Mš4ĎŔW=KSgđđ•ăŰćüKŮq~ćŃ4«‚öGć¸pc‘ĐFĚ-ŕ7…¬ĽąîßŰkŚŔő}]ľěE§­ř‘ď‹Tăä™#{Žl>yÚÔŞS˝GŘ•O?~čľu~Ȩ_ şm8%kNÇŹŹâC˙M_‹ň{ K߉؇ T»vml‰4űÖÝsĎ=Áě[gĘgFä­ 9µÍ(M&W „'ř´L¬k×®ťtËéTCDCÂLť†ą•˘äÖ8=oÍŰí\óý.c›\·áŽ ŕ1Yư „ĽĘn#ëÖ­Cĺ÷†p/>GóĂ€g‹aü7ß|©ŽŹŹ&E@PE ą"@'Ȱ"ĂWC† ůţűďQÜb$3¨ŚÖ«WŻzőęĐ AĆě[™±÷­#×tÇžBf gĚ™A ń †± ?q%-Z´T©R5˘S‘"E8Ěě,Ďš·ňvż\‡ß6ĺđŰئ-O€rxÄ‘knÝYĆcÇđIÁ<·nÝĘQfk֬ٳgĎÚµkůI|j˘ÓQIźŘAüŕśşł‡ů°®Îŕ#޸oÝŐ!–ÂźZ¶eú—Ľ¸jűl:ńhÇAÍ«čÄ:0z덀Şu޸¨Wúof®1đ g‚ăreŽśÉ¦Vviđ'Ä 8.㜬C)Y˛$,säČ‘t˙pMĆ?aTÄŘŹ¸măŰ5$§ŁGŹBÝčv‡ą=ڞň5CÓđ]ĆQ'U¬XQd)X/ş„•&<îh…ܧç­y©ťkq”iÇŘYîř`<”O®Ś6łşŁô ;ó3€[äT côžź"] ěňŕýúő«V­ ¸§Řńj+Š€" (É:YşH:Jh łňŮĺąl1’č´fŃě 3üń˝-,‚í}é@a;vßíF‰ÎšľxŢĽyX]sd†ÁNČĽ…$6ogÉ'5as=^ą˘7§ŚMş«aj%†ă–ÇŤÇŘ&ž`lÓ"‡Çw±Q]ô@q۶mŰW©Y}őžĐ…kR_ş<+íü_—¦DxtËÖ Î žĂIÝHpeX Wly‹ŘćAˇÔćÖm¸këŽqxä‡â)|]˛`N‚·H{6vĺľ•V@Öť­oŘF°aÆL¬-’\÷#ęQE@PR¦Ţ/Y˛„íäŘ]—Iýtµ$żćĂčR÷ŞPˇý)´Á Ab«µiÓ¦ ™‘ydî0zaJkܸqŐŞUBc‰.ę!W·53ţl"dW̶ĄdJ2] ›$~ ăA¸ É“†™wm{¨'Ô…d‡ŃpS‡í4OQ[‡-µ…C"2˛Ó.[¬ ˛ř—‰uňqx5âß Uëâˇ>®(±EŔŁŤmŻ(6p)h+2Ňd9겧@s -łă±Yć@b(˝‰‘Uv‘c5L‹r( ~ »–0ţ̡Ą şR”Łn‰„\2ÁŤamÎwk›µ@‘aÓRE^^v!ńˇ©R·Î”·i¦<˙wzŰoÇvA)śä.Íx¤nć6I@DâÇ(.\ĎvË„A nY-Í…ÝŕčIşůZyE@PE xË`rÚSŇ 3L‡yp—#„+|†^•Ijt˛”CÇ Ů@“b'YhĚŽ;ę<Ç2é¦ –WCf8ń‰®™éo‹MĎ|ř+pŃě(Š+ÄIfâ źáJ!R=›áP1SgÇl>;ĚÄ\KĂTX^jß:lnˇ1¨ŤĚˇ(Â^Xz,d¨ń„‡‡s%Ć~đZ¶%Ůż `IiţĘ[Jő¤ž‰ą’Z7E@Uëb„H«D@N¨Ył¦<Ď€0äBéW‹ H¬Ś`ź)#x(}P^Ř-ŰśaĘŞOOťN $R«ňxź-ţznŕ Ż,¸°_šî†Tod O•=ó’ §ŕÜĽZ!bŰŁ»ö#IΆŁPg?ŚÚ őÇ% €…îs6.ă˙ěO'Şh’kŁVXPE@Hhd?8:M:Pf÷ł?/‚śÁOá"‹McIĚđBK˘–Ăa‰‡ä0Soóćͬđ«6oaRŹ0ĄîÁä°ŐŚ\(ŇAT TčtĽbéŇĄČ,2EřCłCŹŇH>±1Ą~ö«ÉuôĂa 0’˘„ˇ4i 0 I a2¬u…Ă‹¨™d ůąŽ5OĆŻv`y šďéČcçĎG^¸pĺkv˝ďLš4!|G2ĄÍr‹]Gĺí,µE 1# +aó§ŁuK>0Ś §|뭷آi¸c€BXYžÉ`2 áACý‚éarD>÷Üs¬€([˛Ôî6÷źßéK…ĄśĐÂÂ~˙ěôąłlICů$ö-†CłD…BpIIÚp@čŕ¬$śdF¦+˛Đ•+ż VCPE@P‚D€ ěX+đĚ3ϬX±ÂoGGQôČĚÎc ĄiĘ”)<€ZŚ8HG—ݨQŁ űk8Ľ…Q8 ł˙H2qÁN„ĂtEF‚EýĎXŐDăŽ_$†·ˇĺĚńäß„[™Úiľ]qŃU”Ŕ7‡Ż„|mřÎ@€ůž`đÂä?Ą«xoJ~„IßN}CČ6s—ĆO§d4´í „€Şu ¬«üh"}}úřńă'Mšř|RAŚ.›Î—ŮđädAfčÄ[·n ™A–âVzóŕ1‡hÁL„śMO˘ř u†Qm9VÉ}ĚČCgĎ0J’Â0(ŠÄ6˝á–d×ÇľĄ ’%†·p {„p%¨*´‘‰„”$䮆ɤ4ó,L†¸R‚] µŻ|7řóť ó-B F­ă¶LVôäßkV1ľ'$ľ|mř·HÇ÷ŠoasË—Ť¬kV™ä÷˘Č çoś$íĘ’1çŤEë‰}îü™Ö/g;Gć|?ż´/ůµ][tÝĐ•°×ý#Đ ¤ Vp2D%v`ˇű,W®ű+ł¸Ud/›đŮpĐýŰ·¶ {Ł@]«V­XÎI•€‡ŢúĐô…vdűôôEY;4CĚ"y†A>ňćÍ‹†Čj ؉!µÂeDÖQ_»aî[Za;Ł8HtÂih+ĚC˙‚'Ľ‚Ë.8ýÚb¨¶" (Š€" Äş`äćňתU‹.śPĎŇ” t.żN?™ˇo§ă†c@fŕHËÜ1JćE±­[” -„ąĆ´>Žóbi-LFř ŁÚ$Řź„aĐč ĺH‹¸Ă.\śâˇ!&K‹xĦ9T„ÍĽ˘·2Ę{Ć`ČL(˛äH¦@5 |ňń ŰDă›Cݸµî:Ö“şI­ř"Q1ľEÜĘWެëX±dđęSgŽľđMiHĹđ†ś‘ ĄMH*hOT>)­gr@€>MŤÄYihLđEö^ă˛LCxaŤ¤fĐ Ť}dzőęĹOžyöü®`ÇvbŚ”ń.;SľŠ€" (Š€"’€xX¬ĘP˘‹OY1™Ađ 8uc}düăÁG˘YĐ/ KĘg‚ÇM#Z‡ĘWE a—nEíµŐ[Ç×ŕ–şIĹąÁŽJâᧇŞu „ęT!ˇiŇźżŕ»#y˝W‹MQ¨Z—˘>nmlbA€qT¶eaą cYKňý÷ߣŮÁqĄ§—nĂôý¦ŻĄëeüůá‡fW— ¸›”*$Řéŕ#ÝoQŹ" (Š€" ¤d 3={öěÖ­> 2ä»ďľc÷ ” € LfXжmŰNť:µlŮ2%èmO*đ•ć{ g†)¤ť[l™a'kM®cC¤n(t¨Ňv$*ďjËÍCB‚RNF=ń\Î,±Đßĺ˙  ŚÁź‰<ť!m¦Ëäץż.…¤ŽĹ2óĐ4iG>żóěů¨ŤĹQîü^qP‰ó‰#é9S$M:żW«? pE HŤŃ&(I :Va°öŕÁlţ2ţüĹ‹Cya6Ó•F1,Ě0‹8Úµkwűí·cĐCÜMŢ÷Â{LJŹsűÝžlwµĎßď ·_=Š€" (Š€" d†IFěÇvłfÍZłfÍ„  3ŮNŠ‚Ě0ń‡mgén»í6F™żź ćEŁ\_řŞCŃůb“ đ$–QËęD˘Öńď …Á©Ž„xGÂ)ŇůUŁ7kő/— ÝĽoĹŢ#[Ň…fĚź#ĽJń&w4|˛@ÎbŽ2g­óëüO¶î[yčÄn˛˛dČY<Ĺné\˙1»ă™łö78Ăö±›?˛l8Oí9Ľ™9‹Wăg3gČ.…Ç*Xąpńüđéď,Ř0šś>{<_Žđ˛…jÖ(uSűZ÷I€ą"x ťÚwÝÎ[ö­<y*W–‚…r—"¬IĄ;Dąűŕ·'Nž92qÉ·ňHÎ,¨^Ĺ8Sâü…Č—ľ˝|ön–Ś9^ęňť)#(ÎFFôŃMžŞU¦uĄđ†C&ľĽ|ëô‡łeĘS"ĄnM_¨V˛™],_ÂIK‡Ťš=hס çNE$­»ąNďşĺÚŰ‘j'T­KźŁ¶"i#@gĎůe,$Ůľ};Wlö?ć<öXˇß˘Ł…˲3›ą,XłŐ*W® µµ»=»ý§&ĎŮ}ß˶ÇĎű˘oććuýrŐŻ(Š€" (Š@@fŕ0; NheŞÝÎť;ŮźdĐ2ĂZTNâ¸vöĂEąC\˛| S®;¨rv(t&É; é:VŹ$&¦‰`Ç?+IÜ9[Íłň¤0č×GÇ/üÂťËl˛ľ˙S·l;ÉBşúô÷gFÍčŽÄS«t›îü6[¦Ü’‹6jöűbßX´ţŞíłOÎ]ćóÇ–¦ ŤŇńcLüÎ^ŢeÓžĄŽ2ąm[ăŢ'oýÔL [¶ezżÝDXtł?Ý{÷MALlóJ–ł‘§ąY3ćóĘAżS&‚‡âÔŮă^»,JĘ]éđDÄ!Ç»žîüeŰš=ĹyńŇĹçżnżpĂGŚÜvmüěýmŢöĚRgŇE@Őş¤űŮiÍ“tó0]h.G­­]»¦Ëet±s̤kѢEÍš5ŮŢ%Ć!höFŢÖöţČő[”®lń˘ă>Ąc¦ąŠ€" (Š€" Ź3Ź 3óćÍ۲e‹śAÁłĚ÷a&d¦|ůňáѧľ_ F*‰hQ.ęé0HâĽî54‚żH˘Ó‰óŞëöĺÄ—‡Míë÷xĆtYż|lyţśá|5éŐo§Ľî‰żféÖďôü]lÎď‘5µÇMŻ‘«`>ŽŢÖÚ°{±_±M+ÝůĘ]#Č=~úp·˙–<}ö_ä­ő}¤ăŔ«P낇ÂVëüŞ‘!m–‘/ěĘ”>+C§ö2ń%żHüďŢ;©z©4+É! ĂYIî#Ó '[čP™µÎÉh]şt1#u´VĆĘaÇ(vŚíG€+đŢó;:?ň×Yß#eSeH—Ŕs*ŐŦ(Š€" (Š@¬€±0ĘxË-·@fHfΑ™ő”«5XH$ř%Ě\t:*fľá×˝’ň3AŞ'UŤK•ťŘ3rć{¦„*7®xűÉ#Łć şt)ę„ VbÎ\=úö†O>±÷ǬČ*·Ő,4M:ÖĎ.ŘpYˇcFŘâMSŞ—lnÂŚQ¦PÍUş]¸9lZ?®ŠÍÎů&Ŕ6˙ľh‘ęŇ„¤mXáÖRaUośĽxÓ$)dÚŠďkýkxYk¤:"[Vëž·üÄĄCͤ<ě‡Ú˙ďµn?<ľkŔĎ÷ËăEó–żżő۬6¶«dŰq"$uh§zSŤŮkť˝R’ĎDžÜ~`mů"µ±§.nŢőÄ-×/óŮČÓďýŇ{ɦÉâź»n¬Şu˘äa¨Z—<>GmEňA ‹fÇö¤/_˘Đ×oďéóÚĹ#—ű<»ŔśŮ ~ô1¶SmE@PE@PâČ “éâĄ(-DHl&˘sâ‘ę%ěâ1´¶sŃG(PZţwß4vgĂćdˇSßW,Ý2 µî·ůźž=Z<,bý ÷ěôi3r۬r—ľé8oÝXÉBűs«uaąJ č5YćŽeĎś·˙ČĽűĐF1ěkŚÁ–|câďiöR÷ćQ[umüĚăź5]ľĺĎ謿ţXňíżšż2vÁg&˛W«~w6ú·mkŢ{[ż‚Ň–SgŽnÚ»¬v™6GNî3JdÖŚąę•ď`tq‚©|l?G™­kü»ű€˛{o’ňBÔşmÖ7rzFĆtYre-đPű÷ŤyDülhÔH¨Z—<>Gm…"ŕD cíJá‡ůčűc¦\<|yšwH®ěYonžłĎ]ir]Ţ%ÁůŢ+Š€" (Š€" (Š@ÄŁ:ÄŰ®iČîżŐ"ŢĘÁ "Őaw¨ý€ě(‡ť/GQ®[÷Żâ*é¶Ź‹TÇ-ŕÜŐäYŁÖŮa‡ßŔˇ "Őá)W¸–ńG^đX!c°­ń!¤Ž[đ…’úŠč1oݸv5{!’m·Ő\¨ÉÓ·}Éark6Ú3µŠŃ°ŰK(R1żOĘgg˝Ň«µ.ňâe(ňd+tđřN‰ůdü>źđ|™B5*†7@—¬R˘©ŮŹ/ĆJj@BŕĘ7 UZ«Ş(Á €$—÷ĺ>y^ęÍ)±'FŚĎÚĄmţ7źLƬ"L4FPE@PE@P#Ŕ!­& ,wIcçÉÖ­éóćcÇuć¶xJĆĆ(ž˙Ęíc;9ŐhyĆÂOĎĚ5c{#Îťd7Ť#n9J×4«|§±ŻÂvůůţź˝ó€Ź˛H˙8é…@!˝K)RDT»˘˘X±—ď<Ďłü˝óÎzzꝽ׳‹˝ ¨(* Ň‹ô^CŇ“˙/™dň˛»Y6a»ěwo?ëĽ3Ď;óĚwŢäŘ_ž™'©}\tc[Ó´±:tďť´6ĄeĹKÖ˙¬÷Űß˙[ÉjµE÷řUz굎ě86"ŘW˙!°’ç"š&ČHźHu{E3 @€BžŔÎÜí–A“¸Š=°µ˝ň«·ÁĘ :2ÖićĽÔ×ňň2g«Ęń•ů\*k»ônś›_kĘg‡eĺĄ;ó|ťšóF_ĘőFá}jfčËŽżűĽŁoŤÚ“°iĘܵĺ_ď^üŢŹŹúâ$6AD FH"§q€ @88ě|ýă¤óO=8ćÂ, ppо˵Ű›ąlÍZk'•_»rË|s©p°®mk›Üm[µÁ¶¬uÝÓÄC<•@IDATXăí;×۲rČĆĹT4Đ«EÓ´¨âę}Łw]řÇRŰ)*Í69§¦ĘµŰ–ěĘĎ2­ZŇ4ľn'ÁŐ …rÂZ7|)DGĆ\1öŢqGLú~ŃűJß1ő÷ĘAáĽńĹŻ˙¦V‚3śL‚˝ŚZě+˙€ @V%é™Űď|2aĚđČ”ş}1Ö ă7‚@›ä.ŤŞ3=,Z÷“I€ Ç?źýâăźüŃĚ``×Ń^ţuű–=mŇŐ/{yDź3ěütiËíSzÚrC”÷#­E·µŐ‡čµKé!ąÍ ¤M¸Ë6Î6eÉyŇÔ¬ŠłŰ”±*M“mÔ¨´´ä†gGŮȻǮů±O‡#¬Ą ĺúź×WáX˛ţ›˘·w‡#î›ř©Ľ]şń×Ďg˝ L¸Ć)eé•ZÚŞyGŻ>ŇLŘ L«…Ż€ @8ä|0µĽ¨XźÓ¤ ‚ťŔ!í†Ř)LťűÚ—ł_.*.»ęŰ~ÂÖ+ĹĘ#z×Čs?-ýřĄ)wč|ş’Ňâ/{ĺíl>ŐFNĎöŕßB×Öýl‡˙|ăśuŰ—ęrŦąJMű÷×Ć™·rÝ&%¤´jÖÉZŢóÖ[łÖíĚMięVŞ‹ŽŚSŞkc ôž¸áPç·đó~eÚ?Ół7ę¸=‰‰Jhët22’dÜNA_&¶.č— @€ @ H dOţRžëłů•ăt ¸ ŹŔq‡ť÷ę´;7gV嚸ň%z;§ÝÄÜőď2jhĎ“”kŐ´ę®W§ÝUćxµLjć×;*¤xŮ»g,ů¨ (W˝ŻŮşpâĂ˝bŁĚĄ/<ĹZ: ‡BĆDĹ›T¶ąůY>ŘC aĂ…­ÚşŔ:бeďMŰŘK bë‚Ed € @>ůó/Z±N~ëSĺŕ›Cŕ % Đ­kO~82Âs¬–”ŁŰΩR3łżîä˙¶Iîę ±‡T×86ń¦3ź7â—ĂĆ˙EmťtĘ#•âZUç.RťZͱzŁ\ا20ĐŁ‡w;ţÂQ˙gšb{µjÍvĺg®Ü<Ď^şEăئ:ýI;śd»kľźżfş”;SqÍÉ5‘ŚÖ’BP@­ ęĺĂy@€ +śÉ_Yםe[I8PŽěuę×ţść8ĺÍx’Ú¬ăŁW˙0Ľ÷iÖ±´]ź»~α‡ťçTĘLkŻöĂžż~Ţ nŁ­±rSزł#ÉÉÔXZŞěŃXő'~©|îŃöp{‰‰Ź]=ăôaךúđ˙\ńÍąGýŐĹaßť>ěşű.ůĚ™C!{­›wvé0,,Üzë‘ď(˘"˘#ÂŁ\ş5—±Q5,±/ľmü˙’›xžëž6čţKżÜýxŹ˝QĽ”Gyĺ;xg‚ç€@m¶ß÷LÖłď4»r|Ë[ŻŞÍ†z@€ °? ”­2ľ,»*­axb“.żĽă9–g:ĆX€€%PVV¶%kÍš­‹´+65©6`¶jÖÁ¶şvîZ»m±Ś‹J :¦öî”ÚÇĆßąX6čĄ$Ž-™käɶťëZ5ëŘąőˇ©Ií=ŽWSáđ¶E:hŻ[›ţJqS±őŐĂ+;/#c×fm>Ť‹Nđ%“Cˇ(-+]·}‰ăS”_td¬¶§6ëĐ)µ·Ź© ~¨uÁż†Ě{#€Z·7B´C€ °ż ěúlúćëîtŽÚćńż79i¤ł†2 @ 4 °64םYC€ @ŕ@0ů%ś¸×8[)C€B‡j]č¬53… @€@@(IĎĚű~¶‹+ŞQ˝K%—€ $€Z‚‹Î”!@€ p äĽ?ĄQY™«eeőĽ @!Oµ.ä@€ @`˙ČvduŽśý^M–Xg=e@€@H@­ ©ĺf˛€ @8Ŕňç˙^´rťG'ŠV¬S«Ç&*!@ˇCµ.tÖš™B€ @ŕŔČ©%°Îxć˝őŔ{Ź€ †'€Z×đŚ€ @¨$PVX”óÉ·^`¨U6^ h‚ ôPëú%f‚€ @yS.ËŢe˝‰lŐBeói*Ő*k@€ ‚"CpÎL ¬ÍűqŢη7ĺ˙VPšť™Ú©ńđÍ.lÓŐŁ1•€ @ő =ůK{WÜŕľ1˝»í|éý„Ž*\Ľ"˙×…¦I6MNiÍ(@€BŤ±uˇ¶âĚ׼’Ś—ÖśňäŞá?e<¶n÷OŰ ŻĘűfęö;\vČg[ţZV^ę᪠@€ęH $=3ďűŮć&Ium_ş/,Ş"z@ź*«Ć4ÉF–uě;PĚ7ěž(®ŕ -Ôş ]:÷Ľ’ŹŻşt×§îý•5*™žţďW׍++/soĄ€ @ NrޟҨ¬âźUFŞ ŹŹł·«\#Ř••UX᫸¬ŕµuçč3}Çe@ ¨u´¸r@Ľąţ‚Ś˘•^†^’óń7Űďőb@ @€€/˛+łÁşKuć^§`g,}é3 lç|”UĽFźĺÎ@€@Đ@­ ş%ĂaX±kÚňÜŻöÚăwé˙ŇnŮ˝ša@€ Püůż­\W›Tgť,e_[W[?;ó%ůf>ÖI Ŕ'€Zřk„‡ H`îÎ×}齨,oiÎ'ľXb@€ ŕ‘@Î䯼Kuć.+ŘÉŢc?[™]ĽiEî×rOź*¬ź8@Oµ.đ×ŔĆüß|ě}C>ű 3@€ ŕJ ¬°¨d[†N¦“çÚćvm;Ůë.·ĆŔ­“őżňFĺňOź*®Łx@Oµ.ŕ—’@~i–ŹÝűnéc‡A€ Đ!Pš±łőoőEŞ3Ld){ÝDfg˝l˝ťťőŠ-S€ Ô•j]]‰aPhŃÂÇů$D¶ôŃ3@€ QmZú.Ő™{eŻ»\ú ŘËuy3Ó —Y÷Ň WŤ˝¤@¨Ôş:áÂř`#бń‘>N©Cü>Zb@€ jśufîî5ˇĆ„ůB€@˝  ÖŐ7 5›čË4‚׳ɉľXb@€ jŠË ćď|ŰeÖŞQ˝K%—€ _ ÖůB ›–@Űř’.Üëôƶş7&"aŻf@€ „ Ĺ9”ą±§Ő‡ ¦ @űNµnßŇCp×öéńŢöĂ‘#ĂâT6ź¦R­˛± @ľ@­ó…6€ @€\ 8Cçâ#’ű%Ť—…>U¶¦N€ ŕ…jť84A€ @đL ¸¬`ţηM›äą«:“ŮR—úTŮ v˛‘Ąç.¨… x"€Zç‰ u€ @€ĽXśóaAŮN™©®uܡÖ\e+ŘÉF–¶‰ @`ŻPëöŠ@€ @®fgľ¬ŞJ©î[§Tgěś‚ť±t˝źk@€@-PëjC5 @€ ZdoZ‘;%>˘ĹUť%ŐőőhU)Ř}+YĘŢŁ •€ w¨uîL¨ @€ ŕŤŔś¬˙ĹE4×v×Ú¤:słZe#KŮ{ëŽ6@€€jťE@€ @>XšóŮ^Ą:ÓŤědďCŻ@€* Öń@€ @¨ŚÂUg¤=é=ŞÎŮť,eżŁpĄł’2 @ 6‘µ5P@€ @î’cş¸WzŻń]ÚóŢ­€  ­ …UfŽ€ @€ @ÁAµ.8Ö /!@€ @€Bj](¬2s„ @€ @¨uÁ±Nx @€ @€  PëBa•™# @€ @€@p@­ ŽuÂK@€ @€ P €Z «Ě!@€ @€‚j]p¬^B€ @€ „ČP$s„ °”—••lI/Ë/jŰ*<6f?ڏ˙‡(X˛˛xÍ&3něŔ^Q­RĽř÷ĂěüŮ‹ŚA±ĂbíáŦ #P°dUá’•ĆíŘĂzĆtí°ďSđű3Sš•ť;m¦q,ŞmjüĐĂöÝIz¨ňňňě·>7÷F¶h–0úúőÓ@w•—ä~ýŁé<ĽIăĆG ň2PyIiĆc˙«2ŽŹk~Ő9^Śi‚ @ő €ZWhÜ@`…żŻŢ~ĎÓůż.(/*6 ‘i©ÍŻ8;éĽS¢Ş_ł9“żÎzé=3Ç6Oý#j¬7µn÷Źs2źy» HËć¨u{<4Á‘űőŚŚG^5óHůŰ5~QëüţĚoŘşő¦Ś“ cG ÖČ箼|Űm"Ű´ 4µNhŮ|ݝƽčť:őĽVĺ%%ŹV©u-šˇÖyaE @ő#ŔNŘúqă.@UvĎZ¸öä«vĎřÍJuj(Ů´mű?ßpŢŤ Á€ @€ @Ŕw¨uľłÂ€€+˛ÜÝ[˙üŻFĄe® •×ں㿯xl …ʰř¸P&sô#ž?¤«†#ŐpýÓ3 @8¨¶h±ś€ö3]_Í(Ţ¸Ő ŐˇMó+ĆG¤4ĎzáÝü_šĘÜŻf¤üĺRŹ^)ě.,2ÂcS˝+ëÚ§âÝżsęx©Feeaľú¦űä°ľľş¸ť|Í„Ä3Çʤ¦.­u˝,+,’Kţ%ćűLËKKK¶ěHi]WĎ]ě5hXXKeC\Öůađᬠ&˙ÝÖÚ_ţűňĚÔu^}óq´îŤ¤ËřĽ^ <:P×ʺκ®öuőÇ‹} íŻµ¨«{íőkłóĎo—çTppýŐçNmMe»óĂůóFmt¨‡ „$Ôş\v& ř‰€N¬ł=ĄÜvu“1Gę2şsŰµŁ«ş˘Uë%3Y‰§xkşN;*ü}MŃę eٻ›&DĄĄ&Ś92ń¬±:ßvU§‚/}–ěČÚú—ŞÓ»tzzăQCŇď{v÷Ěye»ňş/˙Ę®Wş3'ă±× ć˙^¸lMY^~djrTǶINjrŇČÚ”»ťŻś=ůkŮKÝ‹îÖA©$’Ż»Ŕ j9NÝőŮt3—¤‹OO5dËM”¦g™š&'ŹÔ¬íLs>ů&ç˝)ć2~ÄŔć—ťeĘ‹Wd>ůfEv‹u›ő 9¦w׸~‡$]tZtÇ4{o] ľĎ´4'wÇ/ćĎYR´bmĹNçđpŤÓ«k‹?OŚîÔÖŽ›ůÂäü_˔ۯΟ9_™ ňfĚŽlžÔ I–qz­Úůâd…[-_ŐąmÂŃCZüőrű`”lĎŘvű#¦‡¸Á}㏰ë“or§ý¬YÇŢ·ńAIĎqÖ«ć}űËnŤU^ŰŻ§Ü|¨uC_ťĎµĺŹ÷š»Ź<\Ăíxč%őY¶3'˘ybLĎÎÍ˙p~ă#ú;»•`‘ůÔ›šQÁ˘ŤÂÂâöizvÍÚ9-ÝËuZt÷gĆtč˼܇vŻ)X°lçŰźďţy^ńšŤZÇŘ~=’ŻżĐ=YJöäŻv}ů~x‹7lŃ|őłۧ{ÓÓŹK8~¸QîĽ˙@)µE ݦ -î¦+noT^UÝňÎIŃíŰčB?˛^¨:¤R ZÜ0ŃXlżď™˘ek+ĘaŤRnż&¦K{ýµ@ÝîůÚǵ°'‡îúzFÎűSô»xý–°¸ĺŇ!†Í.?+ş]ë=¬ş*Ţ’ž~ĎSůż-.ÉŘŃ,1¶O7ý¸ĹöîfšőŰ "ŞşňžĐć‘˙ËűqNÖsďVݦc=íO·tĆÍ×üŁĽ¨¤˘5"ĽŐ}Žl™¬˘ňZd>óVŢôYżrwĺé´Ó¸~=ă‡ÔoÝŞ~ř @!Lµ.„ź©CűL dŰŽđʨ±°đ°řaUé&Ł;¤IÖ‘€UŃ}dM8Xî·żląá>‰tvزśÜB˝—®ĘzůvŻ= EŔ6ůXđ±Ďň¢Ľéżš>őŐ1ăÉ7J3v:‡Ř=sţ–?Ý«éŘĘ’­;ôÎź9oçk·{ýAűĄ×¤?đĽ${Y¸h…Ţę§í‹÷ ‰vĐ„ŃĂd)!ĎÖ”îĘuŞuŮoˇ ¦·¸ĂűBĆŻWl%®>űOł(łD¦¦˝xŻľŮÚŃ}/ř>ÓüyK7_w—Ž ¬éĽ¬L2«ŢąßÎÔWcš¤ĺN©Ę&)†ş4őĹ»·fżńé®OľmóÄß·ÜxizfUýęŤY«7Ę“ö“ Ź‹UĄäQŰúßńđËUa;Ť ‹Ţ%Ű2…‡e˝0Ůô Ďü_ćë`ÄV˙ţkâŁMĄŻr_V{[¸r]ŮC/–fĺJ3łw˙4WďV÷˙%qü ¦RjĹć?üÓĘ‘ŞĚű~–Ţ’öŚ÷Ď:-şű3ŁÎ}ś—w7Ô*‘NĘ«„¶zçNůIÂJü ŞG®¬ PR¦h8{+Ů´=WďŻfHŁlőŻZčý*WÓ9/SÖééŇo!s©l9UjÝôYö§µpŮjŁÖ)&1űÍĎ$-ăÔ»ţ¨‚żČôi?ý˛ęMýčŃě·«ŇŃŞ¦|wDs˝őË-íą»Žj5ýf[öőZwsYş=#ď› ý¶ţĎ­MN8Ş˘‡˛2 GY&TÝąť~($Ł›[„Q"{UyîR=f¦žŻ?Ҩ¬óÍ“î¶Y•UŁ_5»ôţ|zÁĽĄ©÷ŢPŰßHL?|B€ pĐđCôţAĎ B¨Ť@›Goď6÷˝»ţö~D“ĆĆLáUR]ŁFŕě—®íw?é”ęś}Ş~ëÍ9k|,ףO%Äp‘ę ´éĘż9Ą:çčůłnż÷igŤ);Ą:Ű* I±0öŇĄĐôô*]Iőó~/­.Ąněţµ*6MMMO;Nźú~«¸6+Ő9»’¨´aÂŤ —;+})ű>SĹßmĽčć=¤:Çĺyů[®ż'îRG]UŃJu¶I҆ş˛Rť­×őś÷ż¶—¶ ĹĘ*J¶R©xťR]U}iŮŽžWl”ą¬ÇĂ E´RťK…mw>QZ­ČlżăQ§TgÍ´ ¶ěĄP§E÷ŘO=ćĺ±ý”ą-Ý‘Ą¸' :ćé.Rťł«śwżĚ›6ÓYٞű”Ó ĐVÓé›-+ÄŇ–íS]°°JtVS…vż=CMÇJuŃ]Ú+BM•ţZ ë)řk-$ú;Ąş=F)+ŰňÇ{ěi¶IˇsVŞ«©,,ÚöŹÇgkś…¨Ö)qCúŮšĽďŞţ:˘ĹĂÚz%&ŹŤ‘Ř·ůŹ÷8Ą:k Bö;_čo'ÎĘ€ „ Ôş\t¦ 4í„ÚpÁM«Žś }…fíÜLąőJS.X˛ŞxuU$ZDrRň¤ ÓŃüęs­+Š^±’­ô^Ř×>#Â#ÓZjgVĆcŻŰoૢ"Ď9±b[Ż®vtí 3‡ÓŮSĐfĚVÜÔňŽë«•JŐďúü{3{©M—‘mZV]*8ĺ‡ßLYčUÖĆOm ÖöaIöƨNm›_w~ł+Ç›0ŐKvÉzĺkŕcÁ÷™jSp “đđćWťÓćé´¸ůаĆ5©3Ň=‰ň¤É)Ł´ľňyŻ"#´›Uű.ť¬r>­Ú)Ľ‡eŁFAš_3ˇéYÇ»ÔÇôíŢâĆKUŁ­TÄ?ţ¶Xfő"#š]zfę}n|ě0;śäȢ•ëu©ťv;ł.u8cŇ%㜪„˝Ą¶‚ď‹î±‡úĎËcwááÚgťxŢÉÎŐ‘`·óŐŹŚů®Oľł÷59X±T­ľE»ĽmeţüßmٵPýĺR8«éâ˝tŞu•´~Ţ Ż´*äĎ«¸ÂľlĄ6ÔWÔ4Ŕo63„_ÖB„Čzľ&"5ćÎú j¦ŤöŐ‡Í)S޵“Ş)DFhKxë˙Ţ–0şâ|óRťůq«®Ř㿉gTü™ÁĽĹY]ÜC­kZ +=N‘ČUQ‘MNĄß-ÚkoŮőéwEÚ…Í € &Âsgę€üI@qXv/§é7n`ďŘC{˛3`'ůŹ5»đ4ŐË óé·Şś(-“ňR§ăŘęݧHŇ·ĐŘľÝu˛’¶¶í|óÓ*5JůËeÍŻŻKm„\5dĽ‰EŞŘ±»dĄËF]©NíŢţOŐŮLaŤ´×Ět˘ř5Ű›KAg~5=ő;em%kzňѲÉű®&öÄ|›Őůn:^ĘÜ®˝c?}Úě®M5tĂ„?›ú]_|źzçőľÍîűLŁ»uĚú_•|ٱ´+-éśÍ ńCű­?ă:S–“Ňn\6䊛¶‘Ę é¸1kF]d,ő™rË•ć0ľ¨v­¶ŢôoS_–]µŐš™‚ŔFUĘš äŮőŃ4SŮŞ…¶$+„S{™×Śş¸âHµĘWie'ő~$¶6»ŕTő”xöŘ5ÇNÔIy¦Ű˘µăú˘SŢĚĄ>ŁÚ·îđá&aHÎÇß((É6y)řľč;©÷Ľ<ö–rËJŁ&ÉÁëĎřCáŇŐĆLÇ&ę±WeÍöĆ”ćiĎßmaÔaŽE+ÖK÷8,Ő; Ś™ó3pVSaąö|i“{ÜŔ>’ˇ%ŃŞĄâ µÝů:µÍ\Z[AĐąś6ňNő ÇT¨uű¸@bn‡0=0ú;‡żÖ"[i¨ś¬ř zóáÄ&(<>VŠĽQ[¤íA™Ö™7^š\ů×”&'­ß„6ŮËď7ĹÍ…ý푊.+‹7nÓ$Ú]Ćr@ż@Ôšó^MP­Îúlqý…ŞÔpëĎýłÂ“Ť˛iń§‹M™O@€Bj].:S†ö} Üö·GZ?p“Ć“B§¸*´OŹâ»¤sÜ÷pĄúĚŁ=*kż¨wźm_ů—9^}ëˤý6«Söfe”*$ŐÉJB:gÝĹ‘ř#ŘcÔ•EÁ¶–—xŢ)f $Ć9ÔşŞđ»kLßŇ•ÔB–Ĺk7Ú#[§HŞş,·Ő‡O)7‚’WÔTy-ů>Óâµ›l¬_DËäDGŚ[Üa‡ÄŃ_'»™ˇtô•‹ZW}š„×°řX9i,•VÂbűV ¸ş,«n5MćSá‡FŞÓelď®V­‹Ô×ě¶ÖŢje۰Kc†¨÷Ă8®j{˛şŐQúV­3˘CŠęWÂá6·ŻTWťůĄ]ŇŐŤŢţëă˘{ě˘ŢórďM’‘ęÔ¤GWY>6]r›13łVe·Ą•ędyąD«]ź~[´~‹6„:w2ÚÉśý; śő*Ôjnýë9LuńP!„m_ľOyEŞÎVSTÝ‚ĺ%[ÓŤ™’\›MÜ&ŞÎDŢ©IęžHöeŠÖo^3˛â·˘Ë«ýűŹK)öËZŘçYC$ž{’‘ę*ĘçťcĆUŞti±Tü\ôë™÷MŐh/żß"š&(@5÷‹Şŕb)żIçź’ëŘŰô´cM>ĺ"ÇŹ•ž¨ťo}f0ę°)ë©C­s_j @ˇCµ.tÖš™B K@űÂÚľü/…Ţě|ýLˇ®–Ą:Ĺ‹®Zź~ď3y3~łJĐ>:Tż>ßaĄ:9PĽ®*DKemŮs~]lzĘ(/6>Ŕ¶Ú Ş5eEÍZTbşwŚ9¤‹á#@ŰčÂ"ÂK¶TIb¨oĽ˛-ZS#)¬iŰ­Ww°Ç}<:ÍÜăűLuĐ»FŰ“MĄ˛¦Ö¨u«*¶‹:_ÎÜ Ę «D¦UŘM!,&Úiď^vöŃ<ÉŘTăŢI=†´–ÎŕD+ĆŮA‹7TůŻd›kéŁZçă˘Űžť…úÍËŮ-GwmoË*Ätëh/µëY§(JĘ‘’ńÔ›Ę â1†ÎÚ; .?PÎ&•j5]|3—:˘Qm†µ™”_ĹłŘě’q:Q:&RçKV$€®|5>Đdžń㙞őiÂEý˛EŐ±˘ęÖą¬DŔÉמgGt)čZLŹN¶2˛2ŹDŐĄ×ßoJěPëfI­łŠĐíjŐ§öŢjóµí55äjzq@v¶Utvż§R î|őCmŇ— ™ŁMŮŐ?qćĐ:ÝâDz‚_ÖÂůSžXń—_^:ZÔi¦MôÎK/儣‡'61Ů„ň~šS–_ $$Ć^GćIčWŮÇ_nŹ ő24M€ dPë˛e:€Ŕţ# oSëNşĘČmÚd×îµ›±ĂăbăjŐ:ܱýŽÇ¬T§Ü‰gźĐř¨AŠ2«Čmę8¸˝NŢ׳ĎęăŐÍXňÜęOT¸bmiv•jÓµ˝{ŕ•˝±Nm˘LżďYłŁĐ¦ô-×nŤîĐĆö)] ńÜŞcălĄ)41ČĄĆËĄď3Ťv$pO [Ľy»%˛e˛-×§ŕ?µ®žĂŢśV¦ËÂęÔ˝qśŰ~µ yow×´ű˛č5ÖŽ’çµ{Ö"ýĚš­Áéża”T­HO§T×äÄ‘ c‡k—·6­ośx‹Ă©=‹{ţ@íŮV÷«ĘGÂŹłvz ô eyU[łm}t§4•WŐą­É„“?g±Ž®SexRSĹŁĹvHî—?č2ëĺ÷í]vŁčľ¸*ćÚů^^ěz”žbŮüµú©wś9¸ÍúŻ8Á‚ężč »XGRkSŹBĺ^ţŁłßřD÷ęŕżĚgŢV$ťéÇ&GV0¦óď4mžů§Ç˘Z·ôXO% @!Bµ.DšiBţ' ŻýĹ 9©ÜGV´zCé®úŢ®/±¦çčÎíěú.ÝdĚp{™÷ýě˛ü )AŻ ©4.Ö”÷úéűLŁ»ÔŚ®¤¨‹WÄöîfú×~ÉÜ)?Ú±˘»ě±ąŇÖď˙‚_w·•;ULýî™óšM<Ă”¤´îöµŐř˛čďőăĽôŁZ¸xĄ’«v˙Tńš—ůytŽĄ`ŔÖßjZ•ϤÚp?ý×éÉ^]řî“vĺŰ|)îw)ĽngeŢj»O3î°ž2ÓYŤF­ł˛—F[ťz_\•Z×ćńż»{˘gz“}Y‹čömŞÔ2ýVöäĘ„*ę_YY·ßů„ZÉXŰýďŹnÔŁR޵N÷ÖżJ°sÚ1¦7ýGTÇ4yi.ő».¦kSÖ_,Ď} »6˝ń @€@Pjďq€Ŕ%Ó˝ę[–ÜŘvëCe…ŠIÉzů+p¨^ßlőYšUq8”y™ťPJÎńź—µż¬şşB˝SYn+zť´˘ĎÉzŻP%ŽÔŘ8Jľ÷é¸Éµ™śd¤ Ó°ĺO÷*•aIĆÎ˙yŮJuÚ Ó§J®r˝ż^×ćü&—[ť•fË1ŘőŮôĚ& ¬˘T2ź{găĹ7oľúć]§/´ľĎTQ„q+NĐ7ŻÍ“î.X˛Re}—ŢtŐ6q„¶ËŮśŐ¶uüoÍ&ŕ:Ţč4ŻěÄ/łWSvJ´:×,ëŐ”¤GtóuwÚM‘îwy¬q®Ż5đXi[UđVÜř/-ĄňŤć|ňmö[źŰ;Ôm¬Ş̢ [2ź{×ZšŇšKż—r5˝;«h_Řţ˝TŁŘ:—z» Vőţ] ;ĐžÝÖ-śÎç|85{ň—ZýÝ?Ďu&}ŢןbëteA?2Îߨ¦1~Řa¬­ˇ˘Şmyóuw®\§KýU`Óĺ·Ű_nĘfkm(@€ ‚­ ÁEgĘ€€ß47&˙ת´•v}5CqN IŞ“Ů­© ¬ÂJĹGcoĽä¶¸~=´/ĎÄĺYoĘ‹KT6ź¶ŇKÁ÷>˝t˘¦ä?^¸ő¦ŞmĽÚ–»z„ëáë:iަőŢ•Ź­MĆŽŘvűË ‹¬˝ľß:ż3k/jŇE§ëŔ,c~÷Sé÷?WQ®Dd*Ž®łMŮÇOßgšrŰŐëO˙é¶xÍFmyv"ůO{‰|t·wŻ kä7ąÎ_‹“IśšőÂäŞMÜeeÚö¨·‹ŤŹ—{]tŹýřw^Šs_ʰ¸Řf—ś©ŃťŮW”tý„Ë ćíBčűʧÇéřPYńHřwÖ> Za?ô0çMŐ(1«>cűvkîgí6Xµ6«ţZ ĄaÍxôŐâőUątô‹Îţ®“óz)ą­rSö˧Ňn49ýŘĚÇ_wö¦´ČÎË”ż\Ş]ŁűëĚ„µŁ/u揮°ŚOšŕyűżłĘ€ Ä­;—©A N ń¬ăÇźP3LI©SŞSHZę}6YVeiÍJ·g(LÉEŞSkţś%ÖĆ—‚żúÔ7I§Rć2tüQ’Ż»ŔĄr/ĂâFáěDßoő-×Y“rËjj¤Ó9¤:É ©÷ţą¦Ő·’ď3ŐmÉ×_čĄWůźtîI^ ös“ż·ĄŇ¶üǤFQ~řŰž/‹î2ş.h^5……µüż«"›'Ş&nh?ť)YŐT^ž?s^•Tç8™Nš»‚łjnoRĎÚ“ŰĘÂ7äPgKlżŠť°ĘÓŁŁ­×av±•*ž©i WýµúőŰňökk{€Ăbc´ßYQ·vv~)¸DŚę˙$U;{Ö'Rď¸ÎYc#v+*#Â[Ţqťr.; (C€ jPëBmĹ™/ ŕOa­î˙‹dh¸ô«­”ż|^G>™ú¤‰g4»ül} łfúŇŰ⯗§ÜV´•ůü;j s(#ań®ÝÚŰUđ˝Oç]îe͢Ý5żę×&Ĺw\tzŰďµd qµq»V’ŤŞ:çDâ\'âň…6ńô=bOÔúéđéÓl«ł«ę6,¬Ůegµ˙𠣰¸Ťď­Â÷™Ş—7LL{ů>—D¨Ş—?-˙ţ‡´gď2:¬·ń<µ…ÇĹÔTW ”aÎĘšćZK:ËŻ¦­˛ß† ž‘5·;JÎőµC4sdű7vîăÓ ŁŹlýčíöÖp·őµMÎÂ^Ý©Ş„UöéűĽśٲsFIçź’8á$%”°­úlóäIçW…VéÜÉ´§ţ]}X…YX„ěN_żhďR”Vî×?Ú<y5=:l+ť™aĄ•G4­J˘ęÜOŞ ł6S‡n¬ĂIŹŻÎ§Ľ×ź­…<”°ŢáýÇtTśť¦)D¦Ą¶÷żzĽÍĄ—ź 獊Ĭ¸Ôťâ +_5żńĚue¦óčý°HŞ®n¬úŻţĚÓţýÇcíáRŐˇMűwmvái.ő\B€ jÂ|OKjhoČřlË_§§˙{dĘM'µ~ŕŕ€°ýľg˛ž}§Ů•ă[ŢZ# S śYčwińÚM‹W–fe+‹˘ľđW$ţ«Öb¬ź‡/ZQšąSA+Šs7°–ľüاe­X[¸lmyIIlď®:qOá6ľ{Ň@–:(­půšŠîĂ¢»wŚéŢŃýëq]‡ö}¦+»aKѲµEë6E¦&Çôč¬]şNEµ®C7¨˝?•MUçâ,ZŃ,1n@/}ş4čĄ祉.]UĽnłÎs&˙µţ+żJţĽĄÚţ¬$ĹńCűYĹĘě·‚gÝĐ>7«~\ ­{ń†­…ËÖŻß•–Ű·GTŰԆƲ×ţ«~˝,_[Ľi›îô ňmŻw|ŮżRľF|Ź3‚ ü°·%(打€”€t7}ó÷řĺß9nT›–z;kö˝ěÇ>Ď7 ·Ţűî•{Pd_\˙^z»÷)m4óĹ÷•–ą7ą×4żf‚MÚëűL+V¶}˝Ý; Ŕ?> .łS8•¤˝]ę÷ĎĄ祉(ĂŻMňëîżÂľâői¤÷~ůqÖ =•rŐŹkˇuW¶k“đşˇiřŢpýzń}^XB€ °ďPëöť!=@€Ŕ! `—ÓÜ˝řˇ\Ť» ˝XŇ@€ @ŕ@­;€đ€ö‰@Lßîťxç.ÂĂęš@Ö§n1‚ @€ ŕo¨uţ&J€ °żhY >µż¦Ë8€ @€@H@­ ‰ef’ü™óu3(ęD ĺ–+ĄŐéŚ!@űŔîY s§ţ´jč!ô‚ţ!@AGµ.č– ‡!PgáŤăuOÁ‚ez×ůćĐľ!ĺć+”‡4´0{@Dú˙t%|DĎęĺ“ů·J˝nĺ&@€ŔAHµî \T¦IśŞš˛ĽÝ.ő\î•@yQqXlĚ^Í0€ ěg1Ý;6»rü~´†“Tgţ­Ň@ýÓ- @ č ÖÝ’á0ęL ˛yb‹ë/¬ómÜ@€@ hŹ8â—óţ%$IIůé§ź$ĘX˝ĄĄĄ :T»M·ź~ú©T?;DFFĆG}¤ŤŤGu”©\»víĎ?˙¬Ä’·u^Űرcuź‚ŞdĐ´iÓqăĆ©››kŹuëÖ­[Ź=ľüňËŐ«WÜu×]˛ŮĽyówß}·eËM\5mÚ´QˇN=KNN6c™O_ÜvÚŰň^碙N™2Eg®mßľ]rpµhŃB¨µ1YŰŹ/™={öŞU«DL=h"ÇsŚř8ďÍÎÎţć›o¶nÝ*ţZ —Ŕjˇh·Žzç¦'Á>!ŠÇěŇĄ‹d_m©@=â¬EWĆ-вeËÖ¬YŁŃ剦өS§şz˘}çťwĚ]ęYĂéiÔ Ęs=6zĆŽ>úh9`»íßżż-]j˝TPş ŰD€ @  ÖŃbá* řŤ€´IT¦;©]FşŇĄ´ĺË—›zé2ź}ö™Ť¨’˝^JI1a»mV­’ŔŚDbť“"™FŻ+Vś}öŮVÝSřŘ+ŻĽ˘Jk©‚FŃzIŚ“č¦INFw3f Ö“oÔş9sć|đÁ6şJňÓÜąsĄßIą3öVh“oęÖTjh©rË\šOeť6mššĚĄěĄšé%ůéâ‹/–ĆdďőĹmg϶ě}.’Aß|óÍť;wZ{ÉL ÓKú×gśŃŻ_?Űä˝ K“µˇyf±–.]zŢyçŮĹ’|&ńK«c»’pi,%®]z饒MŐäť›–Fâ¬éA~Jj´J(ÔKŠ­4ÇüŃŽ˘'á…^8óĚ3Ą¦™J=ŃŇر¤k,6š´”f8)ł6¤Nb«6łĘşńÔSOu‹­K @€™;ayu𠀊Ŕ˘E‹l׊Z˛egaÓ¦Mnś5*K;{űí·­@# ĚEŞsÚK?˛±QŞź>}ş‹Tç4ţţűďmXg˝ł,iIárVŞłMVŞł5.őě"ŐIÉ’úcĄ:§˝,ź{î9MßTî»ŰÎÎmYÂÓK/˝ä”ęl“ ĹÄYržłŇKYś]k¦(ą7ŢxĂÖK{uJuÖLŐż˙ţűÎSvçć´‘Zg;·őzśRť©g%° WO0hĄ:;– Š^”ćhj¤ÍuíÚŐ”ő ®[·ÎiI€ @ X[,+…ź€ ŕO n˛ÝiGˇ-»$(ňNqmÚ§©ŕ&ÓŞp6í˘5j”˘¨~řá{‹v_š] vłAm’ç¤ř E1kÖX»µSZχ~¨ )SŻ€2Y*vOC¨ŢT¶lŮňřăŹ7ŃІł=Č·îÝ»§¤¤hë›m­­®­˛’Ť$Y…ăz衒&ĺą.ŐË1©N TŮG·mo΂÷ą8e&¨}ÇÚ Ş9ÚĐBĄąęŞ«śz) ¶…6oŢ\<ĄmKMgćĚ™ę\B§=¦PhVđ ô,‰¤ĆR 5먨(ŹCnÂĄUűg…NŇbťM ÓÓVhĹb;„“›­´…+®¸Bş”je2-ëe—]¦CńÔçC=d6WoON>ůdă¶NŮ{řá‡í J…´j]BB‚őÍŽkk(@€ Ôş X&ś„ ĐáhŇelŹö\9[c Ň\ڦK…\ 0ŔŞu&tËŃvä‘GÁKĆŠŔŇŤV­łfĘx  9Óů_|ˇ­‘ŠŔRô“„?ITŠś2Mµ}Jť‘ç¦UşžM:!ß$?IL¬íFS?qâD…e™˛ =ÓĄĽ˛2“í_őŇuŕšä¶}tŰŚčň)Én •Z*ůÉHxRśŤ7=_Ô:9i¤:ő# ŠFÔY{¦OŁj ‘’N¨F}Ú`«ę¤BÚŔ7céśľ©Ń§“›­4 j¤:]ęĚ8‹Qk*©N•ZSŐ[ŐĚh»őöDO WÝęɱjťsż¶S­s>äćF>!@€‚‚j]P,NB€€? č\6{^›vš6÷¤m9w>:“oŞłŃŢ岝Öy)…NĆŇňúöíkŃęFů ŮH/m§•b%ÉĘ1¶[gÁ)±Ą¦¦:}3éśĆ.e)ŹVŞS“ÝŞ˛D+Ą­p±7—樻}tŰcĎÚĽië5ĄRô¬Zç´´·¸´#ŘY©>íĄä9…%j•Ő•DRĹZˇĐÚÔVpáćbćÔyťeÝe-Éh˦ …«‡'’­¬~qéŇ­ątŞuVöhI% @€@ŔpýdŔ:Šc€ † ŕ.¦ŘQ\vČş‹zŇ଱K?ÎK©3&hK{W%*3Ęô ­ŻJ!]I'ßŮ>] v×­ęťýëŇEírąQ—N-I—öŔ8wKgŤ_ÜvvhË^ć"—ŮŮ»Ľ\ΛÓö^cIWÚ/ě"`i9Ľ+w.Ü\ú¬ßeýu®$­j­MdQBë€Ý]kjś±rÖĆYpéS©l«öş4Č^: &[î>şíěĐ–ťÇĂY†¶ŐY㢙Z—‚Žís®Łs±_Jë{ď˝gEqjÚ{«Ů)1ÎéSxŁKoöŇ…›­Ż_Áô¦c ë቏#:“ŢjŁ®Źwa@€ PPëj9p€öíU´Ç~éěçţAëňčÄ1«‘Ů˝™20§•i÷Ą¶Uűß~ű­wďŢö^]ڲ٤)IČnmßľýĹ_¬¨. 1{ölk,éPB•Ńô`Ss*\ŠĹSţÖţýű›éÓ§Űá|)8÷ŤJvtz®ŁÜ¬†(ëí¶G7ě\ś(ÄćÍ›uľ›ąEz“ržÚŰť–¶Ň˝ »”kŐ ¦ÎĹ2ҤPŰ»”Â@–?ÎÖ A ę‰Idaü·gę5čtč€ @ŔďPëüŽ”!@ HȰj]nn®GµN»5ßxă m_•¤h¸Yłfى)Ť€Ę˝zőR˛SůűďżOť:U™´ąR٬0gĚô©Ţ.\hŚĄőéÓGˇOĘI*-ÉŞujŐíĆĆ~Jż“¨¤°,)Ś:Đͦ:UŇX‰\Rť¤jtkďKÁy¬žĽRb‡ÁkeąŐÉn¶‡[o˝µŢnŰNś;»&†6Źí›oľ9a v2x÷Ýw­\¨F!rö६•ôVęžÄ>çbőěŮSw9e,I{â¦XĽiÓ¦I!őŇgC45¨'z­ĎÄÖY @€@p@­ ®őÂ[@đNť:­^˝ÚôĄđ1§zĺ`Ó¦M:ěĚYٞŽH3ůX•wBŰHmî×o*_.ĆRLĚQt’˘tŁ9ŻMÇĆ=üđĂĄÁ)"ĚޢD&Aó6횼űî»uűe—]6věŘ—_~ŮŘ«+gď­SA{x‡:sćLs×çź®µ*;qSŔťvˇĘ˝|tŰŁşÝÖ;çrâ‰'>ů䓦I 4üqkf Jźj6Ű/EÉąw˘Ń ©xµŇĹ*Ϭ´BçľQőě~ž —áęŃdvÂ6¨'6m±ÜS˘áz8É-€ @ś@ř÷ @űźŔˇ‡jµ˛ť­ń^=z´=Líä“OvžçrŁ”¦qăĆą*66ö´ÓNłŇż¤éx5›đARŽ,c cĹ»YcłÍS—Ý»w7Bˇm2ëŹK˝—K ÎM¦ŇéśRťäËÓO?]·×ÉmŹĂŐ6éeÇsŚÇ[Lĺ!‡rřá‡{1Řk“Aj2Eč :kŻ}ÄŠżs‘ęÔꔺ¬±ß ę‰=°OłF­óűÚŃ! @Ř?PëögF Ŕ" ˇĘĆÓYĂĹEmtUX–ŃzL“’\xá…Ç·–:KnҤIýúőł5¶ ąíúëŻ7‰Lĺ€Î>űlŹĘšâě&Nś(1ÎŢ®¸.Ř™&©l]tQ×®]µ™T5Ę“0jÔ(yeotßKk›śWwÝu×I/sf•®#Ź<ňÚkݵŻ“ŰÎ!lą¶ąwÜqšµű6dą$T“ň>MÁ1dČI{RmŤK»kUoj”ľC çL'"%ý8á„ě-Îý˶ҥŕ tiňxétŇřďtŘŮżÓ ;„öë¤Ec¦ĐČÚîuöC€ @ „ŮóžĐ9\‚Ŕ!đŮ–żNO˙÷Č”›NjýŔq€A!ýCŕ»ďľűúëŻÍXJ; ˝±*kłäcŹ=f*Ąwśţů:ÝLi '•MHkS@tü™ň´ęĄÝ”ÚĐšššę.B™nŐˇölęČ9ĹvI–Ň zzÉŢ´ş|ꌳśśU*LĎ]ĽÓůntÁ6:“IDATF©QŢłĎ>kîUDŐĺ—_îŇŹ—Kăą\’N'7äĽUśwŐÉm獶\Ű\ôOiLB§ý°‚,Uś˝ët¶O—‚śÔą~ęG"¦:qiŐĄô,‘ĎËËSdźŇ”ÝmöOMCxâń‘Ţ?Óa@Ŕŕź‘< € ŕś[çŚt@ÁG@QWJĄj’ č7ŁÖąOCňśR¸ş×»ÔHM“™/–ęP:‘^.=xĽTť‰ˇS«¤¨űďżßîßÔNUE˝©^šÝ”)SěímňXđŃó:ąíq ç\ś’Ě´›Řˆb§±÷˛śÔzŐff´ŃÚZ÷g˝ß=Ńăˇ$!f Šë¬íyŢźsd,@€ ú@­«7î‚  ' Ť#FŚP"WÍD)_Ąm­<+IQ’´Ö­[gśś+%‘¸ęŞ«$ͤ§§ďÚµKűyĄÓ)B°¶¤ÜaŘúôéŁĆHsýtě'€ @ŔG¨u>‚ €ZνĄJ‡Ú±cÇŔźŞŽŘ đSöźáÁäˇ:DşiA™  @!N ŕöř„řz0}@€ @€ P&€ZĘ«ĎÜ!@€ @€‹j]`­Ţ@€ @€ „2ÔşP^}ć@€ @€ XPëk=đ€ @€ @ ”  Ö…ňę3w@€ @€ Ŕ"€ZXë7€ @€ @ˇLµ.”WźąC€ @€ ÔşŔZĽ @€ @e¨uˇĽúĚ€ @€ @ ° ÖÖzŕ  @€ @€@(@­ ĺŐgî€ @€ @Eµ.°Öo @€ @€B™j](Ż>s‡ @€ @,¨uµx@€ @€ ĘPëByő™; @€ @€@`@­ ¬őŔ@€ @€ P&€ZĘ«ĎÜ!@€ @€‹j]`­Ţ@€ @€ „2ÔşP^}ć@€ @€ XPëk=đ€ @€ @ ”  Ö…ňę3w@€ @€ Ŕ"€ZXë7€ @€ @ˇLµ.”WźąC€ @€ ÔşŔZĽ @€ @e¨uˇĽúĚ€ @€ @ ° ÖÖzŕ  @€ @€@(@­ ĺŐgî€ @€ @Eµ.°Öo @€ @€B™j](Ż>s‡ @€ @,¨uµx@€ @€ ĘPëByő™; @€ @€@`@­ ¬őŔ@€ @€ P&€ZĘ«ĎÜ!@€ @€‹j]`­Ţ@€ @€ „2ÔşP^}ć@€ @€ XPëk=đ€ @€ @ ”  Ö…ňę3w@€ @€ Ŕ"€ZXë7€ @€ @ˇLµ.”WźąC€ @€ ÔşŔZĽ @€ @e¨uˇĽúĚ€ @€ @ ° ÖÖzŕ  @€ @€@(@­ ĺŐgî€ @€ @Eµ.°Öo @€ @€B™j](Ż>s‡ @€ @,¨uµx@€ @€ ĘPëByő™; @€ @€@`@­ ¬őŔ@€ @€ P&€ZĘ«ĎÜ!@€ @€‹j]`­Ţ@€ @€ „2ÔşP^}ć@€ @€ XPëk=đ€ @€ @ ”  Ö…ňę3w@€ @€ Ŕ"€ZXë7€ @€ @ˇLµ.”WźąC€ @€ ČŔro @ÁO ¬¬,=gcAQ^«fc˘â\&”ť—ńóďźšĘVIër´‹A=.3wműiéÇöĆc;/.ş±˝üň·WJJ‹Ěe·6ý{´d›6e¬š»ęsŮ2±Ýŕcm“ YąŰ\ň‘­éÚ»O‡#ěĄ-lŰą~ÖňŻĚe›ć]t=Ć6Q¨Ť@iiÉ«ßÜeZă˘ÎySm–ÔC€ „ÔşP[qć @ H`őÖ…O~zサ?—T–Ú¬Ă9#nĄę6Ú\îĚM·Ă©ćčľăď8˙mkůŐoŻüŻZ3ęž6ĐE­ű|Ö Ďu›5îÚçĄÚK[Xµyľ˝UłNoŢĽÚ6ů˝ Â۲֙n{µ–Ř8ŮďCěźKĘŠ_ťv§«YB*jÝţÁÎ(€ @ (°6(– '!@ ,\;ăŠGü¶rJµT'źË·e­}ôăI78Ľ÷išF»”îîećł>ý÷˘’ÂčČ—éI;űě×çç®ţvăŽĺ]ŰôďŮöđ‹Žý{Jbš‹Ů^/ď6&,,ĽĽĽBś*(ĘŐ.ŃîiT^±çNXŐh3¬ ŁsnŘő¸šHäúfţ›îꀼk~č׹F…t·©_ŤRUĽřőßćŻů~űÎőšETDŚŽü;¦ßą§ą:ąikőůŰŠ©ß/~_gÚţ'˙řßé‹&Ź;bR‡–‡ĽűĂfŻbšn˙ňw ŢyďÇG·d®žpôÍ—ŹęKJ‹ßśţŔŻËż\łua^AvjłŽB­ÓýN|…íĐŇł7éD9·!}Ů®üĚ„¸f©I†÷:mě KZ5ë`l2r¶üçĂkMůĐN#t9V¸~^úé¦ĚU};×ZŚ;ňz­ő?=ń˲Ď篞^ިĽg»Á—ŽľSĆć.‰’ Ć4ĺ&ńÍn?·bÓqAŃî»ß:ßTjŤí8˘’ÉôśÝ‰ŤSş´:ôüQ·ą'ńĐĆç~z|é†_Ą§$¶ëßeÔU'Ü˙ČG“”çD]µHL»éĚçLź|B€ š—…»8 @L;r67ŤŻČx ÉLr‰q2-ą«6<–•W„ąE„GęíâüÜUßţşěKŕ¶ró\˝•†őźĽ×·ă‘.ĆŢ/·č‘6č÷Ťż3m†•Z—›żSŠ•©QţýgŹ®snuŮ;oőw;r6™ëßĺ)s˙g.§Î{Ýďjť”¸Ű^9µ¨$ß ˇĎâŇBÉ—RÍ>ůĺŮ'®ý©uóNŠüxćSÖ@…ź—~˘ĎŽ-{K­“¸öëň/L듟Ý8uĎŔŔ éËď|ó\±µ·ëĹh ůEą?.ůĐŘHÔ{éëżŰEśłrŞŢzÂĂÂßťń°ígţęďt|á-g˝4zŔŞÔSaV– c¦Ô¶ŰuŰ—ĽđŐí9»«¶-gçĄĎY5Mď›Î|áÄĂ/µÝ*áŻR|Řśż’SżžóŞUé™–ÜÍS€ @ ě„ ŠeÂI@t›đĆGߡ÷‡ŰŢ8¶©qWÁ\FŞÓĄAXIČNFŞUyleVî¶;^;«°¸Fş˛MŢ ÎͰ&nnEµ>%ŃđŘĂ&ŰßP•hÂ[7¸űńÎÎ%ÉŮË}ĆŐgś˝śľp˛âÂěĺľ$)Ţůć§Tçě3+wë=oUČ[ľż\¤:Ĺ ŢýÖyN©ÎŮŐçł_¸§:śMőO~úg§Tç´Týżß»ÜYcĘëÓ—ş/â{?ţ×)ŐKkřě—·ú¸_UbĄ•ęś>ţÉźň rLŤ’~Ü˙î%VŞłfVŞł5 @€‚j]-®B€@přmĺ´ź}Îż:ĽřőíĆcíëĽúÄ)‰mí(EĹß/zĎ^ŽěsÖáÝŹŹ‰Š75­´źÔ¶î{á·•S­,%Móéëfô÷Ś˙;÷őđ(Óů’ 3u’ÝŢgÜsŃÇÎŁ/s·j†ő<©6bŁ'7ióĹě—oŞ:.2"zÔˇç^yÂý»Ž¶w}»ŕť-™g*±Ć†ËL˝rě^xĚßÔ˙„‘7[KEđyTQ·xŢŃ·Žx‰µ4…îiääáŽd»;r6.Z÷“‹Ym—"pÖđţ2îąa‡śbmň‹v­ŰľÔ\ţď›»•wŘ”ő íyŇřéÔŞŻ5¦@€ Ś\·äăđ€ P¶e­Ó^H§K}:ŮŁíáÎ[–rtÎQ7ęRٵOŐys¦é›ůoťsÔ_¬™/Ħݸ:ăLĆR…tś=´®GŰAzŰNtĆ™Suě“dóóďźęd7c¬Mš:-<<\6?,~ßT*3ě‘˝Nµ˝ícaí¶%¶AŚjßü¸ĂÎ[ľń7ٞisń6Éťőžůűg Ö|oěĄ?şâfš&}ËĂţ`$ČIOW§¦ Źąý˘c˙¦Â„‘ýÓłŁ´;µŇľü«9ŻN<L wÇéĂ*N¦ëÝáĹHQLÁq;˛7ĄµčZyWÍÇ#WMo™ÔN× sła‰-š¶}řŠi ´T˛‹ ěn·$×»WÓ]uiŇ©Źś6ô]éČĽ‹ęą9cĄiŮ´cEŻöC“čU/;ţžóŽ®/+ľë¦Ź·”Ş;㿀 @ACµ.h– G!@ x Ě]őÍ?ĽöŻg˝ŕ2ĺ0RťęŁŁbŻ{ß-/ťhl6e¬r1ŢëĄ45…éŮěJ>`cë$ä5oŇJú‘T<őŁŁë¬§K—Cë¦ĚÝc¬ş•ŤB۬Z÷ÓŇOvi˛W—|1p†ő­ÝľřňGú) NŮF7ţ¨ăK'N›Q‡žsĺŘűlŤ´-[VB[ĺô0—Îc%J­“B§jÝ•źĄ•şAQlłV|mă×Ô¤|¶7Sh™ÔŢHuşTž«ÖIĺ4{˘µş[›ţV­ó9#mŘUi(ÔC÷6¬ZWTZ¨±ô„¤"*KĄ•ţhüŃ4ń¸üůącĚ%ź€ @AGµ.č– ‡!@ Đ hCâý—~ą5kíÇ3źVvă®öcžxře}:áô^éś—S{ŰËĽ‚ť»vg)[¨­ńĄ 8«Ö-Xý˝Î>3w™Čľží걏B­SŘš ÁSYŰE•{Ôv®A•ĆÔ^¦&µ7çÜ%%´´•:cî‡E?°JK˛őő+h›măŘD§z±kó· ŢÖűŃŹ'Ůë´?ťö„I ëc˙»Őěr•ިsíŤ/O˝Ă–ť…켊daaaJÝűôç7)˝¬űapN{g9©qŠ˝t–ť‰}Ł#c­ŤŹ‘Ź‹nlŤ›6®Čaâ|mάŃs;´ě%çmk·ĘtŔö’ @€@p@­ ®őÂ[@Í›¤nR‘´aL˙ µąuÍÖ…ĆéĹë~rQëb˘âśó‰ŹŢ×h5)_ťL,Ř”yŻ›Ř+ÖµÍaHIcÍfĎĄ~)*)0CÖeTTd´uă»…ď:…ŞçľĽŐ69 Š ó—Z'UëţKľ0gO—łÉ9ĽbÓśţ´Ŕćî°­µ+“óšVm­ÍĚYo’č8ż›^8^iUťM:sP jť5űXvĘj^şŠŻÎUR›MaŃnŰäň 9Ă­ @€ `!€Z,+…ź€ ¸”uôŠGű—ÉEíë|čň)Ć×Řčř~ťŽ˛jťűćVmVŐ˝f«©n™_}"›Ę 7«k`ťî’PŘ=m€‘˝ ŠrŤť[őŤŽŚQY±u¦fwaURQ]şZg7rËÚ>笜–ąk›†«Í Nő˝; {úşYęS{l•tbÝö%ÎŰ·í\÷éŻĎŮ-ĂÎ&Źe§VŐ˘išSn»ëÂ<ޢ-ÉŞäŁIVŞKMęp Kď>¦Kë~7<{ĚŇ 3=ŢXŹĘ° 9ŐŻVÍ;Ů^”ţ–UŘ^S鬤 @€ ,Pë‚eĄđ€—€ä6ĺW5{K7¤/Ë+ȱ` Öü`ýnY) ŮKtËŠÍs{´h*笚f[•fÔ” ŠvŰăÉâb¬Am©o.Aj:´Î+¶Îý.çˇuJLátŘÝŘÖ(M;UĎ<ňz[SďÂSźÝ´}çzsűµ'?¬Ô ™»¶ţĽôS%<•Ngę­âéĹý9g«)kiŇZt[»m‘ąTn\»űxűÎ Ë6Î6ő&zÎ^ŞňżW~תyGtÔÝúôެĆ8@>Ó’»ZO2wm™2çµŃ.05oNżß6Q€ @:¨uA·d8 @H@GÎUgá,đ˝+n˙rYyŮł^\˝uu×lGµ—¦đŻw.ţżs_kźŇsĆ’Źl5 ;äd}nÍ\;áÎfgkTdě×wç»Üî~9¸Ç Ż}{ŹłľGuHť‚őÚ$wµÉ dŁË´ä.ÖxÚĽ7ĚXŞIkvëŮŻŘ&Sxóű­ťaĘĘ ë®ÖíĚÝ~÷[ç»Üe.Ą.]2úźîMË6Κżfş©oŐ¬ă•'üK 1N|ą×~6ë9SQłW×ö Ü»¶ěĄĐµu?«ÖýóŤsî8ďm v+6Í˝ňĄöTÁS†\­MĘö,?ő–[P±…Vé\_™úOç™z,ĺK“Ź;a÷Ú•ňotnu¨}Ŕúŕ*)ż©Í:(8ń祟ěőv @€–j]Ŕ. ŽA€@0PúÎjµ®Ńw ßůańáaáÎóÎ$¬ŢmŚű””U»h]ę•ůá¬#˙¨Ę’˛b+źąŘÔvŮ«ýĐƱIJRa llťjTvŞu.Ű`÷ČŰűŚ#zťb;1…ĚÜ­V­SÖÔM;V¦µ¨‰đ’MAq^Ąäçr_Ĺĺ!í†xTëúvaŐş·ľ@čÚ4ďĽ={>Ř^´#Ő”c‰¤O˝4ĺŽÇ=3´gU"]kď,\6ćn)ˇf_°bô&>Ü+6:Án–exxäÉŻPˇ}Ëž+7Ď5÷ŢňŇIÚ8¬­ĘN OMÎCýŚeÝ?Ăę~‹‡;¤ú]uÂý7żt‚i+,Ţý=ŘQ@€ lÂÍaü… "±'ž8č2ëYiY±SŞ‹ŽŚűË™ĎEDřôG˛°°đkNz0±q Ű[ť áIQ5´3Ő¬SąS·Îm°+7Ď·1hj:úĐńîăqČ©rĎÖ+‘…-×»pţŃ·*Ą©˝}SĆŠY+ľŇŃuv˙ożÎGďuş1¨LŁQe[VV˛#gă–Ě5ö^ŹmhťtĘ#•É7ŞÚ]¤:µę°?µimĘKűă’Ź\¤:µ.^˙łµ9ŕ-ß„‘7;§f\jޤő÷  @€ęM ćÜőî‚!@FvÓYĎ_těßăÜňşÚé¨˙´ŕv %gtŘ©CŻ9yđ• …ł›Ć'˙ăüwOzµ©‰ ʞMqް2[é±0¤GUĽ•Z»µé/߬™M4ˇĄ_čßy”múuů—¶,7v9Ö^Ú‚ŇJôn?Ě^ţş¬â–Č'm“ďĺâxčň©â 7—»b˘âÇŹřËÝ~`…Îţ]Fťyä{čbé¤ęҤËżô‰kîQ}~ź5ĐFŕÇ®žqú°kM͸#&ŤqŁÓ q¸běż®>ńA{Ë;ß?¤˛s×ȬŤ{ÁéžŮ +Ń3<¬j]lkTD´řşß®甝O‚6ß{ńÇşŤi_!ďvmÓ˙‚cnżç˘Źl'ęÓ–)@€ °}?~%(打đťŔg[ţ:=ýß#Sn:©őľß…% C@˙Çş)cĄNËÎŰѶE7‘¦´¤ŢŹ*SZŘU[ćoÎ\ĄôŁş%dIfĺnWŽťF—˝{Gł„Ô–Ií:¶ěí11n~Q^zöƢâ‚č¨Řä&­mNďč´4 Ä[»m±’W耼έMMjď~‹˛O,ß4';/˝g»ÁJ§ë}íÜo?€5JH"éShďőOŹ0žôďrĚĂWÔd/9€î14B˙Ś …UfŽ€ö×?bď‡!€ p¸#Ĺ­N˘›ň–vKëŻ÷AŚĹ—©5Kh©wŁNU2“—[\Ö>Ą‡ŹMZš6ÉťőöŘj+Ąęm/¶  çÜ×~W~–ńđ†3ž;đb•ĄŮ˝đŐíÖmé’¶L€ @ ( ÖĹ2á$ @Ř€68·NîśQť˘÷ţw'ţď›»• CqšYąŰ¬é±ý&Ř2@€   ŔąuA±L8 @€\ L<îQ‘±¶VŮ~gŻřÚ)ŐťqĤ]=ś?hoˇ@€ €­ ŔEÁĄ€ °*÷;ť<®ŕ °ż4ŽhqtK~đ÷nĆŮg»űŔĄ_ľđŐ˙-Z÷ŁKgJ:qý©Ź{ŘľÖÍĚx&Łh•Kç\BµĐ? kk˘€ ŕ;Ô:ßYa*b›hŞógé*sfž€@%Ô>¨u< ÁEŕ°Î#»fƦ+×ďX–™łĄI|sĺ±Un“ŠýńZ”ýáňÜšdÁţč’> pđ0˙<řçÉ !@ Á Ö5Z:ZĂ’Ż‘ď…e»‚v8Ô“@B¤ŽzĎm¨/´]ő®ďÝŢîë›8®u\_o´A{Tgţ1ąg5W€ :+//Ż9¦€ @€ @€@ ËDˇĄc@€ @€ Ô‘j]a@€ @€ #Ŕąu †–Ž!@ŕ`'0sćĚ+Vh–}űö=ě°Ă|ź®îZ·nť±ďŮłg۶m}żËz(--ýöŰoÍŤŃŃŃGuT=:ńď-›*_¦Ď=z$&&ú·go7n4ÓoҤÉi§ťćlĄ @€ hPëmEđ€‚ŔÖ­[?űě3É@rwřđáurzŐŞUß˙˝ąE j]ťčŐø¬¬ě›oľ17&$$‚Z·dÉ+ žy晬Ǽ|Ľ%%%eýúőyyy˛OMM6lŹ7b@€ p@°ö€`gP@nRŢ{ď=#ŐuéŇĄS§NÁ=Ľ?¨ ÄÄÄXAů«ŻľĘĘĘ:¨§Ëä @€@Đ@­ ú%d€ °˙ ,X°@͸VńÝ mĆôÝË}' ˝ź‘‘!˝ź`Č!ć©+**š:uęľ#Ą@€ †#Ň˙rm8¬ô @1ÖM›6ÍL°eË–Ý»wŻëdGŽ9`ŔsW\\śÇŰ5Š4&˝<¶úXY^^îK Śđ±Ďşši"ş%<Üő„ĹĹĹŞôe\ßÝ“ĺQ •TwóÍ7kDy⠽α¶özcť „.;;[[wŁ˘˘özŁ÷&66vĐ A?ýô“ú™7oŢŃG­í±{í@€ Bµî€`gP@bË–-ËČČ0Pr ŁţLž<977×T*é„ó˛ůóçĎť;×4uíÚU±x’K.\hjt’ ˛>çĚ™łhѢôôtł]±iÓ¦iiiýúőëÝ»·™)33óăŹ?6ťrČ!íÚµSüÔ† tTYëÖ­;tčpě±Ç6nÜŘŽb k×®ýůçź•‚@c)ËAçΝǎűÉ'źHŠ’†7nśË-Ţ/g̱rĺJcsÖYgiŽ’‡ä›ÔÉ1cĆúÍ›7÷Ýw[¶lQ˝¤ş6mÚčŘ>AHNNvé|ńâĹ%Ką'ąŞYłfÚq,zÍ›7wZJËÓ!€Ë—/×I‚………IIIęPślÍJJJŢ}÷]s)yôśsΑźňÖÔěůçźoď${˝ţúëf›łšÎ8ă ˇĺ^’˛&zvP­‚&n.µrĎ”MŞkć^ČĎĎź2eŠNšŰľ}»<—-Z´Đ:wÜq*¸ŘË@çß­^˝Z`%ÎęX:!Ň\fÍše,uHźVVĺţýűµNf*(Ý„KW\B€ ÔşYÜ€  !`…6yÜ­[7ă·„' F¦\PPŕTëfĎž­´¦I™ 㬱Ä5Ӥȯ·ß~[ÉĚĄůÜYů’nĄ%ąG¨3©T¶C)tJ!Ç4IíŇK=L0ˇcÇŽ¦Rź’?řŕŁIéRJ“$EéwöP3wůĚŢ[[A‚”uăóĎ?—Öćb)]Ia‰&ÚNMrRš”^4/ţ˙öî%ÔŽbm0˙™(N1¨“HŠ(â%Š$5!Ä#bĽEÁ‰‡â@‚˘ ‰Q#x!bĐÄű]Ł‚/%ŕřů >ę¬Ő{eÇěł{ď˙<ljU×ęę~z ÂËW]˙ügí¶ŠÄ^q«Ż'@ü×˙ýŰ·oßćÍ›ł‘n;ôçźîÜą37X#›XϤ7nlbɧęÂRŞ–Á©,ËÎĽéo_üĺ—_ęQćz~üńÇÖź7ľµâÇůLÔöu­'“$‡=őÔS›Ö9mB·vňÁżś;Ę]ÔŃ\d~0ůwđŕÁüÝÖˇ<ë_|±öNhçW”ȲÎP»'MbŰöšČEnذaFţ[Sh @€,ľŔ䲔ſ3 @€e$x+ˇI»ŕdI@Z»2‘|Lŕ’ň¨Öź-Xkço?¬:[#JţMtÖÇýű÷§¦Ż>Îh$Ż©¨®†>|8!N[ šÎÄ[)¬¨®†UTW=»1Ő%˝JÉXEuý™!=óĚ3ő*ŔßőQ]?2ŃUn¤]gNőňË/÷Q]?2gČČľ§o'Yë÷©,/cúvJSÖ7˙‰R°VK›s©»wďÎ žÖÔůÁTÁ]uV㯿ţÚ±cGmŐ߉,sGůuU˙®]»ú¨®úĎl.%‡mL~_¬3h @€Ś( ­ßÔ °ü’q¤t®]wVVuRĘÖZiU%¦IÝV“Şş Ĺ2&Ë9çşçľd/ď»ńĆ7mÚ”÷âŐř>¦©ÎÁF®*;ŐfAn®°¤z®Ö~¦Ć­ú38%`Y>Ů®ŁÇŢHÚ•µź űĐ*…{kÖ¬ąüňË[Ą[fI’ŘÖi:t¨®3ý©M[·nÝęŐ««®0hJs( f–¶+Lmăąçž{ŐUWU •ţf˝m0ý·ONű„®OEłz4_ś˙DąÓőë××\Y š<1Ĺz­'™gšż5`˘‘çRż®<—,bÍÝÜT˙2ľ-¶oĄ’±9´Ź©§»řâ‹ó>Ä‚š8y>ł:ű۬N  @€Ą `%ěRx ®–Ť@_}VIS®>ŮJŇźŹ?ţ¸ÝIŇź„Gi÷™HMÜp¬™Ä'‹=[¦“ĺśyyYÜO=ńő‰Ź‰·˛Ť@:mßľ˝Ň˘L‘Ś,u}Ę“7ʵjŻ NaW_ 8qÚŁýÓ&?j!fŢWÁY–—Ţ{ď˝-JP¸m۶vć\UjÓ˛ ·jó¸-[¶´jµŚŻ1)XâĹ,ć­KĘ}­]»63iĘô˛˛µĘŮňÎľÖ7Î9眼ěŻŐ!fťix“Ą&+¬b˝ĚŢęďŽj˘<处µ–6ŰפY;#Í•|őŐW58Ëx/ĽđÂö1/ž{ę©§Z;yq~Y5ś ±çR·nÝÚ^M”öů矯C}Ł˙ĹÎ˙çÔźA› @`¤u‹€l ř˙#4§n¦Ď>Ň٧uU[WE[IߣÔw'ŮŕÁlť©™jEa eęëăg|LpSk-S×–b«JëÚćIÍRý×Î ,\­ťÁ ¶’îÍ8ůüĺfSVăk_Žô$żË‹ęÚˇş’|ĚJϤlýČÄUµ°4»Fä Ű·RG–F?2ç©}úâ˛,[ž+­Ë6©y˙]Ţp×Îę‹.ş¨2Ótć¶SíD ÚzÖjčvţl:‘ZÂÖü›WăUfŰţŐ‡ůnŠ%ëí‡y_ŇşŚŻóä!¶¨.= @SĹ9şöżŘţ—\çŃ @€X ŇşĄđ\,>ă賏Ü@ʦ˛qg«ĚĘ{ÁŇHÁ]Öź¶{K0TÁÓŕÝ&ĘűÚ9cŃSĎfŢš")Oµóz¸$b}ö”kîg˙Ů|ŚŤ~EjNŐGK©ĚçĎV ^ô;]$ăkí‹Y[›đ¦'›W ž0o‚ěoťÉă*­KŔš´®ŹGs4ĂţĆDÉÚ®»îşÚ…6'ÉĂÍ&ą}Ś8}U©ď«Î<—‰ÁYÄZi]ŮCM”ěĺíxGLëę—Y“j @€,iÝy.–ź@•zŐĄ'ß©u”}î“-ú©‘ÓŤäMsENÓgô$*ęŹNG„µÎ4ĂRÓמHúCGŰ>á„úŻÔëŘúÎévJäú núâë+•kŐ?ŃÜÔ˘Ćäý€™˘ť*kuećo;št,˙Ňţ{MÜ~ÎÓ§˘u}cĆsɰ‰'•ž~üÄOq®çŘźä×Ó_›6 @€Ŕb üŰ˙Ńsbs @€ĺ(P[Iäâ§ë¶Î;ďĽ={ö´Őť}Z—H(ëgÜo2ľ>ŞË+Ő˛éé§źž2´çž{nƧMěZopËČ,–ĚŰßúť.˛¦˛?C_×÷˙ŤöÄ^ 'ťtRť$\pA}ě«V­Ę‹Ţ_Ő—·JBs‰Ň2E-Ín ýyŞÝÖĚÖljFŇ«¬ŘýúëŻÓź¨î“O>É,mLŰ_"í¬,>Ú‰đ˝ţúëý\ SjwÇwĚ•Łep_H8ńs´ďilžcufőôĘ•+kĆąžcź<öżäú˘ @€ŔRÖ-…§ŕ @`ŮôéĎtZ—d'´‹}L–H¨/kšľŰĽ˘®:S…— aŰÇZ§YGŹŘȩچ md-źĚÇvń}*”»Ů‡ˇ’©Ú%ăłí€+VÔW’µ%‹¬ŹY‚š¤¬}LúÖçzyă^ö©h‡˛©ÂîÝ»[;Ëlo˝őÖ“O>ąŇĆśżöĎM†őűďż·‘m‰Öüí–Öĺč|ĐƤî,Ákk'_;Ú‰Ţ|óÍŔNL—-}?˙üóŻ®ë‰’ľe»Ű,hm'IĘVŰV¤§ŤĚs¬ßX¶§ČŤ6GóÝţí{ýeôżŘţ—ÜŹŃ&@€]@Z7ú#p °śúФ~ÍfÝC’Ż> kýG\ŰÇ(µh4/&űôÓOëĚý† Ő9ÝČÉ—^z);˝ć%tŮeµö^ČČl>ż‰S–L§}w×®] †R¨•E Ů“ˇu.řß¶Ş´ť6{hdŰ„ě‘;JRööŰo×t<đ@íŰ·Żő8p ďÝËíľüňË–ŞĂ´sÎJëvîÜyÓM7%°Ë˝ĽöÚkU…—YÚŕúîD#Gsďď LäĄyTýđĂąěún’ľŞt{÷ÝwóúÂ>•«aidńlż;D»Łv S—Wf $Űeď·ß~ŰΧůěłĎćäÉąÎőSé±ý/ąż m @€Ń¤uŁ?@€ËI {qćaí•a©–šľôTŤ%˙ęKşÍŚr’Ş K;…Q۶mK:ÓÜĄżV}NO:ѓʲ;vLtć˛ŰöŻ t®ľúęZ`›{IÍ×Äŕ˙Đ*Ur)kg~ë­·öîÝ›vSˇËϵĄĆ­¶PHô–ýő¤‚,ŰA¤'‰d*ÎZŚ•Řî±ÇˡJµ2 eqŮU¶˙ît;ÉR?üđĂţP¶ÎůO”Ô5OżN•ř,›K<účŁ-ÍŻâŐW_ť±öšk®yňÉ'Ű׳ČO«ŹŤdÁk×®ťčě?ć§ŐçŹ×_}żp¸9Ř®•ł)Đ“Ö é$@€,iÝRx ®–“@^BW—›X­Úը̚^ŰGQí]cÇ|öIč+ěđĄ"ďľűîˡvć”›ő//«é&gź}öĄ—^š8¦úłÇĹćÍ›/»ě˛ęI#ŮŮÍ7ßśŔµÝKO;í´5kÖdXŤé/˛:g7Ú˝Ě5&Gďąçž¤QŻđËť®^˝úî»ď®kN&uçťwöď×kçL yűí·çkŠěVq×]wMGrɰRÂVďĽËů׾•ĽŻľŢaŻ7ÄĄ'çoĹký°ůLô믿f‘o}+7Őn!•€ý“}ď˝÷j±sÜg˛‰önąĺ–GÖ©ŇZÂÇ< ţąśrĘ)!Ím¦‘“ä˛óăLšY7ž/Öř¬¨­ż‰#űIű‰´  @€FřźąŢl2ú•ą °4RŕöđĂ·Ŕ%J·ÝvŰB]gjÍR{•z˝äk©¶Ëßyž9ewŹ?ţxś &Á_6!Mu^.5ĺrY…:;šIIZ Ú’7=ýôÓí< {kýŤdßŐ,\ÍĆŻIĐ3%ÉŚůr I—221erşDr©qëĎSíüg¦ŤL •1)Ó«BĹł ŤĹź(?†<ÁÜQbĺn÷’e¶yĘíAoßľ˝^ž¸eË–ü–ň•Ź>účťwŢiß­ÎÁSé$@€WŔ{ëĆő7;,?gĄx­íšÚş¤N}ĺÔ±ÜOâě3Çr’öݤ6+W®sRGB®Îé pHYsgźŇR iTXtXML:com.adobe.xmp 2 5 1 2 †Ň®$@IDATxěݸŐŢÇqénÝ]‚H &¨Ř×kzMÔk{íş¶^ëÚŘE€¤tww7ďO÷}ÇabíŮqćĚŮçëĂă3{fÍš5ź5{Îě˙¬ČwŕŔCř@@@@" ?e  € € € € đ‡Ń:®@@@@˘"@´.*5A9@@@@ ZÇ5€ € € € €@TÖEĄ&( € € € €Dë¸@@@@ŠŃş¨Ôĺ@@@@@€h× € € € €Q Z•š  € € € €­ă@@@@@ *Dë˘R”@@@@˘u\ € € € €DE€h]Tj‚r € € € € @´Žk@@@@¨­‹JMP@@@@Öq € € € € ˘uQ© Ę € € € €Ń:®@@@@˘"@´.*5A9@@@@ ZÇ5€ € € € €@TÖEĄ&( € € € €Dë¸@@@@ŠŃş¨Ôĺ@@@@@€h× € € € €Q Z•š  € € € €­ă@@@@@ *Dë˘R”@@@@˘u\ € € € €DE€h]Tj‚r € € € € @´Žk@@@@¨­‹JMP@@@@Öq € € € € ˘uQ© Ę € € € €Ń:®@@@@˘"@´.*5A9@@@@ ZÇ5€ € € € €@TÖEĄ&( € € € €Dë¸@@@@ŠŃş¨Ôĺ@@@@@€h× € € € €Q Z•š  € € € €­ă@@@@@ *Dë˘R”@@@@˘u\ € € € €DE€h]Tj‚r € € € € @´Žk@@@@¨­‹JMP@@@@Öq € € € € ˘uQ© Ę € € € €Ń:®@@@@˘"@´.*5A9@@@@ ZÇ5€ € € € €@TÖEĄ&( € € € €Dë¸@@@@ŠŃş¨Ôĺ@@@@@€h× € € € €Q Z•š  € € € €­ă@@@@@ *Dë˘R”@@@@˘u\ € € € €DE€h]Tj‚r € € € € @´Žk@@@@¨­‹JMP@@@@Öq € € € € ˘uQ© Ę € € € €Ń:®@@@@˘"@´.*5A9@@@@ ZÇ5€ € € € €@TÖEĄ&( € € € €Dë¸@@@@ŠŃş¨Ôĺ@@@@@€h× € € € €Q Z•š  € € € €­ă@@@@@ *Dë˘R”@@@@˘u\ € € € €DE€h]Tj‚r € € € € @´Žk@@@@¨­‹JMP@@@@Öq € € € € ˘uQ© Ę € € € €Ń:®@@@@˘"@´.*5A9@@@@ ZÇ5€ € € € €@TÖEĄ&( € € € €Dë¸@@@@ŠŃş¨Ôĺ@@@@@€h× € € € €Q Z•š  € € € €­ă@@@@@ *Dë˘R”@@@@˘u\ € € € €DE€h]Tj‚r € € € € @´Žk@@@@¨­‹JMP@@@@Öq € € € € ˘uQ© Ę € € € €Ń:®@@@@˘"@´.*5A9@@@@( € € €ąQ`מ}Snümîş©‹7­ßşkÓö=›·ďŮşcOŃÂĘ•,\¶DáŞĺеmPľ}ĂŠ Ş–ĘÖśł|óé«'Ě۰fóÎő[wŻŰ˛kă¶ÝĹ ¨PŞHĹŇü«Wąd·•Ű5¨P¨ Ťf˛µ*ČLČwŕŔL8ÎÜ/°xͶW~ś“âyĚźŻr٢ŐĘŻ^ľXjĄĘ—,’b†ą}÷«¶›şĘó,„sJ‡ž›X‰@v čçÄ—c–zĄVV‰-«xnJeĺĘ ;ú<2Ü/‡'/9üf•ü¶˛\$°}×Ţď',˙mîúńóÖ­Ú¸SżŰ·ěŘS¦xa}éJ+T˝BńŃŹ—‹N'íEťşxă#&ťm‰"Ë–(¤đGÝĘ%[×+W¬0/ţ“¶dÇTöď?đÓ¤Ż˙4wř´Ő{öí’ť’ĎďZç’őkg•’>`š) 7ĽüĂśÁSVęžd}Źş4Í:·kí>íkćĎź/Č.Ž4?LX®° ceěcţ|ůn<©qĹŇE=·˛r‘bsQeQÔ PPéĹďf§ń$ő׺}Ł '^í´Ž5őű?Ť9碬&-Řpăă= |hí˛Dëż2«ĺ{÷»>wYŰłşÔöKĂzČDëň`ĄsĘyT`ņ'=<ü»voX­t%ŕ´@ AµťůdÔ"żťvěŢç·)S×ÍšU«®‡>ťͲĺťRÍ[ąµ×Cżľ«{»†ňÎYÇΔ;C85®n"g<>"-ˇ:«Ŕ_ŚYşm×ĎďÝŘESRX+Í ~]rŮ‹żŞŇÍÉڪС jŔÍÇ/nťĐŽ$F  'lW.§†€S`ő¦ť§=:b÷Ţ<÷Ű Ág@ řqâ Ć^ŚB}*‚Ö“#ç­HC»§(śešŔ-oMś0CÚK5pŇĘ~ďN ­†™VX-˝ˇ:ëĐŻţ8ç‘ţÓ¬Ź, €@ Z—Ç/N?Ď ,^»ý˝a óÜis €™+0föÚĚ=ą\vf7đ¦7˝'wĘegBq#&đóôŐŽ\M…zsđĽŃ3×ÄÍ\s—ť˙ô¨€óĎĆÍÍ3ÁŁý§}üóBĎM¬DĽ&@OŘĽVăś/‡<ýŐŚ »×Mt„ŕ@¦€y€ö|ůiR˝tV颚‡qďľ$G”Źć‰GłTç­V`ĺf•˘YŹ 7ě>~Ţúŕ­CÖÖ¬µc欝4ŞUŹ4›¶ďŃx#ŠćT×SŤţ_ˇXÍŠ%ZÔ*“łűöď=síś[VnÜąjăMBÚ¨Z©f5Ë6«YZ…4ȧwSŇazoł–ůN4¬?zž rÖĺJ~ţňvíoýÁ/±ţ*íÜ˝ĎýhćŇM¦¬ôŰKëő§ůË;»)–mHcߤvvźŢzd݇NY´ŃľŢľ¬^·Żü8çćSšÚW˛ŚyJ€h]žŞnN6 ^żĽ‚\úUďyÎë·îö\ďX©ĘŰCć3n™~±ÄW}ÎîRű´Ž5+”.âČ'ŕÇK7©—ÁOŠJ¬ÝnŘEçŐ§CŤľ'5iQ+N×`C&q7M[ĽńˇO§š“]Úłľ=JóĆ ą/˙0Ç/ńčGŹ3ĎéˇÎË×˝>Îo÷wtŐĎ÷VĂA˙qr“óşÖŤí2vöÚű?ţýçkÜ9hMÍŠĹOjWŁoďĆŠ’x&HďĘ컢¬ÚzŃłżěđżůś#jë]wěDôŔ­aްÂ~^znŽÖĺŕ•ůýřĺĎ|=cĚěuöŰ—ŐŠöÜ®uTzô·Żw/+Ô~úc#6ďŘăޤ5Ď\ÚćČ˙ţ“Q‹¦ţ˙ďc_·C^ú~v–íűţ·őĂô8޵~Ë.őÓ˙rěRĹI›ěŐPâ„Ă«ilÍ^m«Čźd$Ťµ–.ĂwV§ź7Šěű^„Y•ökĂZ¶WŠVnńą°µéąof)"lí¨sלĐČ…™˛pĂÓ_ÎňűJq¬­űĐWO}9C˝}h•›NnŇş^y+Ťa!ű*ĹpĐěŘtÔˇ•{·­ţŤ[$…87[µĐ€!ď _đęŹsulr¬WĄäß{Ô×Ph ń¸·jŤý"Lď­Rď“^ýiΗc–úŤ’¦"ÝÚ§éŐÇ7Ę˙g0úăź=ńĹtĎBŢ~Zł3;×vlĘÖ‹0›nš,ÂqÖÇĂ|†dµŘW/­̆çĚ%k·5¬VÚľ‹–ŚYęXăřxç͇ębűŞCĚ+W·?˘ßŔý|_7ĽţÓ\˘uj>"§â<Üç) NLP;ü‹űµˇ«/4ł˙w†Î|ŔtűĎłŹ†ćŐżŰ˙;±g«*˙8ąiÜţöÜôŇřáO§˝;lá‘ĹJŻä'Łë_Ď–UłÓ;UkSşVlŘqćă#5h!C˝uoßđ/Q×mŮ=gąď[߇ř>‡Ĺň׸݆ÝýB®†*.Łś­ŮvŰ;‘)ÇiĘ\Ţ2_?5űžÔ8űĆĘî+jŇ‚ ~/¨Woúß/ƻߟüâwł\c–R^™jîˇo“‡˛ ăą Z~´˙´÷†-xň’ĂOhSÍ3MlĺÖť{ÔÔĹ/˝»ŤB„ź˙g ěX>ŚXhĎP źú[űkY­^řnÖs_Ďň Z)µ |>˝X˙4-ĆKWµŘhÂĘ!íµ–.ĂwV…ĎŽEv|/¬J«NÝ Á+Eˇ:ěě9ôlUUżŘík¬ĺ•v<řÉÔ÷G,đ˙ůlĄýß‚F‰UZ˙Î=˛Î=g·Űč);*ĹY¦°>·¨]Ö­Ó wć‚„ m/€‚_7ügÜĆmX{2kYOPw˝?Y×^çčXýŞÎą ‚_„Áo•jcřĚW3őôĺ÷§?V<ý•żó˝ÉýG/yńĘvja­ą üž"6nő8ßlşłőć`H-`\ŘŞŮc[WýĎŔyÖGÇ¢5ŰÝŃş/Śő§ęş^É 0׼VŮËŹm đ±Ł ÖG=ŽęÍS.mDoť  ´Ńş¤éŘH čOs`ůŃÜţEű^ýĘX…Ăüv7¬WYuŮ8iĺ-}šö;˝yě­Ż!˝6Ťžąćś§~ţmĺ¦^ ú§ŕŕűv.Q4mw35ΊŞ«S©Äçwt-SÜű}»UÂ\ł|óI×s^2(8˘†„æ®z˙]Ę–H˙I…|Eyžň??¬V]ž›üVćŕ•©ß˙ç?=jÚ’M~es¬Wçťsźţůők;¸ŰP8RćČGuÄ>çÉź ±BżRM\°ˇëť5h÷­}šą™(ź¬5żłňúDżaVeöąđ Ĺý6wÝiŹŽđlO¤0Ž\řÍoKűß޵CŁ8ĂQ™sK´RĚąeëÖšLý1cďŤü ˛¶^~ĽâßŢŻZŻŽjŽ÷ŐŘĄo÷í¤ŽĎ†”©oŇ[u.Vo†€Yé¦ÚóžÁĂłaú $.Âěľ9”)^ČŻĄá É+věŢ[¬pĐçŔ+ŽmŘŔ5o¬e®6•ÖrlAĂ)g„Л㤛ß|J5 3ĽGúű*˘uŽá#yG É&y3E — ¨çă®=ŢÝ`uFîgë45NĘ…Ďţ’\¨ÎĘDŹz3¬.BÖż˝šîóČ$BuV†zĄ|Ę#Ă7mÔ·×ÚËoA§˙·˙ę×J+¶—şţ č×M3lúe’ăëőDŰűˇaCuViuÍwß5v°Ö¤e!ä+ĘłĚď_đď×x&łŻĚŮ+óŠ—ĆŐĹŠ­řĂ•/ŤýqârűYDaY˝ŹŹţç $Bu±Â«=Ĺż>›¦.AÎ%gk-H #•&ŃďEU>”⼧üKJ<"/ŚâěšträôŐÁwq¤L´R»‡üŃb0—$dí×~š“\¨Î: 5 >㱑©Ô¬••ß‚¦ĐŐKšŕˇşX>j›Żg¶ť{|çDö;śa}a7őa÷+ó‚ŐŰô$ü9PMkŻ>ˇ‘ßżz•ťŃşÁĆëÔ+Y6ř•-îz=Lvoaę#˘.ůq3!dŞŃşL­YÎ+O h2ż=?Ú@p¸˙đ:ęŻńÝřôüŕ×ol˝<7cĚěµç==*îx†b›Ô·ß»“â& ’ŕÖ·'ţ4é AÍ{i"µŞs?Ě9’ĺěGőŁŃ ÔI”AoŹ/ů÷hĹ×’Ř×o—0Ż(Ď2¨‘é˙MěňČń+3Ńl±WËÖľ˙oďÓę ćJu…;ý±‘ępťâAŐ_ű­Áľ—b™çx­ĄxŽ!ďžč÷"ĚŞ ™B‡ű}ŃĆÓˇŔGę‡VSe…u&Î÷íun8D˘•bČ*śMjNe8_Kíµőrç»Âý†sŃ&…&Żzy¬Fľ3'KzëŤoŚ:uU»O_˛é«±ľ3™&šaa87C´Nç¨ń;ŢöăcźOÓ¤L‰žrÜô~˝Śc;jĽćG9«‹s`A{‘FÍXłÇgj{2–@ #ÖedµrRyT@CřëÂ-oM8ęîAë·ř¶5ëŇ4Ëo¬7ĺđČgÓŇŧG[ĂČ ępŞDIż™wňýá Nˇ9C,7ő”|c)"  .>ĽůśšGŐqĘŮôqô¬µŹöźž®ĚĂĽ˘üʬa•‚Ś•fíÁ+Ó*[Ü5¨L´ĂoÜ<“N ţ†ęSŻ^şIç`ßńć·&¶äęZłźfhË }/¬ĘЬ闰.Ôí»öYkR\Đ+(e¨¦R‰ć“PĄ$šyv¤WAC¶žŃşµHŇD†!Ď ĺwoŇÝLăoş×§ľfÄ´ŐzŚI=źÔsHô" íćĐ©q–ůě4β^7˝î›#űýtĎ“ŐTăč™w ¸UŻŔ )­!Ś iĚ›Ě=ëÖ¤éŕÍ9°2U h˙L=Î Ü"pÁ3Ł4q„_ióŇ »ć1b¬}8·ĄµěXĐ”¬ć©éă~Ô >;w·)ZŘŁäz×dR¶¸‡°<ŇÚ·˙?©Ąµ2ř‚ĆźÖ,†ôůóĺ{óúŽÖĽ™†”ą}“¦–;çČÚőýGu ~‚a^QÁKeNµ+Ó\Z÷Ö/Ć,ąăôćîőÁ×.”ž7yo žožä$x‘”R-o}{ÂčÇŽóśÍ3[k-] ťo¤‡Y•áźř“_LWkŻôwĆŇÍzíqĎه¦7ŰHĺ¦&]~]j(’çTŞ!kë/»ů©FFµŞ[®b©"ęŬ ĚôĄ›ĚS(¦vÇi˙“7]wE0oy{‚A2Ę›B»9śÜľ†Ř BˇÁLôOsËč ëáőËwn\±sÓ¬ +jÖ »»ÓĚ]iŠÖĄţWC!knzCŰ^M•ŁůßÝc dĽŃşŚŻbN0CŇŘşöÄF†9ć5żÁ«B©"˙<«E›úĺÇ)X źž~›»ţŁź~ű›oĎŮ?WniQ«¬#Ű%k·iXÇJÇÇE j"¶ĆŐKéWşĆđR73‚†]SŽęĆA݇°>Ş/­úY=žý{›“ÚŐđÜń•z lT­”ćÄĐĚbAzČj´WśűřĹ­S?ŻĐ®¨Ô‹Ë!jWfŃBNíXłUť˛Ťk”V8~âü _Ź[jţ"(L îi•Ęřń×ęŢł=żkÝX˛˝ű÷k.ż]ţ}Y[ű”5ŐĘ˙5ŁúS?űőLżcë5XĎéťjiüě"…ňë¤Ô<ö?ćéűî·—Ní‹1KâHݵ–G™sŃÇ0«28Ë}ç¶Ľńä&VúKź˙ŐŻýËUÇ7<Żk+ĄęTúk\*5G}2Ţ«Š:őéPă°şĺ­]N-‰¦,ܨ)57r§ë˙o=ęŐ¬™ż±ŐrđšWƚ۬5®ćśx7|m5°˛W˝}Y7ÉwoěěhÖ¤óŇ őĎ}3Óg&’CÔĽî—™kŽřóŐ`şî źţ˛ČÜJ1VěúUJ6ú“tę⍩/`§Hz9Ě››ÓwP_˝ŕĄŐĽşztÔż§żš©®‡Ö.Ó©IV—&YzíęJöĚyű®˝jµçąI+őÇKŹ©~[®×+¨ćµĘŚ™í;tŚž·fE2Č0˘uVˇśľzRąý´f†F7zęš¶x“ßţz˙üŐťÝ+”.b%¨VľřÉíőŻĆ]ďMzá»ŮÖzÇÂĘ ;[Ôr¬;äÍAóĚ}`Ďě\KѢňĄţ:śúTjT ‚ćĚËöą˙čĹ7ôţë÷›m‹iqÁŞ­g?ůłyř<…)/>şž)—Hn+_Şđm}š]tT=kÎ\ýŇ2eĺmďLÜaě!˘A¦ď>łEŇ/˘ca^Q‰ňK&«´BaůÖoÝ]ĽČ_ #ueę]ú»7unU§śuvŠmőíݸ×CĂĚ?í¶N%Z§Ż¶ţĹj.GÍ­íŚĹÇvüfÜňEk¶Y%w,¨ÉĂ絼ň¸†VC95OĐÍäÂŁę)`ćĺŃţÓNi_Ă1?lv×ZZ@Ńüčů˝ł*łčŰaolRÜ«w,·jĺŠŮżDŽCh6Ć˝ű|ÄJ¬+üt©ekŘ{ăĄo˘f3ź˝Ü·ŃŤâÎŻý4÷ÁóZ9ŽčGĎJI4“4¦WĽrŔ%|ô»†ö7gŰą‰snܵ÷ď? ¦~…|őšöŽPťRj˛űĎmYŁBqCc7ŚbŃştÝţ;4ÎËËĂë•Sxş[óĘÖą¬ÝĽóÁO¦ľ=dľµ&[ü.ÂoO_Ú¦Ç=ü©f=sN^¸Q˙4ßHüůŽl–Ą÷Ż˝ŰVŻRLž9¬2ެV™IĎk?\µrú›ë­ŰL´Î®Ĺ2yH௟(yč¤9Uň¤ŔŰ7t:Ą©iŘÜúÉwŚŹëNllŐŮ o<©‰!Z·Ć5 µŢ]żc|6Ő˝Ż]ÓÁń\_ľŞ˝ž± Ťň~ť˝ö{É,kP›3i~oyőń oéÓ,@fŃJ˘!™żą«{ŁęµnĐŹď4KĆYOü¬ŃĐýJ¬¦¬8­Ł+Îę·×úĐ®(Ż{Żk×°ÂĄ=ęťpxuĎ÷ꑺ2T-5đţŁË—ü+`;Ą¬2Eżą»{Ű›ż7´ëYł)çźě5 ŁwüąV=Ż:ľ‘;"#ýďčÚţ–6lóySˇL^¸ˇµmžśHŐšűŚrĹó÷"´Ş ßjÇî˝og/ŃTŹ˙ą¶Ł= o˛~ŐRčyńsż ńo˝őÎůę5i˝,±ö ˛`®” 9$—F==«zĹ/¤SÓl˝ÜRĆ m´›T/mß¦Â„Ż­¸żßťDĺ©â?±űYGÔşëýI»öxO¸”č„Ý抧†‹5¤éÖĽŇG·á¸+–.úÜem5c˘ŠjAfŘ=•Mq/ÂoęŰqCŻĆęâšĘIi_E҇M]­ő¦YŠĎ:ťŚ•U©bIö®uśB©â¦źäćgTGV|DLHĎŘ4™$Âą ©—ľ0ZP¸cgÖůę7°µěX(SĽPźŽľ‘ľ‚Lw’]®‘¶ÇĎ]oxňP·Í§ţv¸#Tg•çŠcXËî…KL#^»Ó«˝ŢůOŹňë?KV—ZŹ\x{ßčŻQ{G¨Î*łÚ č×5_>k…ÇÂX˙N©˝V…vEyÜcťžČş÷čóşÖő Ői‡č\™*Ěm§6u‡ębgĄvs}:8{ÚOxÓďP—=M¶.kloC§ž¦5J+îWťÝă—za«Ď»}ßHŐš˝`ąeŮü˝ł*ĂűiâJĂxŻj|«ľŢŽ(‰˝j}¬‰Ţ!ŮWÚ—R˙~‚ďHö”ŽesĄ8§÷Łš =>`şűß_ĚĐ«2}ű‚„ęT¤3»8_ö„ŻmxŇP ďýpŠžz8BÓtV/_ĚóźşFzî•ÜĘo[fŘQ­ţ{cgż‹PMţď<#ĄQJ ‡Ž{ćČÍAĄRłVC±ݤKşÇ=/ńWµI÷Ü×ܡT˛cá9ŽeŽúyŽţěČŹ ‘¦@~Fž0'…@žPgź×ÎŃđ®X%ďШâq­«&;ÇTMAÎ=´+*Ha®;±‘šSFäĘT!5ć´m4”VM~Ţ:ß/ÁŢ˝¦ž}~{Ąq˝&§6 huÓÉMÍ!~ýNľóÝIk|úţ¨kŰő˝ţúµťZK#`hYĹý^„Y•ˇťµu Q3ŠüZëc UW-+ŐCVýÓ?µČ±Ţú8jĆówŮJi-Ä­+edĘ•(¬?ĺŽâ…Ż]ľdaGěš´˘eßďUÔźÂÎŤł <č˝ă W´ł'ÎľĺńóÖ2żýÔfžSëZ»\~lµ53ť­” -ąsäć ç±ÎkĄŃ“řäwó| ťď'Ł7~y˙Ű»ş;G›;Ţ:p:Ş-±!čŻTiś±ÚvL@ x˙üΧ ”ŔüU[O}dřw÷ĄWÇŽ Ú7ިŽ•†Ź+7ě9cµFŚ2Ľâ ]źŘ¦šá ÚôŹSšřŐ{6 ÷k~â±çżfÚ*‰qŰg–0”­™RúßH5!ŚF„UHĹ}SJ±§Źŕň…Ýë^gký+aŽh+č¦{©yíXńÔŰ16™>*P۲vŮŤ+žÔ¶z—¦Y©Ľ˛Š[;›¶ď^ć?ßhëşĺ̡˘Xţ§v¨™Ţh]Ŕ‹0goŞ\Í*vű ŐeD4«Ëąţ4Ä7'Đ`ľá×qOoďMbnˇ©?Fć<nݲĂôDmý˝ É@ cÖeLUr". ŃsZřĚ˝;sýĄ×-KÖnúűĘQ3Öš®9v©¦k4GÔĹuĐä•&Ż>mµFvOŁŻa(Ía$Ş’Ć²zę‹ Ĺ4 Y…Ľ©cŁŠAő#ä°zĺü˘u*ł˛iŚÖeß—Wťâ¦Q‚č\™5*jz8ÓšSŐ°yvŤ9n8ćA›Ě?`ž˙6Ő1ÂWoÜiýz‰N­D>ů^„Y•!›éĘ1´şŠű´—V‰ 7Rµý ­ R)öCGmůĽ®už»¬Ť»T9ĄÝ©qVhť˝Ŕš‚`â‚ ú§ÉC5nťŢžuDíµĽ'ż¶ďIJąkÇĆYAňLčZ ’aŔ‹0 7 čÖ«muýÓôĺjĄ8rĆš‘ÓVkóÔ=E?óŐĚ;ĎhaĄŃŔÍ ŕꪰÖŘĚ5hOi^6_ĄÖß;s&lEĚ Z—yuĘe¦€şfh¶Ä ç¦Áą¦/ŮtÖ#őĚá—^ĂHżúăś]ŕ=y‚˘*Ż śűň÷łÍO~™›×ďŰżßđţÓoX}sžŮ´uŔ%—N«¤×^6 élkW*pßšM)7éĄq–)AŔŁdë¤ 5ăż”I¤®ĚšâD난u¦1˙ŠK˝`[ţżÓP¤j-őó 9‡ ߋЪ2äs×áÖo55ŠIč;¨ą¶ ĺ×ęÄďüýż ‚TŠáX9¸©ZůbĎ\ÚćřýDzČ)íĎk©ńé 1}łľ©ŻĄţi¨ĐçţŢVSr›Ó'şŐÜGÁ܆Ú:V‘B4±zőZkR\xFęć 7”ťšdéßm§6SäN“\)f§É˛ĆÎYkh˝č őÚŹso?­™5…ŢkŞ…Ł_[MČ»bĂĎi”=3÷\©QG¦f!ZçéĆJň‚€éĺ|^8ÎŚPÇś!ölUÇÝűě—Ĺžç®÷„§?6âöw&fG¨NG4Źńµ±9n}{ÂŢ}9ÝNÉłžŚ+5·qű_+{h—ż’&»”ÝWTréL©+łL.¤&]Í ü*W?Ćb›"Uk~ĄŤěú ߋЪ2|%őÇ7´ş1çŘŃśxS"ŁF©ÇŃsüc÷•޸®ă¤gNô Ő©„9Ą­řšş&¤NôíoËŰßöz\¦ž•=ő„µt,˙S®6€Ž}Sůđ"ŚěÍA‘;ͲuÍ ŤÔ=bú 'M~öDĹ‘On_]­ä‚°lضŰ1łą3¬f’ ’­•ćž&ź˙ô(űĚÂęS¬N¸V÷Bµré¬_wţ¬AČ Đ¶.˛UCÁHI@/Z5ńâ%˙í—ËŞŤ;wěŢk›C)—¬ÝÖűˇa٧‹•ÄаN ÂÚŮOĆľ^]€ŐńÚ˙š€Ňľ5˛ËĄ=’Şüz-l8 swKĂŽÖ¦®(ëX†… m6sוi8Ů(lŇUŮZ 뺥ÖRqň˝­*S9‘äöŐ<醺ű™—*–ŔĂvJ1;őMŠhštéL5}„ţĨ±OÓĄ«[ľUݲAĘśÚ˝ŰU놎˙xc‚˘0©ř¬ß˛űâçF˙ű˛=šâ •|ěűšY :ă¨_?Mű±‚/©Pĺ–[nu*•Ľ´§ţŐ×kžţŁżđÝěßm4k ý}Ő‘Íţj« ô%4ďóźü®¦š:şf´řäÖ#cOk~ŻĎc…lPµT…ŇEĚf+dŞ@™JŔy!©Ů|jK×noX­´=ÍŤoŚO4TרZ©żő¨˙ČgÓ4#=+k9ß!=nšŐŘ_6Z9äěÂ#ý§ťŮĄ¶˘źŮWŚ´7ß3˙°ź†Ö¶t,|íŘËţ1„+Ę~8żĺE řm˛Öçş+Ó*yJ Ô„!é’«/lß­c- `÷ô—3Ţľ`ű.Ó_=G±Ýű˝;©[‹J ߸7%±ĆüGÖŻ÷Ąű@KÖůŽ|âNwMŔ‹0×ÝÔćNsěęźĆN˝űýɇeëňěÖĽ’úSűĄé?µ´c—§ľśńä3b+GĎZ{ňĂĂ>ď×U×€.KGJűÇ.Mâ<ĚŰłŚ&@´.Ă*”ÓAŕ/Ę—*¬·Á­:xIŁbŰŁuzą§i%NâńI]$Ú7¬ ©Ę­]®Mň±Ń:4(Ż_´Î‘…ąŻ«y GVá|Tăť{>ňĘŐíłďpć.BI×ń˙3÷.k7ÔMľ[‹Ęî4Öš9Ë· ›şŞ»1Ťk0č>ţÝÚK šÉ¤×Ă®=ˇŃr˙y•¬KÓŠö˝XF<%@´.OU7'›·4Š!T' kě§Ëł_Ď4•(RP˝?.ě^Wť_ܩެ ů¨ď­¦×ň›˛víć´ “l(cÓ1‡UYµaç˙žŽ\xiŹzí%ůŔ¤^{… šÚvĄý9{ńšmŽsôűhţŤ”â„°á\Q~§–čú^™‰žBt҆=jU·ÜŹ÷ť®˘fR­…ŁR ˇUe¤7M…R¦Îe†išÜĹ0żöŘŻĐťm&­‰¶ęâş^Ťőoý–]j-5xĘĘźg¬1ÇJܵ AÍćŻÜZżj)÷¦D×›ź¶:H†ć`q’KćÍá?ç~1f©_9OďTłrŮÄFv;Ż[]C´ÎŃişE­2ć—ߏöźfŽÖ˝=dŢďNr—_“Â]űÚ8÷zűšÎ´­łs°Ś@ Z—Ç*śÓÍKćm0ź®}ÚŻĺë·ň(Y´ŕ€;şú…«ÖlÚéx˛±÷Ŕ!αôĐŁQóěi¬ĺßmrʦgmŤ-hçoĆ-s¬´>ľtU;shĚJ[P‡÷ně2iÁ†ăîâŘd˙xËۆ=tLţüőęµ”*jş—jń’EM ăˇX‡HhAٍhŠ1wPŐ‘‰šęŚź·Ţ±ŇúX±t‘˘…MAF+ĄçBW”g’X©+3‰ňGgĂŻ¸) 7h"Wkş˝ÔËś‹j-j7Š řaVeň¤1ŤZhŞ˝•_óĄ™K7oŰą·„ńŢ+Śâ>†$t#eĚ)AEM»|©"±N‘*Ű‚U[őGSC• ›¶*`çS˝ŢKK´NAL˝ ő›a@ˇśEk¶ŐŽ73ű€_Ó<÷EŔoY7óh$ęUÚ§C̀Ŏ%«Wądľ|‡ü˙ Î]?zšęÚ¬’!\¨ ů}ĺчVqfôçgÝIţńćĎMqWvhTˇfĹq“‘2UŔô 3SĎ™óB Ź ź¶Ę|¦öW~›ëµQ&Ď_ŃÖ/T§­SŤĎ»Ëph­˛«6zwąU›;uvčÖÜÔé࣑‹ľź°Üť­ÖčÁ7ˇP]ÇĆ?Ľů=–iá”ö5ľëűćvňÂŤo ™÷÷ž <ŹkxfUúµ[v™g Ôë}Ďl“^©ŕ©;Äk řÎů†qëZ×+—t´cWT*ĺ´ďť+Ó^ŞÜ¸Ü¸úAbÚOAFÍZ¶%őΰVžą¨Ö˘vٰ aVĄˇŮ´IB}6Ú{ztŤíđÎĐůAzŘi&"kÚw9;7I˛Q¶;«Üľ&díýűLďű`Ó˘VY+"S·rIý» {]˝ĺRçD˝üřçEćö’z»yjÇÄÂCžŐ§W€mę—1Ý· Ýk?Îyř‚Ă<÷Ť­TŹM›`H}›ÂĽ9Łu_üş4Ńhť^(ú…ę$ćˇ Ń:írů‹cŢßCA@7¸‚ţŻ^ÓţĘ—Ć&4„e,źËŽń~ět…5 ‘Dë2˛Z9)ysĐçŽ7ĽZç?…şiš„čpz íÎßZăVëŰ60=Q}0báM'7ń{6ŐVCGu°Žw!«LQk¬z%Ö«ő+Źk`xG­Ńĺřä÷g˙ŢÖťłÁG‰?µčŇő=ň)dvÓ›ăݦľfčÔUŤ\¨ž>~Y=ôéÔeĆŤŰ6HÓ}”0Ż(÷Ń“[‘+3ąÂçČ^~?<ôSGó?řMóŻĎ¦µoX±kóJ~eÖݧ?6Âo«z$­‹Ćý$VZ?ŘÖŢ(ü­őaVĄuĐĐŽ=¬jţ|ůüfĐpf/˙0ű†ŢM ĺŃ[1ĂŔŁęjwlëż"ˆ|ň¦µK3ýĆ3g­;ZgŐ‚şę?yÉáýG/ń«\ólÔV>Ö‚áΠדÖ<ˇVzkA3ĽëfřEżnzD±VĆôüđđ§S_ţaŽc}hĂĽ9ôlUĄ@ţ|†¶iWĽ4F¶ě4Ş?1/$şŠäŢyF‹óźeŕťżjkŹ{?|ţa˝ŰUw'ëŐ¶úÇ·qŢSŁ }{iŠ„ú‹8vç#d€€é/Yś§€@Ćh°¶±sÖúťŽÚóoÚľGŁç,X˝uŘď«ýĆ@±ď~í‰MˇePIą­Ţ´ÓŻ­oO4ĚĎ #şź®ŽlZIS‰ů u§Nç==ę›»»»Ź¸j㎇?›j? Dz#éŘ÷ă­§6{ÄBż§síţöů—]˙°şÎ†rîNöc©OčU/Ź}ýÚŽaď6oßsé ŁíGlĎŮĽ|ő+ă„~·şŽd5ěĆ7Ć˙wčÇzűG˝Ń5™lOěąćĺY€$VFöĘLâ\ÂŮE÷ĎéRW0ŢăK겼čą_†>ŘÓýűSą)O}_<łŤ­ěŐö đG¤jÍ$VňhŢ( ÔÚfUšK’[ke•čÝ®šß…Ş#ţó)+7î|đĽ–î‘5·Ň­ďLxkđ|CÁŽk]Őłgśa— ޲vUă´o š§‰AÍ“<¸Ýý«r4âá_,î G6ËŇëÉą+|ëiTDĹ€úön|IŹz±©źÔ˘SíŢ÷ŃżiR”( IÂĽ9¨a˛ †Mőí2¬‰Y{Ţ3řóZťŃą¦űŰjťí–{Ôuý±Ď§â§z@=˛y–µ‹µ ś˙$o­q/¨˛ŃÓ+ĄG.:ĚÝ@OŰ=wY[Ý;ş×´kXˇďIŤÝë®Ńôh)^š[Łß-Žd MDë˛ –lHł€áŐkGj]·śc’©¦5ËňѬó/\ŃΑ`ű®˝Ď}=S#ű8Ö;>îÝżß±FĹś×­ŽáĹć¬e›ŹąwpżÓ›źŃąVÁôBR >MßÖ÷?ăý:Ç)ÍáőĘiř9DZú¨÷;No~ű;ýöRTTÓM ĽďhÇ :(Ľehô§ÎVš>ăřÖŐÔ`M=p5®ů–ż3tßç~Hh˝âž×Ľ:NÝ]o<ąIË:ĺ*—)Ş!«ŐŹřëqK5Ąť9« şŐől hŢËľ5Ě+Ę~ÜT–#{e¦rRŮşŻÚž(Şëy©ÜĐ«‰!˘řI»íÔfçYŰŢv ˙čĹwż?Ůü˝P űIEŞÖ *s4ovLĎĺĐŞŇóčd>Ë”@IDATŮ˝ňšă.T]ަ/ޤě4”§ZdkŤŢMśżáąofĆ˝‘^{Bň?¶łűÄs$˙0µ5ąGĂjĄÄńeíľoźsNXmRĎPC´N ô~ňĘ—ÇŞ XŤŠĹŐ„AO9qźM<Ż•#f•!řÂß{ÔWxËđ–{Üśuzc©§F{žzì>>ęĄk_éX8iĄţ9V†đQcf_üÜ脤®a]/ˇ]܉Cľ˘ÜHnMdŻĚäN'ő˝Ô•Ďđźľ „NMfJ+¸_±ě>MŹiőżˇ Ô. gË*†*5\ăőŻ˙¦ßźÍj–VCÝLf.۬ľ‡†Ăi“Öąű:…YkI¨đQľQŘìJC1˛iS§&YGµ¨¬ˇ ůkk,¦G×°eG aÂ4Ş—ˇ»·ápĽ)díŢm«?óŐL?O5lďýĐ0ݦ‡Ő]EłK+˛Ł&W Ĺ~5v©z5úí¨”;GŠHĺÎpA·:/|;+î¶ ĹMăWćlZćÍá¬.µŢ4z÷ëçw=D‘AżăŽŹ?Ľę^oČÉâ~T+!uz:÷)ÓĐ$÷|0ĄwŰö1ď”­ÚÍ™Łuqť×÷j”zď­Ż¨téEöĘL× &šŹ·jŞeC›VµSĐô±lŐbÔŠÖiÍ]gµPŚĂÝŢ^ĺ3<;MśżŢóĄŠzĺęöÎĂskđ• 䣛ŹhX­tđ]â¦|ř‚Ă g¤Ý_űi›ěůčtž»¬Ť}Mđe #¨VÁÓg_JÍYůĆő‹¤\)±†|EĄ‹%ĘWfşÎ1ˇ|ÚÔ3MâlÎJż|î9űPsš€[8·ĄF#ňKf­Ą’{oˇUĄ_gëú »×ó Á$q\Mk~iĎúIěGv SűćSšjČ˙tÁŞ«ěoěě×?1•;J¨[ÜŐÇ7L˘¨ÝšWjU§l;¦k—0o§wŞőĆőĐÍ8FCR'vV—Ú_/iL·očtű ’:Nb;©+÷MoŚ×@ЉíFjȢu™R“śFÂóëµ­{ZRűNŽ÷Ő«Ű›ŁTöô±eµkűđć.ŞŮ˝)¶FÝÜžúrĆŻaçô2ůÓŰŽ,^$ů€ť^±ľu}§´ôµ—żUťrçQǾƱ¬Ž·ľ=Á±ň¤v5ôbÖ±2îÇĆŐKrŰ‘)?nĘŕ z´¬¬1Ń§ŹĄT7Ăďď9Ę=‹Y˘ůXéĂż˘¬C§¸Ů+3ĹóJn÷[Nm¦Żyrűj/ýZ~éĘv©ÄŁőĂL9ôŤ×!(´ZK$:7ŠDë4´ŞL´`iIŻ6Ĺ÷ť“†Čňźů´LK‘28“Đ´őňé›»´mü+{-č}§a,Âď ęé©G©»Ďlˇ!Gě5/whTá˝›şlŮh,EsV©l óćpZÇZ_ôë–úxÖů üźgµxĺęv ĂY+Í šé‰K˙oßÎçÎś2ő­ož§9ORχ@ 7 ­ËŤµF™H@ eí˛zľśýŇÉš„Á>÷˘g {)q±Ŕ‘# 5äžę:ŞŁxf[©)eGÍđšJľ_öë¦| »űmŇ<čáĎ/}Bëď9»…ŮAQČĎ]ěČó…+ÚęQ;x7Ť3;×ú`O…Éů¤ţQíÚ ŘunRńÇűŽnZĂ4ŮHĄ ˙ŠJ˘ž»DöĘô,m¶®Ôő©.¨©ü&QË‹‘Ź›Ü”Íş9ôż˝«rrŽáÔZę ŃąQQµ§ ­*í mů¦“›ęç·şO&wD5NóúŽilŁ—\1rË^ˇi«AëŹ÷ýŘĹ­Ë–H>°’UşČ;};]vŚ©9UęwŐť&ýčqGZ9n=ŞO®ž7·Ň(ş›¶ůNß©—µqłJK‚0oşŐ˙ňرęćśPdÓó4[Ô*3ěˇcnéÓĚ=ˇgzűĘS:ÔůČ1gQ;•¶~zG®GAóÄ\9ŰvŇ~Ę,#€@ČÉż-ą â hšĘeŠV.«ĹţüŃ.MłÔL,îŽöW۰W›ęšHáłŃÎP”=™žzĎ=˛Îťg´M¶ ·»eôĽ¸Ý÷yŃĐŠż}ŁŠc?N/í?Ý0˝ýč!N“vőíÝXă:Ű×»— -z*•ń+–‰†VkÄÇ>źîÎÓZóöŕůzÇk}Ô‚ŢŤëQ[S>˙ݬź&®ôśa#–^˝_o?­ů mŞĹ>ę)?Č»öcĹ]VŔîÄ6Őé?Í/TˡVĹâwźŐâlc[¸Ç2$˙ŠrFÝ{ ćŹsť8v‰}ĚÖ+ÓóÁW*”¬önAĆĹ·ňTý˘đź[ł‚X)Ý jÖş^ů'L×<+7ît'»Fí ôyč﫞ţrĆé«ă¦WM«ŔÇEGŐŤű5·çN­Ą…EŇߋЪŇ^­q—u Ť›&HýüÖśEŻţ8癯g®ß˛;Č.J#Lý=şúřF)¶’NşR–3–Ěü·/ˇ¬RLš¶î!W×đ¬Îµţlę[çűÝ=OG7˘sʬ}}ďĆĺKšžbű¦xgeҨzéýşM[ĽńŰńËżżlΊ-Ö­^ďkT(¦!»ZY=1Śí˛i»ďµŞ§AĎóň[™ĘEć͡Xá‚÷źŰňşijň˙[pF2ë¬%©$…_»·¨¤˛µ>ŃŐĹk×tP[Ńçľžůţđ…;÷ě žBŤ}Ú׼é”&ęÓ°uçžsźĺůÇń©ż~ΑuÜŮj*÷Ę4®I×M5ŤE"+ň @>Ďîiy‚SF‡Ŕ¸9ëN^1{Ů–ŮË7Ď]ąEłŞ)FVłbńZYĹO8ĽÚ©kęQɱKŠ÷ěÝ?föÚÁSVę'ýÂ5Ű6nŰmď>«×Čzč<˘YÖ)íkviZ1‰· )/ŃÝ7lÝýăÄĺ Vo[µqÇĘ z„Ű_·RÉUKÖŻZŞaŐR©@ţř€éęśě"VHő„ýüŽnVGN_=hňJÍb¦KÖn×b•rĹŘmY§ěIíkhh+e¶.„EĄët2ěĘL…EĎ Ó—lZ¶n‡ëú·kďţBň)BQĽpAý_Ýş56łŤzîŠ-úŽ›şjĘ šłES?ÇÖ«S|ĹREjT,~ÔˇU4Dť"Ú©ü §ÖRÉîE*ŐwßpŞ2n1˛#Šš0ýŔÉú{´ráęmşÚí“,é.Ş?µ˛J¨ TĎ–UÚ4(ý?I١”®<ĂÔŢľkďäĆĎ[ű·hͶŘYT+_lůúZÖë=l(€˘MgiT¸ŕ$-Ôď VVZŘą{ßęM;5tYőňĹÜo/ô°Tűň/ěéíËCęÚ_yűqCľ9诉*tâü +Y_Ř-;÷Ř U0˝¬*S˘ćŃjSż‚zFwj\Q/¶íN}yÇî˝cfŻ1mőđi«ô‡rű®˙ýiSËôÍ;ţz™­?”zĂݡaĹc«b/jůâ˙ňĂ„ö’hľšë{ĺĘéGěgÁ2$-@´.i:vD  čIzďţýq;ҦWdßţýú»qŰÍ#ˇG珞ŢsÉŽÜ‚Gë˛ăč)ć™#WTŠe¶vçĘ´(Ҳ Ď[věQ+Ý´ż°ŹZłkdÓr8U™M…Ź›­š/­űłµ]ů’…5(gÜô$HE 4í˝űöo۵WµTRżd±‚éšg)•ÓOh߯Ç-˝ŕ™_üv™ńBoőđŰÚúoŠ–*@¶yű…ŔŠ)¨8]ɢÉ÷NNI‡Ž˝Ö*S˘°:O”-^H÷ •Äoµň×ŐxĺKc­®-wžŃ\ť0¬­, €@HsÓ<(Č)#ôbąpţtNMM*–.ŞA“&w äČ•."®ĚtIĆňŃO)ýKožîܨ5·IÚׄS•i/vŔ Ë/¬“,EĐ´:ůóX)–7'w8iĄáđéĎňÍAí˛C»„üđŐŢĽz…âú§GĂÔŐ¨éŕ2~{Č|ŤĘG¨ÎĎ–őäl>Î;”ś) € € P৉+.xv”ŁŰ¦µŻ†ÁŐvÖG÷œ囿»Ô˝>¶Fýµ -ąüöb} č]ćs—µ=żkŤÁšĹŕĐ dŢŽHŃ) € € K¶ďŢ«qwďőţ7tę* Çćwjł—m>ńÁa¶ůN1dnYżĚYź„ęrźC#)˘u‘Ş  € €yBŔ<3ŹÚÜťőÄHMR¬ ěËÖm˙rĚŇ^ ÓěöőŽĺKŽ®çXĂG@\$@OŘ\TY@@2D ~•R-j•™şx“ßůh‚‚ŰŢ™¨)ŕëU.Yµ|±]{öMY¸QłiűĄ·Ö7¬Vęf•¬Ź, €ä:ÚÖĺş*ŁŔ € € לĐ(îilÚľg₠ߍ_>xĘŞ ˇ:exÉQ4¬‹ëJ@ ŇDë"]=@@2Uŕś#kk6‰ôžÝ‘Ͳ.?¶Azó$7@Ö… Îá@@@? äĎ˙ö ťjg•HÇáőĘ}tËE HW†ä #Dër„ť"€ € €‡d•):졞Gµ¨śşĹq­«öż˝kɢ…RĎŠ@rV€Y&rÖźŁ#€ € €@ž(_ŞČçwtývü˛7ÍňűŞ$,4˝ěĂ´ęÖ< !ż$ŽÎ. €i Z—vR2D¨S)m˝fÂ(.Ç@@üůóťÔ®†ţÍ_µőíÁóŢľpÝ–řsż*H×˝Eeý;úĐĘĘÁ?{¶ €ä2|ČeE¦¸ € ¬ß˛kż×=ĽPÁüeŠ @rŻ€ţĘ/[żcĹúËÖo_±aÇęM;5]ů’…Ë•,\ľd‘ňĄ ·Ş]®Bé"ą÷)9 €€A€hť‡M € € € €„*Ŕ,ˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@ Dë 8lB@@@@ T˘uˇrs0@@@@  ŰŘ„ €™*pŕŔ•+Wnܸq۶műöí+\¸p•*UŞV­š©çËyĺ µk×nÝşŐQÔš5k(PŔ±’Ź € €@ äÓĂz꧆ä Ŕ˛eË.˝ôŇÔ Đ·oßO<1ő|ČÁ,pĎ=÷Ś3Ćž¦V­ZŻżţş}Mf,Oš4iŔ€'NTśÎ~F=zô¸óÎ;íkXFŔ,p÷Ýw/X°ŔžF1ß§žzĘľ&ˇĺ›oľY×§}—|ůň}ýő×ĹŠłŻŚÚrŢą{Ä䯿ţúĹ‹ŰkˇaÆO>ů¤}M†-çÁSΰät@\'@Űş\WerŤŔŚ3öîÝ›zq‹-šz&äW`Ú´iŽú*T¨PÜ˝r]‚W^yĺÓO?ő,¶˘“žëY‰€§Ŕž={~űí7ýßľµ~ýúöŹ -ďßżÖ¬YŽ]tYFŞYź~3;Ök|˝/ľřbĘ”)úm¦źÖúĹbO _ĽíÚµ;á„:věX° ÇźŚ÷Ţ{oňäÉö]ZµjuÁč…Ўśľ±oUhéňË/oٲelĄ~Ďh0µ!C†(k’A´nÝş'ťtRŻ^˝<q˝đ ŽHÁqÇ×»wďÝ»w+·ţýűÇšü(ĺŻŇęŮł§6ÚKb_Nô÷§¸ľüňË &(iĎGË ¨oéÉ'źě¦v¤ řQÁ/1>ÜÝ2.–"’ť;wľřâ‹=;ŻĽňŠ”ň÷ßwqčС±F…ŠĚžuÖYžÚî˝k~ůĺ—ďż˙ţ·ß~“żµIřŞë[nąEżś‡ ¦J±6iA‘MµéSűĘŘrmS¤s”--§©ďË1cě9«îÎ=÷\ŐŃ A>řŕŘĄ«^xá%—\bO™âW5´oŤ.U÷O?ý¤ ^íĺWĄyóć×]wť˘?öőÖ˛vůú믭ŹZĐ=çÎ;ď´âDöMZVĚú›oľQ˝(лȭş´`Ň=á”SN1GŤSTŐ˝{X…t,¤rm(«t}q”ŹnÝcÇŽŐ×Ç^BÝŘőD‚śŻűbSU>ţřă… ˛ç[ţç?˙©H«}˝®“«®şĘľF7öÁŰ×čoÄ5×\ŁęÓúĎ>űL1SűVUşţr)A·5i9ĺŘŃSżś˛ďL“ţľÜ˙ýz`çŐňi§ť¦!+cţůçŹ?ţر©k×®gžy¦c%@Ě?˝Ě;°@ ®€bUÖŻn+±~?¨Á‘ő1ˇ5´™4i’ÚM8öRLPAűHOJöüóĎ»SęW–¦pě®öVĎ=÷śĆŠr¬·>ę7đŻţ§VcŹ<ň{©:ÎTŤăôKrüŘ‹ĺ©ßŐ·ÝvŰű￯ 'zâ‰'ÜA(tîÜąĎ<óŚBr7ß|łUkA?Ďa2ý’TĽďÁTc+Y켤¨<úOy*PčŮT0ČďĎX¶ @¨`úugű łţî»ďwĐŻÍSO=Ő±5ˇŹ _~úé§Šŕ¨y‹aG5”~ ]{íµŠoÚSŞ•–r°Żq,Çd´R®Ď>űlÇÖ¸UőŇĐ%çN)|Ĺ… +AGQ˝ŰÓ(ZçŐĄŃ6u:{iÓxšŠşÎź?ßžyíڵ׬YŁ”c˝ă»–úW5„oŤnqŠ\zéĄjĺd?ÇزÚ=é?}ßµń ŔéNă¸N´ŁűV[©Ťá«ˇËOµ¦Pµ®˙«ŻľÚ/¬şŞ üîsđűŇ×Fşľ8şőç@o†+Rcź:@/Ŕq˙ľU×°‡~ŘÔSiQő+¶çÝĂqŽŹÉ]Ę$]_á+¬éŞ‹•V7^ÝŰ“rŢ1ť´.÷-ÚÎłrp_EÚd]üV2÷µˇ?súâ/6] /Ş®­|ě i<ĺl˝śR<ÓÔż/z~°»Ĺ–=żÂÚ¤?ŮîPťÚYwďŢÝť k@ĚDëĚ>lE’đübŃ)‰Lýz‘¨u[,7ExŕwÄJýÎô{ŐŃűěŃGU˙ӄЎFzíoßĹó4Ő„ÍęÓjOl_0`€bîˇâěibËę_éXéyPµeSĐ‘ŇýQĺW?#ÇzE”Üż.Ü•%®'ź|2H™­üßx㠵ݰ>_ĐŹLRÍżśÝą‰]ŐŞÓ±6yZY[í îóµou/«–UB÷orwJEg­/•Ćńk<Ť¶é˘‹ťHzOsöěŮîHşą/µ<µZźeßW5•oŤ¸tßj„ä ˘€ľű{p ŐŻnăÇŹw_i~ktgPscÇÖ´¨*Ď€wÇŃÝ“»6ŇőĹQY­=+ÔQTÝ*Ý×°ăëěyŰq¤±˛ ’X›;6¤¦Ů qZůř-¨±§F-poMď)§ërJű™¦ĺűâ­Óó€[UŢ}÷]÷zuIvŻd  €@\zÂĆ%" °€ç/ő÷qG…ü˛ÖhVqÉľUă vŘaî¦Lú᪺j¦Ć&îFLjO§6tާmuŠI4+‰Ł;ŚçiÚËlXv ç—Ň}F©TGQł>GwQýNv‡ż-ŐPˇ:żBú­×ŹI5čSUż~ë_|ńE•Ęo«a˝â©­ŤFŠĄqŚĺdŘŃqľ†”ڤ̿ţőŻ áQż|ěÁÁôÚ¦‹.í§© _ş–OľŞ*ąű[ü\<ݵXÔP’öMžş/KĹÝÜííůx.«/¶‚;ÖP’éRŐ±‚Ü=<‹äXéyúŽ4±ŹÖµ‘®/Ž:ú$ĚęY­tT“»ś;Ť••ç‰;2ôLcĺwA­ˇĎ?˙|{˛ôžr/§´źiZľ/Žç‡¤;~ŞőzćţŁŁnÖEkŻ–@â ­‹KD@ aĎgnőŮ1w۱Fł:Ř?Ć–5Dť;Z§–$Hł¸ű]jŚ6 ëăř壶o˝ő–;óöíŰ÷éÓGĎĺÚKíÔäÇ}Žtw‚X¶ľJ=_4 —Ň+č×I‰dÔs:¨19FߏeĄ’¨ďŞ˝±çOAëtä i ÔR?eÝm@”LU ¦LVĂ%­ńĚĐŽ¦d÷Ţ{Żű׬şé©FÔÁYÁ> ęôŃGą»Ů**šh´Nł hě|댬µŽÔLŠ8h(,”Ě3˘§őV´Îę–¨î¨îQjbuŽnÔ¨‘u ¸ Ż˝öš_ÜYý[´h!1v ˝ˇ­ĂĄ×6ŤtBHăiĆHýľ/nđŘĺ—ĆŻŞçEn7]ßšX†šúY3şčëŻŘ±&ńlçľ=qě_Ce®Ć€ęoŰZ(R¤n#š»FGÔÄ)ĎÚd-XMҨŞĚ=aŶĘ`Xđ<}Ďô±ĚÓřĹŃkϨîşhUă'JLŔŮí: ćĹxž‹ź‰;±¦qLě‰+¦ÖŃK,e®ż2zć9—Ž{"ň4žr—SŇgš–î9‘ăa VHÍ”[°ţŻÁ 5\¬ő‘@„Ö%ÄEb@ ľ€_±ř{ÚRxţ¶Q@MżÝő¸´Çł¬lnşé¦:Xc íą;ih{_=ť+uŢyç9öŐŻzű÷-mŐľę[§NťXJEm4>ťgŕ¬M›6HNSšĆR>ű쳎!µ^ĎúöSS‹ĽŘ¦±]ě˙WkDMYhͤˇ¨śÂdÖOt{JEíŃ:÷Y(^i…“´Łž¸Ă¬ť:uŇŕYÖhč:—¶mŰ Ü~ -kG &čps¤±TtRĂĎŮ×Ä–uvęŞfugÖߊÜÝu×]Š:ËGEĹ/´^ÇŤÚ=·†¦JÔś‰Ž}|T3%ÍQëN©+Vĺ±ZaÄ:t_«ÚQŃË-Ť¶éĄKďiƸÜWšĹXştiĹaѬęÓ7]›ŇőU ç[;uŘ×,Š×Ç>Şť&UčÜ:ÓŘ‚"ÎŽ5ž8öÁÎŕÓ-±—>ę» «(vÁ룦vŃpfîÎĹV´=]ޱ’¸‹í¸{¸ ěąĆťŹ•ĚóÚH×G#]z~ťuĽďľű¬AőGM/~tç´Je-čmź=Io,Ü·hĺŁwÖ.Ö‚çpŠîż}~8Ç{¬úă[ ô¶é†npÝ­Kď)g÷ĺłJâLÓő}Q?µŞĚZpGë-u_!gśq†uYű˛€ P€qëB‘ *ŕ÷Ó"čţ†¨,s§Ď—/źçčuę“čŔ]tŃEžsá}űí·ŽśĐůŰßţćXéŮÚŠĹ(±gPRmµÔŚË Ő)™٩ً#s}T ,ýŕ´BuZsĚ1Ǹ“iĽvűJ•Ęł¦Oú1i…ę´‹~`Ü}÷Ýö}­eu˛–µŕn¸ˇň[ŤÎÔ~Í=Ć–~ť*2e…śbą©iŹvöścˆ6)îÄŠG¸«R‘Á˙cďľă%)Ę…Ź_$$…‰‹"iYX˘ä$9G Eą*‚ ‚‚$E$Ę$ç(A‰‚¤%gXDđŢ÷çÖ}Ëî>3'ô™ísć7짦»şşúŰ3gkž®Ŕr·ŞKGAWą`.ŃÂz…ŇČL§›©¦šŠ‘Jy ¤óYęčFß·B†üç"+ {y»Ç{äb‘k9´W1DţB‚ž&ĺ‘\üRât…śé-1bĺnDI:›”ű6ć×XYxĺFÂ…P ŮĚŞ+Ä.ŮÎ犰f9ěăćj´­—®ŢËL’•]vѨ0CeĘĎżúUČ·†nŚĺO5A˙ĘAßů×-.mäČ‘‘&Á‡Ş<^>˙˛—ŢŽů!¤é3uČ!‡”ż‰t@.ää-Ź:ŇĆşT)­í_Źr5*·ôőłQׇŽĎ¬řQ¨qä!×”ţžôŠeŃBţü6±«ňZ y˘„Ę˙+ăďCĘVůaăÖsăžF•ť©S˙â”§öK®ńăTă•Öř}In<‰)ÇÓé^Ç˙”‰,ĘüvŘ˙‚ăîP@諀ѺľŠ™_h#PůsĄÍ1˙ą»đs%ßÉŹ(ĆűTN<ŮřYU’{éi4ëů‘@1›ôýág3oŁJž“t^±ĘZĺéöĘ]˝(‡źOĺśś·p:ŢúVÚ26ď\…đ[ŽĂ™b<¶¤“ĺĹ–Ęă·%}+2G‚Ů˲·ŻËěF)ËűćŰůÁ“W8ßEš¨G9ZW͵ľĆB­ßV^ŕZk­Ug* ˇĎ]9Z—xëµ­—®ĆË ŠĘ»@ŻÉžBuX×WµňÔµkÔ†¦kŻśľFȨ¬a| ÉŔěő…g l¤wUˇĂi*s 6(wÔŤhr]Ş˝©vŞOŰ+/ż§ĎFŤ_śĘ?nĚ2V©ĘźSîH9Z—˙§Ŕ•VţżßĘ\Ł|áŚ#îÍß|.¨ü›_®§Ëű\×~Éýqęß•Öř}I÷«m´®Ü±Ž.ę•˝űó€iP@ÖFëZű¸Wč›?ĄĘóćP}@Ę˝z*:Ťëi/żEY˘±§€CĂšŹŞ,祗^bľv:‚1ĄTeç—ňQtăĘĂF•?´^xáÂü|*wĂYnąĺĘ5,HQm ŇÝŻ|ҨCyľ6v1Â.2Tţ¶Ś“’c˝ÝȉSN9%Ňmůy-2sĘ!'ężŇJ+µ8ިĺ7“M6Y>Xž‹­,0ńTĆO‰ÖĺP‘ć/mŰ?¶WĺteX6Ć_ʍOŰDĺĺ÷ô٨ë‹CLź>Ô…şŃQ±čŚ<ĺŻ3»ňŰÄŰňµôôצr:E:SÂp•Ču•„B¶ňŰZTS±ĺjç=ʧ®ÜŇ×ĎF]_˘~ĺżtč+ÜšĽÎÜÍü-i†Íć_ćč,/,“Oš^9ťb!öGţ22¶Ę/3”{ňň!áĚt^úY×~Éúqęß•Öű}Itů]Ž›ĎŠÎ<óĚŘĚY9}d!›oP@Z ­kíă^P oĺź_ţŇ·B˙37mńűî»ď?·ýß;Cĺiăňś/ľřâPţA•çé)ť˙@"(ÉŻ”BÎĘËě%˝6Ężę™&)źő¦¤ĺEoŁVLÉÄőĆŰ”Č{şń;ąÜpRôxä‘G ‡÷őmaÄ_‹ĂË Aą§ţJ©~š–|2[\>ť?¨ĘSSUŢ©uK»ĘˇR¶Ż°Â =ČÝňčć8uŤ¶őŇŐ{™ ‡®7ĺHGë_łu}Uk˙ÖTFdŻňcPţ~‘->醸–ŤÍ#zÄ• »9U+ĎŘzc]ŞśĄí_ŹÖ5‰˝}ýlÔőĹaiÔ¨C$wéB‚'4ĺ(-]ąóż6|Ř`)X¸Ý±·7˙5ôéĂFŻv*ĺ§DţßVí—\ăÇ©Ć+­ńű•‘ń­#’^řLŇ›’Žuq¬ P@~ ­ë7ť* €˝ůRqXŻ7Ѧg5ŇńăÇWAŘ‚1)•+“’źřZ‹P?şčČśA¬áH|ç /,ś"˙ŃŐűË,çdr«|,j:KĺŻúü‡ŮĘE±±0¤.Żóm·ÝVţéǿ˔נ“rlyJ¸Ľüޤů5Ű›lä)ÇÔŘHč­Ĺá·Ţzkyo~ě­DËoeą„ž¶TŽ«śŞ,•PgÇöÄ[Żm˝t5^fHVŢ…ÂŚW‘™Ä`Uň­!"SŽťĹ·&ż Ň•^ČL¨®<']ţ­Ľ#•]ů g/Ľ­Q•’[˙ő(śşĹŰJ˘ž>5~q*U+»PĄĘbějáB ·˛ňZň[™^î/ÉŢBćŘňë˝äz?N5^iĺeöăű’߬ĘFŠÖ•;Ö1]]‹ż0y±¦P@Z ­kíă^P o}úąŇ·˘˙ëżč8đĂţf}‹Ď;>˘u'śpBąW'i[ÓCŠ_51„vżýö+ś˘0÷Pą“ů żÜŘR94‰Á­ywŚt˘J·Bĺ“Rů4¬˛PŰô¶2Ĺ âČ\yŇřuG·5~ŹEć”Řzë­·Új«ÂĆo[ ++U4J†XqŻ9˝­ĽŔ5ÖX#ĎÜúóśmÓ1KQž3ú!ćSú7żůMycâ­×¶^ş/3.żŻwaPżŞú­‰KN‰Ţ\xŰ<•w¤ń/śşü¶FU o[ír*·ô©śż8ĺΞTŻĹśĘŕ{üµL—V9gk!OĘÉ˙eż˙ýď üDę|cźp*3ç˙‰Ô{ÉńăÔúJëúľä7‚aűŚň.̖ˉxŕÂ:Nt‡ge¤üXÓ ( €ý0Z×o:T@Št|+ýË'`*ĐÇ÷?űŮĎîľűîÖ1Hö©§ž*,«Ç!<żâŠ+ Ç2löG?úQá×#mËgáQ9Ťő8Ľükˇr¦ʡI…ÓĄ2˲=˙ˇĹŰrž|ślÔ-%čX7nܸÂFĆëĺ+0”Ă䏓VöŘ"úÖ⤅Óőém92Čᕿ»R±ÄÂʱW*_b”ѸSýëřđÖ[o•ݍđű-2\yĺ•e^&J#Şęµ­—®ĆË Ť2E90™ű«ÚâÜ›oMůŐâO\9sąkm9ń5$]yG*ŻâŤ7ŢŘe—] źIţĘťqĆőŞR«ň=-T›·˝y•Ëiń٨ń‹Sş‚:ĎÍ+ĎĎň8d(ü1/ĎfŔ™|IÖ(“Ů÷Ę‹ó ‡ÇB‘‡D§O¶Bć/ą§Bĺs–ňW&Ď\Ë÷%?]Jó§»0- ĺĄ`y Őz:ŽrÉnQ@čIŔh]O2nW@ú,@pŞŹ >Š+Ę•)l©ě…Ç`±Ęůą ¨ĽŔBÇ:NQb\y§ •©|[ů#ÓkŻ˝6żóCřQ÷‹_ü"ß’Ňqëëµ­—®ĆËLW]9/[90\5~Uă[S Ě3Ď<•· ňě| wż\`!˘WyGĹÇ)čN;í´ňLŽë®».jTM§ký×#ŞÔ:Ń×ĎF.Ţż?Jĺ`ĄqQĺĘřŹă°ĂŁŁtáZřSYË”{ąŇ'«üŮŕďvyř$…—ohą§’ňŮ ™kĽä|ś •ü¶WZË÷%N‰r´îöŰoŹ˝)ÁGbÓM7-lô­ ( @żţŁyÝďRĹĺç}ŘĘŹ%Ę5¬ń’ëý8Ő{Ąµ|_Ňç!˙·Đ&ÉwEúË_ţrţá‰í&P@ú'`´®nĄ€ TTţ6ćůsůtĹÁŮ&~´{챱ᮻîâ÷RĽŤÄ[l±ÔRK}űŰߎ-)AÄä׿ţő׾öµ|{ĺşhÍ2Ë,‘Ť*•q‘!_-ˇňGxá—[*łś“Ře9¶RÎĆá…+óŤÉŹ9äć’›uÖYůŮ˙ĐCŃ ±˘"ç{쑟şr”n~Rş đSżĐ!‘A—‡z(ż6““ľÓÉâÄO,‡ęčń÷ąĎ}.9ôć_ň_vŮe…śD‰~÷»ßeh3á0~Ôńa`ľ¤ň=â7Ň~đ"’y •ČÂOâ<ë4?ă+§˘#Ž|ţůç/şč˘ô°#’ŰÓ(§®×¶^ş/3yV~t˘l>Ř_UÎŘďoMeL¤§kéÍ…÷¦@îďwÜQ€âË~ÜqÇ­·ŢzD‚č ĚßXţfň},d#CЭ׍Ę)Úţő(T٧·˝!ĘŹ­ń‹Ă–ţ‰yá¤~řauląĺ–,fÍţ€Đ]‘Uk ŮŇŰÂ}Ď#§‘ź85~ĺ+_á6ńđ€ĹC™ˇđ­,°O8˝É\ă%×űqęMĺ´mćZľ/qşH´ŤÖńżgˇ÷zkBP FëúçćQ ( @…@e3ş"_»MüRŠ,üš%‚V±—t ŁńŻňŹúâ1Ę5ź¨<·żl `Ń‹H=č‹ÄOĐ8ož N”ĎtVy™…_nNȬ<4©śŤś•AĄ~•y ßýe—]–Ţše¨K&ĽŘNś¨!÷&sŤ—<?NmŻ´–ďK~#RşrYŘ<ߵʑÚyÓ ( €}0Z×'.3+ €= ĐO­EŻ˘«Úż‚víłĎ>ĺÇřô°Ř˙ýS_†ŐV[měŘ\Ôč˛@IDAT±…bľÄ/±|őŇrCčşĹ€˛Â±ĺ· çĚűM”aćÓ˝Ĺá˝é5“2·ýůÁOńň¬pq˘¶ ęOŔ«­ň¤ ÁËł­żţúĺh¨ĂîňśyšČÝIŻ0ßŘ6Mż?n%“V椋 ŻĘ]l$YÔĚöň5r§ Ăx{*łĽť$}9űÚQ4ʡóăÇ?ţńx[Łm˝tő^&×[ľ T¸u}U;ó­aŽąĘexŔPţ Ŕ®Ľ+[ţcÂĆřXxTŔ‡§rědĘPŞ#xÄÉ—W—j:cůž˛˝đ×#ĺlýoąśÖź J«ë‹łđ  Ł»nëö´—~Çy‡ë”mÚi§eĺži˝˝pÓÉ\ĆééĂÖËĚ5^ň`śrĄµ|_Ę7«ußş•VZiˇ…*ĺP@üÇŇK)ČcP@.(˙´č7HúÝÂ4@ ,˙ř!ÄÇ|¦*‹“^tŃEy|§Đł,˛•ó"ĺă+ J–»ň•hQlo~‡“Ť_Úĺ>}źüä'óp˝3Ę!ËBÍ{zKQüh§cZ!CązňŢägŃú)lý–_Yxŕ1cZg«Ü»ýöŰÇm­ĚPą‘;űŤo|ŁĽ‹ß“eŘĘ;U>¶§-=ó)¨zĘĆŻâň®Â©ëµ­—®ĆËd^¶ňxĂEÁŞ®Żjíßză–p…9ćâZ^xážÄŰ”(tšccůĎ&_üBDŹll°Aˇ¨Öo)„eXňřB]ŞéĽ˝ůëŃş†ěíÇgŁęúânëĄ*9Ë×BH¨üGµ—-ů#Y.°đĄčÓ‡ŤÇNĺ˙(ËźĚ/ąĆŹÓ`\i/ďlÜ…ň÷%vE‚<…Ő„bmf¬‹·&P@ę¨ř¸®˘-Gč*ňĎÎţ]>ˇ±9çś“6ŚŞś01Źy'~5ĺ#g㤄ŐnĽńĆxËÂÄ­âme‚ßŇ'ťtRa™?r2™Qô¨*˙L%CůG8Ë “)wÇ` Žr$®đË­\岤o‰ŻEY„YŢ *ä!ZîŞS8i:„HK(Tţ^-”É[®ŽÓ-˝ôŇĺ]˝ŮBŻ·ňÜs-¤ßŹřśD˘ˇ•ź´€Şë«Zű·†°cyÂÄž®Ąňě…ĚtF.$/äI,ĚŃůĄ/})Z'ř|sĚ1…o}]Şśş÷=Z׳źŤT`]_ľ§m˙X’ă/ ťć ×Ry›ľřĹ/¶ý›Ľä’Kî¶Űn…Ňx[řűЧ[ď˙WŞë’kü8 Ć•üűRľAôŻĎgąÍ3°˝_ó-¦P@j0ZW Ł…( €˙UZ‹‘8bCgťuVĺ/&MgŘcáD=uŻË×  sôŃG3ĂWáŘô–@ÓeöŮg/w|ŕá ŞĽĚĘ_nĺqÁD!YĶPĘ żÜĘżü ü-±Ä 8­ŚTr Fżň›ö§?ýi9řČŢrÝŘX8iŞ'˝đăżőę®ĚýÇéö>ďΓJčÓżŁGŹfŠ.ś¶>ŠźĐ›nş)‹±n¶Ůf=嬄­ĽS=•Pąťî‡,ÂËÚ묳Ł}Ói”řä°…Ęď·ß~LíW>–_é…ŤőÚÖHG=ëşĚ~Ü…şľŞµkút-˝É\™§ňkČ!Ίň_§üCĹ_8€€2ńÖ|;éşT)Ş÷= u(Ľ­ĽüŢ|Cëúâ𠓢ŮééiřFó—¶—QZ‚ćGydů›ž.ś‰5 üýä'?©FZxÓ'śĘ;R)Y×%×řq¤+ŕ÷ĄđYMo+˙wŁ?8çŞĚďFP@ LÂo°áá ( €CH€…_™sŤQrôjaÄ3IŤ5j±Ĺëé[.ŤQ6ôËkBÇ™4ń<˙‹±LęłĎ>K_9~6Đ'‘_Śü\äw{žŕiFěŇ ń"vÉ(6†M?ýôÄéÖŢł€áĆôgä\$čËCŹKNÇň{‰a¶¬úÇ/ö_ÔŔK`Ń ~Éăó‹3aŮŽ;îČâyáÄňX«7ß’§ëµ şZ.3żäޤřUm·¦7—٧<|şřSđŕ„aľţ|öČL_f™eZ‡ÔÓ‰¨Ú§Úvćşľ8,iÍŁţľÁËü „ŞYR`ĹWä‡ţ]3®Ňsľá”Fo;ľţŘďŇúW‡ÖGŐuÉ ˙8 üű’3Še«| ižÜđ±°Ń· ( €µ­«…ŃBP@K€q˛L¬ÎŻŽü,ް×^{ĺ[L7D€Ĺ…üă*łůć›ő«_-lŇo~™~k†ô§ËĘ+Đ4ž„1=haÖZşW3ůC“ő5ŤŃú( €}pMŘ>q™YP ÓôŃ(„ę¨AOĂĺ:]ąî8ß.»ěBg̵2tšéŠ ź~úéO<±°‘·Ë/ż|ycÓ¶ §Ëô[Ó´O—őQ`č ЉőđĂ/„ę¸ä1T7to«5W@ć ­kţ=˛† ( @W ”§ß‚ŁrN˘®fĚ‹g¶Á|}átŞ«ŻľzĄ•VŠI噋ęÖ[oe¨TyÍf˛g´ő`V°ž˛‡Óeú­©ç3a) t«@š^GeLťqÉ%—Ü|ó͉5×\“ŮB }«€ (PŁ€Ńş1-JP ~rÜáŁýčČ‘#ë?“%ö Ŕü†ĺ=LĆ„M§›n:fcŠ˝ĘÉ㙎ýë_˙zůđnN—é·¦0«¤Ŕ8ĺ”S.¸ŕ‚ž*Ěź}:#÷´×í ( €µ­«…ŃBP@K Ľ6.ëŔ¦ĄHë”–űź=-ŮÁÚ L÷˙źy‹ďvŢyçÚ—ŕ(žŁ¦÷Ăé2ýÖÔôˇ°şT ńĎ!X ™UŹň-¦P@jřHí%Z  ( €u ĽţúëăÇŹ/”ć¤uÁ~»ŐV[!íëYĎĺ7ÝtÓľ8±ň›Ëô[3±>BžWá!ŔrĂO>ůdOײĆk¬ĽňĘ=íu» ( @]Fëę’´P@ú*ď­«şe‰Śf=đŔgši¦–ąţc'#dŹ8âőÖ[ď?¶6űͰąLż5Íţ Y;š.đÜsĎ•g M•f®:Ă4ý¬ź (0, ;,nَ€ S?ýéOĺ+s‰‰˛É`o1bÄ™gžyÝu׍;öĺ—_îét3Ě0żĺ}ś•%zĘÓäíĂă2ýÖ4ů3fÝhľŔăŹ?^®$slżýö«­¶šëŔ–qܢ€ †Ŕ$¬É=ĺZ¦ ( €`<ÎK/˝T(§§ůĹ Ů|;H ´|~ÂëÍ7ßdĹŔi¦™fÚ Ż9ćc®ąć¤“vľŘˇ{™~k:˙ińŚ '^xaܸqĚLĘE1?«gžyfÖá1N7śî˛×˘€Í0Z×ü{d P@P@P@P@şEŔyëşĺN{ť ( € ( € ( € ( €Í0Z×ü{d P@P@P@P@şEŔh]·ÜiŻSP@P@P@P ůFëšʬˇ ( € ( € ( € ( @·­ë–;íu* € ( € ( € ( € 4_Ŕh]óď‘5T@P@P@P@čŁuÝr§˝NP@P@P@P@ć ­kţ=˛† ( € ( € ( € ( €Ý"`´®[î´×©€ ( € ( € ( € (Đ|ŁuÍżGÖPP@P@P@P [ŚÖuËťö:P@P@P@P@š/`´®ů÷Č* € ( € ( € ( € t‹€ŃşnąÓ^§ ( € ( € ( € ( @óŚÖ5˙YCP@P@P@P@n0Z×-wÚëT@P@P@P@hľ€Ńşćß#k¨€ ( € ( € ( € (Đ-FëşĺN{ť ( € ( € ( € ( €Í0Z×ü{d P@P@P@P@şEŔh]·ÜiŻSP@P@P@P ůFëšʬˇ ( € ( € ( € ( @·­ë–;íu* € ( € ( € ( € 4_Ŕh]óď‘5T@P@P@P@čŁuÝr§˝NP@P@P@P@ć ­kţ=˛† ( € ( € ( € ( €Ý"`´®[î´×©€ ( € ( € ( € (Đ|ŁuÍżGÖPP@P@P@P [ŚÖuËťö:P@P@P@P@š/`´®ů÷Č* € ( € ( € ( € t‹€ŃşnąÓ^§ ( € ( € ( € ( @óŚÖ5˙YCP@P@P@P@n0Z×-wÚëT@P@P@P@hľ€Ńşćß#k¨€ ( € ( € ( € (Đ-FëşĺN{ť ( € ( € ( € ( €Í0Z×ü{d P@P@P@P@şEŔh]·ÜiŻSP@P@P@P ůFëšʬˇ ( € ( € ( € ( @·­ë–;íu* € ( € ( € ( € 4_Ŕh]óď‘5T@P@P@P@čŁuÝr§˝NP@P@P@P@ć ­kţ=˛† ( € ( € ( € ( €Ý"`´®[î´×©€ ( € ( € ( € (Đ|ŁuÍżGÖPP@P@P@P [ŚÖuËťö:P@P@P@P@š/`´®ů÷Č* € ( € ( € ( € t‹€ŃşnąÓ^§ ( € ( € ( € ( @óŚÖ5˙YCP@P@P@P@n0Z×-wÚëT@P@P@P@hľ€Ńşćß#k¨€ ( € ( € ( € (Đ-FëşĺN{ť ( € ( € ( € ( €Í0Z×ü{d P@P@P@P@şEŔh]·ÜiŻSP@P@P@P ůFëšʬˇ ( € ( € ( € ( @·­ë–;íu* € ( € ( € ( € 4_Ŕh]óď‘5T@P@P@P@čŁuÝr§˝NP@P@P@P@ć ­kţ=˛† ( € ( € ( € ( €Ý"`´®[î´×©€ ( € ( € ( € (Đ|ŁuÍżGÖPP@P@P@P [ŚÖuËťö:P@P@P@P@š/`´®ů÷Č* € ( € ( € ( € t‹€ŃşnąÓ^§ ( € ( € ( € ( @óŚÖ5˙YCP@P@P@P@n0Z×-wÚëT@P@P@P@hľ€Ńşćß#k¨€ ( € ( € ( € (Đ-FëşĺN{ť ( € ( € ( € ( €Í0Z×ü{d P@P@P@P@şEŔh]·ÜiŻSP@P@P@P ůFëšʬˇ ( € ( € ( € ( @·­ë–;íu* € ( € ( € ( € 4_Ŕh]óď‘5T@P@P@P@čŁuÝr§˝NP@P@P@P@ć ­kţ=˛† ( € ( € ( € ( €Ý"`´®[î´×©€ ( € ( € ( € (Đ|ŁuÍżGÖPP@P@P@P [ŚÖuËťö:P@P@P@P@š/`´®ů÷Č* € ( € ( € ( € t‹€ŃşnąÓ^§ ( € ( € ( € ( @óŚÖ5˙YCP@P@P@P@n0Z×-wÚëT@P@P@P@hľ€Ńşćß#k¨€ ( € ( € ( € (Đ-FëşĺN{ť ( € ( € ( € ( €Í0Z×ü{d P@P@P@P@şEŔh]·ÜiŻSP@P@P@P ůFëšʬˇ ( € ( € ( € ( @·­ë–;íu* € ( € ( € ( € 4_Ŕh]óď‘5T@P@P@P@čŁuÝr§˝NP@P@P@P@ć ­kţ=˛† ( € ( € ( € ( €Ý"`´®[î´×©€ ( € ( € ( € (Đ|ŁuÍżGÖPP@P@P@P [ŚÖuËťö:P@P@P@P@š/`´®ů÷Č* € ( € ( € ( € t‹€ŃşnąÓ^§ ( € ( € ( € ( @óŚÖ5˙YCP@P@P@P@n0Z×-wÚëT@P@P@P@hľ€Ńşćß#k¨€ ( € ( € ( € (Đ-FëşĺN{ť ( € ( € ( € ( €Í¬ůU´† Q÷Ţ{ďÉ'źüđÇhý­¶Ý&0Ůd“Í;ďĽSN9e·]¸×«€ 4DŔ¶SCn„ŐP 76śzŁdú-`´®ßt¨@Bu=ôP›LîV@† ,Ľđ «‘ŐQ@şEŔ¶S·ÜiŻs ŘpF7ÓKi–€ŃşfÝk3śRŻşgśqÄĂ麼†ĄŔ«ŻľúúëŻŰvXŢ\/J†Š€m§ˇr§¬§6śü (0ŘFë[Řň»]€PÝ1cş]ÁëW ń÷ß?ŃşĆWÓ * €Ă_Ŕ¶ÓđżÇ^áаá4ôďˇWĐtW™hú˛~ ( € ( € ( € ( €Ý#`´®{îµWŞ€ ( € ( € ( € (ĐtŁuMżCÖOP@P@P@P {ŚÖuĎ˝öJP@P@P@P@š.`´®éwČú) € ( € ( € ( € tŹ€Ńşîą×^© ( € ( € ( € ( @ÓŚÖ5ýY?P@P@P@P@î0Z×=÷Ú+U@P@P@P@hş€Ńş¦ß!ë§€ ( € ( € ( € (Đ=Fëşç^{Ą ( € ( € ( € ( €M0Z×ô;dýP@P@P@P@şGŔh]÷ÜkŻTP@P@P@P éFëš~‡¬ź ( € ( € ( € ( @÷­ëž{í•* € ( € ( € ( € 4]`˛¦WĐú) Ŕ°xë­·^|ńĹľ^Ö#>ůÉOöő¨fć÷Ýwźyć™T·9ćcşé¦k[ĎG}ôţçČ6×\sM3Í4•ůď˝÷Ţ;ďĽóŮ Ż÷ßźś#GŽśwŢy×YgťÉ'źĽň7* € ( @ól;}řᇏ?ţxźîí%ÚB2Hí®>UĆĚ ( @_ŚÖőUĚü (0P믿~łÍ6ëk)‡vŘ^{íŐףš™˙ţűď_nąĺRÝ.ĽđÂM7Ý´u=o»í¶W\1ĺąňĘ+‰ľĺů˙÷˙÷Š+®8üđĂÉ–oŹôśsÎąĎ>űě¸ăŽSL1El4ˇ€ ( €CEŔ¶Ó_ţň—QŁFőé~­±Ć×^{-‡ÔŰîęS̬€ ô[Ŕ‘°ý¦ó@P Ct”kq¦˝÷Ţ{ 6č)TÇ/ĽđÂWżúŐUW]ő>hQŽ»P@P@Z·»ôQ@:#`ßşÎ8{ř·ŔěłĎÎŔz„ý{SUŠ ů€ŮŹ|ħ L?űŮĎŽ8âرôŇKŻ»îşłÍ6 MFÄ^uŐU?üpÚűŰßţv÷Ýw?öŘc#ł P@¶ťňŰ4ýôÓ÷f‘™gž9?Ę´ (0´ŚÖ ­űemD”ž{îą¶Wň“źüä{ßű^ĘĆXÎí·ßľí!Ý–aüřń{îągşj&gal M1Ľřâ‹·Űn»wŢy‡-Çw˝đÖ\sÍnňzP@ҶťňŰÇüĂfv”üşL+ €ą€}Ur Ó (Đk®ąfß}÷MµůŘÇ>FČiŘ,1Q#ńí·ß]O?ýôB¨ŽM2É$›l˛É™gžI"ť—‰oj¬€E) € ( @Cl;5äFX P Łuµ0Z Ô)đÔSOm˝őÖi TĘ=餓[l±:OPGY&«Ł°~–A´.9Ůd“­µÖZ=•BŔŽgňiďwÜŃS6·+ € ( Ŕ°í4DośŐV@z0ZדŚŰP`âüíoŰxăŤßxăŤtz¦ZűâżXYÂy\pÁ·żýíŐV[mĆgśvÚi—_~ůŻýëô2{ď˝÷ʇ\~ůĺ_žđşńĆŮűŕ2P”YŢfa†I'ťtŕDż˙ýďËĆf‚;äCX•‘ąČnĄ•V:ůä“˙ţ÷żGžN&žxâ‰t:şÎEpł˛«ŻľzÚ~ß}÷}řᇕyܨ€ ( €CQŔ¶ÓPĽkÖYh-ŕĽu­}Ü«€ ĂÚ;ě #¬˛Ę*‡~xe ^~ůĺm·Ý6ĹÝ" )đâ-k/Ś;–\ě"qÓM7ťrĘ)$ćc"Vn¸á?ţńŹČđŘ„×ůçźđÁŚí‘8çśsvÝu×·ß~;¶üiÂëÖ[o=á„n¸á˘~±«3‰1cĆ0Wçb±WŞÇÂŻ=ť—aĹ›oľyÚëz=)ą]P@!'`ŰiČÝ2+¬€ ôFŔľu˝Q2Ź tH€žkżţőŻÓÉčżFěŚ.lĺs’=ztŞ#•ç¤ßÜK,EJ lG÷˝ŐM5ŐT‘°óÓ-¶¤Ä׾ö5zŢE¨ŽÓM>ů䑇üôď{ýő×cKg+¬°Bśh·Ývűć7żůÖ[oĹ–<ńŃŹ~tá˙˙2Z—ËV@P`H ŘvŇ·ĎĘ+ €= ­ëIĆí (Đi«®şęűß˙~:k‹•%č·óÎ;żöÚk)çRK-uóÍ7ĄbČťwŢąÎ:ë¤íŚNÝe—]Ţ|óÍňeÜrË-ďľűî#~ő«_Ń=ŽőRxűťď|'rţřÇ?Ž4 *vüńǧ-)JČé(˙řĂf›m–¶ß˙ým´Q~TŇŚü5jT:#aŹ>úč™fš‰AŻt-Ľçž{őóź˙<‘ĘvÖ[Ř˙ýc ŮcŽ9†]™ăĐCťyć™ Űc9‹W^y%–b8묳XgŤśÓL3 JL1Ĺ…Łč”·ě˛Ë¦ŤD {ű-Wń»ßýŽQ0hÎĹR̩nju‹/ľ8˝łĎ>űź˙üg!ŹoP@P`( tsۉ'©ŚrhýbČĹPĽ­ÖYŁuAaB&ޏí·ß~ܸqéô-V– Ă˙řÇńăǧśń‰M6Ů$ŢFbîąçNi˘Z1 ]t—[cŤ5fź}öČ ¦Űi§ťŇ[†Öv>"FÇŔď~÷»Ď=÷ý żő­o1=Q˝”xüńÇY” feě˛Ů· ( € (ĐdŰNMľ;ÖM¨E búöZʵP —LwńŧĚ-V–Hžxâ‰(vąĺ–‹t!ťÝŘÎ! Í3Ě7ß|ůŰHO:é¤‘ŽˇŁŹ<ňHÚHÔŹ±ş‘!O<űěłé-Źy ‡•{íĺ™)MĂu'Ľ(ź^Š ćĄĎÝĺ—_ŃF¶3ř—,,˛‘/¬1Hő±XP@$.o;1n`×]wmm[{Ń:ł{P@ ­kŕM±J t‘ÝÁ8ŕ€tÁ-V–úĄ4ÝÇ{.¶ŚZed(+H°=đĄlłÍ6[!‹·ŃéŹrĘE•¤ëßD‰Öĺ5ˇ·Ýš^ڦĎ= c.QĽŁŽ:jź}öÉó›V@P@ˇ"`ۉ9ëúÔ–*wÖz* €ą€Ńş\Ă´ tT€ŕSĹőfe‰¨VL'Gß·)§ś2¶—ÓN;mÚH·Â^Ć®¶´xËŠ±-ö–wĹ@Ýň®Ř‚‘îÍĐT–¬ŤüŃ-îĺ—_~ńĹŮÎĺ,±Ä‘ˇ`xď‰'žČĘ[nąeÚEź»Bß* € ( ŔčÚ¶Ó@îN-í®TŔcP@~­ëš‡( @ iväżţőŻ©¬+Kä'Ë×R`»9ć#ßi"€ô)Ko[tÁ‹ü- ›MIwśđj‘3í5jTŰ<óÎ;oäéM˝´ĚE:dĆgL‰«®şjçťwNéW_}µu‡ľ/|á ,•›ÖŇ˝óÎ;ăě&P@P`¨tsŰi ÷¨–v×@*ŕ± ( @?ŚÖőÍCP` ôŚcŃG}4Ôze‰üdů”sÄžzŠÖ=óĚ3¬–ĚÉ‹ęešŐTS´ŽŐ`WXa…^Ő:ŰtÓM7묳Ň9ŽlĐâčQę“r.ąä’qÝĺXT7ŢV&–Zj©­Ł7ßß˙ţ÷čŁW™ŮŤ ( € (Đ(.o; ä^ÔŇîHúčŁăíg?űŮH÷#Ń1¦‰y÷Ýw+K¸îşë ňĘ#h•9cc˱<đ@l/'ę]pÁiű‚ .ł&/´ĐBqc-Úň…-±ÜłÚĹ…<ľU@P@f ŘvČ}x»k g÷XP Fëúć! (0 Ë.»ŚQ™©Ţ¬,‘źŚąę¶Új«´ĺĘ+ŻĽćškň˝)Í*®Ç|Jł8ěüóĎ_ÎÓű-L÷–d/˝ôŇOúÓʉŇýŤWO}ýĘG-˝ôŇi#3ń}ĺ+_‰ůřĘ9÷Ţ{ďżýíoiű2Ë,XÁv±ĹKo ç±<\ě*'®żţzÖ´MŰédWÎŕP@h¬€m§Ţš·»XW@ú*`´®ŻbćW@ °¨+c`Í‘J9ňČ#é.Ç<,m_±ÚĂÁëKlĽńĆK^rÉ%+®¸bżzŠŻőţöîË_ţrĘżß~űí±Çďż˙~ÎxŰ˝öÚ‹)äŇÍ]­¬Ę:Ď<ó¤řŕ{ď˝—ęŔżçśsÎÖ[ooSâ—żüĺN;í”o\|ńš—ăvY4ö¦›nŠ®ydCŕ›ßüfžßtđ ë'Ačţ)®Ľ¶ť`ˇ16Ë,łTúô´‘ĆaŢ,¬ĄÝŐÓąşp»ßÖ.Ľé^r‡zű«˛ĂŐňt ( @ ˘u¬Ň@ô-M$Ç’©ůŞ©Hmß}÷Ý˙ý[Ňű]ćîąç†ÄŢwß}Ĺ* ,-Nç¸ /Ľ°÷ˇ:_~ůĺO=őÔď|ç;ăÇŹOĄ± DZ˘Př´ÓNKŻşr¨Žl,Tűç?˙™ąl"$÷ű ŻB Ľťd’Ičih¨®,ăP@†˝Ŕđh; ä6ŐŇîHÍBôÔËó3\÷Ž;î W }ßb™‹”a¶Ůf;öŘcďşë.VËéMz‡vxú駉µőt,ç"G§Â=÷Üł§©ŐóĎ?Oh’ĺ#*óĚ8ăŚδz»ďľ{e7* € ( @c M Ţ׳pŕn;Ń0+4Ŕzď9kiwEi&P@Ap$ě ňZxW Ř?Ľc·źőţđ‡?|đÁtp›{îąéD6¨§f=ƨ2l–ţ}źţô§‰Ö ĽůřĎţ“Q«Ď<ó Á»^x¸ńA´R~!nŘâŇPďŮgźĄţĹ„»¬·ËkôčŃ1Ó_‹Ă»|—_Ř.˙xů (Đ˙wě. ¶Ó@¬jiw ¤ĂŕXż­Ăŕ&z p$lĂoŐS@öÄËxµĎWSŽ©§žšµYóĺY^0݉3ňZuŐUű]+N0żŻ~—ŕ ( € (Đ Ă í4ŰTK»k đXP ­€#aŰ™AP@P@P@P@ ­ë´§Q@P@P@P@P ­€Ńş¶DfP@P@P@P@P CFë:íiP@P@P@P@h+`´®-‘P@P@P@P@č€ŃşA{P@P@P@P@Ú ­kKdP@P@P@P@:$`´®CĐžFP@P@P@P@¶FëÚ™AP@P@P@P@ ­ë´§Q@P@P@P@P ­€Ńş¶DfP@P@P@P@P CFë:íiP@P@P@P@h+`´®-‘P@P@P@P@č€ŃşA{P@P@P@P@Ú ­kKdP@P@P@P@:$`´®CĐžFP@P@P@P@¶FëÚ™AP@P@P@P@ ­ë´§Q@P@P@P@P ­€Ńş¶DfP@P@P@P@P CFë:íiP@P@P@P@h+`´®-‘P@P@P@P@č€ŃşA{P@P@P@P@Ú ­kKdP@P@P@P@:$`´®CĐžFP@P@P@P@¶FëÚ™AP@P@P@P@ ­ë´§Q@P@P@P@P ­€Ńş¶DfP@P@P@P@P CFë:íiP@P@P@P@h+`´®-‘P@P@P@P@č€ŃşA{P@P@P@P@Ú ­kKdP@P@P@P@:$`´®CĐžFP@P@P@P@¶FëÚ™AP@P@P@P@ ­ë´§Q@P@P@P@P ­€Ńş¶DfP@P@P@P@P CFë:íiP@P@P@P@h+`´®-‘P@P@P@P@č€ŃşA{P@P@P@P@Ú ­kKdP@P@P@P@:$`´®CĐžFP@P@P@P@¶FëÚ™AP@P@P@P@ ­ë´§Q@P@P@P@P ­€Ńş¶DfP@P@P@P@P CFë:íiP@P@P@P@h+`´®-‘P@P@P@P@č€ŃşA{P@P@P@P@Ú ­kKdP@P@P@P@:$`´®CĐžFP@P@P@P@¶FëÚ™AP@P@P@P@ ­ë´§Q@P@P@P@P ­€Ńş¶DfP@P@P@P@P CFë:íiP@P@P@P@h+`´®-‘P@P@P@P@č€ŃşA{P@P@P@P@Ú ­kKdP@P@P@P@:$`´®CĐžFP@P@P@P@¶FëÚ™AP@P@P@P@ ­ë´§Q@P@P@P@P ­€Ńş¶DfP@P@P@P@P CFë:íiP@P@P@P@h+`´®-‘P@P@P@P@č€ŃşA{P@P@P@P@Ú ­kKdP@P@P@P@:$`´®CĐžFP@P@P@P@¶FëÚ™AP@P@P@P@ ­ë´§Q@P@P@P@P ­€Ńş¶DfP@P@P@P@P CFë:íiP@P@P@P@h+`´®-‘P@P@P@P@č€ŃşA{P@P@P@P@Ú ­kKdP@P@P@P@:$`´®CĐžFP@P@P@P@¶FëÚ™AP@P@P@P@ ­ë´§Q@P@P@P@P ­€Ńş¶DfP@P@P@P@P C“uč<žF†µŔYgťuÇw¤K<î¸ă®¸âŠ“N:éᇞuÖY_|ńwÜqĚ1e€sÎ9çú믿çž{صđ ď˝÷Ţ˙řÇ?(*ĺÜm·ÝZhˇňQlyăŤ7öÝwß´‹wÝu×ČvĆgÜu×]ĽýČG>ňĂţpĆgŚ]wß}÷Ď~öłÇ{ěŮgźťzę©gź}öe—]ö«_ýę|óÍyL( € ( € Č<ë®»îRK-uŘa‡Ý~űíŻľú*í«VX&Đä“O^¨mżŰWQÎřńăŹ:ę¨űďż˙ˇ‡švÚi9ď’K.ąí¶Ű~üăŹüđCŢŇ<ţřăcűĽóλűî»ůË_ţčG?ëMśzę©Qŕ™gžÉřĂn¸á†i#µşüňË# P@P  z]k­µvŮe—Ĺ[,Şwçťwž{­Ą}őŤo|§§©p&$9ôĐC÷ŰożŮf›-myá…N8á„8µ P@ÁpŢşÁłµdşTŕ3źů }ă™ĺ„ëg¸ëĘ+Żś }ôQf?a»_ţň—˙űßÓFBuż˙ýďSćí·ßžXâůpĘPËżLĽĺŚ1‚ńĽĂîÍ7ßLŰŁaŮL( € ( €Ť8ú裙o—*}đÁë­·Ţu×]—ŞwŢyçŃĂnŕí+zĎÝrË-©LÚK4źŇ¤xô¶[tŃEÓöłĎ>űG?úQĺě")˙* € Ô"`´®F Q@ 06EßŘ´ŇJ+-¸ŕ‚1Δ©LÖ¶‹Üß˙ţ÷#3SŻżţú—]vYě­+ń©O}ę/ůK*mÍ5×d"d*Fd%)ćšk®şÎb9 ( € ( Ŕ Đ Jˇ:Ę'¶óÎ;G´.M7đöŐ“O>•_b‰%"rÇFÖ—řë_˙J‚îuň?ĺRăgŕí«×^{-?EOiĆáö´‹í•-±ůÝĄ€ (P)ŕHŘJ7* @˙čąĆ`Ť8>ďąF_6¶óď<20“ݧ?ýéČĚâ‘n‘‡ÉäaÁŮ<'Ź—ó·)=Ůd“1ä–ń#]t9FvÄŚud YÉ2kŻ˝vů@·( € ( €Mřă˙WăŢ{ÓzĐ4xűjžyć‰S°ü×:ë¬oóÝúxŰSc¬˛%–nZP 7FëzŁdčŔ5×\Ń:žľŇy-f­XŇ,C[X­•µYSŹ©ĺĆŽ»Z$bŞ;ňäŁ6ţńŹÄyqřăŹ?~Úi§Ą·tŁ»ä’Kţçţ‡)WXöżřEÚţÄOĽýöŰy±qxO ú ˛řGQýyě)łŰP@P@üîwżËŰ*7ÝtS”VWűjľůć‹2§›nşŤ6Ú(ŢŇÜúŰßţ–ŢN9ĺ”$ňV{cć–‹Łú‘`Ük‘˝úę«4ęrń‰O|‚E/Â~č! ( Ŕđ·ĺ˝qV[ć ě·ß~<›ĺy,a¬o|ăďĽóNŞ+^GŤEš^lGqDÚxĹW°,kŤń|xß}÷Íq¤ t‚űěg?KQĽťyć™S0Ž˘_9 Äxĺ•WÎ:ë¬/~ń‹Żżţú׾öµr ďľűîa‡–Jc Ú5ÖXVć’K.9zôhv)?­ŔüqĘÜÓżôć#NGĂ”¸ä#ʎ˝ű™ĐbűÔľ"?M#†5¤úĐ‘ŤÄ,łĚňÝď~7…Űhá°ČDcűÜsĎĄlüËóŃÔ«Žuşb#Chüđ4”nq±±O ZŹL‡B˙A&-aXŤ:]´÷®şęŞ…^ĺÂ~;çśsć;îÓ)̬€ -ŁuCë~Y[†Ś@ˇąFČ,5%ÓwÜql°Ó ×ĂłÓ^NwÂ?ŞušŃ<—ĺęŮgźÍăO†JD~žÂ2ř—öJyLËP #FŚ ĺyL( €ĂUŔ5a‡ëťőşht:[iĄ•b@(«m·Ý–FXŢyŤ¨ÜÝwß˝çž{.şč˘DÓ”d›m¶! FΨwjŠŃ .¶Dß:¶đő‚ .ŕ‘oěĺQó‰'žxđÁÇ–HAăitšŐ%6¦Ťżn¸aŮe—-lĎßľ÷Ţ{Äř.»ě2Ö–e¨ČĂ?śBu\ÚÇ>ö±|Ű|!*dcv<âwLĚK3­€ ( € ôU`§ťvbÎO}ęSq ]á©đĄ/})¶ôľ}Ĺ!•M,ÚZżýíoň“źäÍ62Ó®ăA)˝Ţbş:§ĺĆÓĐ4Ť]ŞŁqiňĺMٍ[9A€Źţ}ôË;öŘcAiŞŁpžzFĂŹWzŔĐĚŁD÷b…Ťr±nQ@†‡Ŕ$•džǵy L\űďż˙ŃGe\ä1c&nM:pvZżüĺ/Ó‰pdöŮg§ůEsŤÜâ‹/ »ĘšĐ1Ť6Y:ĘđŠsÎ9'e#ňĹ؇ĘCňŤĚCĚW´2']Ţ^Ěó¤4ŤBVś QČhVš€sĚ13żĚ?˙üĺś±…Ch2_2!ČK/˝ôOúSüÍL3¶°b!9Ćn0–$öËxÚŻ›l˛ —@cÚ±AÚŘDW}a{¬ tą€Š ĆI˘r§śr íZ24~höđjŃ‹€í+:Ę1‚§ 1Ăb=µ˛8-1jL4<묳.ˇ§· }}úé§ó›ß0jř` Y ÉD»‘FEq™tîcüDÄćx”KËŤ±Ě©Â8žÔöTľŰ[Ŕoë` [ľŽ„ő3 €"ŔTqLN\Yôąçž{ĐAĄ]‹,˛oSš¦Ţĺ—_žŇ´Őh¨U^ŘHśŽWacĺ[Ę$xĘ«roy#­C湣—ťřžzę©Ćńx™!'4‘™öiA20–Đ$ăd˙ú׿¦%1ľ“N:‰6(+Ţn±ĹőiĄE“ş|v·( € ( €ÚK,±Dacz[oűŠçš,ÉĹ«ň\ůFzŔ-¶Řbů–ÖiV±`¨, eüęWżbčk ěĺŇňŚ“ś—<^ĺŮ-My\JtŹg¨őŘB«ŚąGXׂ¦&A=:´>Ł{P@ˇ(`´n(Ţ5ë¬ŔĐŕŃ+˝Ó5řĂţŔDĹ,řŔ‡Xö‘ńy)SÔŃ.äI/S¨ĐšŚ9řhG¦ç˝´#é2™jČSnŇŚ=ąçž{8r íÎÔŹ(Ó»P–[nÉĐ]ŹO=őÔCűćY{P@h¤@óŰW<Ńd,ÂcŹ=Ć…ć‹Wňc\K‹ä'Ł.hJń8vĺ•Wćşx&Ęđ‚w´Đ°§avË-·ĐďŹ)íĚŽC,ĎÉěů©´R (ĐŁuý·óHčź`yJ+-NŁŤW^Öý-ßұ4íHşĹŃř;˙üóoĽńFÚ”)îFúJ[ĘÓ(äÁoę(ÇŢô˘·Ýj«­6jÔ(ůŢyçťÂC`Ž˘G¬°‘ąüççţîW@IDATËôĚĚ8ó°těş<‘ ( € o&·Ż'ÄĆSLVĄ`*aÚEô°K·# }eX+CÁ|yě˘qĹ^:Ó¶c)XÚ]Ě:B'»x€'»4®Č@[kěر´ŮÖ_}řbA3vPÚđľË^ť tŹ€Ńşîą×^©M ÎĹŘž”2V”–V^-ÂX¬Á´,±şYľwPÓ4űh˙1ô•ůéçAŃŽ¤VÔ‡v$KRIdFîJ}ňo‰Ä}ň“źd:<ÓmÉűŇ<,”Ě _z˛.“­ĐťqĆmPę µpP@şJ ™í+nAzzë­·2V÷ć›ofÚt_¨0ămé@7zôče–Y†ľul!s4®H¤g˘ô›ŁíD++ e S^šĚŽĚDńhOň ”'Á¬QKhݰ>FW}ĽXN®21śî¦×Ň,®š{•Ř3sÓŤîc˝ĽD˛=úÇ?ţ‘q DŻ6ŘDéwF?8Ç`Tk\°XmęÇUĐLdč+-?ÖĘ`Š˝4ô•'˝•¶sa8Jŕń/ó@3;21»8„˝éŃ73­p± ŚeKeině°@W}a;lëéP@^ ř§¸ĹJV÷Ţ{oÚČłŔ|AŘBÎümsÚWÄÚÍ1„‚ˇŻgťu‹fD=iď1d¶SÔă-™Ł˝ŮH¤€ ÚWd`<,&Ě=ňňË/ł‹śL̬#Äě–[n9úâőr]Ú8ÜD_ü¶öUĚü ôUŔľu}3ż T0ĂŻŠ-7ń¤”UË,ľ“t4űx$Ë`Šn¸áő×_§QÎJ:Ú‘Äé–Zj)ü¦6"»ňřZdf{ô•Ł)I‘§ÄtÄ{řá‡égGD’ ©ąIoܸqĚŽĽí¶Űrů¬źŰÓ"k~ńž@P@,@s˘-Ą&´Ż@}ď˝÷xfyÝu×1˘‚ĆO¬ÖE{‰ČZúĘđUş×ŃpJ ŞĘ&Óvň mĆ‚°¬QK™<eŇbšśŽ°ŕe—]Ć3WzŘłă!+ëTđąÁ·×Ş) €­üűŐJÇ} (0Śhó1@•)ThŰťwŢyڤˇŻ´íhGkc˛9Z“¬5ĆP‹ÔŽ$5I¤VcJäPd`‡0*–4c2© iPŇr%'=ďʱ,¦±ŐV[ŃŰŽ¦gűň˘L+ € ( €CK€&C.č{ĹŁPZY4·Rýi ń„’‚´|x¨™f!s\]ë&Vj_ŃÄb2;zŇŽiUXË‹iLčdG4¨‹}ťqĆ,Ćęn¸!m0ZtQľ P` Lúü`Uת*0„^yĺ:m1KˡjwIU‰—žc.ącŽ9†Yę¸Y´đ¸v‚LQGŰŽ5ČX5‚1°iU˛´‹˝Ľ‚(Ň6˙{{dNá< ¤5™fcap »t.ęŔ,ËÄěhb’‡iVx„eĆYLtFŔ/lgś=‹ (ĐBŔ?Ĺ-p†Ä.Z>ÄćhŰś}öŮG}ôM7Ý”:ľQyĆş_#N·Ćk0ú•–™yĄFTˇýoÓ޸öü-ĎVúŔ(Z&-ˇeEű*­>Aš8KR°Ś,2Ť Ź]'ĘD+Qía™đŰ:,o«Ő(űÖ5ęvXtZr weč+SÔŃÁŤtś’ĆÍľ1cƤ•[éěĆóŢÔ^¤5٢ĄoŚ˝)‘ď"M’b Ňpäy/CŢ|óÍ”‡Q±<¦&Űlł ńÁ9ćÉě ĄůVP@h¸Ź!™úăÚkŻ=óĚ3 –E§9NéÉ%«ľŽ5ŠÇ“ÔxšX©}•· *Ż·u`™®Žµ„™ĎŽsŹp ŹB™á„ţ}«Żľú[lÁ¬&Śx`Śpe™nT@(`´®7Ĺ*) Ŕ` 0•ĄZŻąćš4ô5Ú‘´ŢxôJSŹŮaúSÓpLŤÂB2Ő/5+I“‡Wž'O§Ěś‹ć)łŕ1vµ5l…%Ëkp DĆq0Töóź˙ü–[nÉgbv>¬ĺ* € ( @­4r^zé%‚e]tC_ß~űí(>­úJŰfůĺ—g"9‚t©őEK‰&Ů M¦ô6m˙W몔§?ť^{<ňdÇň”ľčjDZt˛;˙üóiem´ŃF ŚĄĄGś{$îŽ h˛€Ńş&ß릀µ đĽ—U_iA2î•9‰Óüq”N‹ŤDč–]vYž÷ňě—v$Űi ňJmÄĘJä»Rf˛ĺ G±+•Ě,-<ć]`hÔR“?˙ůĎ©2<ľä’Kä1Bdë­·Nł#Ű ,0úVP@š#@󆡯¬©ĹR,üšŻúĘŔşł-ĽđÂ< M«ľ§ŁÉÔ¶ňŃšJí«xŰÓ©‰ĹÔ%4ç†M,F3°îSsŇçž{îř㏿ĺ–[6Ţxă 6Ř€l<@í©4·+ € 0Z×a5P`°čąĆ#VÖcÖaś’Ž31ô•‡±<ďeč+‰4ô5ö’fbj)¦&f9‡ô&ú1×\sqĆů矟罬tA­Ň<š¦žldĹX5cđ,cÓyă,&P@P@‰.ŔŁPÚ-,sę©§25ušŁV´[Xۦkm-şč˘ičkľ—<´¦zjVĺŰSi˝ĚO‹®|<ďäÔ Yŕ (ŃCĆ1°ťéóűÔSOÝ~űíŰm·DâzĚLÉľP@f ­kć}±V (P A¦Ącčëu×]ÇĐ×§ź~:ZŠič+ťéX’Ś% h®Ń’ăUh ¦J°1¶——)x—W7ňS ŰăزŃÎ+4őĘ5‹ü)sĽŤś©Řüm¤SX°|HjŃňYTx(M¨‘‡Ŕ\KšĚŽŮ‘;ě°kŻ˝–ĺšk®Éój&ł‹2M( € ( €*@x‹ntżýíoyř›ßü&†,ĐbŕŮf›Ť€×RK-E[‹& í1*Ă®hđôÔd*Ô9ĺo‘ą˛‰EţB9ů[ęCô'µ#GŽd2;ĆĆҬbi/¶ód”YGظňĘ+3÷gÇŕÜ#ąžiFë&"ľ§V@:hxńČ” C_ uѬLĄÇĐW¦:fâá4ô5µö˘QymRË/2¤]ń6Ď_h#˛+?– oÓ6¦Bň2i8ŇFäń/ńD¦YaŕyéHv1;2SďŃ[pűí·g.âz6(ó[fZP@j ÂRš%cÇŽĄ•őꫯĆ)ŇŁPÖ‘ TGÇ::˛Ą§ŚŃȉD:$Ţ扴+oEćŘE~Ňä‰Dž'ŽÍó¤4˙Ćą$¦Ői™f„'»\HÇŔұ ée 6ß|sFÎ2íťsŹ$a˙U@‰(`´n"â{j¨G€YHčFwŰm·§ăy/c˘\bs1ô•đŰó¦^4ŕRă/íŤcٶs/¶ÇŰHDćŘË.Úµń–D›qH*„˙Uú˙o€r,[¨6 JľLfGű«K“Ůąc2;Âv›l˛ $Ó>ži¦™bo”lBP@ Ť…ň¤đŞ«®˘‰ĹĐ×(¶SsĐٟLJ,(ÁŇ4ô•íŃ âpň§Ö‰ÂŰh˙¤2S¶hĄĚů®”.o#ś®śźR=š…t c®:šXŹ?ţ8ăhF˛‹w'ź|2’l±ĹLĚÇLf— ń_P`˘­›(ěžTę uĹóŢűî»ďÜsĎe (łĽĄ6"ĄłĚ+íČ4ôuîąçćy/™ă¬4ćxEŰ.¶G"ß•2§])šŮ"‘çOáł|Kd‹Dľ7ĘŹŤ)AxqťuÖa)Śł?~|ę0Ȭ|ÇwÜŤ7ŢČdvÄěę9;rŔšP@P@ Ăbč+AĎ<óL:űó6•IŁ…Ą  ?­,&ŢĄi”7±hE{¦˛±·Đţa;[ʇňÇŰrδ%2¤ňăměMă¨î‰'ž ‰ĹżtŻăheѤ$„wýő×ołÍ6 Źeq[Ćůöt"·+ €*`´nPy-\Q€%Éúzĺ•WžwŢyO>ůä|NĆŕ†0Ě7ß|¬úĘĐWÚ”lOQ¶B‹-o&¦]l‰Gňł%"qěJmĘžň§˝B"Ĺ[çO9ă(áŵjdvdÖ—`­ ®7&łŁ5yČ!‡00–™Vh13çť“ŮačKP@"@óNýĚćFűЎŻ<ŤŇxJÇ4şöłę+«7Đ"sjĄćPĘ™3é_2ÄĆÖM&ň“ˇś'•“¶STzUę}ţT>¦CÇŔdv´˛č3ČŘXŠM“Ů˝óÎ;4®¸|–˙b`ěb‹-ćdvˇmB:)`´®“ÚžKę`ž‘?ýéO×\s «I° íŞT.í0"VÄ­Ó1Ő1}ëŘžš‰…¶ŰŁŮGš˝)Cľ1•˙ć»úš?b|QZ9‘—ĎŢ8„í<f鉑fGfŚĆ‹/ľČX®‹‡ŔŚ˙e¦ÍŰn»íŇK/ídveX·( € ( @ohrĐŔŕqŕ…^xŮe—‘Łx|ČŞŻ ,°Ŕ*«¬ÂĚn„íRśŽ ©9IäMšhĎä éČźÚWń¶-ŢF†~ä/B[‘>t<%`GÇ:FiĐȤ|40nU5Ö[o˝Í6Űlˇ…r2» 3ˇ€ť0Z×gϢ€ő0Náµ×^cŘK’1”t<łĄáČp ŇŽäIéä“OžĆeĐL¤ŐĹ‹¤e9•‹f_9O~l˙ň§ұ}-źËä!đ˛Ë.˸W”¬hĆxŘÔ ¤aÍěČLfǨ؍6Ú‘ł<vvä¸G&P@P ­c]YŰŠnegśqq«|č+ŹB™îŤGˇ,ŘĹZ •šXyÓ¨§t:/{iůô”'ßNţx‰|c!ťżíG~jEC‘5miC2,gŔŹ<ňŁ7x Ę5>űěł'ťtJ7ÝtSşÚ9÷ÚľP cFë:Fí‰P`@4§U„ŻD¦Î?˙ü§žz*­;FˇD¦x4Ę„Á¬Ě«ľ¦vd:%­·hŔµh,Fý5ŞIú7…ŁnT O—ëĂ"qkŻ˝6Ë$2,}ËCŕ4™#8Ž?ţx"ŚÚŘpĂ yś†G!&P@P@˛M&ŇUźˇŻt©{óÍ7#ŹBé¶OăŠ^ü,Ľ@`«ÜĄŽ¦ Ť+^•7cňtěJ‰Fĺ§JÔ‡+%ZGŘ.-@Aś.MfGÔ’§¤ăĆŤc2;ć ^mµŐđŽŮ9Ę— (0¨ţˇT^ W@zčDF4Šu$šÁcOHMĺŇd2zŇ1Š%ÉŮÚdKÍÇČ_h;–ë×Éü1<„“¦Šµ®{ÉĆ‹¦$ŤĹÇ{Śç˝.™S&U›™’Ź8âöŮg:â1„¶\ [P@P@h<ĐCźćS‹\rÉ%< …ŇŤnÁ¤O`§śrJž’¦Ćí”-˝%=ˇmň3˙F ĺÄDÉĎIŁÂ…*ĺőI»ÇŔ*·Ä%‰]2’u6ĚŽ]´üđĂ_˙ú×ÉP(Ę· ( @íFëj'µ@¨S€¦!ÝÇxŞÉĐWžj˛ĆB4­XĄ‹ŽféúĘ\uiÄk:wj–Ąśy:j–š•Ľ%ŻÚdŃ,ëéô©‰–öö/^Bů,ůŢ(źfnŞX!ž™]ŃŰ.ecoů¨tLŰÇ*±$÷ŠDD3Iđşá†ča·Î:ë0˛ŁpFß* € ( @7 ĐN`č+ş±cÇ^uŐU4·BfQ*…ŇÄšgžyh„9í-4Qâ<­šÔţ‰·yž<Ę­ť<[¤óü’Ţňoĺá‘™ĂËő©<ŠŤĽčIÇjf,ę•ÖŤĄ{aMţe×«ŻľJŹţ†´?ŁV&P@Á0Z7Ş–©€ §Ť$zŤ1Eëx›J¤ĄHËiŽ9ć`Ţ%—\’)i9Ą@‰ü¬Ń,KŰS3®śŽCú”?•Ćże¦ćçŠňŁë_ägéĘĚ©ä´+•ŮR"5zč!ĆŔŇŻŐĘVćöŰo?çśshS,­I–‹]uŐUŤÖĹ-0ˇ€ ( @— ĐB`č+ )\tŃE }}úé§„ąŘQ„ŐQ™7 }%NWnb卓B“†˘˘ą’ŠŤ·‘(ä)o'CˇuDžt˘Â±émdNćyňÂŮžvĺuŽŤ$R9<ĺÁ'#‚™Z„ËgÂ>Ʋ‘I“ kĹc˛`f aŁuIĎP`đŚÖ ž­%+ @hi"BÇó^˘uDŁ˘–M`€çŇK/ÍĐ BT¬úJÓŠWĘPn“±ťŤ±ťś‘N»âŘ8Ĺ„ě˙cWĘĆ®ÖůSáyţH§ňS†ô/EńŠ2 Ç’?ĎĚŰčšÇ@W†3m -l‚•ë®».QË´,K•ŃźŽw fˇpf‰Žçá©ţ«€ ( €]+ŔĐ×çž{Žů×úJ! 49îĘOf¦•EĚŽVGě…+µIhZ]ŢJ!s!{˙ӱ±=/łE~Žâ”9ĄËçJ%§ídćéČL"¶“ć`;i®âí·ßćQ1ˇLv´©–Yf†qL7ÝtLáÇô#LcG;$`GÄsBţŁ€ ˘€ŃşAĵhč“@j'ń0“%É.˝ôR”<ĚL%›a†ĆŚC;’Qź´™R#25ď˘ W8]j–ĄŤäIŮňŤ=ĺŹĚdč}ţrN¶¤“–ËI§(U*ě˘kÄ. ŇADKq±Ĺ‹…ÉR«š§âq:ĘÉŰŮQ¬ P@č6šăÇŹ§GŘi§ťF´._ő•6C_Y™ŠˇŻ< E¦ŻM¬ŢŹŤöUˇ‘Sľ)CŢŞ)ä!CěÍK‹Ť…üůŰB~Ţ2†ˇ Ź?ţ8Ń:Âsk®ą&ˇ:˘–”–b‘%“?6ćĹšV@ę0ZWݧĄ) @?h'±đS3–“‰Tbč+m#V}ĺ g }M‘©8Ma ŻÔ–JoIÇöČ_ȶ·ÎĎ!©Y–Ë•oăD”™gHiöćUb#/¶ÄĆô¶\8 LQ7nܸ7Ţxc–YfIö!Ă6ĂÜ„ ( € ä´čĆR <eÔŹBc/]ĆH1˘3 }%l—úć“!µFř—tŢD‰·Ń\‰Ňâ”?ŰSţ(9ʉ-©ŔümJ§˘b{$Řžg·T#Ď“¶çuKiB“Ä.ńˇ•EjôčŃË-·öM1ĹĽĺĹľP@‰"`´n˘°{Rř·MC†ľňĽ—Ą$„ѱ/ }eŞcć_9r$ÍĘüyodŁ5–dlˇíĹ‹·üËŰ|{9˙„Ľ˙ΖL…Dć”çĆ‘'˛ĹąâtRţMŤĽô6Ő‡<…·iKlŚňS‚íič+Ď{éRGx zŐńś*E#2§šP@P@®`ž5Âs·ÜrËąçžËä¶ŃN u‘†ľ®°Â ,~ĘÄtľKk²+eK-čR‚Ť±= 6˝Ťś)4QâđHÄíH[ř÷_EW5ŰŇ®Bţü¤…2ó·)ťjU(ź·©df~饗ŐŃńpöŮg§!C_‘á¨ÔŕLµJ˙F5L( €ť0Z×gϢ€´äxžÉlLuĚô˝ĚC_y¤Éó^žp®˛Ę*<őMC_SëŞPPˇ Eó+µŔ Ůâmž?eN»¨ o#[$*óç#g$boÄřbWJ!ΙŮőa#ÇŇR$vÉdĆÄéč[Ç`şÔŤ9’…#Ří༄‰|«€ ( €](@ŠUMď¸ăâtDëňˇŻ< %2Ĺâ ©QNj}EË$¸ňFyod‹Dž?5ŘĹF^•‡ł=›Ú?ń6 ,'RžůósE‘?UíLáÇĐWÚW4>id2Ń C_gši¦x0śj^®€[P@Ž ­ëµ'R@˙ŕy&úzöŮg°c"¶´›ćO5?ó™ĎЉl©Ą–"MXŠWji‘‡6/Ţň/oŁá•—^Čś˛µČO†¬ĄÂSi‘NÇĆ)ŇISĘyŇörf¶p!ü›Oećé8„Ä;ďĽĂä)<đ«FĐŞf” “±.GĺĎ{óCL+ € ( @— ĐŇŕQ«Ćłä+3|!@ß–äyşĆkЉŚIS‹""kŃJ©l˘¤ ĄĄvNĘoS‚c;i^dćE" ź°ů_ŮŇöȟަ˝ü›¶—ó”󓇍i{ž?OS`ĘĆ%3©łÓĄŽî„ŁFŤba f\áQ(5do*'ŞaBXFë&–ĽçU {Ěń<ó¶ŰnKĎ{ Ű…Ď{iGŇźŽqłÍ6[jWĹŢ”`cĺöČ–7łRfvĺ#gJä»;Ä uHoÓuáĂŞŻ´ł‰fňĽ— űxÎó^ň¤–.‰ĽÎń¶°1•éż ( € (Đ 4úJęĘ+ݤ‰EC"®šŹ?™Žm˝őÖc‚ţ–ŠFEdŁ•Ňş-{S{)ŢF …DžˇmáůűZ~Űüdŕ’ÓŁP3ô•5p™˘Žh)N—W .„*ĄWl1ˇ€ tFŔh]gś=‹ üK€Ćc1č/Ću4%™+„–S˘IC_]tŃĎţ󴜦śrJ2ób/ ,ţĄ©”r¦ŁY–¶çyňtŇŹüéŘÁ(?Ő°P>Ń`*hĆe𼗡ŻóĎ??ŁTh[§ˇŻq-ŠÂŰČfBP@ţ{oĄĺuťéÖ<EQPUĚ3@„¬Á’,[–,;’ít<Ćń”v¦ľÉíôíÄť¬$wu¦ľ«ŰvĆvśöG–—,[¶ šĐ„@1yž) ¨yşOŐ†Íá|ß˙SČúË ő~^ëă=űě˝Ďů_Ľ¤Wű ß0a€mbärşo}ë[ĽŁĄĐ‰'rŇ“ő?ľúęú f’’)U˘ŕ™”Cax'ý 's†±ˇhĎ„łřÂŃW*t›7oć"?d•}­ŻŻĎ~ôU Vő1đ‹b@Őş_óW ;XĎdłŘŠ+ľűÝď†G_ŃI555}Ą2Ĺ"gmm-Ú)É;‹ 3úppźwţ6s{S§Ł<ÇWqׯ_ŹŽDUsJ…ÚeöŁŻ‘ŚšĂî˙aúÁb@ 1 †üŰźŁŻ,…>üđĂ=ôÇś–B)HqôőŽ;î@Tp˝ajÁĺÎ!¶ŘP˘$—N#kZ’_4˙űSÇd)”-‡OŠ, ßxăŤ=újżÂ™Śšnb@ äŽUërÇ­2‹1pž¶Ô­ZµęßřŐ577{Gee%•)V8QNś‹ÂH zP9áüďŃź9ó+l=śőŢ­[·R»ä 0 ŕ°Á/56ᏍšQ—ó# Ä€b@ \Ţ  ¸ĺö‘GAb­[·Î,cÔ¨QłgĎ~Ď{ŢłhŃ"0bç~µtîć_wN‚PZdżÄĂbÝ˙RóçὉ&Y*ć;H,ľąAá’Şĺ5×\ĂÂ0]`~/{ Yé]»v-«ľS¦LAGÎť;wÄtAZ2sh Žć٦b@ 1p91€ŕĂŻ˙řŹ˙ČÇ©ěwqô•‚ÔâĹ‹ß÷ľ÷±řgë‚t™‚ » Ó'Ţ }B:äz·]8n*'Íź&ĄIŽsű ßŮ`Á#Ŕ7ÜpB‹;‘ŃW”ę’9Ă„Il5%‹b § ¨Z—Sz•\ <$Ő!Ř;FťŽÚÜ„ XďĺĽ'_ă‚ ×@&ŹLP&±Sé˛,éĆľţ®Ű’ůÍbcEóń.77ě(E®‚~óÍ7·mŰƦB.ěľ‹üüą ˛…™Áöřb@ 1 .WĐ[¶lů§ú'+ŐQ§c)”Múě§ă> n¶dˇtÉ„ˇČ»„ĆĄćiů„y®Đ¶ŔĐ!Ä>D”?˛{’’[€©Óńµ.„VCCÖŕ 0Ěŕ“şŠÝçb3Făâ G 10d ¨Z7dTk 10@=őÔSÜXgwŐŤ3†"j’ÎpyáeÚ aÄćm”ą=d°ßűÜ©Xó§×BÜžôÇ!éż“ţXP~–0S~ď5`ĹÇ0§ŮmŢMMM;wî|íµ×¸K…uo>¬Áµ2}%0UG†s ±Ď6Őč˝b@ 1 ÄŔĺÇ_NřÁ~ŔÁ~źŹŕł wß}7u:ŽľbńŁŻ&B#Q27¨ ˇŚ 1nćioÓ?nńXý®A~kŇĺ#ş?]!6OÜ0şÝ€'č鿣ŻT0y¨]˛źŽ=†¬ŰR¨‡XB{‡ĆÓ5Ă(a1 ÄŔĐ0 jÝĐđ¬QÄŔ0e€ő^ľPĆň¦ýţ±cÇRŞł[ęAI͇Fł»ěKrJ(÷ŤQwą3nŚśŁ®ÔăÄÚ$#gšř'3㌱µµ•Żľ˛ÍŻľrß3뽜Î`˝—.~l2*´\*Nţ(YÄ€b@ Ë–÷ř2Ő>hň€jë |Mžű4°đJ„ż7UŇ„`1ÉäÍČÍ›î`ÉĂ îówvĆÁ{=9]nŚB°łúkKˇśZĚ1㦛nâ]^^nKˇQÍ0s‡‹MZ’9eb@ Ľł ¨Z÷Îň©lb@ \ŔŔš5kPNśJŔĘ:'ŕńÇGH]qĹuuuŚ ŐOńe]¦ŇĚ9ăŹŃěîŃqvqýĎjDsCůđäćăCXo“ő^®޸q#ë˝Hj–ľąęŁŻŕpˇĺ‰˛yZěŽDÎaa1 Ä€bŕ˛dAµrĺĘ={öŘŻăV ÖGzč!v“qA·Ž BB©bşx,ĐVF­i>ŕČŮ t{ś­—w»çʰç7{”ÜzĂX,îťÓ|wÆ ¬ s† †öŐWÜ.Ubů´A}čT{č#,ĀȪÖĺ‚Uĺbŕ,TëŽ?n ŽfÜvŰm”ę~úÓźR»îşëXö¬®®NnF‹TšĚeY&f=Äťńtc2Ę»Üß-ćLÓMćąčŇ´§"JńÔ©SÜOÇŃW~;ß‘¸ĺ–[PŇFĹ&u¤Ç:đůD ŮŚBĚAo1 Ä€bŕ2c ˝˝ýůçźg‡ż‹R‹ Ü˩طŢz‹Z‹oMpÉ:$ŇQó˘’†ü’I/%‰ő!2%Ç!)±Ü’LZ<9F.Df)IÉ-u`Kˇőőő,3a ŘcÍČâvĎęŕ˝b@ \0 j].XUN1 Î2@ˇĘoNá,EB±ĚiĐG}”ŇGA©âUTT`k°č!SlIaÚ]Ő™ÍÁř»OŇßň—‚=ąý§‰'7ZÓ»ČĂŃWľúJťŽŐďÚÚÚ{Eo>Iéyl,‡öăŕM% Ä€b@ \®  "X´_Ç>}.Ŕýđ‡?ĚűÉ'źä[óě5[¸páĽyó˘s ¨´ Q‘l0ĘËlnn7Ł7Cćt»űp"5“óôś´%×ömßľ}ýúő'OžäÎ> ”¨JűęëĄJ¬ ›­Ž­Ko1 ÄŔĐ0 jÝĐđ¬QÄŔ0e€Š•Kęt†Ą6wß}÷ˇ¨^}őUąuĺÚkŻ˝ęŞ«”ČMŁÉBPcaÓđ€H;+ňÜÍ>>\ŞÓpäO”/ÓůĐŚü±đظćOŔzď‰'(J˛ä‹…"·sôő˘ë˝ŃO°á˘A#šöXťń\KŠ1 Ä€—-aMŠťeÜцšBiPŔBb­X±‚ghÎ1TVVšV SQ»Yěír‚fčďjÄĂÍ!ô±!ĚÁýíď#Fł}>6łö÷łś%„ąť9sf˙ţýhH–BGŹýŢ÷ľ—Ň$Kˇx&Ź,„CDئŤĺoźFhI˝W@ 1#T­Ë±J+Ä@ĚBaÄ \°`ÁÔ©SŃ‘Ď<ó Ťĺ č˘E‹ř@*·#SłĂ'U…Ć~Ĺw®ś‡<Ř@;Ő?4FQa—çŤő'ĘŽľ˛Ţ»nÝ:.‘™óÓ8‚°µ5ŮÂä!»B{3ůD“TS 1 Ä€¸Ľ@vâV‰ĺs^ěž{î9>K ŹbÖĉŮw†JŚd˛eK‹TGȡw™^ňfčbwx{ţ–ŠóżGŽŮĽy3óCŽüXÎü˛š¬ÓůĆؚ‘%ŐÇMzš]o1 Ä@®Pµ.× +ż1čžšš» yőęŐśĺ`,·®pŮʤI“8‹R47‚v`Ľ ‡I#g÷!бű›ŃíˇOCěádRcÍÉJ/ë˝Ô©>ŽźL™2…­‚Ń~:źHZ32âZ"ěMŃjŠ1 ĀDŽňcÖ¬Y|#•9^~ůe® ćîjvT¸XMt}'.‡"ltYŻ˝m_^벷;đźZ"6C˙T»;1 ĀǓXČöŁq….ËŠ”˝P,śŠEbqľKuŤ TÂTD(«Běžł[ţĐ'Äîf`0ů=śÚ˝e? 櫯ܻÇő)TëĐ„tńŘděmÓ-nĎŇĺţˇO¦ňĄOŢŁÄ€ąf@Őş\3¬üb@ Š“GÇŰn»möěŮ/ľř"—ٱaŤS±ś*ĺK˛\Mb‰Pr.ć2Ą…×Űó3¤ŽB1ŽŻľ˛ŢË®«c’·Ür óäFHę…©; yŁfŘĺŘO,iń.1 Ä€b`83€,AśP­cű˙ÜąsźxX]˛d MößŮev¦—.Ş(B‡KÝm7żňłj·łňÜ­·ŢĘTGŽIW–:ťOĚ€7ĂACc‡ŹÂjw1 Ä@ŽPµ.GÄ*­o‡DĘŹvÜ[7}útjvk×®eĎ™qÓ ‚’Ëě\3ą¬4KX ±Ď#é¦ÂÍ›`ËŔŁŮÍBŞ—+TPlÜ»wď„ –.]ĘôŞŞŞčâń-Đš!v@d›IZ’i“˝á@Âb@ 1 ÄŔ°e‰ĹÂ'·Ł[ŘdÇ9†+V°yíşë®›6mGLóÚAQ8€±LŘČ´^Ă&E°¸&IĆ♚;G_ůű鸥««‹ €Ôé8fQRR’ĺČ‚Źes°üŽ„n›őw1 Ä@NPµ.§ô*ą—Ě‚ AÉŃ $e;›×ž|ňI.łĂÂőv¬˛˛ěyQćf©ŘFwčĐ!®:fbhGęt|•ĚŽľf˝7ĚÍ-SÓěQŻMĎŤ|Úb@ 1 Ä€@-đp)0縂Wy<üđĂŚĺ(ťc@óŕcĘÇbiĺą…É­×ěa c‰˛fŽ*ăÄ+Kˇëׯ?pŕ7ëQFd)ÔŽľ˛TÇX6\˝Ůď}î×e Éâ…¨)Ä€xgPµîťĺSŮÄ€xg0ńDě]ďz— JjvěXćĚ)ËÂ|›‚]x®±}®üÜśJŘ•z|ĎC¸űc¤ÇŃWNŽpD÷Ô©SÔ ™çJ¨ŮeŞÓyx* Ní “ŕęcö¨ËŤb@ 1 Ä€0Ьz˛źněر|‹Ż{ń nö :Fł®®Žs xšüčWWÁ:h]®X7=‹Ąňi°`çčëľ}űXÝĽy3_}ĺč+“᫯t ^bĄŽčŁBpŘt·ĐčŘ» 1 †€U놀d !ÄŔŰd‰FMŤÚe;ŞcŚĺdW™pÍ ‚˛±±Ńe”Ýe"ęĘuˇ)-…ˇż9ŘŰŐě<¬÷ž9s†KôÖ¬Ył˙~äăÝwßMÝ0y…Š2D‡›Ch ±…G–(gÔL:Űz‹1 Ä€b b‰Ĺ9ľŰŔevÜ=ÂŮŘ•+Wr0–s ¬’˛˙ýJ šžÁěnńfŞżąů÷1;Ç]9úĘ‘¶Ô1%vůqôɇŔËT§cžLfźXBźg ‰|ÂfĂ!„Ĺ€9e@ŐşśŇ«äb@ üĽ  k6Şc\\ÂÖ¶Ő«W#(×_ýŚ3(™±DIFFĹbĆ,+ę˛7ŇsôőČ‘#\ꇔ¤tČą×kŻ˝–kőčuč!ök˝é{ĂćĄÚĂŘű|°ëb@ 1 Ä@P <5ĺ3Yś9ĺ6^–EđP2CbQĹc››I)K‚3 K™ň›ł÷†ç!, ꎣŻ›`)ÔŽľ2 Ž,px=㥺(Ź7 xÓ¸Ńőf Ý’K4ůp,a1 Ä@îPµ.wÜ*ł) zxBń—â”0YÔ#-ZÄ’/%8ŽúřăŹ#+Ń”¬ S>Ł˘ç™žĂĆâmŬԡ#|x:::řŔńć¸+E:ŽŤő˙“ÓC’Ŕ†v{čâĐ!‹Ý»"·"l˝Ĺ€b@ áŔ€)ި—Ký˝ËyÎ1°2Ę7V(˙ĺ_ţ…“ |ă‹mw¨/Ňzró÷ĚĂ9X áŤăjNK0W‹ ¬îż˙~ŽMđµ.śĂĄGŹu`™­ér‹ěţůg±[B˝Ĺ€CŔ€ŞuC@˛†b f ©ŠÜĂőź[ ŕčE5"‘č< v۶mă2»Ůłg×ÔÔŘú'ďPíYچöŃ},ÓŽôx8—qřđaîpAGRłcĄ—Ű—§Nťj‹ĚnŔ›>O·8»’ĆhVîlv'íQWjć0JX 1 Ä€¸ŚȢ7Y~8Ş ™DáŚ# eŕ 91<öŘc\oÇB)ß|ŕ{˛„“?’X––7]<>„0If>\-Â"(úŠ]uŁFŤb?ÝW\ŃĐĐŔ9‰0Üph±ĚX’Ćě]IAčţ€d¶Î˙ĐٰŢb@ ˇa@ŐşˇáYŁ1˘‡RI e“K=÷4 …¤ăËeÜÇIX;ŁĘ>»Ý»włĎŽĎČVVVâF,Źgs`vZ*ĎŚú¤ IÇą ętś{Ą`Ç]Ë|J‚ă!WzŁ(ĎéIBK*Ťe–AÚC·ŰÄ|b@ 1 ÄŔđa ’©?<ô1IąáŔCUŽC ĺÍľPD|˙5KöľQSăJɤΖÁ@ŞŃLbqµ'^©ÓQä +/^Ľ: ÇČiI˘śá #ďĘâ˝îHM•j´¨Ô$aBa1 Ä@.Pµ.¬*§é wěI•‰Éś“F,fçvd–©Ů±ëŤËVX¤EP˛ýG-ą‰›WMVz6ź$c˝wÝşu|Č‚kS8÷Ę‘+Ú4tË>«d/–¤Ńf˛‡Ăí1çL!nwp.NŠ1 Ä€—9üŰ߀+ź,?؆’(´§ć5gdËě˛xöŮg‘†ŚEPÚĄĹÄZŞdBtí–-[ˇě(đń4^Ýóů8°™„ÍÓkÍČčöD©˘°™ŠCŁĄŇ[ 1 Ä€ž pń.WÎŐÖÖ˘¸ÍN•O(B{*]Ôţi+ÔšŤ±¬Ś=z”Ż{Qqcˇ”^Ű•f©˘„wĺRTô8ľŔ~:NÔ21k}/›ĎÇÍÄš‘1{W¦Oâ`0yđ‰ü-Jo1 ÄŔ1 jÝQ­Ä€8ËbŽO€qÍ2Š_Ťŕ¨it»°“…Ź‹?ŢëEH*N­rŞ‚‘Ń…ÜŠ˛˙~n]±Ó¬› SY%íȡWväˇ>9úĘ~:Ô'4X‘f,SiĽ řXĚ©+iżTFɂݺR§Őb@ 1 † TÁXzäb*bčÄOt›GČZ••Đ< 8úČĂÁUî­cu‰Ĺ9®ˇôFŮŽBš*LE“iś>}ç5kÖpWňŚ-uTë˘ŁŻ–<‘¦×ň’]©!©F‹ÍÔ•iTŚÉ™Č"Ä€Č5ŞÖĺšaĺbŕ,&€ěŤ(dogNů4…6*e<J|e.’ ¤ JŚ–™ŁśEr™űěxŘÇg·#Ű>>’ăŚJc˝—sŻÎććfśąę[đüč«Ë8Ýf6CLŻ7„!‘Ńý3ŮĂXĂ qg1 Ä€b`80€–đ‡ßË÷8J˝Ś˝oě°ŁrÇš¨)Ą ˘Ěb ‹ÄÂŤcK–,A,ŮÁX>đĹb'cůägo-:::¸:Çfi^wÝu\\__og)p‹µ@·{ŻŰ˝+Ö‹s˙d—Y’vĎśěJZlh˝Ĺ€ąf@Őş\3¬üb@ \Ŕ˘Ç a8ŰRÇ© *w(K«Ů!ćRŢgI•M- @ÉŹS±×\s g4ěüĹęŐ«ŮĘÇ 0+Ăa,Št}Ą`G Ź:>»B…QČ`ŹŹč»aa32Ňe–¤Ýş2Ů=Đ’Ű;SŞLö0VX 1 Ä€¸Ľ0qeŞ!d§8C€ÄbgśŐě°g'!“21‰eçز‡”b™“zܶmŰě2;öÍaˇ,xüřńW^yeăĆŤÔě8ôĘŐ"ÔňťĚ–ÜA4“,v<-6 ÉäoÎIěľć1‡]>Dv]†‹1 ŢAT­{ÉT*1 .4Ş‘‚‚űěvÔŃŘÝFŮ#ʧ ±#ŕĘ 5I!ٸůć›ůJ,5;Ö)رώÚRňÉ'źÄĹ^Žľâf%B—ežĘ†›©84†!™ěřD]a3‡Ć0<´‡Ř¦ˇ·b@ 10Ü@°™‰ŕ{śc@_qŤ/Ő4žŤK•X¨,2S‰kllä<,‡¸)ŹCŻč+>Ň…âZµjßéB€Q§cő”üa%1Ň*ÖŚŚĚĐ-|ÚX’Ć,!ćś q‹"Ő?ňńÉ1 rÇ€ŞuąăV™Ĺ€ČČ€‹4śUʨÜ!(9¸a5;4%ZĐÝźŚ‘•¸BB’s/ň1c8¸Á5+,Ä×'°Ő?ˇ'™ł9„]fLÚÝâ5>ýŠâÔ!,UjĹ“H:GjŠ1 Ä€—%hŻ‹…ze…‚âpŽqek˘H,Î1$?đE,ÎNQÝčŔ$‰,]ş”»Gžţy.°>zçťwR°ł)á ŕń(îMîéŔúł¤ĺÉd'0uě©!©ĆhV>1 ÄŔ0 jݬ!Ä€8Ď€)-Vwą«·5M˛‹päáŽÔ$oî[ˇ ĆC>ć칬fđ.®2íl,'^YéEž˘)ą¨ŽíuÄZ¸˝=.Čăŕkż–*ôa&a3Äa×;es†8ĘźĄË= x“=b@ 1 ÄŔpc€ |S‹_Ťd˘$gë ,ŘYŞD_ˇ˛š››q ´Çš(+•¨PW!ô »LÎq5°Uëx“çĐÇ›‘ŃrşŃAhŹŚž*oĎß3d‚ßžt°őb@ äŽUërÇ­2‹1Ί‡mn,ĆÚî9Ţ`D$šÁGŻ)B0jŹÇĆ챫@eFz19FŞ˘ÂČĂf=Ţlëc,_ő˝hBđ±wčĚÜ0ň0%fNĚěĽůi p,e;ŠBěśćwˇ°ŤpS‡În3‹1 ĀÄDŰÜLf yˇÄB¨řAtáĂÓÔÔÄ*fuu5:5’…%©tń°ÂJ†ŃŁG3"ͤgcÔĹ$-IR_‘g~šé+óá‡cá™¶ŕÉ|ŘBhúĘŠ•á¬,Oh1Ś`ďĐ’ô”E 1ST­Ë)˝J.ÄŔ 0˛7şŠŐW$K»<č*”™/pÇůEm‹ÝÉ&;˘.Č;¸OOđ2U…[—“8´ŕĺŞfŢ”™‚®´¬ŚYŮę4iXDăpôčQt0ř!8 ‰ĺŁ´GŽٵkçńă'°p>—^¸§™›őŘôTP@IDAT7bÄ~   íMţC’ďb@ 1 .o¦x›šB` RXh [”«xP#h Ŕ¤*‰…D1%=" áY’MĹÍž¨×guQ;SE8ť:uĘô‡i‹KJlVM_ńCĐWl DGń­[KN/› ¤ ‰µ};ź;ÄpČŞYłf±F ŕ©­­µ3ÂDY`8%·8đޤŻÄ€ąc@ŐşÜq«Ěb@ ¤0€â1Ńco„ťŐ°”EŻŮ!éBnň6LÍÎĆâ‰&łÍh ŕŮđôńBěĆţĎ-öĚ'´¸g64˘w8°~ýú˝{÷"'[Z[ćVŔ0óAç21NřRw;qâÄÖ­[Oś8ŢŢÚV܆·€Ř®Î®‚ÂţťtcÇŽ›1cÖµK®++-%ötsóţýű^|ńE~ô¸qăąSoúôé¤J*fźX8+7úo‰zŐb@ 1 .cL¸ 0€˘ÂĹĘ(ő8D*‹:ťě썢l-H,J]ËX„ iLxÚPV…Ř(ĹÍ<˝é ´›‘·Ă.äß±cÇ6oŢĚĺw€¶Ö–ľ™„Sr;őÁT=ćb@ 1 j]ŽUZ1 ËÚŮ„CP"Âl‹­ “e "Ö_łăAĎŮM+Ôř,ϤěĂ’T“á„pŕ1‹°éBó˝öÚkO?ý4sX¶ěĆy ®UW_RVї߇N<ÓÜ|ôŕľ­[ßÚř曯Ľň ţ Ż]tß/}¸aÜř˘ňŠÂĽÂž.>šŃÜ×Ő5cÚ”šQŁ6µíojîęěˇ~W^ZTY\ĐvňČć Ż?óôŹ=ö—Î,Y˛¤±±ŃĄOĆA8UÇQŻŮőb@ 1 †!¨´Ő.Ő:–…k‘žęŘ}äd[G7ő»˛â˘ęrÖKŰîŰůÂłO?óôJşőÖ[)ۡ9m>ˇÝŤ|Úb@ \3 j]®V~1 Ĺ2Č–|íŕŇÍĆ"1‘&űËuçî%á<)Š 5iëĆÉ1B]…Ü ®ăcͤ‘ů|ç;ßŮłgĎŻ}ć×ĆΚżíHëÚ'í8ŘÖމň,+-YY:zä”)KçŢńKź8˘čČéÖÝ'{_ßslßÖť§Zۇ GVVLl¨=Úwrrk~KkÇsv>űĆ®SgÚK‹ ËK‹'5Žš;yĆGż°°íčž'—˙ä=týŇĄ ,€ź˙Šp†Ž¸›€b@ 10ś@ ‚(N!¨|MÔĆbáAYá€čâM94oîĺ°Kß’ę"´¤J¬ĐÁÉ7cÔĹXË—/ăŤ7Ţ}Ű»ç-Yv´˝xËţăϬ;v¦m?Ú‰˝€#*ËF×4Ö/vý]ž>޸éLëţćü7÷ző>poO_aQAMEůŘŃ5‡ó›Żě9ÂYß7¶í{ěĺ-‡›Î ŻĘJŠFŤ¨ś1~ôŐ·}ä=÷>đĘłOţđᇧĎqĎ=÷ mnŃ”RçůřŹb@ äŽUërÇ­2‹1pÔ!o:"yg®HF;âj‚’ŁČGJuŘ­–ŕ!–.vá!+ŮňơQÖŠSs’ŮF gc–Đž´żŮ9¦şfÍš?űł?1yŢwź\·aÇÁ–ţ:Ýůă´ ÍS[]ţźîż©¨şî‰÷<űú¶ăÍmhMěg‡îë{mëľ‘e3'ŽąáĘI·/šŮX;âG/nľń÷˙÷č«»ďľŰN0„łeJaSX 1đ d@Őş_ ůZ GPT<ürŢ©jŁ J´Ł­îňĆ2°ÜŤŹ JŢK%Ą= v‘ Ä3¤x`äł Ňć`Ó0·$›ůáxßîť{í˛?řúň7wâ:®Ją y^_^_ţ˘™ăfOóÍĺk}q#WÁôű\ŕŐqâLëË›vď:tü] fÜ|Ő>VöŻO­;|˘Ą¨0ż«»gĂÎC'N·Ü»lî]÷|č{ßü:–{‘ą«%šU–نłb@ 1 † ® ‘20˛öéwŹP°cŐą…IJ•QxĐWŘ‘Xśc@eŐÔÔ ±ü訧 YeDłdˇnĽ•+W^1{öâoůÉşýOŻÝÖÖŮŐ˙!Ś‚ î•ăëŻs§Ö_=cü÷ź~ýáç7´µs‹H^QŃ>d&…†ľÚ~đÄGn™˙Ĺ{®˙›GVď>t}…ędő±Ő›Ž6µ|ć®Ű~ĺôéżů»ż›?ţ”)SlJĽűŔąźŕĆ,öĐGX 1 ˙™‹A”S 1pne5d„QôfU“±|¤ú†Fd·>H:š’.„#únGćş¶ÚŃ´Qú»ůl ź@4®ŰtŮŰ|¸ĎřđáĂźřä§~´zË;!ŮÝú÷ăľ<6Ö=pË‚7¶äü+ľlő‹}Ú2´ŕČÉ3Ź˝´ Ď+&ŽůŕŤWUU”0żšÔŽť~ěĄ-eŁř Ĺ©S'÷ďßßź~ŕ %7»żÍ¨·b@ 10|@D?Ö…ALQ CYQłăAMQł+±Ł©PV.±°ĐËWVůŔ=źĎ˘şgŁÓő• mŁĐkMft‹Ĺz MľŮuđŕÁ[n˝uű±®—·ěkďęF#™›ż Ż(+ą˙]ó?őč‹›Ű:zúŹRô"~ĐfĹE…í]=+×műűżX7˘ňsďż®¦Ş %ȉôUO_ď+›ö<ôě¦Ü˙Č‘5Ü‚g)ÂfeôůzŐb@ äšřąOůŀΠ .(‘ڍIuČDĄ]­BÓž’]˙m,t!%”Tî¨ë‘ˇxŕ‚äH‡Ńd©ÚËŤćcS]»víĽąsëĆNxâŐ-i…şţmux.ś9nš‡V­ďčDn¦čČđ‡ä´¶w>ł~ÇSk·/š=ţćÓlJĽŮ¸·˙Ř©GN׏ĎIŤ¦¦¦ä„mžţ¶ĚÖ Gb@ 1 †©ő¦Ôn‹S ÔěXĺ¬+U9D]*+ء˛ ĄřŔ—ŐěěąWý °‡( Řěn4€1ôĸuëÖŃuuă&M]żëČé3mÉ•P|zzzçM­ź5qĚO_ÚÜÜÚ‘¨ćEäQłŁä÷ÚÖý˙đ“—®T˙eWâałBz!Ř^ŢĽ§#żôęóąŚŘ¦d˝žfřx8F÷b@ ŞÖ ÉB 4Đ}6Ě3\F\ş ź+Ůť=Ä|do;6Ů!(YÎ"­˘.ËĆ»ŔŰ·o_zý’CMmOśŠŔú|‹ oš?mÓî#›÷ăĘf·g̶­ŁsŐşvşkńěŃ5•®ą±Ąµ­»¸¤śhKŮá”;%<ÖJOź>}äČĘvh-šYň[rwČ4%NL›:Ą» äŕ‰ÓýwŐĄíăâşeWMÝôä›»Žô_\śćă9`“ÝË÷|ĺë÷ŢpĺśÉő^NDzutu·´vŹSĎŻćéá€,]ˇ›°b w ę?)s7Ľ2‹10 pŃ@ň%&PŠv0–wżŘxčBhš ´Mv`"()Řqߊ­[fņÙĹÂ^0z”TÓ§Ď@Jvvť_=ľ0<ݶŞlîäúçßÜĹí*čßTˇKF|ětëk·1ÚXD¨ŤÎĆ

ĘGfw8ńn_PYVŠľ˛o‚M®Żíjoás´7Ýô.ćNÉg›4ž›Žţb@ : ;t\k$10Ě0éÓ/‹Î=NČ9ĂŮ?Ýž+b‘R»Ď¸QIÍŽE`D$‚eÉ[j’ČîME59fĚ-[Ţj¬QRŘ_MK>Ř8¸JÉíÉ×¶ţχź{pĺúéck9ËW)Ţý•#*Ë8€FqcÚ¸QěŞ[˝aź­ çú[Ű»X.ĆŤfcmuYA÷‘C‡***kkkĂX¦Ä3ŕvAN3†žÂb@ 1 ÄŔp`Ŕ…AżDxüWź3Ävw€ů!~Qč+îřÁXtU<,”ó˘Ýgä!6Ę“˝Ü”wđСňÂüĘţK?RęuÔ×ĘŠ‹zňú^|s÷×~ôâ˙Y±fÜčŞécGm=päŢĄsGŹ¬ŚŽĂ˛±nôČŠ÷_ĹŁ/lb¸ş«7îć“c§[ŰmbŚ1ojăžť;ZZZ'MšM‰¦=ŃŻŔYÔb@ Ú[7$k1 Î2i Lę;2Ńb¤’hl7űě8 |DMš”¤rg>ä1ŔŰKŘ;»Ə˙úúőż]]RSYĆ>¸´)ĺw÷ö>ŢüČs[Ú;)Ŕ˝°qďĘ’}GNńŢëęGU5ďë’÷ćެ*cŘç6ěéYż“»dëŞŰ;:O·t°}Ź9Ol¨ířŕĹyÝ“Fon¸Ŕ.ęčę%m[›ăňYÚ]ńĘĆUSŐŐÝ3ľnÄ[»Ź"pĎN†«ôňú:;{ú?űÚ×»yß±Šââăąö®§µ˝“Ű[F”•N©yâŔú“§N]1çJ±OÉÁŮTç&oö¨7š˘šb@ 1 ÄŔeĚ2 RG©?ÖŐB&Obžč[5•eMzÍÁŢaThçŮWŻ^ÝŮz¦±¶’íz\kkÍËădhď䣱,gć=łn[a~:Şą­cÂčš×¶ěĎŽär,Ď«ëŠßŘyĐ+'Ź),,8z˛µ0/źŤx“ëGNUńô3ĎĚž=›š#™Ł)ůlÍnü4oş€b × č$l®V~1 bP<ţÄ}imw6`.ÔÚxĽËŚTĸ̎Ľé˛P$SŇeFîă€cŞu|;ěř‘Ăs&7ööô¸s¸˙¸-sý÷®ô'?ÓÖqŞ­Łą˝˝ąµł±®*\.F‰ö˛ďdKgG÷ÔńŁűşůE^Qa»óúż—ŃŰ;nLͨňümomćfqăĆŮ4¦sAa1Őîsç&,Ä€b@ L-$5C¦ßú»„H•X,˘Żx(rˇŻ8Ęŕţ–<{Ë'ČáŚí±Ă‡ÇÖU•(ď< ŰîŠĐWůý* §ÚÚ)Ő55·7Ž®ŠĽ‹ ňŹžl9xĽyţôq˝=Ôôú¸Hę€}ýá}‹fO:˛×olX¸pˇĎ'š99ÍbŢŚĆRS 1kT­Ë5ĂĘ/ÄŔyBőc(T„çýÎé¤ĐâŘĹĂĽ˝rÇú'ËżTëř8ŔWzÝŮ€żöxZçzňXűEž®]űÚŐ3'ôoK{(Ôőôô±śËŢ:úÇŢž>>X6˘˘<Šŕ(ÇŃ“gö;˝xÖxvöPXäł¶ý_É ŢX0gJC^űÉť;v444ÔŐŐ%çC63ňŽ2«)Ä€b@ +\ ¸60ŕŇČŚ–¨reîĺAŮp0–›ěE~bç(Ę,QZ›Lh#r¸şn箍#Ę«*ą!$ĺá{«îžóúŠďŔ˛K®ĄŁ}DEEB”qĘˇë… »o»fzey [í8âŔ»¬˙^ĽĽŞŠŇ[Ż™öřŠÇů3f̧lvޡQX 10ô ¨Z7ôśkD10|Č$}LYĺÎőś«%e-LÂXÖ~QcW«dŔÇň„Ŕó;p,„“ŠíuϬZ5gJ}U˙gĹbG}®şĽ¸µŁ‹­qˇpěëßS‡!ö§ ×t¦Ť3|kbĆ„1|Ł­˝ł´¸ V¸yćŘڽ۷śh:É vLĂ»Í0š§ý®ä¬tĆˇŚŽÎ®uŰ;Ůzß Wr~ö Őş’âĘňŇůÜ`WŇőę+/ńq‰éÓ§{¶pJŕČNcŞ vO1 Ä€bŕre Ô™~c¤%R›™bÝnQI‰…ë¸ló@á „pÜö;űÚĎL©Ż-).¦7ô§Q?˛ňdK;ľq6C^^aQ>¸§[BŐe˝Ĺ…v~źżűş˛’˘–ö޶®îĆş…E…ÜĽ`ősĎlÝşőÖ[oµŮ&§NěĘ ĚÎMX 1kT­Ë5ĂĘ/ÄŔ ܉ŢxdnxâÉô“[dŽŽW} ÁŮŢĺyB;xîÜą»xvĽµxÎ$vĐążľ;A­­µ+Ď÷ ZjFÔV•íI;GqăäÉ“›››wnß:ąˇšŹ·2Şß…ŐÍR> Ć—&‚n-®QÝP[µóŕÉ”Ýxaßz|íĚ Ło»zFK{wOw—âÍť4ćŞÉŁľţőoĚ›7oüřńx…ó‰~ťwőObŕ‰Ιő§b ‡ ¨Z—Cr•Z $.€BÝC{2<´„QnO5zo±,‡ĐčͱcÇÖ××?ýäS7_=ł¤$řüŘ@ĆŢľŢăÍmÜ‘\Txöެs)ň˘Ůă‰Ű+č˙úÄ´­»síÖ}{ŽśüŔ sk*K8ŻqĹÔƆňŢ—^|ˇ¤´”Őf_řŤ¦D"·ř´/Č®†b@ 10Ě0I Đ %aHčźÉú€“ŁX`˛ ;WסŻŢܰaJ]U]mßÝ ÔÔńćÖ1#+ą-ÄíÝÝ=K®śŔ]#›÷íŻçyÇ9Ŕ‘…Ť»ýěĺ-źyß’QŐĄ4;zz¸őęµ/żđĘ«ŻŢyçťśŔőI:8}ľŠç1 ÄŔ/„Uë~!´kP10LpąfżßšÉw¸®;H¦’I°ÇS‘K¦laxčă!| mńâĹŹţô±Ť#&Ś™8 ›ż~ŰŮă&ŹÉGŇ,ĂčšĘ›çO_őúö¦Óm…i‹ż(ĚCMgžY·ýŠÉő÷,˝’ÝyłÇ×ÜľiÓć-sćĚńďKř,­MěŔíôb@ 1 †žđ'›HHľ]ŃúgÂÉ f‰ňdÉfG1{QQšçÍM›ËúÚ&ŤYTpľ*‡sQAÁúíÇ׍ś>ˇ.Ż·€âOEYń=Kçľ°aבăÍĄş¸^×_ÁËĎ˙ÖŠ5”ů>~çâ’âÂĺe×Ďlřź_ůcÍš5+Ë”ěw…óăYÔb@ ŞÖ ÉB ~Lë Rń¸ ĺ  ’Vsĺ—‡‡ Ăln·iÓ,Y˛äĹ—^:z`ď»Ěčěév$a_~ß«oíŰsěřßCii~gWOA^ÁÜ©cGŤ({|ÍVľtáÎ! O•­ßqhëţc×_9yl]MQ×éU+źâěUW]EĄNɲy—Í3BX 1 Ä€¸ě00Hŕ˛áç”XagŘŚ4˝ŕ˝nU´}űöíޱíʉŁ++Jü~:ś Šň7ě8´q˝{a}mywW_Wwďś)ŤSÇŽdë\Ď…™ĂQ(óí8ŘôŁ6ŢłtÎÉćöw]=}ŐS+Ö®]{ß}÷QĽč”ĽíńYńÍö»=úÓGďľţJî-%"÷ÖťnéřęVĎ_÷ß>u×ěÉc›Ë®ś´~çáÍ{Žćgţ-[nůń Ź4ť]]ôňłO˝¶öµ’’’×_ý{ßűŢ>¸iÓ¦.vë vnFçUŻ[ÜÁg+ Ä€b@ BI`x0ż=e–L)KNé%w6 ń´ˇ‘[ä^}íŐ™ UcëFäőťß+‡ľęčęůűG^®./ůĎ˙áÝ fŽ-..Ľcáô·ö}ÇáŢĽ >ćó%Šď<±vçÁcFVTćµü÷?˙óĆĆĆ'Nüđ‡?üçţçÇĽµµ·Ô)a‚ý´(żšb@ \3ů?"s=˛ň‹10üĺŽÉ D’뤷!Ś<$S’änq`žŠfjWiiéŤ7ŢřÍ˙ó­Éc*LźŔ¶8˙ d;Ź÷?ŮŮÝłhrÍ_|ć®˙ő÷-›?udeŮ­×L/)(ävwľäy´é̡¦ć3MÇöěÜy¦ůĚ[omŮ°á ´jSSÓO~ň“uëÖŮÜÂ@źm4ŐĐGX 1 Ä€& ĺA<N<|0 rÚB`Y*󉆦‹ËFćĎź˙â‹/絟ś;ąˇ ??Ü^‡˙ţ'Ď´uÎj¨ř“OĽű˙Ţď˝nNeyń‹fT–”„_ź2¬¤¶m;plTuů†ukOť<ŐrćĚÓO?ŐtâDmmí /ĽđđĂwwź?*ááţĂýçx—€b`((ĘÁ4–b`đ dIţů…Ád óćÍcI™’$»nľůć˙čGĎŻZů+w,ZłeŹöőćU—˙§űon=ľď3_úRuuőý÷?đ©O}˛aTő—>¸lůř-ßxěŐĽ nb9Ę ŁFüňí׌ŻŃÜÚöŰż÷źżô›żŮÇm+…Ĺ••ś ůÚ׾¶wďŢ… fźmrŞ>71 Ä€b@ „ d‘ ďIJ±˛Śu-X°ŕ™•+_~qőâ›îZńĘ[§ŰÚ-KˇĹ…ů_úŔŤ#‹:>˙ąßlmiyĎ{îú­ßüReiÉç?Ŕ%" _yřůž /ěóźŮÝÓ÷ů{Ż_8süŞ7v-şţ¦ź­XŃŰÓ“WP\XR2˘Ľäˇ‡úęWżz˙ý÷űĹ#Ń”,ö’˘Â_˙ĐŤ“*{>ţ±ĎlxóÍéÓ§Ť?nͶţÝ•×_9ńŢć>ň›'řÖDô©3.d)Čź0zÄô±Łţî'/­ŮĽoB}ͨފŞĘŇ«gL¸nvͶm۸É ›:UŚ‘=jú/b@ 1 .{"`M—C˛ó%1ç‹¦Š˘˘¦ŹjÇČf·«ćĎ_ľ|ůM7߼xÎħÖlăFŕ<ţ×—÷©÷]·hň˙ë·ľôôĘ•ŁGŹţÜg'ě:rúľńřŚqużńÁeßvýŢĂ'ŮŽçCř„«*JŢÝśŻ˙앇WmÔ0’3¶ĺĄEŁkŞďY6ݞ§“±ČF©.Ó”"{ÔŚ†SS 1 t6¬*§é ¤ÂpE ćIOzˇŐó0–c:Ć-ó‰ff  °°đxů•Wľ÷ťo˙á'節)oëčęëÍ˙ä{Ż˝yöŻ~ő+řŔ_ţŘĎ~¶˘zÂś?űöS;/-)Ş®(©()Bt&>4QQV2ş¶zéś©·,śµhÖä[Íţä{Ď[öÍż˙Ę_ţĺ_Ž3ćꫯv4%ωݱ€b@ 10¬Ś˙v— 8đxÓ{^xH2O–XŹ„nˇ}uË-·?qâá<ô«ďY4uܨ®®ŢöΞűoťďâ©˙üő@ =ôŕ÷žyć™y×ßö'ß~zýöC……#*K«J‹ôŐ™…ˇĘKŠ++JÍšôţeóÍžĽhö”űo]ř™»ÜüÚG?ú‘7ŢxăCúo¬ł‰…Sň©FÓv»€b × ho]®V~1 Î20xą3Hϰ†•Ęr¦<ŘyÂptg2ąEöqăĆqnâ˙ůŻđŘÂkţú?Ţ÷Íź˝|őô ÷^?íO˙řŹ>űŮĎ6LšůŘ+[ľűW×ďŇtş˙Ž»xÝ·?1{ë(ä•ćuM«l›9TkkŰţýë˙é‘Wžxâ‰S§Nßzë­Ë–-«©©ń9¤N‰^ěţvg1 Ä€b`80`2`0ż4éiE˛gKć1ěaWÔôśI;;ÝnżýöG~ôă›oąĺËź¸ý;O®_Wóá[çýŻżüó»Ţóž™ó>÷ćî˙ďŃők·hkďüĺw_óŰ,cK]&}…,Ş*/.ĘĎ«Ď?ůˇuT)Oś8öÚĎý÷Ź?÷Üłóć]ő;żó;|ÝÂçHNÉŚćţ¨0JX 1;T­Ë·Ę,Ä@ ¶›ŇA9+q!r¤TĘ”ÇÂMŤ9f(­7ř4Ěňľ÷˝oűöí<đ‘żú«żú/\řŕßúŇäsK–,™:sÎUÓĆŐ׎xŕÖk¦4Ö䵞üŃĂ?X¸ôń$ČĆĘ0{ë6nxăWőWOž„€b@ 10L@be’@™ěÎŚëI˙¤ĹcýúăÜ¡cłGnÖ4ç/]şt˙ţýżő[żý»żű»_ĽóÎöö¶˙÷żýÁ·żýíQŁjgĎ˝jÖÄĆŠňň÷.ť;mě¨ĘüÎGđý;ďş;ú…ŹŐŰ×[SUŮÓŐń+űŘŃŁG……E,Nť:ő _ř"µŕÓ¶±Îgâ€$¦™ş¬ëĂ 1 rÁ€Şuą`U9Ĺ€ČČŠ‡Ç»Cń—ÉîÎČäÚ ń!";]™,I»9›˝¬¬ě _řÂwżű]6ÓUUUµ´´Ś5jńâĹżńżńŕ˙şdń’É“'jiýţÚµĎ>ű,xŃM·G3÷fQaź§h>Ő„‚üřÇ?Îç)*++y—p•Ľ‚ţË lĐä”ÜâŔÓ 1 Ä€ÇWří®Ŕ™ě™(Jú‡–(y”ßrFţîŮ˝  ‚ĆŤ"===ôGô§ú§ííí("/˙â/ţâ±Ç~şôúĄłgĎęéé}ü»o<ńřă…·ŢůŢ´s ýăsâ·~deKs3I>˙ůĎŁ˛ĘËËy#áXEb…“ô9„Ć$6‹Ţb@ !c@Őş!ŁZ‰áÎb(ŇC0’´MŘ]e:ČÂ`¦Ţ:wî\Ö„»şş0" wďŢýÜłĎ2@!›äÎo(˘pň>gOänĽK@ 1 Ä€ ¸$iDH&˙LöIŃßÜ'iˇËŚćbëbďŰ„ Xďd¦ŻfϞͲ¨é+ü‘L'NśřÖ7żŮ×Ű3 ŻXŤ5nëk÷ďßN6ü]_…هCgÂć-ŮÚĚőb@ äšUërͰň‹1pčˇPYßEa2ı{¬ Ć»°az«çnWˇßđ…ŽýƤÝ,nGüąţĂfsy8mÁYYR\ÜŐÝť×ŰËm)Q~šß(//ˇZwěřqBL’FCxT&;teéő b@ 1 ÄŔeĚ€‹WD˛üj‹J:`÷pI7,>®á¨†řXĽ7Śb8ŞlÖ…Ý–3)şqŽŐŚČ-6Íq™ú*ő0,  k×oÜÇf== Ú›ĚŮCĚžÚz ‹1 ŢqRţňC Ĺ€Ć@¨u"śIf˛;ĄžÇ@&ěî铉,Yěîé š@d§ÉCýŽj]~_/{čhč<®˙F™ĘŇâŠâ|Şuë°¸>çde&;®É® âŐb@ 1 .wB1ŕŘ@Ş4J5F$ &!‘XQŞp Ô.7âbk˘Żş{zňzşK‹‹ěCaÍÁ…îj¬­zd×.>5‹łeHć±iDöpÄd—…č-Ä€T­’5„gČ"z®PAf˛gâ4“h·ŘL–Lv˘R»RŤ8ó+JYîëëîę¨,/ >­qvî…ů5Ąů˝ÝGŽihhĚ”˙¬÷…ؠɡ/ôRK 1 Ä€ d‘a—K¬Tcv¦2…„vËZ2áČ3Ő-4†ţ¶É®««ł˛Ľ$yÓő»šň˛ÚʲM›7Ź7. 4Ě;™9ęĘâŕžb@ ś2Đ˙ÁA=b@ S  Rα†ö‹Î9tg÷wçĐÍŤ˘.›Oh{‚5É]tť]cj*™z艔,*(¬QŢŃręđáĂÜĎBŕžhxWhvŁ늌jŠ1 Ä€bŔU„côŚIšÁ ŹÍBo8nř·šÁł9H ±O»¶¶µ6ÔTö…ŰęĽ{zűFUöuňůŻ)S¦D©Ľi€·á–Đh˝Öĺžb@ !`@Őş! YC1pžns ĹPĎ;eFˇ&ś)ÚüéuŕŘDŞF™Ýn€ŢČßó„™1rÓJUuuÓŃ#3'ÖÇŐşŢľŠ˛’+'Ž>¸_ww_«đäáčfŚňăŕö0ŠYůšyä ¦b@ 1p3ŕâ$TŽóĂÝ9¬Üą%‰ąáú[wYxŇ!´{3†]aÔNmmíˇfMŞO*źÎÎžypßžcÇŽĎś93J’"ű”čµä@–Yo1 Ä@ŽPµ.GÄ*­) ¸âqa:ąŃÜ®TśÉ?´‡©’Ř,ˇťĽé cdw‹÷çbăI“&­XţłŰ®™Y_[ŃŐŐ‹âŁÖ×ŐŐĂ'cŻ›3iŢřšgž}vÎś9ŐŐŐ:tđ!lĐäĐî Ä€b@ \Ţ ěfR™ě™hIőŤŕ06lRěó®ĐŽŃ›ĚÓ›ÜnŢ, xŢĽy˙đ‘›®š2qĚžîţŮ`ěéémiďś3ąáăw^űŹ_˙§… RÔ ÇŤ°ŤboĎo>Ţ8ý…Ĺ€ąf@Őş\3¬üb@ śg )w$PĘ+\×=źĄ¤H3YzŢfuŁůD]6«Čč!ˇŚťjÝÔ©S—/_ŃzlĎýř{ëŞ ňó*ËJçĎ˙{ąősď˝zůŁŻ[÷úM7ÝäI „©Â®Đv–ÜŽłc1 Ä€b`0ˇ~±‹‡dH*WalSóXNw şŃ|¬ËŚ`’ęďQ ,xâɧ¶o\÷ĺOľgÚř:ŽĂN¨ůą{nřĆůĺ§—˙řŰßţÎ?řAOëŮ<żę>ž<ěrÜ 1 †€}ebHÖb@ śeŔ„Ž˝/z ŔUQ˙‹&a`ĎáđoĹ}xŻY"»7¸żŹBź!3fĚŚ3~ý‹_üęWľňý?ţxÓ™ÎŇâÂŇüÎMoĽńÇ˙ő¬]·îŁýčČ‘#“yÜâŔ‡0K&»» 1 ĀÄ«ť FAK©Q©ĆĚ(OÔkÍT7†“Éâźt«ŞŞşůć›?űąĎ˙Í׾úĎ˙÷Ç[şJŠ kĘ ŹŘűňĺ˙ýőŻţ󟯯ŻO†–LÓíˇ?XŹb`ČPµnȨÖ@b@ ś]8Ť4Ľ\’" y$•Ç:Blăúč!púŃľ‘…&Ιü“]ĺĺĺwŢyçżüËżÜ~ÇíK—Ţ0kćô#GŽ­_żţÔéÓ×\sÍg?űYĘyÉlÉ<>ŤLS˛‰ą›€b@ 10|0ĺ`ŠÂŃEu‘““Ô!taô <$–·ďMZ,łżÝÓ@˙dČwÜŃÔÔtďî[ĽřÚ…×\ÓÜÜĚy…í;vĚš5ë÷˙÷'NśMć˘CdňOm©ôb@ ä”UërJŻ’‹1‘TI”ô¤@$Цú»ŃĄćĹĆ7ÎŤ>şYŢ);wŇ}úÓźľńĆź{îąĺ+žŕód÷Ü{/ďšššho:đ)ŮŚěŢtú ‹1 Ä€ĂSöv ňj  »şL*`$˛ŕp¬KňGČ}ä#ąţúëźyćî°?~ü Ë–}ňSźŞ««‹† ›áoĂnłŐ[ 10 ¨Z7$k1 úäQHJԊȰ+´‡á!Nő7Łw%A”ÁÜîQWv;Ř]9đežĽ XÇ<ż…$ínq†‹1 ĀÄ,J ę2)#®ŚĆÔ(3zWDîŕv·8 +gb>“'OţÄ'>†„±oĂž%ÄF×[ 104 ¨Z74ˇđHú'-al¸˛ŞÇ,Ę›°gÂaW&źĐ aͤ1 ń¦—ßĂ„Âb@ Ü1 j]î¸Uf1 ŇŚâÉ. -o¦<ŘĂđ{ ÇűtÍ’´›C(IĂTŚ™ěÄfęz{öÔ(ꎀb@ 1py30%ÔEIN’yÜbá™’ŕfžá;Ě©vbű3öő…IĚčďÁtyaT˙™‡Hí Ă…Ĺ€ą`@Őş\°Şśb@ ĽBťÎ$3ŮĂ!ĂTnw±ĺ˝Éş›uąÇR»ÜÓ‡$-Ö•š'S~·‡ Ě“´[ŻŢb@ 1 Ä€0BMÎ$Ą2ŮCC“ô÷ŢpÄp‘=l†o:ó„Srlžˇ&ĄĘäÚ}1 ÄŔĐ0 jÝĐđ¬QÄ€8ż4jŇ'©đ"Ž"…äţˇÝŤQlŘt€cBlţfIÚÝ9ęĘäďnÂüžÍŚá;ň=Ł.kFĆ0•°b@ 10L@ŘĂď˝$idüxIś17ş% ÜßG7·{Y"{Ř 1QoĎß}\QţĐ3ěrěŔ31 †Uë†p '†5H{".I†±dóXˇĂ 1yđ´w’:as~Gü3ĄzS"Ur·`ôsÔb@ 1 .?\®\9Čţ{3éw=OjoŞžń„±“vł$íö{uFKĺ>„Y~~»'b@ ä‚UërÁŞrŠ1pq’")5ć˘ŃóHőOq¶ÇGŁ›%“ç¨Ë›<ˇYiw7Ě“ś’ 1 ĀǗ€¤22ŮC–Â<ŘSCBŁů‡o˘;3ţ9<§¦"6´g?—Š'%9›‡í 4’tvvžŽ1#–qăĆX•e #áü@¤¤/Éş| $n6@˛ZwâÄ %ĺ9D$Z–Š!«Đ´&˙U°ŕŮ˝{÷›oľądÉ’n¸ë?-PŞ[qřË©]ą0ŢŢđ‡ąH«śb@ 1 ţ­1@©îË_˘Ăţá^ä_ŻČTU'_É3ůájöBA’…Ě0$ŚĘdÇ'ęň¦Ţč—•+W®YłUÔAˇťXřDP!´¨Ž±ÉäŃQ,L644đ+°bdÚř[µÎ¦m?„·pž9aŐ:Ęf¨ÍAŁ#öĐx”‘XyŹŠÜ°‡]†Ă·ůcˇ(¶|ůrVCů!–ůóçłj* eEµŽ}…,dÉ“™k'“U&ź|ÎQ“Q’]6´yú´iBúĘŠw,‚˛ŐŽ…RdŐÖ­[9Z±yóf,Ôň`ĚdÎś9ĆżŃS 1 rÇ€ŞuąăV™Ĺ€Ha€úV´#+ĄűöíC!’ĐjJŠ_t%Ĺ[‘Ţ ČŇei=ŹEŃŚ,Ř‘HÉU«VQŞC,ŢtÓM·ß~űW\AU‘ c±Q,·ýK¶^ި@Çđv­iŮLˇrŐ1«ĘĘ€"‹EYRąă`ě† {ě±+V@ŕO<”Dš[¬˝Í?´‹1 Ä€9b€RÝŚŰ7GÉ·=ńWTë2%wY‚x@6 3”źŘţOÍÎ6ţ'5Ů0ş=U6¤Łi„I¬+i!' Xh|ţůçQ2ÜäńŢ÷ľ—“LŹuP*w(C›‰)+ü>7“X>Ľí±AÁ·xÓŚQ˝”yXĺÄ+M”µ9xŁZ÷ŇK/±jË1 ÖD_xá6ŮůL<@Źb § ¨Z—Sz•\ 0őĆ›˛{ÖŹH"„ç”cÇŽĹ’ý¸Aµ”Ąë‚I 4Bç°ąĆR*ő/ľĆ ?ţńŹ/Z´Ő‹?ʦŔ7w4·@IDAT&+-‰•ŘĽ+ň$uEöÔ¦ŐűLžşá¨p6úAoÄ.‹Ŕ”í8Đf9ťc><}82čb@ 1 .WtJżĚ`…ŔV5vŠ±ÉŽ]ůTÄŘł†ôĘţŰÉŕ®RŤî–ćF™„ D$Ëź7Ţxăg>ó¦ĘÎ5ěôrŔ5ŔŰŽI8ĐÓ˙©ŠTŁ9řm†§7-ŁőŐ˛aabđ†ľšŘy{ôbç,;ďHN“"#ô‚ő1 rĘ€Şu9ĄWÉĹ€8Ď€«Ąó¦Ľ<„‹˝|ণť`§ŚEPÚÁŘĐٰK´d—[±LѰǰË5kZ,x#ÝX—fçŇ–uid.âŚóLŚBvß ś•Ť…ŕ˝{lĐ›d<×ß˙'>,ü"©Đń¦šÉg%¸±Ž/—ˇż™eD޸áĚb5Â×o´áäě˛eË)ĘÉ G 1 Ä€řwĘ@¨^ě' Oě„)»ęP,‹˘"P2ČŞx”Ć’!šöČN‚z¸‡¸%r°&nˇ•ŻuëÖY ‘)qßB MČ*Ł«,t‘Íć°¦çˇ ö^€‡¸Ýz˝ `H,ô'sá‡+P¸ˇˇĹ@Hă¶bKÂą |ăŤ7ě€ĘŠ»GX.ÍÎ’zĹ€??ŞÖýü*eŔ¶}ˇ~@-ń#­Žl˛c­ť„HbU“ĹL4%BAe7ńdFK9$›6"o8°ů„ţ.g vŚ~çťw2j”íXVĺh {Ůx3a€6ˇl‡¸äW-ŘŢ4™Ř®IćÍ…!ĽťZoè@ěĽ1Ú›3ěěŁ|É/§\íÁ™ÓóćÍCGň&§ýśµk×rŕ… 4…™Ďž=;É^řc…Ĺ€b@ Ë“ü—F4 Ëź(öŻ!±XEKp‰eçđ >Mw:$±eŕmĂŢôłÓ¤‡Dy÷»ßýꫯ2«×^{ŤÉ3“XTŹé+ÓQ.±=fGwőëŞ/Q ň‰·=¨)FL_ńö‡"ťÝ|bâ ˇ…â2ş(ĆqÓ%’zTcE†˝bŁĆŰ’› Ň%(©ĆR“ížăˇSSoË’±ÉTʰäÖJËĺI4=ŁÂ[6Ľu•ŁáQúŕĆM9W„@„@„ŔĘ@`\ŘÔWS „ŁP(c3 éVY)F™ vYÁ«)ą-®žq5ďNşů°†L"®vß}w+Ô(+Q—)‘Xîv‹ÓŠvr7ťăňŘ»’[ĺˇJ,ö%«ęN)Ôť¬’ŁŕRS•%±ĚŠ<ă(´˛ŻÖ÷™PŮo¤&Ďť§¬•G¸¶Řb ~ĆiT«ÜC Bŕá·îá3L!KM ¤Ri¬ptŹf‡8®(‘LÉ‹ą“\T"®Sjَţ3ʶ©÷jĽ¦ć˝¸újBĂq{ŮWeűí·7mÁŘűî»OÄ•ň†•JY Ď*«äkŁICoYęą.]©¬áÜM˛ç©@†.Şx( ‹ě`ß[îKŹ.ÂQĄBYV·Ý§Gs¨ţyńŢđ†78qŹB„@„@„Ŕ O€(żRiŹýÉôŚČź” Ł-5®ąć5 ,PC~ -»ÉHeK—‘zöă5ŐI×wŰ6ć&ă.$u$ 3áD_QS%Ą 9ď\ *i*úŠ ĺŁ¬Fˇ;o9¤ó’I]¨G®=ZŽ”˘3řăHM4*ĽZKąZUĎÝąA]^Qkl°ÁüÁ8Âc®kńÖÍ5áô!đkJýp-qĂ‘GÜpÄ"ÔŞH–"¤8§jł;‰Ř¦M#Ź´úµîĆşź±7V”ÍPŰ [)»™Iš‹­lôŕ"+ËůŘqZ•eĐwť(«ŻBiÖz«¬ ľ íąŁ YŹ5˛éž«źz5rße—]<đŔ,¬Á’ÇX± ”Ұ›„ Šj"´|rIş éqĎQ2ef;6«íě­ÁkĆÁW6‹Ł4ýŰjŦ®îÄc͡ ]ßú‡ŕqqr˘•1ME\UTŮU"ĘÝ5ěłĘ*«aËŞŞŻGwoÝ]”‰ŐÍžUu[ýô܆ŮÄűí·źÓl[› ߦ!łN ŢşYGšC ¦#PŞN"Ľ¸ád@t\·›±ˇ„6i°Öš±q…măřěJI $˝ŐKCŹÝ|q…ˇ˝r7©_\ó®oE¨Ć­żţúü_ję­ďU „ô¸íz3»«®şŠâ"±ě÷ôUuŰ0{¬ię۸ ŐŞď¦Áˇ&DĘ`DGu·­ťşFóşŞŰžţoŮ kĆ»­Văw“qš=F^őŞWqtޤ&B ć‚@ĽusA5}†@LA yd‰ślž¸ŰożÝˇ«ÜpŇ ÄuɲOĄ«¸śJŻ$;— p­łQź#ăŃU#5ýX=×ă°ÜK[čďŞŢęQ'#Źj†ź6Cłi&㇟i•⡇JJÚ¦béÓ´Í«†@‰ŠşHrKI&+ěă@ČN ¸hŞˇáł«<APbڏ’!kű6ŰŹÔňü–1C±1,ŹÓ«&U?,Ź[Τ¦>‡ejţUÓő5Đđ>Cłić°P`= $i*ĘŠźnź}ö íúišçU„@Ě xëfc: X:´‡7śĄ [ż]{íµR3Jq]‚r¨şW©Ě Sźµ±üÍ J]µŚ›~̸’Y #«ĎjDőUč®Ř»Zůuý˛*Lń9Wp™‰°ůýŻ˙ő€€…ţ^Vs˸!!!Ë‘@pĂQY•]Gxâ–Un8Ů-™JíČc(e,,ZPÜqÇô_劶}}”GCŚŕĐl¤\ĆZ ë»RýDI,ôdŕÖÖĂ%±D—ßńŽwl»í¶ĺń˙öÔ„@„ŔČ˙S7G`Óm„ŔFI$ĚăfUÝÂ…sßůA)¨KSVziuAŢ)P“6a±ÉťÄ Ňó–[n±÷° §ĘńÝ‘«I5‘•ăb‘YŮ[©”BrŢyçUú­ ^0#źPCĚĎ݇y÷Ýwű|ţMÚZ٬tm­0?“É(!!!“C`¨Oމtá°«íDnĽńFŐőv"-x]¤cJŚĎN=ĆŠ®hăúŘáăôkh9,ó…É«8óĚ3 JČEĎć?ü„yË1ç[LŚł+:Ó®Ä.•\źŰlłŤű´°Ľĺ-oˇ*9éşúŠÜC B`> Ä[7ź´3V„ŔŻĘ,/*w•tÍ$ČIĎU\÷«_ý*\ JľłęĄ›^ůHPRź6ł#k.ÖZfîUΠkşŕm AńęÁZ6ŞŽ‘LtWV` •éNÉi¨ ŇŐ:˛>j8h âľ—;)Y‚Ň._DU—*]j’!Čeëű®ĽňJ;@űvokÜá()‡@„@„@¬´H‘᷷Ģ%(™ đX‘L„ÉDqQMę™uCe‹‡«Ť,YЎňsµńBÝóëĂşkŞP(‰ĄĚőF­éĽ¶1!xŚÂ3¨óRPĄ¬zśJ5Ő­Bő6üŔ*›°Wő¶ËKb•”ް¨=Ö+ŠŽoî†n ˙LŰ”(®šóřX© ą&oÝ\N˙!°R •†ß_ú©\˝ŞJĺ®oaÇĹmGĚQ“.ů§–›vôśžŰ^[2K%íĹú¦>yŮ\ÄÖpŐŞŰvˇ&3|é˝ęŞ«.˝ôR}ҵ´¬Ý—M€Î3\őén’ý Ă/Vv™}—úŇ°Ë ۲d«Ép\~ík_ł]ťă/ÜiĘ—żüĺő¶šÔ蹇@„@„@¬đJ‡ôg–ĘŻZt}ČÚ†j˛¬Ě:;Î©Š‰RMÜp2+KŁÖJ4Ćö›#B¨,Ëîä1ŚP‡m«‡ža?’.Ľ`΄µŚN?6ćţ€d5árśőäűŞź‘Żn3©ĘÖQő¨źnŰŻĘg ´Ä"8}ďsžóśjŘ}¦!óL ŢşyžáB`ĺ"@xńmŐ7Ë&¸ńĆĺ“R‡ĺcŞúVoG4™˘Í˘91˛Rblílb»“rĂ {ĐÖX¤¤ŕp©ORAŕ 6Ř`śŚć­“ @"Ň6vru‡Ú´úÉ=B B B`Ĺ&ŕżţtQ}#ŮŔ‰fO ęđđŘß>Ô9ăK@”!ŐJbéML”ŻŠ Ş¶ÔŢÚôbLŤP&•Ç@Ťđĺőp =bęíđѸ›oľůî»ď~Ţyç‘jň'L›xŁŻ,⣾ĚĘÝ|¦i{«ŕnUp_(ŞP_Ąµ QW‰+z©M`(±Tzň$é+ľ9_äĂůěôc;í´SmX\ß>üş”C B`> Ä[7ź´3V¬t¶Űn;'!đÓQ<î§ťv-čSqTJ‹`!2¬iY©’Śv¤ätBW9«KA'Ľf4şJ®ń©”–ÚqíŮ÷¤dk÷V#–ýpt5ë^őú±w‰&ě®b-›äÓZ˛Çg«RŹL¤™ą›ˇ™¸ČV‰é®ľ^±dŕ2 ‡—éŐ#ßśM[ČGwĺŢ Ů[ +ĹâľÚ™šTc8=ż"ĺží±Űn»ť{îą•+J˘sĚ1vł}ŢóžG•»jÂPá E7śĄmÄ€y y&oÝ<Ďp!°rŘvŰm©1î-‹Â¨"Ž6űÓdbŞ%­6 ŽVul”é<ţ)ŤN?×Ő‰)&<”ěI7®= Ś,ÓDÍPą{® ¨VvY·:wp&Lę ˝R–>GŮÎÇ>GHVĄrmLÖUťtWőî%‘K¶vŮ„•iMőić>Ť˛r}xí‚Lť{ëŞŢŞy}Bî!!!+ z`ď˝÷ţŘÇ>ćÄRźL“đyŃ'b˘[o˝őf›mF9P#‹Ł1"NhâJź|vµťugô×5UŠE“jE„ĐEô ]§\•u7\zč®éB˝2ś!Ä EF)(:Š¸âł«“»ÜťÜĹW§LÔˇ^Ľo:©{Íjd”ŇEőĘ˝/*ËT}&żAew<>ÍŠzşűjéµP„-:[VĂî9…XVâ­[Vä3n¬żĂ;Śň;˙üóą´|3Ő%ëA^§ýA¬Ľ“ËI6Ń^®&˛8‘ĆűŚ} J>;ŞŽ ¬p(áŘ=To”™kŘóGo‡ĂňĐĽÓ•ˇUy0K:Ul–Dv§ÝůËUǬlŞŕľp–ďMů*}Aé"+€ě^Ć*Ë#ŮnÇęMĎąB B B V*TÁ‚ ś /jčTßNpoŮáWV¬šç?˙ův‚#]†>»)ĺGqÓśä)äžăŚ«<ńHš‡Ęřěet%?Ô¸”]#ÝŞ©ůô˝‡¨Âđ®-™őzüe…ńÖMÎo‘™„Ŕ K@0VĹ~űí'ďőŚ3ÎřřÇ?NP’’>Řť”»a§‚’ŰN8wD UT«1mŐS`R6řć´˛RŹ·N ä$4‡Ć·şŞĚaçUÖh52™ęgîľ]üyf’9„@„@„@,"—n¸!ĺcwÝN8Áq^ňĚ„±×ŰŤ7ŢČ×&1–;Okí˘ŞŮ5O«&•ĘÄoť+Oź(µ&ČZ‰±é§FtWß}vˇękÄá}2%–Y‘X\–Ă©¦!óO ˙źŢü3Ď!°’ ř„_óš×8öĽóΓk5ś 0ag/aŢ:©c-˛ŰhŁŤdąRK­•‹ÚPů©©GŢ:‚RĆ„ôXj’¦$(­Ô“«˛Ű¶˝š)ű)~%©D" ? Ëő¶§äqž/Ó& š}j°ň˝r^ćy.B B B`rT¤W'bí±Ç§.şÄAͰň¸íH#LXÔnwB}CźZˤÖ?v™x٦D@)+;âŮt¸6łŁ@HŁ6ëBI¬~vĄ˛ęĄ¦’|ÖýŐQĄmLɵ¬¨ÖLOŮÁ¸pZËj27B Š@ĽuůK?4ÜZk­ĺ XçŮ˙řÄO<űěłÉ>úŚt# JąBÁDçzë­'®[Ň­ä]M´eeĎŰ[2KV,{n>+ě(­›oľY‡Ů”ę· ě‚ĘaĎőČŘe’ôř€ _ś`+™× ­şŞ#ĂŞ7ý »R9ëWÉG“q9ßV* ËËÉU'x®ŇgBGď Ďúčé0B B B`ą Ŕgáˇ"ďu×]w=účŁ/»ě˛Ęcp qEBpmµŐVVá‘ $DiˇR9ň±ŢZeF\‘Ň`ĺ1mDQÄ9Řy Ě\ÚÖ˝:–ŐčśOoÄŢąçžk_<‹‘QXÔ ľ^ÎFŘŰHó‘‰=üGĂ™’ËX´ôőh"ů‡•Iş„<ˇ=±‡?hz™·nć¬b!0;H"Ź”¤Ďůě.ĽđBŞHď%_›Ąv\Q›l˛ A)˘Ëc5TlĂrO¨*YĘΨ˝őCSZ˛§ŇpÔذ!eVŽ°îˇ ˘ĐF\ýő‰Q=\rÉ%­ÖÎ<óLťp zKSŞôčŞ-‰˝űĘßt8bUŽue}Ż>©UXĘůh÷"RX›š0W)ęë-}©źżřĹú”_4ňy XQ X ç(XZE ńśsΑűĄ/}©>ö§?ý©ŚBĚoË-·†äŁ=J~”Ͱܪ’7°6łŁ7,=#“¸I5şkaW]?{ jČ?+ű¤>ô=]}ţóźç§Sąîşë č’XĄŻTríQ8z+•Ą7:§µSŐ×eÖ5ăf^±$«tĄŕ.JYQS>„WŽb¬T_|¸ÓAb±áOÜkŻ˝P­rů$oÝ|ŇÎX! Â8ż¸˝Ď?˙|‚’S¬‚ŔĄc^©ĄÚĚ®vG¦´J˘=ŘĹX©ÔAi3;ŇŠćăřł®ÜX‹+ظ(<ąĄ÷ßż±¸ŐB[ ¨SúâżX™§&Ož 2»ČbÎîĘ®.+P„î†1+­<ęV'$ ‹pôČEXŹ>ÜetŹîőČçn>d.\ň qS\ú‚ .(&„/tf[2ôÁŻJ)B B B`e"@ %ňÖ ^0ňbO>ůdkë0 čę‚»í«_ýŞ,›ŮŃ-tWÓC*J†Ť›ŹgM+ŞizíŃÝ*P,Ąv”‰kÖöÝw_î0úЧŚ‘UlćŁB®ĹŐ”úĘLŚNą“X šë¶/ZË Ý $YU«Ę-±Lɇ“sfŻ#>ť±{ŐUWéP+¬¨5CLĎ'oC B`Ö äß;łŽ4†@,‚lăŤ7S%(ídwúé§srńĹ[2†•EĚ(óCqę`•Ç0C‰ĄgaHMŘS,TÍP{x,ŕ]đX6¤‹-d㏣a^˙ú׋ÚęŠŢ$cjĂ8ăPs'±¨/­JbU·ĆŞá܇âŞ* T_Ńߢ¦®2&]&@JQw”­hYź™đ’Xćc2ň?Ň#Źy­9ä!óC ŢşůáśQB K€Ô#•EjiĎ=÷üä'?)í”“Žş˘ĎřĹč$)GOŘÜÄ&)dV‹°ĹvşčéƸlPkŁ"rŘĆ•UćC¤ŢřËl]M’1—™ä#vÝ 8.ĽrŘU—ŤË«ę­GŻBÝKbş×5T&,\LňcZh\Ł»Ô— ščÜś†ŽĐ„öĄtŤ>"啜Ů@'pK‰Ś^zéĄ˙řÇůěJ0P;„™Ąd„ŤLî*¸h™@#]J˝0—X%F„Çňľń”QSü}mChyeVĎyÎsřćL@Ůô„E9ÎŞ‰z• Ö˘kĽ˙šóÂęAG‘éq…;5UŃPKYe‰.•ei\šŠĘ’,LřŃźć0ü™Ŕ‰M„@Ě xëfc: x¸&KĂJyŻ’=mfwůĺ—júĺ“"a'‚ŇNvâŔkŻ˝6ĺôĹS7$ůzŢ]Ů5信lSň‘̵»Š•z4Ą‹Ť¶ g°ČĄčQˇî”bőP…ᝍÇR· ®˛tWYŹÄâ˘7 ÍČJw5.4ř.]×]wÝľđ…o|ăűďżőŮý¤!!!C"Bžb˘ž˛bO:é$Çy1 !D•­bsş‚·T] »%ôű믫Éđ^ďGşwĺäă°‹s–1Qą¨^I0á[$4I=ÍK Vˇz#«PRoä±*Ç_ ëÉYşÚ™“N†Č-·Üâ®RĽGëÖč5Pî!!!!0N€şŕł†ÎîlŇ<9ěN;í4Š‚%_qĹ]ĺĽÇŐŢ#ÔQ4˘‹Ć»Ż©&Ă{Ů »˛śŤŘ#ä,÷#óLڏ˛¶!íÜI,•Öľ•ČiŻ™Żpé°îUXT7E ´t×”–&#,ËŐ'Kć¨MNLZKźOyĘSĚŤ‹ł|…5˙ÜC B`ţ Ä[7˙Ě3b„Ŕh•ăi‘ťÄŘSN9ĹÚ:šÉEZ]ýő‚ź˘˛ŢŠÇsT—k ťŽ˝iŐ=t=—ÜÎ;ďĽĎ>űpŘ}mŃeč:[ŤpäX¤)‰9…NŁđ(™˘2;:í‚dT6Uł¨XÜ]üqîľË˝¶Ć㉣ •Ý•˝]Vů1ĐÖ’GláÇoh!b;Çľ/!!!!đ šAţ)whźťăđĺ/Yź,Î;*ë¶ŰnăÔăłcĆYfóŤŰĎ 4TSm®’׬_QD”ĚË_ţr1Q;;ďÂaµrNŤe†ä5e‰}UšŠ|ŞĘzT݆#·te’î.ý·˛Ş‚KhůFWK,e1`⊏R™Ťć\„ú™EŇ)nľůćžpH !!0źâ­›OÚ+B`¦h/˛é/xAYP\tŃEüVÚS`˘ RAi;N˝Úy¨g2ĆëG….ëÓćqĽc"Ŕd«˝]¨XZÖ¸Ö»™LfIÁąFşŞą†ĺDS¨«kneVw5]¨·š”ZĄJ]ś†ÎÂÎzF—‘j”ŃEh•ß­ÚşHšë°Ä’»«{AĐńAë­ć´ź Ëč>y0 -Q‹ŁAɶj’{„@,+ńÖ-+ň7B`É)›ŮxŕÂĽŇQťĎőĹ/~‘t#Â(9ŞŽ¤+źAÉ«E±‘hÓ÷ێٰ~‰6łe0źcÍÖśÓO„@„@<4\Zţř»×ůż‡ÖĂ [Ő@34žŢŚĚ°'/—™ceĹÚĎN*¨&4Śg2 &í=bą‡Y2t-®ç–( †ĺű~EŢpąLC%qEV•{ަâĹs©$±Ş’ĘZýUp´§¤­«G!–”KYU™–k}EÔÁHb‘UUŻĆöśGzënSy&oÝ<Ďp!KM€¨"(%&Ř˙XV,A)5•b#§d1”ňdmč&źÂ–Ŕ4_«·iFb38ŐˇúiZyEŇąĽŇ…ě‡Za§ Ţ}¨ůĽŞšŇŽŐCßÔ×˝$fĎPĄŢÜ]z¨kX~ nş˙Ýa­#Ľţů/®OśÓ‹«®ĆšÓQŇy„@„@L#ŽXř_X®Ą9ť9TÍÖ(d†vň¤îľűîÇ{¬-ĹAőO±ČcđE\xrBI,Ţqi-qťÝ"©ňkrEoĄX¦Ń-%{jÉ[Ű›CI, KAµęŞÜ˘«%VŐWoĘ-±J\µÄďS“\!!0 â­›„_!sX˘ĘŇ6ç*HU +O_tŮ˝Žü"­n“ÄÁaç,3‚Rî*AŮ*mĽë)_•Î7ŻiEXý›‹Y×W“zëŢ=÷¸ă•l†o•‡—=ŽĎd©jV{Ô“ö\ű­KŐ$Ć!!!K$`ľuyý/¬Egň¸íě=˛Ç{|âźÍ ŐW»ŰîĂR;[ËmľůćÖŮŐ"¸i4Éř«Ň3KdX ű®ŔżÖI©&©‡z[…*%Vż©T_ŻF Cł%N/!!0˙â­›ć1Bŕ! Úě-"ü+)Ă:;AŕË/żÜ¶&ş“(á"(kwd‰±%ű ĆŽŹWşM} ¸˛i%7ŢdššjŐ]uˇúŻGĺŇ…ý¶ ÓM3h^…@„@„@„Ŕ¬Ę[g7.9ë¸ăŽ“»@DŃ*ňśÉ`_9‹ěl,ÝA†ISŞf|ôˇĽń¶«ĐĺńVă5m¬Pĺ±U˙ęU×čg†fă#¦&B &Š@Ľuősd2!K&ŕŕGÁľä%/!(­±ł™ÝWľň• ŰŮ„·Ž ´ÓĘ;ě°ŃFŐ/ĄáĆ».ť7^_5VĚU>Ĺâ –y=wä„Ďp™#ĘB B B fB€˘ š=awŢůcŽ9ăŚ3ä1hK/ Ž^ýő–ÚÝpĂ ˛Ŕ%ŹaúčâÔ—*)a&łZV6‘XËŠ|Ć hńÖ5ŠB –'%gś“R…yĎ:ë,›ŮńÓQŤ.+ěxëľ˙ýďóây+V,bÜÖţȡ«®ĺPAÚ«…H-=ޕڬ;™˙BůÍÄTŻľújgÔúäÚ)yţ'“C B B V$d†¬XŰŹŘ{d·Ýv“KeY[çőŕč ›ŮQ\Ď}îs·ß~{kńÔŹ«ŁaM—[b9J⦛n˛ŤIť¦‡I“X”¤-V8(Í™SŇ}Eú‰ó-!Ë xë–—_*ó %@<Ů)F€×vuVŇYdg§ ëčB‚ŇîČr7J;­ŘđΞ,¤şhEXň±Ed…y)3GXXŁÇRČ›Ţô¦:ČVó«¶ĂcYťp“ŤÎi¶źK –‡ÎÝliÜţđ‡‚Ű—]vŮyçťçH\“ńů„uÔälăO!!!°2°Ośh%·Ý[láĐŘăŹ?ţ‹_ü˘sZ± ‘nżýv‡QĐKŰm·Ý¦›nşÖZk•"*uÔĘŞ %`HŞLü}§žz*‘&OÂŢ&"ŻRkŤXöŐU·ť;ú5+÷şHGN:ęŃw]rÉ%^xˇyň'ÚYLtžC B`qâ­[™Ô‡@,śĐ*´űÂľPî·A)Zî6;ŮYW¸m¶ŮFć,-čıګŘçµ$ÔśVᜊ+®¸B˘ąć-żG•G}´]Z4çňŁ)E›ąĆV[mµZŃFVęgxQ«ÍŽ­ŚxÓÔ0«J÷2`ÜÉ*)cE+mµ I"SĚîâŰÜvF·xđ ox}úFúď9¤!!!KK€ÔŮpĂ ml}uĘ)§ę„báɲ>Ž,qwž &QDbT5J‰eâ„ şîşë.˝ôŇňÖ‘.ßţö·eE|öłź­ťň¬ÔăTvňěꫯ®ńQmËýW÷ęŞĘ%xÜ=Ş/ĄP—ú˝ÍĘ Ś«’墏nyLMŃT’řé®˝öZ^Eˇ_ő¦!#ř°Ă‹·î´ůßy%oÝĽâÎ`!sD€˘zÖłžuřᇠžsÎ9'ťt’dXaRúŚ««ĺ:ë¬c©ťUrÔd‰¶’•śzW]uŐ—żüeZŤz+‘Çč-ÝVVُČÖňÖ1 d9ň¤ĺ’ÄśúZÁçUůk_­Ď.„ztç($dUrĚ V›€iÔ´ĺžŘ’O™Ď‘vôŠ#’‚T`/m+č׾öµNŢ”,Şą‡@„@„@Ěľ­Z_Fçěşë®v6łă¤Ó?§eÂmGDm°Á žůĚgŇ?^•Ž˘Ě™`T™¸#Áă­>‰"Í+1QŽűěcĹź\Łwo)„@„@„@„Ŕ, i$Xţ&ďuŻ˝öúЇ>ôąĎ}®ň8ąľő­oYž&ֆ¢8רÁÎ+ŻĽRBU§™ŐdÁšNřĹ$śfś}T–WÔO\é+#ęDoj8ď<–Ť˛ű”_7"±<ŇNĄŁ̬2mšŠÄę·^ąth“_°`ü_3¤µ$.Ô*ż)‡Ke„@Ě)xëćo:o"bײ_­ă#"Íđ!ÚŁ¤!!!Ó’¤@h ęÜsĎuÚU5!®jńš=-FŁRh'omÜA;•ČŃ\~ÄŇ=÷Ü“SŚËěĄ/}©•n‚ Ä•ĽZg'IVWĺ>ăćë)=dµł8‰UAĘJ€VTÄ×eć‚ k¬±†•}ĺě ¤!óL ŢşyžáB ć%é•ęâá:˙üóO<ńD›ŮUö( 貤îć›on%"ĹZKÉq„I,=ôĐCE}ĹKĄQlş˘ä´˘,yčhJ9 IIŹÄ%mj+}ÖʸŠâ.NŽ|©O’Q=ď!ď›iQ€šßP`YĄ»€vůćÄxéÝ8éF0ć1B B B`Xďf§`ɲáĐŘÚŤŽěˇ©¬Ł‘®ąć˘‹®BˇD óň—żüŕ&Ě„TKüđńŽ9 Śšrikť]%Ě’Xd•xŞř(ÝU ŞŐ›\3ůRŁôE>‘yşŽňvi-5$–Ďá°ł0ęSC_]3é<6!!0×â­›kÂé?B`™ Ëx J»#S“gź}¶ř-9hBÜjÂą=3bŽĺ!‡b%ťřކj†o©7WŐŘ™?ÎĺŃť‚tUî*q9""§”#Łx¬Hݱx éEŹUIP–GŻg•B„@„@„@Ě?Ę„ŁÍáö±™Ý±Çë >53!{$™şzVBŚ,í,,·”łŚG¬_)TA×pĄQV%Ą„H髊ŞŇW …×ŕ/Mf(±JkQ¤”ÉpĎŮ Źo®ęK_EbőOB„Ŕä·nr~‹Ě$B`ö _2F=aµÚŢ{ďíô1ą7Üp€mi>rM:†#e8ŕ±bKŘč¶éçÁ`hĂł¦ŐôMň6B B B V$mTmW'éő /Ľŕ‚ ěaW© |aüb^ö˛—ŮfWz©m=–řůúlžµ:Ĺ«kR•ŠŔ˙B\©>;!°R ţ,¶aĘČ[wŮe—ŮҫΒşvŘÁ,â˝É}X©ţ*ň±!!!“€ĄÄRn;jĘşkŻ˝–ÄrÄ*Ń%Uv»í¶łń®Ô×,^{śÓ<B`%$oÝJřŁç“C`%%Ŕ7gś 0Yig:i´ŁH/éŐJ %ź!!!Ź€łé%1Ř{ġ±űďżżýF(+É TVütmZ‡@¬Ľâ­[yű|y¬ś¨FšŇµr~~ľ:B B B ć‚€}BD@]sŃyú •ŤŔÂSs…@„@„@„@„@„@„@„@„@Lxë&áWČB B B B B B B B B`!xëňw!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.]Ťév@IDAT!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2Ź·.!!!!!!!!!0)â­›”_"óxëň7!!!!!!!!“B ŢşIů%2ŹxT„@L2űďż˙Š+®¨>ĺ)OŮ` ćy¶˙ď˙ýż«Żľúżř…q×Zk­g>ó™ó< !!!Ë„@dŘ2ÁžAC B ·.!0Ńľýíoďşë®5Ĺß˙ýß?ňČ#çyş?ţńŹ·Ţzëô°Ă;î¸ăćy.B B B – Ȱe‚=†@„@ LŘü„@„@„@„@„@„@„@„@„Ŕ¤·nR~‰Ě#B B B B B B B B â­Ëß@„@„@„@„@„@„@„@„@L ě[7)żDć3!đťď|ÇÎq^xá 7Ü`;ąí¶Űî oxĂ*«¬2lűłźýě˙ńżôĄ/}ík_űŢ÷ľ·öÚk/X°ŕĄ/}éK^ň’UW]uh©üĺ/ůŁýčµ×^űŐŻ~uŤ5ÖXo˝őöÚkŻ÷ďţݸĺHĂO}ęS—\rIWľńŤo|ÔŁőć7żąj6ÝtÓ#Ž8˘ß}ôŃź˙üç=>ň‘Ź|Ç;ޱćškŢ}÷ÝmĽ˙ţűo»í¶˙ű˙ďĎ|ć3ß˙ţ÷}×N;í¤ůŁýčîaĘ‚™_vŮeőężý·˙öŚg<ŁĘwÝu×ŰŢö¶*żŕ/8üđĂ»ą#;ţîďţÎÇŢrË-«­¶ÚÓźţôç?˙ů˙á?ü‡ 7ܰmRq3‘aZ''žx"văŤ7ţĆoüĆÓžö4‚핯|ĺsźűÜ‘>˙íßţÍ–Äě)±{îągťuÖ!HČ’­¶ÚjÄräńaĘ0˝ EÔűŢ÷ľ3Î8ă˙ţß˙{Ýu×9ÓŚű˝ßű˝-·ÜrdĐ)ď¸ăŽż˙űżw"IůřÇ?ž˘Űf›m~÷w—ŞlűáX3lÝ6…Xy 8đ1W„Ŕ\řâżxě±Çş?śÎżţőŻ÷żž7AĆőch©o~ó›=µ·É&›ŚŘÔăFmôÝď~·-ůË_RWŹ}ěcÇŤźô¤'‘\eůŁý¨ ś2Q•źýěg÷¸Çu=ďžú[o˝µköŘcŹHhëW×\sÍńk^óҰ Ş@ęÝ|óÍĂNĆˤd·şôŇKŰŕßřF×sSvýźýŮź=âŹčW]PIG¶Y +'YůvĺD—ŻŮ"0i˙*^ZF\˝ĺ-oáˇkŤ1,Đ]CPtÎöŰo?4č2‡]YΑ ÓůPD˝éMoꡫđÇ<ćÝď~÷p¶S–?ůÉOţÖoýÖH[Ź›m¶™:şÉp¬™¶nÂ$´Z'™UćŤ@2aÇ˙ű’šP]tŃm·Ý629ÁL‹ćüó_őüÇü•Ż|eĦ-Çű?ř~őář?ý§˙ôóź˙Ľkş`mÚ8ýJᦛnňÖ ľŞTŚ,mŮL¸GZ]y啿ó;żÓß5ňö!<žp ó73e‡*éČ믿ţ!t›&!!!+™Č0®¨˙ů?˙ç/~ń‹)Đ]W]uU˝ú×ý×˝÷ŢűňË/źŇňř€<‰)_Íş 3Ę;ßůΑ±ţĺ_ţĺOţäO¬ŕ©>ŠrČ!wŢyç°˛Ę^í°Ă·ß~űř«Ô„@„@Ě@Ľu3ł’C÷Űoż?üĂ?. “ôzňÉ'›źĽ×‹/ľ¸&*íBÎéŮgźýö·ż˝§ţąĎ}®Ę÷ß˙[ßúÖ®·M"ŞÜ„^j'Ţ«mtá?ř pçUÍÎ;ďĚ ¶¸r·ZbÁwí»ďľŻ{Ý놩$ěńǿĶ348ꨣÚň#ůÄ É°\ŤU)ĺôÓOoB B B B`„Ŕô2ڱŘnbu˙Ç?ţq<ďyĎëĘVbď˙űůÝŞŢö#Ó˝ç=ďáájË)˝us$Ă j/”W-ş†{ˇüç˙üź ¤žŇHáŹţčŹÚ/I—ţő_˙µu…ôg™ 0ó9Ž4Éc„@„ŔĚ dßş™łŠe,{´Ýď˙ţď›ń$1VFj͉+Jxó”SN‘‚Q5ĽoÖ¦)KJĄ˙ĘżöĂţÎ[k­µ>ö±ŹÉP(Ë 6ŘŔFx6qó(V(µę?ýéOzčˇU®»őtÖńuVČć›o~Úi§ Sb‡ĆKUţ?˙ç˙Đ©š5żčE/:÷Üs«9Ő[_±T˝Milb×ŰËOâ†Ëv¶‰©úVśm–B„@„@„@4éełŠž*WźřÄ'Şˇ=yżđ…/TŮNvU @Şŕţ˙đ˙ţß˙{96á­Őj¶˝łMŢꫯŢfs'Ăžő¬gÉj´ëś±loBaÖ Ň2lŤ2ĺvVĎu„¬˘˛j»art‹-¶¨ćÇsŚ•†SnBRą‡@„@LC ŢşiŕäUL›—«Î´é ŻÓ 5Ĺ ĎZ›öÚ׾VŤÔN{·ťuÖY¤žm{)śWĺÎsĚB5twNEąę”_ýęWwně3źů̶©‚ÝIşć7ó7ĺG ·îWK[ŘxăŤËU§!©G°¶·n¸ÝŇv;b˙Ô§>•§˛*÷Ůgjx—]vqś…0Ö]wÝă<†@„@„@„ŔŔecţµjb;gGČTŕűЇ>Ôý” ăwëÝ~ ŞrŐ±‘â`w>˛˛ŮľcŽd±d–«N™:"Ěz{JlJo]Çn5±x°=w‰ĂÚMĹň:™żĂĄ…Ţć !xëf*f!°ě OĂI “ai>KĂd¤Z=÷—ů—2/ľő­o ŤGĘC/€jżµěN>l?NS Ă ńä'?y›ľ~&»í¶›0l)Ô:hbV˘˛ŻxĹ+ć{JöRňuéÜą±ďz×»ś×ÖoS!™Č°G>ň‘,Á“ 0MiÉ›ę|(ĂÔHbpő¸÷Ţ{o—‡…Y”aşQb»ďľűĐ[7·ËCoÝ™‹®~5,ŚoL<|›r„@„Ŕ4˛oÝ4pň*&‹ŔČB6 âśŘUSŞĺŢúéOş˙ţűË­şęVYe•ńdU;Üő·IíňĚ FüŹ˙ń?ŽD}×|ú$Ó§?ýéÆO|â‰ÝŞ™ľá°Ő°hŚgĘozÓ›¨CN7»×µeÖ_ý®żpę©§rüŐőú׿ľmŞŕĽ0Cđju˝´ŮöyőŽ'Ţó#l„×ůÝpXĐçŹü㮑<Ňe#vyĽ°¸í3bŚ€µu.ŻOyĘSd©ŘĂîŠ+®°<°-mü<śF× âq údŠśř&©‡^¡eĘ!!!+%Ę0{´őćżÎKýčG?ęČg¤ŽË0˛­ÓlN2”¶Ť{@=˝Ť-Śs$Ătn'âţĄ¬†ú%§Ä6ÜpĂnň„'<ˇxë.ŻV´µ®Jďą`ë>W°ÖOv0 &Ökű;.Î2ő!!°Ľ·ny˙3˙•‹€Ąaµ‰-ŘŢűŢ÷öÇ;GUą—ʼnëöň4ICµWą«Ă=Úţöo˙öĘ+ŻÔ\dŐ٬ÝçŽ;îŘĺ*ۨް˝wÜqÇ˙ď˙˝ŢĘ©ăŔ<š ‘j,N±W˝ęU‹ŰuĄrAţŢďýŢ-·ÜâŃ–Ě˙÷_őî=‡·Ľĺ-úŐőḠz?řÁm>üĽóÎsYôýţűďwHn]ú§JŰQÉ\™św$f™©Ć~»mDÇşq’ľímoC>ŕ€ř}ăô‰ÝC !!!Ë/Ę0Ř€ä˙Z2L$uóÍ7/ t+řGąwÜq˝Ç®üŮŤ6ÚhČjŽd!¨,Ls0‡ŹÝwß}5.içlŤ2x@…=©d—śŘp™˝ç=ď9˙üó«|Î9çxµŐ˘kűí·Ż ćĚ[u2ĺ:QRëţłF†í»ďľâÇrGhł„N§$–Ę垀ńĺ  Vx{ě±î§óá"µú׍Ł$†˘GĄíE~ň“źĄŇ ĘŚ+ęĎ˙üĎÇĎáâcÉ«µĹ[ ˙ýµÎ:ëtW˝!¸ŘXÖ©^eyŘa‡Ő· …ćsíµ×VýpšŘ$nÜ˙uÍ5×0îŁĐ†s°cÝđŃw˝z.ôűŔ>P•ĂČ44˙UW]uŘňK_úRĆdś3×ú•Ź•&ě€ÝŇ Uoëşęvü—¸·PłSŰ~ű·»űńuősÉ%—0ŕÎo›šĺ…Ŕ¬ü»Ľ|lć!“I`ŇţUĽT2l(K>8‰±#ÚFŇh‘đJWŘŚxDÝýŻ˙őżXΑ Ół@ië™*s‡]«ćüŹ˙QłťR†ńń {°nd!žÍRŞůŚ&Ó¶˛żË¶ńĎţěĎ,<jwféĆv8‘÷6ÎmNk&íźÖ9ýŘtË„@ÖÖ ˙…źr,„^ďĽóΞ¨Ŕ¦qDž¨®·\ÎR2{Ŕ©& |ĺ+_QĂÍdIÝĐ·uŰm·ńIUsˇTŃÝa«î¶ Ż}ík;Ţk>ř‡Xő6†.năň!öă ťTË’’3˙^ř6e[ţµá>)ć_[˝ jŐúüЇ>ÔťřX‘ᣎ:ęşë®«Jçu® †ž>«k‡ľ#Ź<ŇrÂz‹ˇk{Ô/ž_á«_ýŞ ¨6O9B B B`…!0Ť ŰvŰm[Ń‚‹ň h›áˇ ˝7¤Ńáną–ł ŐÝAd3âĹA›#fν$ĐĐ–Č 7?źŚ aTX ö›ßüf›Iăčl‰™ ¶nŢ>8'Zśxâ‰/{ŮˬŞëÍŽ+,yÂ..Ľ˘ň*Ä…N#Ă] !Ë;xë–÷_0ó_Á śÖĘ‘nĂ“Ĺ䥞qƶ1. rNĺĄýekŻ˝ö?ţă?S08ÔĘŘ:8˝áⲪ·‰ŤäöÜsĎz$†JŐcÝą ¦®2=ýôÓ=ęSâ­ŕjżRţ§ú§wľóť]3^z}ó›ß<ÜqŮwɤ°f­Ť­ŕër3QyŇI'Y=7<ô–ö•%1„P Éâ“O>y$ę[ŻäŰĘŕxţóźßCT"'ÍäuŻ{ťüYŰ©GC Xűßńńydć•řł€ůńÇźŚŚŚy ĺ”@Kó_˘ ŁFČ’-·Ü˛?–P!¨x‘zEm…{“8îíoűPáhhD›ë§”ĚBöGt‡U]¦O3±_^g¶‘˙‹š’$Q#'ŮL|Î_ýŐ_µYOŹÚ”‘ĐqߥlŐ‰»(¬<Ca.+ąęőe˘sl/8Ôš ´š“;Żwě®Rĺ‘Ŕµ!ËăĽ3ç|No°!±(ëP·=üiűgÖŠ0©RY‡ruĎv޵ϱ­¨ćđ„Ż6ô&jÁť˝íěy,Fj;äˇÁC+óXŮx…KËŃ´CWZ÷fu[;őxĺ¬Y3ÓÖP׸6í¶ăˇ`Ă ¨n°Áśhă]CůŮěŮ@„ťĄ…¤žŻ~ÎsžÓU0˝|ôŃGsŔ1®z‘˙ŃŠ-JÔo!lޱho÷ß‹‘$^[řŽôźÇ $0G˙ŔNŕ—fJ!!0±&˙_Ĺţë?˝ Ł4cElŘčm§ťvš>KŔ!Á‚;}ZËżőÖ[o¶ŮfăÇĄý˝–(Ăt(V*o z–CŔźX»Â‘m¦Ń޶™ mQ%é"Ţ6ÝtSâsJí§«™ 6}ŇŠ'Óxý+‹ţvÝuW‰ ö!áÂł}pď[Gwí±Ç\{śŹ>ˇ‹3ůŠŘ,-É˙§uiż(ö!0iâ­›´_$óYqäżaÓü–ăŢşiŚçů•¬ »ű}âź {Ă™ą·…‡”7g"9HŻťĽś˘ľr`©mɦĘŇ:AůÖ<˛—¤ĽTžÇyţŘ ×ňlŁH!B –ü«xŢČŹ{ëćmčéâz%•ß*;¤‡I)@Vi‚˘§2TZIwŃE ŮZ…סS~:‰2Xo‘aÓČoóOëCF—†!0Cż:Ęg†Ö1 ťç`Y‰˝ď{ßűlůăęcEą­Ü{}ŕ&¨Ë+'rî-źťuy Š'óŮŮ˙Ä$iGSví«_ýęC9DŰĹ™W`ů´9 JfĂĺ—_nĂ»sĎ=·e%rÎ łžÎ¦%–Ô1syë˛$P¬Ĺ€|vÖ3 ¸zĄ‹ň>ýéOżň•Ż”Ŕ!†:Ü©yćó‰e„@,[ńÖ-[ţ=B`"ĐvßůÎwlä'ď•@ˇ­i٢Ι[mµ(ĄE%ËŇ’‰jŘ8W®4=X6hť]ĺzŘ·ĺ´ÓN{ůË_nŰY·‹ńcg!!!“D€ rl— ţŽ=öX«ęú$\kčě×l™ ¶:aF†™8%ć:u)ČŤµěN˘Ăe—]vóÍ7k®^čÔbgžy桇úâżŘÎĹK•Ţ;Ix2—•”@Ľu+éźĎ(”źŤç(ĽN8á”SNák«zëćDŰ:ČĚţ€ň[)?ŻÂrŇ-Ô‰”Őöňč±t/ąiË^—5zĽx^x!±¸Ă;Ř™ô ü,…»ĺ–[Č0żňµşË^Ŕµ‰»ÇöÓ• c¦ŇÝŁWŇ ÄVąäědgßŔď}ď{B§”›$Ykî.¸ŕëěvß}÷¤;ŢÜC – ńÖ-?S&+jÉ őU¡ËęóxÓ˛a1ŤčěłvĂq˝|Űoż˝p®ĄsT Wí›S0á6îÉ«řÝwß}ůřôfł6ËŤ•]űÉO~Ҳ»:Ht×.*k®ąćđxµî!…ozÓ›d‰Hx˛Ź¬ť‡q‡CHD°NĘŞÄŐá$v‘‘ Ć)wˇv Yś Ó[©2ľ9>.9»”H§:uĹĎ~ö3JĚNł™ÝÁĚ©G…F† ”C &“@Ľu“ů»dV!°‚µfm~¤˝çDŇícŽ9ďĽóî»ď>“!řřćžüä';ŃŐ©Ż µEťzWąçĆçő©Ou°¬/ĄŘ›Ů9†â=ďyĎĹ_,1vď˝÷v<…™L?î”C¤2B B B &ź€S_ąÉŽ:ꨳĎ>»v 1g[Łp–Ů~DtÓ$\lł+Ăt("»Ç{H}%{3;:đôÓO—ý gVşĐ©•}‘a“˙W”†ŔJE Ţş•ęçÎdžŔĘH€ËĚ6Ă7ŢxăÇ>ö19#©ŻÎ|Řy睥¬’hb{ßJ±Ő˝…c˝­ĘaV•j\#o«ŇŇ9É.6Ţxcb±6łłó1˙ť‰]z饔˘č®C*ČÖ•ńGĘ7‡@„@„@¬ ě'łłKÝH꫹¸ŇěˇG)Ő’şbPjŞî_†c˛b©,^ąĎ}îsµ™ť Oěť÷Á~ĐŻzŐ«^řÂZ…÷řÇ?~ýňY!Ëxë–żß,3!âLěÔ©ŻgžyćńÇ/őµ•új‹ş-¶Ř–Ć-K2Ó¶G™~ź”¶ě¶ÝpX 5%wŘ8™gĐLäĆš‡Ý=÷ÜceŃfY±¶=Ţ|óÍťh怶aŰ”C B B B`ą#@ç|ç;ßůÔ§>ĺ„ĘžĄľ —:׋:â8#“Ľm)ŐâJĺlÉ0âŠsŰΞÂÎ#Ă$ĆÚć$ńqţůçKŚÝm·ÝäC$tÚżT !Ë@ţÂe?C‡@Ě!{ŁXF'‚zâ‰'Ú¨îç?˙ąÁ¨@ §Ö¸É{•sár«®ćQ±â°\ ëîmtÁ«ayh9ě§l şë®»ĘČ¸ŕ‚ ,¬łîĎQe¶q9ňČ#-»;č $Ćz+şKžę*W„@„@„@,_+›~đĐťp §śrJÉ0ź DjŤ'-Ä/F•źÎ«ˇd–űUU¶_o(˝†ĺ˛WăöS5śö?qŃ%Vú˝ď}Od÷ţűďç­ł˝ťÄXJĚöyNËžÂHć X†â­[†đ3t„Ŕś Ćîşë.§Ż§žzęťwŢYĂŘlŘŢ(›m¶h3c®üt ®˛ŃvĘ9u}wÍ}×/Î’ĘôęĎxĆ!‡rĂ 7Ř3Ącůě¨Fţ»:1VŔYř—oq¤˙<†@„@„@„Ŕ$řářőŻť “ŮŔgWSµ´MŔR.jĄľŇB.†'Űy7üŔW*ŰxzËidNĚDęë&›l"¬kOaZ‘?‘ztüfOá—ľôĄňsmf7śFĘ!!0źâ­›OÚ+B`Î Ř·ŘŢ(źüä'Ź;î8~Őx„˝%ŽĘOÇ['ÁAâĺGÉ•A«Ŕ®Q?4čy-÷c ő¶ôâĄGŃ]±e‰±22ľđ…/X^gň?ůÉOČD5»ďľűË^ö2á_Ń]~Ća·)‡@„@„@„Ŕ°Hí[ßú–Č0›~Ô !©ŻÔ˘mŇjyÝâd{š­$“űP•UWC5Un»aÍzµ8ĆXěÖŃ”amfg=C}÷»ß]>»8ŔYaŰHĎy y oÝ<@Î!óA€Ŕ˛uńg?űY{;kU&¬QI´ŐW_Ý"5ÇŤ9ơO}­ yŰJNͰ\mŐ +•K8VeŮTW#Í»Ő4–ŐĐ”ę ë®»î:!hJWŚ÷ă˙8™K&ÚĎÎQ6ÚKFFŁN!B B B`˘X(g‹:©ŻdŘyçť'˝´¦'K€ĂË$»ě˛‹ÔW âzMÜ”2L«ŇZu/ăV_]čooăËęgzć­®v2+Ý’´™ťtbÍÝg>óç€=˙ůĎçÔKč´™§!0?â­›Î%B` [vst@®ÔWů5ŕ-](ŠK źŞć\´€źYż"]ő讇î?…wß}·łěěŕWqÇ<Ź~ôŁ%śÚNęëúëŻoVK+Ă4étú—@5P}o[.îóËx\†±_cŤ5ś<¶á†Ęu+­Íě¤;P•¶·Ű˙ýçw~GŻĎ©Q7DęC B` Ä[7‹0ÓU„Ŕ2 ęT/rę#ůMRj´”ÔWÎ/©ŻNYĄ ÄŇy-ěJóս㱭äô3n©¦*«•rjÜz¬ňĄJo«˛ĘeVwÝ5a'`Đ»|vňyÉD»¨ŽľëŇK/Ýu2†5/ä°mĘ!!!!°LŘÄá^gžy¦ßTR_™ĺŐm¶Ůf¸É*áԭƵS}łKőŚ«˛űTY5îÝgYÖ«¶,3•u1V#Ä+8JŚYRç[îąç2ě»ßý®O“şqřá‡ď·ß~ÜŽ>ívůßCńÖÍ!Üt!0§ä)Ř墋.’sAEUę«-@ăóâ§“ą ”źÎĄ~D™µbóŠwoř82í~ĄW=ş+ŹXz¬·‹ ôÍŤ› -‡okŻ:ZPb¬‹–Kb#:ŘQeDäÁĽŐV[‰î&#cČ-ĺů$`kĐj’ /Ľ°S_WYeyŁâ‹v©ł÷.3—‰Ť¨¦W^ÍP†•Ą»¶®‘Ő׫*Ô"8fő8~ŻW#ťŘuÄţz"ŁÎł™ť,‡{ď˝—ŚôřŽwĽăÜsĎĺłłTĐf3»q¤© ]ńÖÍ.Ďô!0„@íěf‡9”QŁÖ©Żvy#¤DtUXí8kYÖ-ăJ®Ő}$[•ă–jŞrh \•:ŻúšŰ -ËLtwĎ=÷ô ¶P±mĘwÜńłźýĚv0ÖĘȰ“·Ý[lńÄ'>±Äh ‘{„@„@„@Ě5ZĹ–VźŮc×EĄ”z‘Ę`7ŢŤ7Ţ sçůjfJ-®Ć‘·%™ęŢ–ęWeµŞOSS•#–ŐĎeUNoY˝ŐpšKb ˛¸íä7ť:Lş¨°ÍIO‡ÉľřĹ/Ţi§ťěaâ ŰšRî!!0ëňď—YGšC ć–€ §ĚPNşăŹ?Ţą]5§hĂN.Ţ:2ËĘ»á<éş…Ká†nh0¬om×nÜx‰}öpmŮ5Uv^čúĎ ;Ń]›‹_űÚ×ěÍG)rމô:Şě5ŻyÍK^ň’§=íiÉMSľďßîşěď˙ů/<ŤÍ¬Ľzě#żĂZG¬ö¨'ÍJoé$B B &śŔüüvBţóĘoe§ľsĚ1vÚm/Hl°ËOÇĎeÝ™őtőŞ»ˇ¸ęĘ.<¦m÷9lŢ}*t}[Ş™XŮŹČ0zĚfv–Ú®Îţ$6G¶PÚŻtˇb2̞¯{ÝëhÎVnĂqS‡O Ţş‡Ď0=„@Ě»‡oRHR_/»ě˛Ęo5¶ěQ©ŻűÇ,7[”rńoăâ©uW­Ţ¦śzż-m׏eě±;ŻWý8eoÝŞ m<śĆxźŚUr;‚ë­·‡ťnUć«ůě<’ËŢzčˇ3ĚĹŕŞ;÷űo›f†łűjϵß:»¦·Lóů_ŘeřźWňÇĘFşG}4Mâ±~:DfčŢ{ď˝Ă;ť*®V;ý“•dň8Ą¸j3…é-§”L†suĂaoUľ2áăńđ•>}šS&lfwÎ9çđŮ™ ,'´™]úWőW>y¤‡<†@„Ŕ¬·nV0¦“ą% ę1§tYOwĆgX^WăI}Ą˘ž÷ĽçYR·`Á•%©+e­ŞPÂkĽ\ťLůvD«•Ą»úń~†=°a ¦+»PÍËŔ˝ ‹ öYfUéŢŹÔ°˝`|é:묳úę«[aw×]w©´ÂîĽóÎŰn»íD}öµ¤kVŐőćs¬4…X&ćíżzó6ĐFš„öú±Ź}LrrH}µ3ťĹt{íµ—í;xÁf(Ă4/5ĺ^+Ýę±ÄĎP -˝uŤX2PYó©Wuďnëí°Ő°Oĺé-}ĆIg—é˝Ęv&±ČÎ%źúÔ§XtŐ蹇@„Ŕě·nvy¦·Ů'Ŕ7'ôä“O>á„n˝őÖŔf(NZxÎsžcIwŐxę+ł™ÄN©7WëĽ)g?ÔyăŢęˇę»ź®·_śĺČ4<uâ­Ě_ń[NI2Qú ˇlłÂŃ™zë7“Ô‡@„@„@„ŔâXËďśúSN9Eę«Haů¶H,yI}µ‘î–[niyťHęU÷3Ć™{+¨nŢ…~Eąú± <Şěr·šáčě§´¬¨/Ë %ü:ÖĚŢ#GqăÓN;í¬łÎň±Ť7ĺŻëASY$oÝ,ÂLW!łL€H"Ź.¸ŕ9R_[ź=á OXwÝuwß}wǧňŮńjq]ŐŘĄŘÚ˛ë>Mě´ ô  ­«jşrŘ•ÝÇ-«Ň}ĽĎŞě>g©ˇ©Ţ˙ýßýîwoĽńF‹ í^ç|[^99żvŠu6™ŻÚĄˇő“+B B B f—)âh2좋.j­eĄ?×Ő®»îęŕ×µ×^›héWCůd2őX÷idظĺ°ĺŇNőuݧJ×%•#–g>ző)‰Á!föG•ß°Űn»Qb>Ö[®IN:•ëe†5bî!!0‹â­›Eé*B`ÖC ěrÜqÇťyć™öô­®­ˇ#·Ţzk±\™ˇ*I%BÍU:ld­ŘÔWđVazËęŤŮ°í°ŰŞg¦˛îCKĺŞö0eźSZjE˘MúJ nłÍ62MŘűŘ‘±†ŹĂI¦!!!™€`ˇ%ü҆©ŻŹ}ěcy¬¤ľ:Ő‘©”Ő¬Ë0^ZÁ¦IK»Ĺ‰«ö©+=Čl°S°Ě'ńK.X°@VG9%‡2/2ě!˙Ąa„Ŕ Ä[·DD1o|sßřĆ7Ž=öŘ“N:‰ZŞáť‘jť#ěő+ÖV)âpfĄĂ¦‘Mýj†–ĺbëVñŞÜŻ–hÉľŚ§´ôŞę}‘µrČĄ;-Łł-Ý3žń ß^2”Ůř4R!!!łE€‹JĽĐɧ6 –úZ†ŻJę«ĂöŰo?bLô”hi™ˇg(®fѲeŘCëłÔוe7:nĘ/ůË®·ŢzbĂ2VYe_:";‡ Są oÝ\PMź!‘€¤ ví•ýÚ‘xżČ•`ăUW]•fr•ëĘ]ąÇëJ"lD‡yU•eÜ–ŐĽűU÷Ůfݶ-«0KÝ2^ś%LZOg_ŢIzw“M6± ?ťµuĆ­† úéNjŞą‡@„@„@„Ŕ¬ŕ§łńvîąçÚ¬­ýS˛6Űl3yŻĽu6ĺ E\-”{ô®,ŐTŹőVąĄ”š¶¬ć#–#}ÖŰËae1¬\bź5şKÁ$6G®őtN0;ě°Ă¬Şó±^…Ą ő{„@Ěxëćlş X:öąöÚkť÷ęşîşëěRírů­vŢyg\e ©DVfĂpnW%Ú°˛vĺ”ÍÇ+5ě¶ť¦ůвͦśgY:_Ś@´Eť}čâÍ7ßüŮĎ~68eŘϰĚ&W„@„@„@<rĺ)OyŢóž·Ë.»H}u*íá"WęŰ•«0®yÔR[ÎĽRł+ĂŞC÷šLÝ !ŤCf|ůżO}ęS·Új+blúÚMşÜ_T•ą‡@„ŔÜ·nîئçéP„’rĎ:ë,JQH“51ge™TPëéü*™«;*Ąč>óJm˸ÚvW­·şĎ¶Tae÷© Ăń>{žCKiżv/–ůËaçlµĆv22Ő꼇č·)„@„@„@,-_Ţ÷ÓŰ^öÇ«í±Ăíő¨ß^ki›/ďöô‰á™‹®+ŻĽŇ!WőEv‘J†ńÖ9ŹžzaŮÚŁÄLU6é+™Ťh!öCµÓͧ´śľ˛Ú˛Y\ź=tٸóÓI}•Ó łÁ~Á–nżýö"¦ĂÔ×ţ^öu '<ţö«üo„@Ě&xëf“fú 9IŻď{ßűlcüĂţ°Z9rK‚íB¬Şä,9ĺ•B ĄRWzŐRlĘĘae9Ô…Ă>Ç-kÜęv‰–ş­ž‡–Ă)©7üŕô±Ó$« DźĚa'Á¤ŢÖĂű°·ŞW34đň/ňÓ{ĎĽč§źýâż}˙®G>îqŹyöş«ďłăŞŰl:áÓÎôB B VlŹŰřYżýö?şýđ?˝ëoŽZm§ç=á}VßëůŹ|ěcVěŻîŻűÂľpä‘GŠ –:â·˛’NŢ«óčeR&ĽZ$GËm[“ ĺÍŇĘ0ý űěćę»Ű‡PŮ}ö$‡ÖäŮüčG?â§ŁÄ|ťűń-X° N}5č¸Äö¦“ę§ ą‡@„Ŕś·nNń¦ó© H˙|×»Ţe3ă^RçÔW®+©Ż6Iˇ[ jßʉĆęîşR mWŹ3©¬۲´Ý”Í{čz;´ěW5z?Ž[vŤ‚C$nżýv+ ĺ\ĐÁLěÇ'ĎWsßë>ĽŞaÝ«~XZNrůŢSÎżăďýĹÝ÷ö$ď»äĘ»Ź:iŐlőäwýůŁźü[]źB„@„@Ě3ÇmĽţ3Ž}‡Ý}_á˙ů„ŐźđâݸíVŮbŁyžÉ<gŁş÷ż˙ýö!‘ kh çiO{V©Ż6.żU鮡üh-4¬|82ĚčĺˇÓáHź^UM×·eż6ďĘžä°FYęke6¸ű^‹íŹě ý—ědÓWÚ݆ĺ¶L!B ć@Ľus6݆@,–€<ĐŁŽ:Ę)\u„—ś ÍÝwß]ÂźřÄŇLŐ¸d˘»J—ĘŞ©BWv}˝íxl7gĐ•eĽ8ËaźĂn»yOŔŰš’‚«Ç±¬úJ}µ#ĚwÜ!~»ÓN;Ő’: Ű~Q7żşŤWÖX#Ó6™ŔňŢwś SNĚR»[xý:'ýĂcÖYŮ÷ š’O*C B ć‡Ŕ»?ůĺ=?ţĺ˝?ąçŘÓýßcÖ_‡ĎnŤ—îů¨µž‚ş‚]4ɉ'ž(b*vH†­±Ć4 eÂ[·ÖZ 3‚;‚ŘÚfD~¨ŻW]_Źuo 3eĄţŐ׫¶ś¦˛^ŤXΤ˛†čśžqýő×sSŞ‘çKsJăp¨—žKb鳯ţ®®Q`©í¸ńĐ&ĺEńÖÍ"Ět!0#’/>üáß˙ý¬úÂľĐÝqc4P DÚ±ÄPK"Ż\ă•=^[Şo^•îĚF,G*‡Ő+w—>Ý«mÝgb©‰/rĘmĺ\hR§IčZR§źˇú\8ĚŘ «fŃ›…ŁëˇĘ“˙ÉĹW,ÎUW“˙Ĺť?üökß¶Ţ˙ôGýĆäNf!!°˘Xä°{÷í‡/tŘŐ7ţË7n»ëŻ?ř« Ů÷^}ď¬H˛_ţň—Ź=öػ®úş÷Ţ{Ű?w˝őÖ{ôŁ˝T2 «ÖB%ŤŠŢĂ‘azW\ąRCł%ź#_}őĎ~öłg?űŮ–ÔůXˇSŻĆ]uő!ĂĎ©NFjTć ą&oÝ\N˙!żF@D—F۬Z‡Ž‰pÚ¸­4S›–[ŞîíŇݬ­ôŕŞĆ-»ľ^uźŐv¤˛«I÷Y–uďćCKŻÚ¸¤ŞÔWßtÓMN“°Ułs3äů:nL«\×(Ő¶›weW?b6QŹwţĺ–8źůÚ-?úř§žxŘţK´ŚA„@„@Ěq‡Ý±~ůË_eČ>~µÇżx÷5dČnů°2d÷Č'®ú¨µîý×o?î7žř´U¶ä,úÖý_řé/~0wß5Ţ3ć€/ʤtٶŮf› Đ-­m´*yS÷®ź˛˛ŚëąRŠe‰–Ýç°ůHe˝šyeŹŢ}úX§ľVfőU™ Ň8LO·5UĆuŐăHĄWĂ <`›˙ ů oÝ|PÎ!MŔ^!çśsN=:ň•:<őÔS7ŮdŮ:„~*ť4ÔFeý˙ě} ś\U•~íkwWwőžîNwg „„a‡Č"« ăŚ3n#ŽŽówtÇqÇmqAFY$$@ ˛ďé¤÷µŞkßţß«Ó}r}őŞşşÓśG~ŹsĎ=÷ÜűľtÂÇą÷ś‹!…•‹fđ@Nh–"‡Ă-Ůę“<ë|˘I«˘©ů ‚xüřń]»vuvv‚^pÁŘľFŔŽr.Č ży:Ö@ČUŇGa:TăÓMNö Ć÷)fUź’h]1@‰Ť ‚@I0Ře§LC#żzżłZ´ YÜ!;Ą Ů jţţꆯ$Ň»ĹÍ߲ˇď;Źu}2mJ˛¦¤*r¬]»–ňŔOp•*“€˘€‰ŐÔÔ€Ć0Ůŕe0;*LĂ`ݞ&ć*ĹgKŚÍn¨Ä¤Ľ*ž”řŇ×_›¦8F‡íRđLěóůAţ:Ř ëŐéX 3C= ‚Ŕ4" ŃşiS\ ‚ŔÄ †…ëPÉĹ}Żżţúçž{nÍš5ĐŁzî^@mcě÷c#®Fo )RItŤG±PäpL¤z áШßĆ>iUÔÄ›"nąEę+Ô3Ć7˘6 n“ŔŐ yxrý¨ŢĐ‹¦NCJ~«NO9Ů;vĎď„Ë‹lŮŃűµMhv ě=˝MöÍz˙°ůL'S‚€ ä"đ'˙«Ř{ĹůŁŹ®ËÄâąk&~°Ł˙?é˙ćĎĽžŁÝ!;Ą Y„ꂉž×–Űűnş¨öăÁd÷şľ˙4śqÚ•=== aɤDZčŐW_ŤŁg6l€!-˛óx<'IĂŕ9—GAy24,źOrK¬ obkH}ĹáA삏!§aĹŠH}˝„.ł!—nÁ!”“Ňc<‚€ ”‰Ö•Uń)y@‹î…ęű"+Y۶mŻÂ1´ŮłgŁx 6?AéŘ"¶d);Ý”XÖŚÔ×îŮłµęđŘČEˇ:şnŚ?'4„LgڦNc8ęO®ĚÄbĹ®!ťşăľbŤKig7™˛ţ‡J9‹řA@(€ŔăŻbdČ® żěÍ Ťß˙Ľ{É‚_”ŰMľ·ĺpB;~yÝgpÚî’ÚO®ëűÂDąĆÓ®ÁŮ<äuHPŤdţüůŻĽňĘŢ˝{‘ú€¨h¶qćŽyËéƸ°řÜ% ĂDę+ŽÔuwwăĆŚŐ«WŁ22n3wâíRCe¨ÄDązhr•ÓţŰ$A@­“A@ř“!€đ2Cqżř"˘u ‹Ű·oGI;0E rˇ—X‘JŚxoV§¤&+ÁŰđ ÉúÎ"‡Ă-!“ň‰&s>ČPÂŰÔČąŔucÖa˙ô7¬!ő]ęF®şU†zXÉÂxŹ6)ćâćé,ťN“)ZÔ q)đßQ”e‰Ťz{zŞýŐuőu%žJÜ ‚€ #đ'˙«890\ŕlÝآ-–“9[÷Ęđ=Ş·ő}ßľ˘îs^[µĎŢ4’8f JÉ´  ZÍ!°…svŘ:Ĺ9;Đ0ä 1y˛'CðjP "3*ĄarĄS°„+66Žu‚# `ý`bŕ]8'Ś ě›Rg@Ő5Ő‰ »r•äGŢ‚€ ”‰Ö•Uń)E!ŇCÂ[m/îرcëÖ­ëÖ­Ăí]86gÎdd€Á u12 ]±’šąJŇĐDĽ,(I_x8ěÉ o¶„’Č"Z.‘Ŕ¦4R_qÝr.@±;­»ő•,y$č”ÔÔ)i–\ĄÎŐiŐ´ŐůM¦‘b–ä>gQݧ˙®ËRŰß¶ …+.¬[ş´Ôs‰A@Cţ´GwŔͰůŇ`±ŕ“¬[Gź¬Fĺ’™HƤ•Č@V¬Ş7§J° Đ0DëÚŰŰ_~ůĺŤ7˘Ü(MYYlđ`v•i,*»ČJjŁ„+mpĂÉ’Ţ<‘: %Cę+8Ąľbˇ:|ßú {<ô $Ó[űŞńŰÉX“ĎŇPOŁä-‚@‰h]‰€·‚€ 0 -aGŇPş'ě@ą:::ť±|ůrĐGĘČŕ U¸f‚ĹJÖ 7W™Ë i}ą–†ĂU%dš >ž;|ř0ĺ\`ť«V­Â©@|8ĺ„GęÔłĚϢjH©Ó@yş=¶Zżcnş‹&*n^}ş-^Ö#‚€ đ&D€Buéá`î·[¦éNXň\ëśĎS¸,>‹ 鿦@˘“•§^ ^[SAş°uúÚkŻa÷‰±Č{ŔŤ±MMMT{—)VČT„•¬AoI•<;fAV/*îaÁŘĺEĆ륗^Š˝^\—†‡—ÄŹUUV-YŻ*!«MŘČ#‚@‰h]‰€·‚€ 0iŔ~˙B´ ¤(`G(‡Ś‹Ł«ĘŔ˝h3oČ<šxĐśPiČ ‹N–X*jŁ * JÔˇB |‚Î.Y˛•řs81ą\>Ťˇ+Wő,ł@_ŞROţöÓS¨ý쇏żďÓ…×ćßî{çŐ…m¤WA@(5ơş“ËxÍ·ćł|·<ß˙ýŽČ‹0¸˘ţs6‹#č$˙”Ń:Z*Q0$ĆΚ5 4 Öúűű±u &†˘%`;'OĂ&˸°6µ†V‚ $ČlŔęÓáHÖa—¶Kń9ôEôuüŤ†JôęôÔĚUBŁSŞţEA`hÝ4‚)®A`'Cb,x!ör ñµM›6A@Äě‘Á+лєĚäŠT2YÔ±.Îáź•ÄĎĐ…K$@aQ1;0ZpD¤ľbŮčbލĂB7zÉ˝ŮŘPI˝pŽełĺi.”]˛˘ć“Ű˙_?Í·Nk­żéŽ/™mÖ|˘A@Nąˇ:Çě™o‹ďm«mő5Óľ„ç><{] q<’iö,˙§{ż2íłLŮ!ČNŇ!“Eßp¶îŐW_ݲe 8Ş|€›ŃĹYÄUa.Ś˘§ ä±đŔĂ •4/¸P @™`Ô;ŘĺĹÚP;Ĺëő x†é`ʇVÎoCe>c%‚ ÓŽ€Dë¦Rq('‹ń$0BÚ&EŔLqÍš58ņók---ş’pôŽř–ĘşŠQŰé|Â!n}EÎ2Dşşş°ůŚ 1@^C„b–ę°0nć jŻ*łe>%ôo§úď˙Ę>Ł®÷K·§†ş{V-křćżŘjuzi ‚€ §l¨î6J€µT”U\YĹ;®rź˝°tkč‹í+łŐV;gărŘprčéŢ/oř~馛‚gđ<~a3¤ {“›7o^»v-Ń0lOęJÂaŠb­$×taF~“CnRšH_Ĺbťťť!˘ J_tŃE`†¨@¦-:űŔ’(HfM–YPm •ę(2–· ĄF@˘uĄFXü ‚Ŕ[÷Bć ‘€,‚™aŹW•!#ôEât÷|Á3Ń›·d'Ą$cĚ‹‡Mb–¸őią¨ŤB·ľ"’‚XWWg·Ű󥾪®Č!yf˙ Ťˇ>ź2w8ű9Ý„Š›®,»ň‚ŔcëÂĎoMöô[\.ÇÜÖ˛«.ôś{ćé¶TYŹ ‚Ŕ› ±P]`Ô{É éĘV_`q:J ÂćÁźlčű6.ŤĄGĂ©ţRO7e˙D6°1‰šÂ(f†DDĘpěŽJPMać$“b\XŮIŘ`ډ± ”6Ćpě•‚‰qM˝|;¦Ľ<Ćš\%z őąĘ\ {AéE@˘uÓ‹§xiFô t·’ˇ 1ő€sv—ˇNÂv¨LlOGžxźz^P>%ٰ%â!‡02®IGÄŮ:ě*ăHí-cy†9:źä„V©JUÎg@6čU Čçéü¶”y*˙âZü:ť)kA@xł!€P]ďľë˙»żĐ2^ëŞOĺç§M‰ˇÄáS9ă”çĎ}Â]±Ř=EMa܆ŚĐ0ÜGx™ĎçËG®0ŁŽ±äł$VŁrX˛2KĘĚáp'ű^z饾ľ>p łň@IDAT•+Wb1t_m‘4ŚÖĂo„çeAµQ•¬‡R§go"‚€ 0ŤH´nÁW‚€ P*@‘‘Ai°™áY·nî˙Â!;0H¤BŔ€"kxÄđĐ,¬¤şá4|9¸ťQBÜ)ä\˘§8î˘6-QGř¨©SŇń7ňŠ ‚€ SCŔâuĎĽ˙¦6vjŁ’éŘÔţÉG űuѢE8d‡h. xîąç:„ X5ĂÖ)S”ÂŚ ’ËÍňŃ0ÓÍ]ȫغu+ę @đŞU«ŔýŮ€ŢâiŚÁ¬rÉUńĘ| —G! Ńş+nA`š Ž…›aQŁÔá3vCŐ6\@kdq6ůvn±ň@o4 [‚;‚qâ*4$\ 8§ľRę;äďÔů×đĽŞ~jJžQA@A@ŽÖS8ĺQĎ|ż;úz_lď”=ü cA…¸óÎ;Ą F¨g÷ŘcŹá„p% Ŕ†É–Ę$§°’Í0„-)„722˛÷ňË/ăZ D‘WA©ŻĹÇéŘ9 ęÂT%ë •Ü AA@N ­;58Ë,‚€ `Ś€Ž)ZDаъűż¶YÄ^+öx±éŠý^Üë÷űAďŕoT˙ĐŔŢ…7~µ‘f3R_Q&Uę Ä‘:$Ţâ"†«niuĐč”ÔÔ)a¬Ů)ůą<śş¨YX™;\%˛ ‚€ ś†¤2±˝ŁOśV ›,ŁB@ ą¨`\ a(N˛wď^Ü»µ0ű€/ˇ>ÁŁđ™xë—ˇ’ŚŮM8‰FŁ aHĽEfB„—\r f C|`bąË†ćd”XX‘ ÍN«ßSYŚ üŮ Ńş?›ßJůA૩xµâ?C‘±xńbDĐ@ă(1ö™gžY±b¶|ÁęKe$·*»‚žç‚žd(± <¨Ť‚+_7nÜbĆČ˝˝üňËÁJéú3\4‘;vB˝ÔT•Ę…‡đ¤†BîAA@I! R”"bÓéDMáYłfˇöM_|ńĹgź}ą\pöSá6ŕT*ăâxśŞäŮI‰Ůx<ľ{÷nxĂŤ8O÷ö·żWŤa»>‹¤a4;{¦&Ţô¨zh¨ÉĘ\a|ÜŘÁ€m¸KA@J€DëJŞř˘ ĆCoPşÜ1†JŐ iŕpŕ…sćĚŮ´iÓúő뱋š&8g‡řx!yŔđĐ\ŞRB‚Ş(đŠxŘľńĆ‘ßzyčÂ@u”Úd™X˛Ě‚ŞTe6`Aí…ĚM`µ¤‘· ‚€ 'x?†ĂP©ÎÚ ČĹ9;˘a›7oƸCű©¸BĄa…x¦@oňĂ4 ˝ˇCE<äŘâţ Đ0DëpžŽh:jB™ XĐÍËMCC%ˇ•Ë[R# ŃşR#,ţA`bŔŠŞôĂX_/bÇuîÜą(9ŚÍXäĆ>řŕČθě˛Ë0‹Li<ĎEŰąĂĂĂ`™xJă!µ;Č0Łň(´ţΚŞ1Ëą‚Î5ŮLťHdA@A@¦0 fGŞCÖ¦a¸üˇ­­­şş§í@Ăüqd°^|ńĹH€ČĄađOŢř¨šÇˇ ęÓaŰ“"އäđ:śŕCsziźü¦ď%ŤNÉMî-Śą’· Ó…€Dë¦ Iń#SAÔµáIŞG §Ş#•Q’$(a¶vQ]q:pÄ^xáî»ď^ąr%4¸ż)fGhR’ńŽD"¨aŚÔמžÜ_Ž0¨'ş0Š . ˛ŞTe6c% ę(V˛@ąÉ;dtĺëŐKSA@€Q€íŕ2ÔůA>ŽcP“ŢDśtŢ $'8 wöŮgË!1öůçź˙ŐŻ~…â$`b”«ŁapB{Ąx' ÜčµaÆ#GŽ´¶¶bÇ\„°HWş5«]5UĄˇl¨„[Ž0B–GR# ŃşR#,ţA /D†ŔĆP*‡ÚpáR'&uSyłCUi艱 (¤‚ĘÇ١cqP{łpĹŢ €u:tůł¸eěşë®Ă=ĐMĘą`NĆó˛Ŕł“FŐłLśdŇiŤIâ=6»VÇŘŇP.ÜË AA@) @LÜۖ۶mĂÖéYgť…|]&N*31ś‰±Í!H‡¶NÁÄą C=;$ĆćŇ0xFęëÚµkaV__˙Ö·ľ•L°ÉZ< Ă2°*ua,“Ŕ4ŚXWö[N–†ń† RéB@˘uÓ…¤ř© Ŕ\* !¨(í©Ro>VDô‘{YŔXDë@ ‘ Ę­ZUAĽ o<`Ą/˝ô¨$4Č×@mPLÄűŕúöÉ‚ŞW•,“N&2éč¦)•´šÓ™?ŇÚ?Ř… ‹=ťNe´łţŃ_Â:'ÜÄ’™1Ó2ä-‚€ ‚Ŕ”#-é4vCCC a°Á *¦D˝*Q'ĘGĂľŠcz aŕ]¸}â‘Gyĺ•W.˝ôRDâŔń† AĐ0 ĆŚ¸›bٲe\dB†e`UęÂX&!“J‚hil/ť2ăHśĆą@ďL­ZĹ6¤Nh)ąiÍÂźĚS°FA@JŠŔýŹbIgç‚€ ä" RĐ><8g‡ëŔ@QWbgý„cŮ>aŹv8©‡ë\qc,ިÜ{ď˝Ř1FFßá6 ¤ľb/é·8L%®ŞŔŚđKˇTÉ2 Ş”ÉxÔŠJÉ©¸Çns:­Nw™Ű嵹ŮP]*™HD¡X8M¤ĂŃŁV:Ĺbă$·†Îa]j/)ĺ-‚€ ‚ŔdP¨˘[ťĹb1$:€GQő^řd–˘ú׍ĺ.ŇV!<öÚkŻ!×4 ¬ QąććfXîŰ·ďÉ'źÄŐ^¨@%ÎâŃ­ŻŇ0Ś%˙ęě,CH%błĹś‰ă Ăav»}.—4Ě’±dĚéd<Ť†#ˇP,ÇcZúHŁŐΨşŇ}5aŔ6l ‚ Ą@@˘uĄ@U| ‚Ŕ$`ŢŞ^˘†hv\ŁŃ(vwqÎN—‘Á®™ZA“Ëś Á.öi/ĽđBěîb_y¸e b§4ô†nM„@›˝äDuĄĘ< +Y ®T"nʤ\ć”×í©®m®kj‰§2>âŘ`(ž É‡×W_ăőzśVsOgOW0Š%’iěĆ7xunů{ORpZĘOŇCńĂOĺ\ĹŻJ,A@R pĘţ«WЉŔ:x€Va—oĐ00ÄěAeG"tŇ0Äţ*++‘‹Ślť"›őIpȵGîąçÁ ĂŰ)’†aŮĹjť$“@2vDÍé”ĂśôşÜţšÖú¦–¤ÉB4,’H$“Hs0ŮínŹż˛ľµÜë˛őu†uÁh<ĄĂł9To$~8›‰ ‚@Ih]Iáç‚€ 0 AĽŹ Ú˛¦7"NŘ)‚f!šľ^gR›*eä)É3ed Ë1;$Ć®YłnqsŮŰŢö6lđÍ˝nLuÎ2 B'§âQK*VYQŢ2knYUm˙ŔŽ]{÷ďۇC|Ç:Ž âĐ]MehoUMCK[ŰĽů ëg/^ ;|p``8™¶ăľťÖŻúg ”ązţŢÂÂůŐA,,lvň˝ř šëä]‰A@AŕôGŕÔü¶˙y©ĐŃ0đ"˘a¸üc°Ăî)”:˘6 Đ08Ä ;đ.Đ0ä˝>űěłâäÝ-·Ü‚#uĹĐ0üĐ\ęŚ:YŁa鄯ĚÓ8s^eMýĐp`ďĂöďß˝{wÇŃŽţţţT’đ×6ťµüÜŐ«W/;çśąg-Żîox$°uë+Ď<ýôš§ÖÜ»g$0‚íR§ĂŇVWľ`ĹLË eó¦ţ{z"ĺŐu‹–śső5W/?÷ÜyKVÔötÚ·'Ť€†Y¬Vž‚>‡š:ĄîKĄ)‚Ŕ´# Ńşi‡T ‚Ŕ$őÁPŠ›ŕřbsŐŰáˇCv ‹ŘÝĹu±čBV,ed¨ŔRmęd8g ,A4±żŠĘ)¨a=qDŐĆP. L§’©đÎčÍś=?e˛<úČŁ÷Ý{ß‹Ďoęď±Ň6«Ĺ‹że¶K—4.iŻ©®t»ťÖc]L:~ĽcĎ˝;^üwż]´dé 7Ţtíuל˝bŐá}»ŽwvĄěnk6+–ćUgçoAA@“DŘ2RA±›#öĘ>†ŃşŃŃQŞO‚ ÔI‹¤a–ŢŃѶ|ůr8)LĂ`€Qü¦IIĂJаtt´ˇľ®ą}ŽŐîZ»öŮ~óŔóĎ®íí>nJ%đ^«)iµ\´¨aŮěÚÚjO…×ŃŐL&âÇzŹ)x‡€z)1;¬>ź/·¦p14 Nş»»QAÄŻ ĂĽÄ»}±Ŕ]$¤˘á¦Ćş™łĆ’éďடߵó•—RÉÍbÂ, ‘ś”Ťo=Пٗ)s;vá{R^—%żúň¦#‡8pđCţĐÂgҦ‡¦ÍĺtÂÎp^L-Ź §‰Öťe A@Č‹h„Ţ@ţŔ‘ëŠxvŕp ÄŃ‹Äd$22Ŕ¶5ÄpňÎO†^<Ü„€)đ 2ŮëFĺ*Uť ŤĚ¨«m›·8‰ßyçťwüŕ}ťGśv$ńjq:\IfÉNŽ÷ÎS”ѤÝ›‚±bĎ7ŤŽTב{~qçh0đ‰Űţ©uöüD"ŢŮ;`s•ń"éxvH/oA@A@¦†xXŽ×]0 ×ĂÝ_đ *ĐlyŇC5…‘ń=sxÄÁT&<*lBöąŁ Q•ůdĚŹŚV—{ZÚ$Óćűď»˙G?řÁŃý»­–4vLͧ#f1éÉUfæŞÉ’4§a?:Üó›{~ţ×Ď~fîü…(›|¸ăÍăŁÉ]€ŞáŹAiG@˘uÓ©8I ŔŚř¨!Čh]Fj¨mďÚĆţ¦B” ĽçěÎŹ„%bvz3ś>ń ‹ů" ¤„žU.R™ŚG=VSűÂĹłĺľűîűá÷ľ?Ř{Ě…PťŐLq:-TGäĚ&Ť.šŻĂŚ& 9…ŕťŐˇL¦˘ŁC?ř@}CĂ­şµĄ}Îh G­v-ŞHŻŠ…ńů· ‚€ SA€I `\ą4 ÜŚ\žaß4  a;ŠŮA©ĆăÔEOĽŮݤ<„íu4yuˇ™JhµęšZgYť®‡űŕŹn˙Á‘{ě–4vBAľ¬Ú¦if1aW5cʤ®ËX¸*ÖlJ¦"ż䡊 ß§?÷™¶ą G†‡˘›C‹`N¸6AéE`ěňÁéu*ŢA@(¦e*B¸ {ąHĘ@˛*(1BxYÄŘ‚bv]]]ا…4ş‡×ŔzťFm˛0 ΉH("6‡&uŃ;ĚšżĐĺ­Ř´qă÷˙ç»=ŐaŁ$ŃŚ=]Äă j›»YbŠ:¨‰®&żgv}…a;‹Ů‰3v6›Ă‚¬Řáďż˙O<éô”7·Í˛$ŁťZĆxKţ-‚€ ‚ŔT`bŁR °°,Đ0JwETL Úީ͆آaÁ`i­(Śř¦‡Ťîá5±^§á¦:\•10ŹeiXÉdOްĎŮÔŇZáŻŮ¶uë˙űŁŽ{íćNĚxŮ Ň0°ąĆ*÷‚>Äő4fłb§Ő®đbŹ<řŔŻ~yŹŮîś˝`±%Ćž±şžťy ‚€ Pjäl]©˙‚€ P˘\: Ķ@Á¶ĂÎ-h"pD(©Š Ţč;Ä/˘u°A$ĆB ‡ěM•áSm’ŤŞQĺ±^¤©FF+*ĽN‡#ŠÄ“‘X<‘±ba¶d"VUYQÝŘ<80pű÷n?t`·×Žćdž­V¨N{™Mŕ‹n‡µĚe÷¸0ĚŠ3~¸?vx4Ţ^_ŃTíN¤R‡zG5¦h˛F3&›)Ůyěđ÷ýzÉYgÍž5ł¦§łg(dvś8^‡UŃ"s—Ęź,‚ ‚€ E"FAŹjĘŇ&ŢĄŇ0°2R2 C9`d< ´‡CyĐĂ»Reř„^ŐkXŕá°NĹŁN›Ů[^‘áźx4ś@Ö‚ÉbO§“e^wMĂŚh,~םwíxm›Ĺś°™mčÔÖť=T‡ qÂÎĺ´–»§FðoŠ}Đž‘čĚš˛Í‰tzĎń€ÍŞě°j»Í ˙ęwťţyçťż˘±ˇáXďŮéâő`…ůľ‚mDA`hÝ4‚)®A`r€÷ŕˇ1, I2čXgd `‡3t`ŠŕŽTcxŔAń ZWUU…-_ŚboÄ«Ř'éń¦‡őş5 šT*éqŰÚçxĘËB`8F˘ÁŕH8OĹG[-Ç^ě“O<ąöé§ťZÇç´ ]–#jÓVy ~o]ął˛Ěá¶[q?,j*“Ţql¤Âăđ{ťg¶ř»†"Ńx űŔ«%“¶¦RŃŻľúŘŁŹţăÇ?V?ŁąoŕU“éD´_ÍźC –· ‚€ SC€ą†ó!?$r€Ô ał7C#†­SÔżĂ(öĆĽ…545ń&Ať—“I§l¦T}mcCóĚX4 F"áP0 cşŃ†¶….·wýúçžYł&â!ĚYÇvLµĽ“É綆ŐWh4Ěc·Ú–kłiű‘!ź×Qîr,m«>ÖE h aéLĆaIu>řË»ď^ştIËěÇ;ź1ŤGëhťŮőžGҲĺ-‚@‰h]‰€·‚€ P,*QcV‡Á¤çCxá˛CĚ»ľ°A/Č"˛CFz‘?‹ ^ !:çÜ$›<~ŇÉD™ßW^é·9śNwąß4#“JF†"Á@4ö×5…FGďůĺ=Ńp Ü•Í|Ĺz0-–™uŢyŤľú ¶s±H|ŤćĄëŇf·Ýćuj›Ďő•îĹ­U»:†CѤëłšms80ĽáŮő7˝í¦ćĆzŻÇŚĹ-¶±oˇ…Qz,ÉňA@Aŕd!ÁCri4`\LĂčrXĐ0°/ ĂŁgtt1;p0˘a¨z†19çąt˝¬çot®˘Ęď*óá—Ż¦!“J…FGÂÁ@$ŞmhJ$SŘ4豚ÓZţë8 łˇäH­w^CECĄ»Ě…ÝŇqfÂi;‹Ça2™NŐ”»În÷żvt(Jh5…-f4$:¬{ú™;w-[zvĄĎ7ŽYíÚUxx…,^Ţ‚€ ”‰Ö•Xq+SA —AzR7H Br`„T˝ zE޶0ŢkÎŘ=Źéěět:•ţ*MCążF;#—}^ÜřB$<ę±k Ą_v›eĹśš3fV¦–Ë&®:ť¶D"Iź¨}g*ýhiĚ&\41ŁĘsţĽšő»Ň]Ca­ŢJÚ ěÚ±3žH•ű«µJ*¤ÓŔ’GA@¦1>dÄÄ@şh2Ř Ła`błc†8®žŔÖ©ß栗¼hrĄ›”ý«f¤4Ű\}#Á‘×^őş\Ţňrm˝ŻşÎbűŘ×·żÖŰŰmNg†áÝŇ6˙˘ÖJk™­iłÉ¬Ń°d2ŁĹć´'“ĘŘp›Ń0śĹłšjË]/¬[“L†Y3fK:őĘ–­Č¸őŐŐÓm¸ę U™|Ę[! Ńş+nA ( äuŞ|)#lŐ‚ü "¦&d„đĐE(#y¸1–cAu‡ě°2vÎ-W×´Řť©„9”HGÓń@ÇńăÇ:ť»żşşuŢbPW$J mB«W‡RĆ´¸Ąra“O ŐáSĆá´Wř\ý=ŁšŰ,éĹ =N Ƣ]ďHôř`hQsĺňYŐOż ĆkÂĺÇŽwô řĘÜ.—7±ńÚ0®4oň‚€ ‚€ prL–†a6p*¦aĚ!<†ŚŢ a ičE mmm-Ó0ôŇz™É° ÓS9 `<ŃT*‰Ź„z»»{P˝¸Ę_ŮŚŚŚđ(ž…ҫӪ–,kÉ©6;hXŇlŹ›lىT_O7.ťG#˝=˝¨‚‚`ÖŘTî¶ťŃ\©±,8ą2›“É4jsAXâ0]6 6›ŢkŐ8W÷eLMŐîĹ3‘ńŞŃ0«9»,ş»şaďp¸đĽZ-šę˛EA DH´®DŔŠ[A@f?o±Ě„ăÁĂ@ łĂ/<`o°FDë(f¦îHÎÉ, çYÉőŇX+jäYí(@Lű¸,„]-\§]!JOevéĂeö M%ÓŃk#N—Ýb¶x]6Śńz•UŢš Žă!qys›ĘÝÔłÓüa;)$ř@ŚM&â4ovĹA@A@ >ůÜb ş†áŢXČŘ:Ĺţ"xs0đ±i¤a¨x˘µĂŤ\Z¨Í¦Ť¦Ó)Ť‡eiân{»‚¨+’„ŞŹ¤ŇŃ0Ň`ł4,cr:Q»Ä\懌Ç3ze>Żsi»…†Ą[Řâ+sŮ5[„ů‰lś%‰Í jŚ?ôáă-ů· %D@2aK®¸âČe?¤Ń™Fś˛\,Çô ‚ ‰`„Öa‹&ńਝ:–Ľ΢*óÉpËŔ±"DÄiEZnHĄv:6nö{fŐ—!‡ĐŽ.˛-2ćL"ž‚ÜN†ď‰cĂ7“'¨§F#35^w˝ĎŚĐ‚;<0EŁ‘PÔérźh|%¤‘· ‚€ '‰‘śÂN ÉŃ0ěŹ"Z† ;IC@ ˝4*źŤîŚojbö|2/ `~YZĄ= K†Ą÷uwŹDfTj4¬®Ň…=[-ŮA«V’Ąaç™2Îěm¶ńdʉĂî‡ĹüŘ5ö{śÍŐޡ!m€v8OăxńDbt$ŕöxłşTšňA ¤H´®¤đŠsA@•™±53Bę͵áH ČąŔíc †8’ľvtżÔx8ÝĂ3B_@ć^đÎL*[“ĚÔé¤Ax#M©ńDz Ť&:#M~w[]Ymą§ĺ:Âő.§Ţ¶GC§`€!¨^‡ (ŕ$ßpťž›vgoÇ‘ĘÚĆ•ç_Đ4ٱóřQüMŠŤÝŚE«pŚĐšĂj;ńeĚ^ ćTŇÔ;‰îď ¶ŐyÚëĽ=Ă1Ü\†3v8s§żL&šĚŕ|ŢŚÚ†•çŻÄd=Ýť±dĆî¶p´®Ŕ·L„±ô ‚€ ‚€ `€Ó]ßIŇ0ÄąĘËËUęÂi˘ÜyIĂú\AhµöőÔÔĎX|ć’ŮłŰŘ‹”V-2‡# aZM ňp#X*Ťű%P¨N+›6 cű»G[kÝógTB‰Ž2" Ť†qFZb„ĂUľúŞŐŘníě8I¦ív®Î@ŘQ·6VŇA`ÚhÝ´C*A`€úűŃ8rA]$OÁ€†łŐ|ŞM–YP XI‚Íéîééš“J7Ďl{Ëę+~zçĎSصhɬŮt‰ˇÝdI‚-šłC«–ő .ĚbÁČŔhd÷ńš¸ť 6.\_«Ĺö2ȵŘ]KÎ^vÎňe‘H¸łŁĂbwZ,ÖY$ŽĽA@A@, 6ôLea.Śĺs=P/˝©WµWevĄ*Yf̬çĐĐP<«kh\uá…ëׯŹG&íňY\ ‹¬Ő”Ĺn¶AÔ4şVŁaÓâw±Pt8=Đ= h(–ŰŽśíö dĚ"`·ôě3/˝ěl”>°ĎduÚl aX‰/Ueţ|A@v$vÚ!‡‚€ P,*ÝŃxŃĂľŚ:5]a˝ÔEn!ł Ę¬d˝¨y2Oő?Štď˙ŔęëiDę´“t8`—Ňn†MĆQ.EˇŐîŹŐŇ=đŹĆµ,Yh°‰;4 E1-¸dťĎŻńTćŘp´¶±ĺ†›oô¸]˝ÝC#¨Žgµ`{xŚcĺA@Aŕä`^A<'÷ÍSäv‘¦°A^Ă.R˛gť€& @Ă"‰TOW*™¸ćÚkÚÚfĄMvŤ†iż@¸L±„VDű'[„iiP˘4¬4¦í”fLŤU ĂŢęÁţĹáý›÷ż·Ňçîďîěęu¸Ü6«Mó0NŔXŕő‹ ‚@‰h]‰€·‚€ Po2zx°Q§¦+lP —şrÝBĎJ–UA•m®ňCűv`ßőŚł—~ŕým2;Ći±8ě4)‘H‚,&ÓŘĹEü.K¦ľCwVĐřc6ЧĹď*<ö†*7šCˇX iżęęk/»ôŇP0p`Ď®xwťŮ´C{هɢúůÔ%oA@A@&‹3ťŔ~tzn6(ĐK]đoâ6Ü$˙ÔĄ*y)­o×ńĂáĐhŰśąď~÷_”•W˘EÔđoŘ7Ť%RP‚}Ó0­¦ťVç®ĚmkŞF–«)€v˝ˇ+W_uóM7!gb×¶—ŁiÜűĄ=8Ą§['­GŢ‚€ ”‰Ö•^q. @¬+×č˝s{ˇ)lP ]4\ç–ô¤dYTŮbłĂťvŰlö[?ňŃ+ݏ$ž¶"x§ŻÓvÚe ‰1Dě K›ćÖ—]sNóµç´,m«Ä1<č`‰´ TN)wÚŔW;â —ž˙Á[?č°[»:uööZíßMÄÔp®[›nýŇA@A`R0·ŃŤ‚ž]5ąB®Á„˝˘¨6YVU6[­PĽűčÁd<ö®wżçšk®´:<¸‘KŰ Íž—C„‘¸h,‰ctřŐVăyËŮM×-oY1Ço·š5¦Ń´ 2!5WúÜv«%ÜŘęćůźţě§Ë+ĘzŹ:pôŐ鲡˛m,Ĺ ŕ5ä~˛hA@v¤nÝ´C*A`räŁ>\ĺ$ Ôá©© Ľ\ę˘&Ë,@ŻĘV·o÷Î 3Űkęężô•/ôľĽm›Ë”˛š¬(N‡R)i Bp¦X*˝ É·úśćş:ZÎĚnň!x·ů@ľ\qf}ů͸Î,ł«+Ô‘Şúňmź5«m°·sçkŻ&-GĤÔ´Ë–ľĚÇëh‘ňA@Aŕd·Qé »* sš+;§~÷T]Ë,đXZˇĹUvôČ‘J°3oű—Oő÷ <»~C*‰#eę˛4,cІSłęËŻXÚÔ<Ăgµšç«pRníŽ.Ô!‰'ÓŤ~ĎŮmŐ8:·§+řr·é«ßúŇ‹Ćá­›źOZ˝LÉńÔ%Ńbä-‚@)łuĄ@U| ‚@Q€î`<ÔKoCwĹč†NŞ*YVťl±Z“6÷‹kź-\°xÉŹ~zÇĹ­ŠĄíáXrĹüÚk–·xě¶›ĎożlIゾƆr—ÓćpŘü5žů3}v«5žJ5ú]WśŮhµ×ďÜ­ýâ׾~Ţů獆·ľ¸q8ś´h™­ĂD8a‡Oŕč>Gš‚€ ‚€ LđŠÔ‚zémčąxÝpĂIU%ËŞ “Á‘’V×Îí[cŃđěů ˙ëŰßşćš«,vo$ž>łÝŐ˛fаëW´^±tNĎ57V¸\v»ĂZéwźŃVĺ´[qlUąăşeM^—}Ăîľ –Ż}ű»oąę- [/¬{˘{8jµŰ‰†™Ě¦ű-”¦ ś$ZwJ`–IA ? _ĚŔňY‘Mî›ís»Tźj/ Q5$CĎJ–ŮŘŚ7.lŽĄ7Ż} ­sćźńăźţäýďý+»»b(”쉴Ő{ßz~ŰK[Ę<¸Ö.†Í K& §Ďlö_»¤ep4ůŰWú]í+żsű÷.ĽđÂppdŰ ë;ű†Ě`” ‡(YgA¶‡öµşH^€‚€ ‚€ ś$Ě1ňůa‚¤Ř^§×9T{iŞacV†•$«ŁHĆŰbw„’¦­ĎŻŤÇÂmłć~óż˙űĂţ@eu} ’î D±'zőŠÖ«Îm­ŞpÁ8X8făÉÔüFß-+ŰŁ Ó/7v} îřůť«W_‰Jv[Ö?yđxr`-`m aYB†őĐJHŕ5 ‚@éLŘŇa+žA`bŤ©ě‡“/XČçHĄÚĐŔÜ^UĂ2 đ`(«Jš…4x[ťŢ®ˇŃMO>|Ţĺ×46·~ýŰ˙sée—ýđ‡?Ú´u»Çž~ě…#ÁȱŢ@{}ycc’ZCĂUY9ŻÎj˛­Ů5ló7˝ď˙ýĂ;nyg…Ď—†^ZżćhĎ€ŮáÖ(ĄŮ„Ý\íę3Ť^˘^ZKÄGA@iBL†ř@^™}±o6˘3ČGĂT3Ëz eUÉ Äc±»úFĂ/Ż[łlŐĹuŤMźůâ\pÁ…?ţÉOžß¸9“üaóŃP4~ŕř02^[[P‚Ή…"É Ô»mö§vôÇ]Ő·|čźŢóľ÷VVUYĚ™Ťkß{äŮáŐ* W6ű€}i7RdŇHŻĺŮEAŕ ŃşS˛L!Ć€fv°>ť™ˇRµaů,ŮŔp”EŔżÍéé †ą÷—¬ľĘW×|ÝŰßyńĺW¬}ęÉß=ôđ†íŻu÷ 'cń;ź90łĆ‹8Ýh<™qĄěĚy Ţ÷ž«V_}um].~č:úň¦ ]ĂQ‹ĂŁEč˘#bSWkeëÖĺ[›ú!" ‚€ ‚€ PCŞ!¬‡@ôCçÇP©Ú°‡|–l`8J]j ęÉü[í®ţPä©G<÷‚ fÎľâÚ·®\µęůőĎţîw˝´e[g×H4űżuŰëĘŔŻB a‘tÚîťŃ>ű–·]uÝő×7Ěáp8F{7­{ňŘ@ČâÔ̰= Ďă\LŰAŐZYd W®[¤4A@$Z7-0ŠA@" =†Ľ‡XśöBÉ,®@7śšę[7…jŻĘl¦*IFĆŞÍĺ‰Ćďşóg¬8wéůűkëoĽĺ]WßpsOgÇľ=ű>ŘŰ7ŤFťN‡ß_Ý>{ÖĽyó›g¶Zqˇ¬Ý·o~iďľáŚWÍâsĆ“qşl†ŞăyY0ü^Q ‚€ ‚€ P<†XxCÖ%°`8cľá0ć.TĄN&ç°Ě5ÎŇ0O0‘|ŕţű—žµxéĘU•ţš«®żńň«®íë>včđÁžžľH8lsŘ++«Z[g.XxFkű,0<¦dlÇćő;wě ĄíV‡ ŰČŮR-T–MtËlŕ©Y UÉ[! Ńş+nA (ň1UoHŮB®A®F·®ęU%Ë,ŔŇP&e…Ż2™l}čÉg·ż¶ăěłĎś»hIEuCűÜ­łç¦S¸ýU{Ŕ|µbtÚÝóč:¸{çŃŽŽ@$eqz,ilÝŽíĺRśŽZ°‡1ľHó „íÔ•‹,‚€ ‚Ŕdµ0˘ę 99Ń91˘Úđđ|JŐ€e0ŠeĘĘĘSŤ­ĎlÜňÚÎÝgźąh΢łjZZÚç4µ¶_lDĂŔÇBĂ}{vď8xđŕp8auyAòH´“tcqşńlXLG_„ąh:uŮ" ‚€ P"$ZW"`Ĺ­ ‹@>ŢĂTo 4„<°,ôę›VÉS° [=ëY`o,Tůýs,8tŕpĎÚM[¶lźŃPŰĐÔ䯩őůüNŻÇj¶%2©Xhtdh`xp Żżoh(ÓnŞđd¬I°e„ęPE«O‡kbłµę(N‡5âĺÓę[·Bi ‚€ ‚€ 0Y@-]č2}2ě…qÂ,^}Ó¤< şĹ°ž¨2š(Ü6gÎŃĂkž{iŰ+ŻĎh¬ihlŞ®­óUů]^ŻÍbOšRńP8ěë艦µz&f»•hč–VźN»[b¬ ­\+]7Ö„Ŕ˛n‘ŇA`zhÝôâ)ŢA`ă!ŇĂLŽÇ«d(·fEŔچ:Qý¨ ĺ\ĄŞ˙Ş*żužířńÎÁX:xĽ˙@ç€ĂnqZ­v;ŽÓáśĆSľYě‡Ă‚2ĆŮý^ ęgo9´š¬đ·|¤N»Ŕl,ĺŹ>™AA@É"˛ÁO.GB;ĚíEפ ČUa?ŞCŐ?ëY0ě…sźŻ˛}¶­Ĺę’‰P×Đáž»e§Ófu8lLĂ’­BŇ«Ăb×htD]äe6Y- ăŐj˛vĐNŰ7U'%y ‚€ PR$ZWRxĹą ‹€ĘŔx ¦Â˝°/l öB¦&˝i.UfoŞ’ĺ\Aő€WTTŘmöžŢŢL:ŤĘtşĹ-–”ć4ţ‡'»«˝S™4ÂtLŃE®˛VY™ât`J,/€Śĺ-‚€ ‚ŔI"`Č.™îĹÔ… ¸—ů 4¬4žĎ ß(ŇĂYYŮĚ––ţD<ŽÝPа„Őš2™mzńhĹč@«LÚ†©¶[޵´XśöŻqşAĂ“âtŮh^ľy53yA@( ­+ ®âUŠC@ÇĆxń$•q„½ů x.`©NÁr®Ŕ–Ü +u˛Ëíjjš180O$l6+ ”íĂCUQ Ń”Ź˙"M3ć c´˛)4ťöŻě7ńH’Ç,ĺ_‚€ ‚€ L ,żăŞÂD«p/üä3ŔŤčĄIi:Ąˇ&+Y QąC ś.g}}ÝĐŕP,Çu^Z ś*[W†a‘Ů(ťćŚ\Ť1±,=ŁQĐSżI ĹČ[Ň! ŃşŇa+žA`bň1UOśOőU¸–l;–ý°Ťjo¨dµ—•ä»H°ŮlŐ5ŐŁŁŁńxB#Q´htQ+„’ ŢeCqZ#»Ëq:Řj YZIž™ARSŢ‚€ ‚€ L Ě^tŢT=Ő p/,Ů w,űaŇPSUʆJuF2`‹ĹsiX–{Ť]%ˇÉ #FGíČ14u^ţA@()­+)Ľâ\&FŔs˘Á… &ŐËĆLšŰ;ˇR5 eŢ!+6‹EŁ1l&#GÂvđ™r`9N7–pśŚl ŹśŔŚCS¨M˛‘· ‚€ SCĽ"—Z€~°·Ü^t±Áz1\Er®ĆĐ,źR§G+,//w8ŚhVöj/úбoűĘęŃÄbh=$Ă?ÜĹA@(­+°âV&F ă!’D.ĆXÔű+lP¸—=±Y®VŞ˛ˇ˛€•Ťm6Äě´€]¶D1D ÁwѧiąZ5;íNXöO]0ㇻX#‚ ‚€ SCĽ"µPőą„Ó6(Ü«®–,ٞݬgˇH˘ańx4,“Î^;6§«\Ćnu_Móę”ę‡,‚Ŕ´# Ńşi‡T ‚ŔäP‰—n$±˘|Ě™ ¨˝$ă­‘¶l%8îek`9WP{u27yi°N—Ë…SÉ”FłóţŃ‘:dcP9cĄ8ĆŞ†ŁÉź¬v‰,‚€ ‚ŔÔ-!f’;|ÚiMA3Ҥ<5 °a9WP{u27yiđN§“i›Ť11­ţČX{ŐŰë”ĐË#‚@Ih]Iáç‚€ 0…©÷F©¸s6(Ü‹áěŠU©~C>Öł z€k°Ům(î¦ő"p÷Ç%ę`‡Ś ýOµK]›ČoF×˝ěę班xŰj‹ÓÁÍ?!542úô ô-öćzĎygźâďĘ$SŁĎl2%R×Z[ĺYqÖ)^Ŕ´LÚđräĺ×ÉUŮç»Îš?-n˙Ěś„žŰŇů‘/jełÍZ{—µ˛"˛mgŕÁ5‰Ł]ńŁťéѰ˝ĄÁŃÖTvůůe×^Śż˘§öůŃťű‡ŽÓX×9gŘj§ćGF Ó‹@aFÁ˝†?ůÜ‹%6(Ü‹áěŠU©~r>Öł z€k 2•ŇţbÇĂ4L“Ç·KaFĆŞ6 Ą®Kó%Ź %@@˘u%U\ ‚Ŕd ŇcČäŘM>bÄŁ r{aĆ9GS' YĽR[ä(ěĺ’ĄŮ:¶yKë$%Ţ$¨žYV»H)ď7éXĽëc_ICüáV_Yůµ—póĎCHttwňô-eW_tęŁuÉžţÎżű-Ŕ{ÉŠ7h´.üüÖÁÝK_a«óK´ÎđOÇČ}żGH]Î…ł3©tçGż|üYŐ2Ő7Ýş3đۧóŰľú ÷˛Ejo‘rŕ7OÝůĎřáíWK´®HäÄěT @ě‚YSî”ůč140ě…%=4 dť€fńJuláQěVĄa¬ÄRi8Ţ$¨žseŇČ[’"`)©wq.‚@Ń'Îř!MÜĄzPe2P5,ëşĐ¤.ĐdY5Ö)ą‰eëYŻ ŞĚ~T%ËäÓA#Ď›ĐÓ›ÔPp<ôĚ› ůpAŕ$HFGźxŽśTĽý-]ű˛.T§úŹď9t쟍éT•" o\T–YGĂTN’ďu¸IöÜT]šÔËš,«Ć:%7 Ó06Óąĺ%±*ä“ŐQ°‘G’" Ńş’Â+ÎA`<éŚ ˛FC{Ýp4‹§SěN>ÉË$Ůç•;„FĺęŮO®+hčQÇ’yżiüîiÝ·‡Ö˝N)MA=nÁˇ0ÁG×eâ ÍĆf5Y,áŤŰNŘ[,ÎĹs]ËÎ0»ś¬LŹ;˙áKÜAř3@LC÷ăěCű7ÇÂT%dÝ]“ŤuúÜ&»b6,“ĹJ2 ¦NihIJ•Ď@ťHgÉS°ŔEA ¤H&lIáç‚€ 01†ě‡ł'0^g@M2PÍ gĘKĽIPýłFUć“ٶT5¬„ ĘlĂ‚j *U¤YuBCäýćA 5@Ń:Ý÷"Ö€Ó@•ďz«NŻ6a“GPKUN—ŚofD:&zŠ4+ě&üSĹĎUĽeá…ťdo‘ß5ŮYŞ?ň—ľ·ż…FĺűÝźđfvŘuË+ÝOâËl™xËyÂŻą˙´l”Ą‹Ž×ř¦âťW×}î#ÖŠ2Č™TŞďë?úÉýd{}_r`ŘV]IMőŤ?ˇf·«ř:’Ĺ:‹Č‚Ŕô"€żđč|ŞÓćö0ÖuĺŽ% Ţ$Ŕ>WP•ůäÂŁ¸wRĂUcCPŞzŘË#‚@éh]é°Ď‚€ 0`<~ʵSÉJŮ’ č­3Đ5y Şs–Y€Ë,L¨du+!¨2۰`Ř«*u2š“}úűűřĂÁÉś¬}yyůG>ň‘šššÉű >ľŢ”Hćš!Ö0Z—8ŢÓ˙ßw†_|5ŮŮ‹kÄSlMő×_VůîëmuŐđ3úÔĆá_>B-^÷ŚŰ˙ŤťŁ@žVz?­ý/6|ëSÉuýăWÉŔ{ÉąîgöKsžXý>ç‚YţŹľŰ{ÁRö@BđÉçPđ+¶ű jö›ÝN{sŠĐU}đŽ–FťefôŐ=Ă÷>ŢôJâĐ1çs\KćWěotuúÝöů@IDAT}ßýEl÷ˇřÁ€˛T”Ů›ęË޲Ę÷Ž«qO…Îů”W5tב-;Ř[í§nĹßb˝ź˙.iśgĚ®ý—ro˙w˛[kÚ¬ _ů¸­ľ&ŢŃĹĆe«/pť˝@łŮş358‚˘iîĺ‹«?ţ^›ßÇr…®O~#Ő7Dúňë.Á×±Mŕ‘g6V‚­ň˝7•]¶’z'…ű‡ěęľm¬ž ÷âĺŢËVö}íŽđ Ż ;{ŢŢ'ĚŮ îţÔálZz4Bn}u]ů[Vń#żůCđѱ—_{±ď–kPTntÍ&ŔyÝż˙żŕĂĎŕ'—? ¦=~„đűë˙Č_RLŤť@(ň÷7~ #úĘ.č{çU˝˙ńvRý÷ĹnÍVkÝg?Ś„ŮDGŕg€—ŤżĆq%ĹĐĎ‹Nއ?(Xů×7ŕfv¨†ůđČožŚí9dJ§s[aYý]LÔ[çGš§ §ćż°ÓţźWüôž$ +€2V<ůQ-15UĄˇl¨äᆂŞTĺ|®`#Ź ĄF@˘uĄFXü ‚Ŕ¨LH5ež7Y¶‡vBžą ‚*óĽ†Jô’ž{Yc(¨JCYőٍú\|ΔŹ×!T÷o˙v"yKú|ţóź/©˙7§s_řĂý~×ŕ˙ţšš‘·#ţ˘‹^á¦Ëăü\&ç!8ë„€BZĂżztćoż‡`‡˝uFčŮÍlݱϵhîĎÍŻ†ÖŽťăC ±ź/˛NŐ•7.®l[QŚýÔl†ov˝~ NđMmyočQ‰c=‘—^ű‹ĄęďDČ#¶ë ¦Éd‚Żőčţ@T˛C˝|5TÇ]RýC]˙jëßsÎkĂ™8|ŁŢѧ_ŕh]hýË<¤üşKŐ°ôj¬Í ô|évݬĺ^Č·˙R Ő©f8OÔőŹ_iűýŹqÔîŹôF 5Çýřý›µá—¦éýň Í`}÷§ľŐöŘŹhě”WŢ´­ű_żÉ đśvă·?­…{‹p`0× ×Źâ·¦ýéźsřIgSqÓę‘_Ź@qp/5´úĘa“E›_e㊯dY'Ź•n ®~n‹NSäO]ĹŤ—Źţ~=Ť ?ż §8)uĂÇŽ"˘ĎfĹŮ:ť5TÇ]‰Çł«ůř{ISüď/m8GŁ*nşaP×™ó5#Íŕíż <řN#zV-sź{¦­¦ĘsŢ“ żţčüá=şPťÚŤ…a¸÷ÂsT%dĂ?>ą#DXőž›tĆŇ|C p ţ [˘˙Ľ‚`ĐĂ83Y‚ž•ŞPŘ€{1„<¨~p+»Rő,łŔfäGŐłĚĎĄ Ş\ĽĄ:J• =Ŕ@A@J‡€DëJ‡­x©  ň!•ó±ŻÂz© o *Ůž‘¬jX© ެłĚ,ŮXUŞrľŚ[̡ş9WŢVŚĺÔlöŻů&˘uS+Ł #€ö74ˉÓO¨áuĂĺ<ő ÁfEdI|HTÄMµ¤Ď„"ńýGÝKâÔĐO~ĂĆÎ…łĘŻ˝$5D )•†§Ě‚O<‡lM¶)$X,žUKí-Ť” K–Ř ˙ßCřęčÎŮŇZ]YůW×!‘>{ŰsG®˙šňŞbű˙»/t6ÝńĹ—'Ëűiř®ó϶VUIJGÉ iË(‘†ĽHĂQH@¶Í¨ÓR›ń¤Óˇ [*®»b§ęĆł¤]ĘMţŐěńű^4Vd_ÔŰj±5Ô¬–"ę´Slĺ^şÚG&‘H[v‰¶… …˙ĆďĽö^´ÜZeŚßŮŠŻČ$’ĘńĺČřa¦uNę÷ÇaO}ď¸ BŮęU#÷«ŮłrIĹÍ«uÇźřSY˙儇t8Úóąďđ!ÇŃg^ČŤÖÁąkÉ$¤#ĆŠ\uţ¤şK´Žń# %ý/ě)űĎ«Ę:¦—†á÷”śăMý.«˛úűÎú\]©‚*óU©ĘS3Ŕ(u Ę#‚@éh]é°Ď‚€ 01†Ľ‡Ůa>JT¤AîpÖčće=­šŞ2WV5ĹMX©jX© ެĘŞĺyó €“>ü±tě¨üŞ ľs)µüĐýGśsZÇšűް±vÂÎfE`aŽčk{ŁŻďŐşĚÄË4ĺő—÷ă'dŚ“M(L†cD‰®ľř¸{[B$썅ş/üCŐ_߀¦ďťWşâ}‰#ťÔ?| Ńş‘ß>•‰ĆHPNË=˙MGŔ,×Ŕ÷î&=BoEFëj˙őV˙­ÚÉAśĂ:zóGOÄ(yŃşŃ'ź#‡xW˙ă{ŞţćFîsq´ńÁdwżŁ­ij«&ÇŢ˙©ćźÝRćáI§,ÔÜö\á&vĽű6NE˛jľhţöCđ”? AŐ±hťrý‚Jů–TI¬ö™Ť¸˝>?đ»§koűÉöĆZĆŹ\ű!k]5ŠmáPž˙Öw˘€÷â‘ńŰ0Cë^D)45ą·R°±*řŢ6B ~×âą­ŁBlÜÄß»ŢĘ1 Ü*`/1†[ T‡ůdÔ†ŁP ŕ¨ů—˙gČfA„—N@¤×ČöݸçűBNdňjĆŮżj¦¶ŞŘޱěHš´ĺß0Ľ”z‹ăwuÍČçţ;GëÔuć:D0N‰ÖŤE¸P%Ť,q%Hů[/ÉEšâ±ĘçAŐ7ßőuç왬)ţ§cŽÖŤ>ł©ţKţ©ĂO©±[p§…ę Á¬çÚ*n…ęu;úäXF„›Ů‚¤®łŕ(Š0&’ăOʱ|¦í‘˙ĄÓ‹řáLvőŃđľŻţé\gÎGŃ@řÁ©IüŃ`ĎŞ€ôX>é^¶»2É$Ë"§0 CRˇ* yTń†ĂńiŞUć.UÉ2 l¦ ůdĂQ0ćÇĐ źRŐłA@(­+ŞâS&€!ďazgŘ ďE膣I<@Đ­’4¬gA56TLÍ’]ĺÎäyó xh ¬ĹWŽłořŤsţ,ŽÖáşLŽÖy.^ÎɆ40Ő;|t~ő~á{…Ô˙ÇÇčZXô–ßxGëPşN‹Ö)§śĐËSł`kŞSËáăŚw‘?j‡&µq/®ÂŔm›Ü,FpĚ9‚˝snŹÂy7*Ü;p±ä6r6(ۨ´¬*ş}O1ĺöÔy e$óßc0đ(×éâę†t8˘"¬zĐŞ .śŤ+) Dť;DrÍV ÇŚpO+_fŞŽ"3‰UîXťG&ŐPz‹˙©ÓňkýXn5ŃM‡¦sn++säĐUüďođ‘g(Ƈŕ¦îźv×íĹËqŠ)ş‘¶G¶íD¦-1 .AîűćOg|G ٤ăĐŹďçU!W:ŞŮďşă>| ®đ˝ý-'zÇ%ď…ËĆE.¸`™®`>ŃI8%€o¨”ćäżťr»&e;\›,KŔč­űÄlç=S ĺR(±vË‚ŞÔÉşőKSiD@˘uÓ¦¸I# 2!u°ŞgĘ8ŤŞCŮP‰•¨’±6Ŕ2­“›,čěůsŘ€§SëÓqŻ:śÇŠđf@ “N:Q Á‚Ł7}4÷Ă]‘­;訂bÍ?˙ZĎľÇUóOŘg2H‡ŚîŘŰöűźĐI%T”ëEâ^¶śޤ!+“/@TH‘!?–2ď ‡FRj`Ő_ËSt÷-䦠"pyě=źâpM(Śa!ĺ´¬Ş÷+?ô^ľŇâvMü-ă…ä -mu~Uoť J7_Ů—ŤÖÁVaĐlfWăgYŁ ĹcĄŽ2”sëĘ˙S‡żI+®»lčÎČ3Š»á’žĄüzŁ:‰8Y9}?u#÷ŹĄÁâćY>řÉ €€łoČĎĄÝt$ŠâŚ}_ů_®s}m×üóĚ6ŰĐOcđĂÖ7Ř}ŰânâŞ÷żMő ŮZ­DčröŤtĆŇJŠ€Ę1Ô‰T}©ićĺérµ+Ń-FgĎMu”ˇ˛€ěAĂ&ň‚€ PR$ZWRxĹą LڀƇTk&dÓh@®T‡ů4X uŮl6ZI$ŤFŁńxňŔŔ@ooďŕŕ ”±X,‘H¤R©d6ʉýC Yc—Ů˙ť&>­Htą<OeeeMMŤßď‡ ŤÓét»ÝY$‡ ;dŤopY$‡ /’a9±BëĂ?Dµűѧ7…źŰߢ’śŕ@ÓČŻŁ S›ß‡˘ţ”J‰k"t/×hĂ…gĚ׋ ANÝĹm¶l†˛úŃń0jŘąÎĂ]ů„đKŻă˙śřöŐđ‹'n>ĹůA„Zş?ů_ŞĂˇ?ß;ŻÁŮ(Ä;ţňźŁŻŚÝ?@ΧĽ*śgä;g1×Ŕ÷YűÉż%źôG›äL4®~×SS•,'ŽgoŠo‡_Ü>.š¬~_ľudă`}_»Iˇ©Ţ‚u–]ş’ýä 8YY$Vącő«EŻAąŔ˘ęĘoĽśŁu!DëĆóŁń{Zv©véÄž"ÉŤnßMţ+˛÷K@Nö ĽčÝ©Ůíšýü=|ľ‘Y-<•ęúÄ×h§Ü"¨Wű/¬zßÍÁ?lŔź \Ë‹?AęĘq‰DĺűnVHÔ^‘Ó|Ô‚n‰Éä.uĘ:‡şp/ ŕK`D \+€€†Aęîî ’h(ęŤe ÇCźo axŰív0®ŠŠŠęęęÚÚÚňňrp0y×”5,ĐD qŔ˙>|ŕŔ®®®žž„ç@ Ăá0ŃŕŮë†ój 4 Ţô€ ‚5RđıĄĄĄąąą¬¬ ˝4ľť?ż°géýsB`äÁi°…ż+řŘşşű(Ž)ő~őÇ® 5™j?÷‘ú/ü‚Ű |˙nÄéȉ–~8ţ Ž>ă›+Đ™ŻhÝř¸Ľ˙vĚśďŚnŮaĘŢGĹČ}żďýŇíÔăąđÔ€·Ęűoś%ŚíŘŹ« Č"Ľq+›RF*t‚~毿MJü‘Ś8Ę–$LmUČUl}đű?ř_Š;[QěŚ2|Őł~‰Łť™TŠŞ•đDG·nj3úęžÄ±nNŞ o|…{YÉť€šwČśĄ‹G#JřëŠŇ«Íâ±RG)Oę§Î˝d˝u…˝8•_sqáO(°"]‹ĆbÄ(ć859ĵ¸Ö6Ž˘‰rÁß?‹”pu.łŰÉMG«–Üٶkč§ci°S6˙ě«dÂnß=|ďă\•wą$Ź÷LřĘžEN1DcTĂ4CUŞ«:yxsňOoҨł€ů  şuôčŃ}űö†ő÷÷ă=<ńÜđ=ŹňWLĹMWR´ŽGA€RmćĘĹc•;vBÍdę#řî/tn§|ś~Šůýu-;Ł®¸)…/‚ŔáM\–Ůü­§çłßIö˘ Ę;&{"/˝Ú˙ÍźńR]K´[’3±Xđ±gIÚ°Ąěš‹qĎ.#ĆÝ/­CŻúŤ= ś†€x€˙ŕáµé8 éOŢ ×Źę˝`AÇŽ{ůĺ—·nÝŠŤRP# hö8AŤp;ťX*"n>źŹśó[÷ h‚€aç•NáA Řť%b ŽěíŢ˝–8^‡Ř7]”}Â#·şŐň\"‚€ 0˝ś`ęÓëWĽ ‚€ P<Ř;E.("dÄ®ňń!ć^˙ż˝;·kĽ?ŽD‚HDbhb&ćšçĆ<´¨±†ŰŇ/úôţąŞÚR­ĺ^´†ŢÇXc©ŠŠÔXsHÍ×%H"†„F$řĎůĹëµ÷9'ëśśuÎŮ{÷ăŮŢ˝ö»Öz×gź˝ó[żőľďjo…Tżµ[&qvűí·ßrË-\Ĺ%tŁ=DŤäă׸ĺÔRK-˝ôŇ\n%€c!Ď1Ś‚Sʞb5ËŕY6"eÂDž‰_}őŐ &($aGlĘr”~řáµ×^{ë­·^f™eŞ7č’ú``žuâ.˘4ţßľŕň4C?aÉÖ-¸ţ)[ÇČV’Adf˝>9ďn–zČ ż…·ÝxÚÍwĺs“7iNÄü1ÝÁŞü—o|Ţ~ ’yĚ—´Qnş­íN‡WT`¸âŔCľĆB˛x3žy!Ţ}í“\kgé‘—×˙´y ąąiéÎĹľłoJŮ|p×ôU\x›¦ű!ô]u…Ôn/Ŕů®Ű(Ďxęą×ľůýŠ WşWlĹ[ůËEFm6ń?ĎÍď[JJqŽiľâVůľ –ŰűWÇXE¶ŽnŚÜ€˘ŕů|ű|yXÜÝ‚Ő+zĎ‘}ő€ďĹŽ$^ß:ëüW˝—yűöř­˝YŢwµSŽ›ůé^Ţú›$^ůőź1ţĄ´÷ÉoÁś–[P G ™ĐgŤ0†0ŚSxDCˇĹvĆ»ĽŐá iĹŠ[&vşóÎ;ŻżţzĆ4DĆB.ŽrýrĄ•VŠ0ŚHډDXH?8˛u”©C—Ѷô…ü(ŘcdëXHđÉĐZŽťgĘŻĽň aÁŘłĎ>Ë„'\Ce9éÂqăƱÇQŁF­»îşů¦,+ €Ą ­+•׍+ @[L$­¨A46~üx‚§UW]uŮe—ĺbf,Ź•[Ś´Ňv«ßĺ­üµřn¬›ęäőIŐÝ}÷ÝW]uýݸlKŽlőŐW_ýő×\sM®©ň y1‹Jl]ä{‰…é9ŢJi;^˛®łSĆň¨Ě!ă@ÄL‰ďż˙~ňtôď#`}ŕ¨F¤ČĐŚ¨GQ—ĎLm6Oď^LU—G×Ţšš ĄëPEŞŽ­ńGEϸw?ëłFď3&Ĺçľ«ďß:6ÍU7ó'đ_ľë7\káí7Í—ôßmë/dëzÍÇÝ'ň í*3wČ~w‘§µx“VrKžý˙z3ö°ĂŹyçrňá̸Ç|ý«“~4;[Ç­oßs_őV§?úLßĂç˛Uűú»—Ý”ć}Ł{yůCüďßśpÄ©‘ĺ©Ţu{— >á2s\‹¸Ü!›ü¦š‹ěľMţ[”–ç…âVůZËíý«ă&$Ľf<ý|Úţ"»l•&(L ‹Š|ľÓnĽ#6¸ŔČUű,?,ßřB­=ä¤#&ýř‚|aeyŢy‡žţď ¬˛<ËąIËĐűć÷fŹć¦kjęš7{­ůćrňw*·ŕkzŚáD<?¸RČUĂ#FĐ—ź@Ą»Â0~Äî»ďľK.ą„«´Ť±D†l°ÁČ‘#‡ B>‘ڎ 1ń°d 5VĽ•ęP ôb˘şX‘‹Ż±.őyŕŔąęČÓŃąďÁ$# {ć™g^~ůeÄotłŁfÚťP <łuĺŮşe@DHD„D]Dc/ĽđC'Ž1áT‹-FE±.;hń]–§đ+oDTć9 ůę,aňb·Ţz+˝ŢÖZk­ŁŹ>šč$]äÔŇ6‰äbőŘEjI^Ť2Ë›vÓŇĹsÔŚrl-m! 8đŕZ1W‰—[nąm¶Ů†¤!i»‹/ľřšk®yú駇Nę0?˘X1_R»ed¸ťÂ{׌žvË=ËÝô›ŠéÚ=®ąi9§Ś}$ma‘]¶L弰đöźgë_IʀѲĂ.;ë­s/ež¸Š,™˛EÜu±Ł µ‘o¤ßćëç÷Rč·ÉşŮ´¦ŮÄXeÖÇůZQžwˇĎoĘ˝#b!ą¤eŻ;˙őŁR‘(ě˝ôĐĄóĂVź=]őÖX’opŃýw!ŻOZ*ő1śoŃţKüôx:—ĹşĚâ?óőIM·,hľ­- ©0čŰ{s€“ĎřmÔyű÷W/şďN” ¶Ş'6ÂÝiąĄŔç·řż7¦^?†ńĹtK\ň—˙ÁmŇÍ@h?I·Ź§ĽG·ÇX·ú™+˝á¦ţůŽŹ§Ľ;{ű‹ö_ňçߣ…Ő•[\¸×<[7`÷í*«eťéýË»í˛ŞÜÚś^s7†öţŐ‘#žśeëúWÝ 6˙KČ÷ßô×Hçĺćë=yť¶?_î=ňĆqgÄvH\ćŚňŔCż¶ŕ†kňĹůŕöű«ßí·őFÜ]¤ďĘ_No5m¤×|“ĎĽ4qZ…ľk¬DĺÔ5odEÍô˛ĐŤ†Sm ](đŃKŻN˝ůoŚőćn3˝-şŕ:«’Yž©!]Ř„Rv!D„aäé]žzę)zô“Zb‰%H:= ‹Ăŕź{©ś 4€ ·$ĹX@ŇđÄO$ćˇ%y|EeZEBŤĆGűă™ĺÍ šŇv*°Ľ&ĺ8®´B”Y‹Ë±$+ąăűĺ’íˇ‡JsĚ1gžy&Ý»Â +DcG©lAčtłuťNęP ¨@„k<$qť“iGHŤ=÷Üs˙űßÉU±$ĹsÍ—GŚŐZ…ߥrľ…(˝‘ccňe;ďĽó&›lBŐy7v±5^Rr*ÄFâe^&ř‹—éąbĹ| ”©Ć*<¸zL<:tčĐm·Ý–)–ąÚLź;FdđöĐ<®3Wx-ľüč˙^źzÝňtLÇ^‹í/ŻÍLĂłŇ3™ăöűmşî—g÷J•™ok‰3Ž|ü!śg2ŤÚÇďĽ×{đ nšŮwĄĺ¸ŹjŞ– ¤?Ťë_÷ü#–¤{e¦ äŞF<[z™č‘Äů’(“’~Ç%Ül;Zp:.°Ćůż4´şfĹ’ľ+,[qDCrÜŚń/rS.}†)ŻĎ·fČÉG śńęţ'~řč3Őí˙tćLzÎÎxîĺĄű#ţŢŞ+ÔÖ’KB˘—éáĘĄS:Ůc‰‘®JqK~\Ұ¤ĹwYŢZę§UňBóâ¦0Śu™ ĺä“Of¶¸Í7ßś0ŚVŃߍ ń!V´'•óB4€%„U<ó’ŚBÚi^ż)kî[Ç3)9[Ţ{o=öfŁm\Ce>;®žĆˇyŃźP@N0[×é¤nPÚ!ŃOľ×QŽÁ,ÂDŠLBȸĘ*«đ2&łŁ~DZ¬ˇRľn”[«P±Ż´z*¤m2/ áťÚn¸á:úĹÁaÉ$±Ń.Ąrą•ұVS|÷Y Ł ©Bjdľ/öĹ[ĦÜy–4%3sČLŹÂ3•In·ÝvlśiSŘýţXNţ޵h#DHŘĄŤ×JăšţŔăď]{#^¶Y+Í®ăvľsńuü7óµ7ůRĹaößc[ç ¬ăOĽŰŤţJŻěúnŤÂÍf7¦wŻţ{VŤäíö†Ú€Ćtęů-¦ę’ #¦ąý4÷'IKj®ŔżČńH-'E’Žh‡Ný\:eř'Qů˛¸tJĺp¨O9­•Ú®ÖŞ.äŰd|ű˝ňĘ+Ď>űl"C@ôa)<’w\ÝLQVÄ`ńĚ´<RóŇNcIäţbżĚUG†Ž~s2ÁWFËdÁn¸!ó˘Ś=š­¶1g yLVˇ´Đl]˛µ €ť.`¶®ÓIÝ  ¨™b5"' ŚČ`ć82"EfůeörvgĽ•ŻEäT˝ł9V]ÄŠ©2…T&7|řpF=pW˘U@úŚžn¤ÉčăF|FĚĘ–w†Ť©”)0|•ďŇ6˛~lŠLÜŚ3â™8ʎ—“ł0‰rÜqڏ,áň/çŘ IwŮe˘@ ŚCa×´–wi ŤŹö3.A"d«ćrÉŕţ˝űôšwňÔYKśŮĹűNž:óĹ7gĚü¸ĺ Ľ]űjńzímäéńÚ.·˛+3éŰĚWßH{á–—ľ˝OziAÎőńGĎýoľYf',Ř 4_˲ĺ 0~żiŢĎ9=¸é6˝sŞŐCßOaOŢľ1m¸ĂaGä§øŠIl“ŻŐ±0¬)Ţú,Ó—R™ö˙ěąçž[mµ×MI˘ńŕŽ[TDVZ„X<" ٵ©Ü…}†VqD„X) ‹HŚ%„^äă" #c áGÄ69R.2Ń a ÉÖŃ<"7æh!9Äý÷ßźvćz–P@N0[׉nJÚ-@čĂ#Vă˘hţ’‹$W5ąČÉđO#0ĺ0×{‰ÉRµ´nĹŽSřXQ!­HýôV*ä ‰íř¸¶LÄĆeU"3Ć>pŃ•@ŤđŽ´ÝÜxć%–GđGµŘEl3žiLjO\ř%ФŮ=‡h8Ž”d=uK.âKV  4‰ˇq¤t¬ăr. ÍŠď”—g0l…%x÷Y‹ö›ýoÄű~|Ć5Ż?đÜg˝`Úą›¦Ż·0âőÖĘ&¶s;VďîA1äÔ#ç_˛}Ă9» aő·‹odQ‡Yä¸Ůńŕc*RÓ: t™ŔÔn/˛ŻOg|4íŻ÷©Ů3ëäAKEĆK&â WEŔøÔSůIT8–<Ω>´öDµĽBZR]H›Ą@ĚC DŠPŹ – Axýő×y&żĆ„!´ŠŔŚt‰¶·Ţz‹0ŚŐX‘-óŔ)vͱD!Â*^‰1h¸‹1XôÚ‹Ü!—‡ąěʦ¨Ď#ŇslQÚFúr÷ÝwçÝŘ˛Ď ( @§ ­ëtR7¨€ípŠ‹™Ś{ĺş(?Ó×Ř )3’t1" ĽĚ!Bx´ě˛Ë˛Ľ9ű|DFľWŢŠ—ŐQT,IňB*§MĹb2Ś„eŇĺx‹Žxf!KxD}žăÁr ńĚ»±nZ^5Ň*TfkÍ[ú¦RÍ(P‹-¶ ó˝đ*ŢęÄ—¤ęĆż6ť˙־З‡.đăýľtČů/˝6ĺŁâ»ŕpšFĽrŹ×żŢŰŢŻS~weŻEK<şęŁ⤥ߞ2˙C/Nşőˇęwë{ 7 č·ĹóĚ7ď|ýě5pŔG/ż6é§łoĄZßŢőG÷鬏ŮuëŘoŻ 7®ó'źöŰjæiűűöéµđB˝8ĺ7WvýÇá{ @Ďů)žvÓ]}¦?6~ž>ëö¸jüKMřAž‹źŻČR±mĺ™ř‡…äłë@¨Ć P:ţ­łEÖŞ>ŞXťĺŐďĆ’T!/¤rÚ`,!łĆ„Í·XNâ,⥾ZŚť¨ĆU˘ĺx™vA!ryńśÂ065«ĺäŹ=öX;Ö化P ÓĚÖu:©T@ö < 1+·$ăyÁĄTb¦<Ŕ"(L#2¸˙!#ZéőFµ§ŞwYF…×Rą˘ŔËÉĹ[ů3;ŠÄuňťFxGÍŠ6§öÇfÓ*© ±„—iłi•(ä{Oeâfn|qřᇯąćšia…‡ž˙¤Ë^%Xťż÷Ľç˛ĚŞĂÚkăAçÜôfÁ}q#Ĺ׏ůI‡o1őę[ ŞÍ?Ďĺ”SP/]¬Í+XV@:QŔl]'bş)č ńA©(¦Ga:a&~óÍ7™˘Žž2źH~)•PŤ’^xŚČ¸űFęŠÎw)˛©Ôę|Vţn”ó%¬Xń2mŞ'Čiî»ďľ'ź|2ă/ş =“ßkšD9˙šŃ4dŕÂíű'˙…ľ2’˙†ţčŘöÎ[·Ř·żŃgůaźíż+ţ?á±Ç&Śß•U†ŚŮűs ( €U=ç§Ycß.6@{Á‘«ĚóôýU‡RK "ř!şŕN¬ÄWL¨FňŽ—iNaFĹrĂĆ:PŤđ,ĄňrĹçoĄ /+*÷—„ax©S÷#µ (ĐCfß§‡´Ćf( @# «ĹŰŤ10–{ž’™úÇ?ţÁmȸŰ2q‘–:DŠ<¸ËěuQíá‡;v,Ő¨Ăăł-}ŢĎ®– iIkĺTˇç⸺¦=n9¸_ߦ#xŢk“¦á0Ďżţá\îşĎ2K ţ÷ż|ďeĂ.˙E˙=·›wÁ¦9Ş}( € (ĐÓúŽ>`ďćŘŞA‡ďĂĚs¬VCČŮqiŮë¶ÜrKF<<ţřăt ›8q"qńB(B™jÜŹ‚9…Sµ{Ľ[$ ‹í‹aX ýyŘTčJűÖuĄ¶űR@JęôSm\Ýe¨Ĺ¦›núÚkŻŃÉîÎ;ďäb/č SĽČćbDĆ„ lĺoűgKľ/¶ś‡€TN cyz7–W6®±_ŹXzÁ‹Źţň o|¸ü’ ,ŢţŹf}rőß§t ßFČ^;şĂ7Łč”ö¸‘ąřŕn¸áÎßqüë_˙ú+ŻĽ2uęÔŘ,s!ńµťű]¸…âtuŃ?¸ř„ąP)óŹÂn»í˙v—´f 9íč/ĽňáŁĎ´ćĐoŰŻ,věA­˝[+ËůéNáP´™—|YHŐ1â•á „a ŚeÄ+żç ŚŤĘéyŕŔm´ÝëbÎ;zذ±.›˘NTË)ba,OďVĽĚë[V@VŔl]Ă~ô¸Ý/[‹í vd9#̉ęîĘ|vÄ‚$ěËňě&)ÚŁi;&ĽcěĆ«ŻľJ5âEĆŐFµw‘ŢJŞĺĺ×jś…ăţď_«|iÁŤF0yö<ŻLžńłë_źÍd×)_!{Ý÷®=kÂÄNٲéb›nşéé§źf§ŚŤb$ýaůÎF¸qžŮş?:ˇĽűîě™éůŁłp‹Ő:°P˙„Ćü÷̨@6™%üS µÓ[ŁŔ| ôvů/'ýč‚÷®ü w$ÍëĎ;˙üżµ×ŕăfz»|ym•‰yZ {b9QłŽp7 FĹbMš4‰™‚ů˝"ľŠŚăŤk¨Ěa´wÄ`\- ÁG5îĆŹkŰgĹôV*ä kKŇÖ* €e­+CŐm* @;ň(-­FH9rvڇ]sÍ5IŇqţ˙裏’¶# $.dĹ|]‚Bn0{1%7ČŮ1Ů !&ąĽŘL«ÄŠiőTH °pĆ5ŻO›ţńâćź2mć´é_8Kétś¦˛Ç}“ Ó|‚śÝ´[îéô]¸ÁňţůĎ>ů䓱ým·Ý¶ĽŐŮ–ąŁâC=uŘa‡Ń/¸Î°'#őčŁ=zôhĂ3rčÔfjE`ľľ}–8ý¸A‡}męÍűđÉg?yoZŻA‹.¸ÎŞ‹ě˛ŐüKŐÉ ÄSh”(†EtD§éDřŠt†•Q‡G¬NÎŽK5tľ# ă&\żánĚjB–ś+¬) ‹]¤=ĆöY…ô2o‰eP aĚÖ5ěGď+Đ=viÇ”‰áx™ÇgQ!_—m9ĹZýőą®KjŕľűîăŇ.ç]1×/•Ł>‰9Ş­·Ţzt¬7n3ŮQŤQ-ßuZ%VLmH/S#ąđÁŚO>4ŁËř€ÚhmţzÚ1óônúĂđŃó8»ĺ–[˘ťś¤Ń™˘ç·Ů6”Ŕ†nČ`ŘŹš·ß~ű^{íŐP‡ďÁvŠ@ź/|Ěť˛©nßH Q&pâ9ϦE…<˘ĚB†“Ź9’°Š0ěÁäš(ąąA嫳†ĘF5vLxÇż Dk10–cŹŤS`›<˘&±$ĆźP@¨áÎŰ ţÉyř Ô¨‰ł~ýúEă™ …Ţ%”#g S¸–Gl”  ň–\rIfQáćÜP‚YT؇~‚?ęDjŹ.uTŁ«Ů=R{ożývÔÉ·ÉîŇËT64řóĚ™źß‚Ł[(!Kw†nٵ;mŻŔO<7aĹÍ6۬ŤŐ‹Ëř·±ťę·fÍj÷ÝŠ 6¦˝-ioýęc©^ÂĎÚ;ďĽ3sćĚę·Úµ¤ŕ!łÍvÍăŃ®–PąHcŘl‘ji×Í iˇ%ôÎćNTŁŰőäÉ“Ó*h@˛i<"(˘=|gĚQ0 ‹ŃĺĚRÇŐÓiÓ¦‘ŚŁcőűďżĎÖb|gă›HŹ0ŚŻ?_Dk|ďH ˛zĹ—:˝L…üD}:ß_úÉňsAÍ4t‘sÂk®ą&V¤Ďě#n˝őV¦I"e˙ă˙řţűďgŕUĽËO ËéÂNą<@ĺuÖY‡.!ü0§7Áŕţ†Ětɶß~{~ňĆi ý´®ľúęÔzŇi‹=ŇrvÇĎ7Ilcd+­Šabiż´ŠîŔĚŞĆ•†XȦƌĂśk\r É# ćrcŤ)¤çXčD>kZ{ä^" ‹k![l±ŚĽŰ)ţLwź'ůě‹ <üÍ0žnµŐVK˙:pŻp>\Ţĺü×]w%eLĆaĘ”)T GŔß!÷ ĎgK¤§MĄ>żó¸ÝD…Ď 4 ˇßY0~dř%Ľč˘‹řBŤ5ŠYG‰Łâ×&±¤)-! Ł?z¤íËdv†ńˀ٥ř&RŕëÉŤ)řMă>`1ŹpÚZT‹—-.L»ł € 4˛€ŮşFţô=vşA€3¨#Ź<’ó%άŘ=q!çŘ\›Ýa‡]hŔ€‚)tKçfyCy—:śsţĆąkLfÇŤ˙8ńŽyüÇŔ ,‰…ův(§…©PQˇ1_Nzo˙5ć±{Ôí ×*÷~‰UâLŻzőË/żśj±śt_X¤uČpjËYBň‹SÇ´: 8¶Ě߇C=”| ońsÁ¬IQ‡$÷€Ž»ÄNéle2nĽŚ2™5R9$töŰo?’}ô‰ĺ¤yb;üđĂ9“Ś…[ÂŢÓľ8Ý%­öŻý+¶@“8}ĺ±çž{¦.]ńVzć¸G–^Rܧµ–Ęy!Ąęň…Ź<ňHڂʅůË_ňT]^“ĺ×]w]ľ$ĘtňĘSuRŞ.-g¨×Ĺ_śRui9‰łÇ{,˝ě@K¸đRui;nľůfrŽů’‚e¶FSIQµXźä#)-Ňy-ľ[˝°$˙ŠT]Ĺ~;ćOŤGŦŇKţfČĄ¦—©§ęŇBň°äěŇKţE ?QĽ¬ČîĄ:hsżúŐŻ6Ůd“”Ńćg‡®Ęgťu_~¸ †aÄW¤ç’d:Ův:Ř’řă+6Ç0 ęĚŞ †aŤówč‘* ŔĚÖÍ‘Č (ĐÉś8íľűîÄ…?üáÓ7â3.Ě^xá…\pÁřńă©C´Á\zÎŰ ąlK5î)Á„Y$ 5Fw.sfÎŇŠ©P˝–Ä»ń弎ehC Ďž0üłµšô™Ą—Ý.Ň 59'$ńD|ą•X—P[mµŐČÉdÚť×ÚµŤ_ć/çűžęGIł)ú‰äË©ĚhSăs«Đ´śťQîpKŘ,ç˝ôüâÓf9:úyĄ—y)c~GŽí¶ŰŽ%±:·DHi>Ž Šý÷ß˙«_ýjęȦҝ=ňͶV.Őźł}ú/Wďşţé`kÜř{ď˝÷ćŽŃŮ0¶ßZŽ’®—;í´Cůňʵ˘rţ÷™˙ÝV·Ü% Ô˝?,\7ýÓźţôÓźţ”Š_°8dĆÝ_zéĄçťwéxÂ!–§đ)Ź”˘r,! ck|ů d:?×ü¶s!‡ -,ŻXť—ąmÚf*đnEťĽľeP Ń Űhź¸Ç«@O`hŇ©§žĘŘÓO?ť3OşÔŃ2®ÓŇ?ޱiqFM×9ÁşĄ5‰ăH"Čă$Ť)®ËôXôΠg/Y=‚Ĺṯ…X%­ž ůöÓ*P 5Y,Ţm1eĂ[¤ŇŽ:ę(CQf8*ý¢>=ăř¦“źbĐb,á™qXĚ_NHzËĆr~¦NťZ‘wă-¶LB‡)/ó$`¬Br¨”™®î—żüe,䙄#î)pť€ţĽ±<őŚëpKvŢyçh6LÎ>űěÔťŤ,ä°aĂŇŢS1ű<ČĄ‰Ţň)ćąă—0ďuČ… föŚküë_˙:Ęt(ăňÇž¶ŮZˇ<¦ľâ¨IVďşţxJ˘ń·Dî2¦˝ç0É Ä.ňż·´Sţ0;ě0÷±„‰Ó̆1ŮBŞĆ[©ÜâvŇ»hb¤N8_ÝsÎ9çúëŻO]Źů&ň Ă/WHĂĹ…0ÉäŠ0ŚÄ=IvŇât|&# c~~ ĂäĎÉĂT@2ĚÖ•ˇę6P ¨ŔlŔ07FźŃĎ.ŤGcr+¦lçŇ.]`čĘ™'r)FŚ1˝Ś=ń’ĺś—r¶Ěy/Ýë8ăĄŔč'&)ç]ÔŚç´JEˇ˘BĽëł ´(Ŕ·‰$Zz‹nq©śčŕ©:2hťŰ)‰ ‘Oá\‘o:KčPF(&Ş#;ĂÉ^ľ‘ü››–|đÁyÇ«´śÉľxI*‡.iщŹ%ś=Ćň/ĘéÝ·„ś`lŠ®(l9eëâ"DĽUđ™—(˘2?}ü Ą9ď%ŁÇŚx±„>,E˛u%ů3•ÝýRŰ* đ'ĺzÚi§Ĺv–Ž~v0ň§’fĘ«ŘEzIwžHŐ±$©ŔĎłuůßmÚŽS`íµ×ćFpŔĎţs:öĆďżĆÜŻ!Iyş÷ryŁ`ĆŻŚ0Ś›WĐa™_]b3~Ă«ĆÓ’Tŕ#ČËŤů‰xÔ ( @0[—(,( @÷Đ‚9żéL÷Űßţ–ž#ܧŚv®1Ś‰ç™«!N ŁZ‘)’K×uŁÝ,Ź·¸\LhČ­Ęč·Â -Rq–&g‰ŤGÍ(ÇsĹĺßŘ¦Ď (ĐšťăčsďňőĚoÁ™ŻÂ÷1I~-eë"«ĹWŹ/ű_˙úWzd¤DUľJ‹e˛đ­Ąę¨ź§)§|kĹÖň„´ý޵„_›|ŚjJM¦Í¶«ž….ŤP‹ŤĐo%eëňšmě˘$˙4 \‹»î?ËT?üp»úľĺmŕçŮ:nBŇbł]¨@c đN7:şĘ2c&óŮ>EŚÄě™7Ţx#WRAŽźÍ‚a—I¸ËO=ÝôČú†qĄ!˙ťdű± ŔóB*7ćáQ+ €fë*@|©€Ý#°ř⋟tŇI űúŮĎ~Fo»›FÜĆ <)Ľ‘#G2Ç I7–¤óůÖ˘:2Ä”\Îe`,g¶ čŕtš3ş͑֊BzŮ=‡Ýĺ{}÷záö_”·[¶_ŢĆÝrʍ‹ššZńV~ÂuHťpŠX‘@IŮů´ťŠBžŞx«˝/SŢżc-ÉçJkﮫëç3ôUĐQązIő*–T¬ŇYţmäĹ*0Ç—É˙ŽćÇëWT(čź;¤=VlĘ— ĚĄ@©˙–ýĎ+ÝâŽ9殏2{@~OjfŽ;Ńť–4=_ź"ażáÇçjĄI˙Ń;Ź,.𤸫ş0—ţ®®€ Ô™€Ůş:ű@=jX€Ž«Żľ:çíűî»/9»4kýb|đAfŁŰvŰm™ĆůžňŐśŇp„žŚĽcŞc’w©Pś§Ą:iu–Ä´¤Î hpDÓŢÇeZě«ě˝¸ýî łoČ}]řŠUt‹ćqžĆ$•©©ů<ů.łü¦›nJ©:ëŚýäŽ1ś×q~XqŁ€´ e$\:Ö’ĽUs_Χ竾-lľ¤ŕ·¬$űmÎ7$IDATNĹçţ`ó-0bŽd]ZÂżt©fD-â/ąä’´ĽĂ…ü¦Ă-ε×á-»˘tŮż°żřţPčÇÍľöŮg°1cĆÄ/<é9&'ˇŁÜ–[nÉŔX.˛¤Ť)ޢŁÔąá }ëZ ĂhgÚ…Tîpű]Q¨'łuőôiz, Ôç˙;î¸#Yą+ŻĽ’Ü6ŽŠůŹo¸á†‡z«»tµŁgMŢ ĄĹ#ʰŹ> ÍŕěyëbaZб$Ď⵸µZ_řťď|‡CHÓH—w8śKÄľĘŰ…[î! ,Ms´Ń6lZH÷XľÎń’Áł$eŇ[qKč40–ĺßúÖ·b!ßĘtoTżěB7¶$~…8@z§Ădú6fHąNňMé÷°˘fZĄşP+ţ9>cî¸H 7—¬>¨,I÷a]’ÂŘ‚«(І@×ü Űe˙Ľ2]w™ čâ¶9Ś„Ťëťü1eó“pé”wÉz Ăřq#`ă™G¶Q Bz· mßR@DŔl]|Ц5&@řío{—]vůÝď~wţůçGF€Ž»ŚŃĎběر Ö`rń|DFkGXů±$Ćs¬:ßµ¶ťZ_>xđŕSN9ĄÖŹÂö÷(˛)[ÇÍaZĚÖŃÉČ6ÜpC:É2Č=µź!™Ś“âežFáll_FşYŃ_/U.µşéucKR§9®.0ä?Ý+–ńhô5&aG…?ýéOi>Î~ÓťÚĆ©˙źîă řëbŇ«t€ů/vZX°ŔßgŞißşDaˇłęď_X~‹öŰo?®Źt‘łăBK|ąŽrůĺ—ßwß}\XĄßWXÓŔŘÖ0«żą,‰…ń+6/›ťŃkmS.W@JŔl]C}ܬµ$Ŕ)4ç¨?řÁHĚťqĆ·ÜrKś©r&Ď]™H…SpGę´=0¶µcN1b*P3/·¶˘ËP H·˝ôŇKQfÔ*÷@hQć¶ćGĹ[Ěh7¦ 7Yępw饗r[OrUů¸EVŚŃX[謗)[×Ĺ-ahX:ú°p#ě=öŘ 79f$ZĽĹms˙ëżţ+UK~ú Î×Ć*5áźß,‚ #ă ůÁĎ;Üq sL $źę˙d¤…ŚËKe (ІcóO8á„QŁFĹśÂôŹŽĘüJ_xá…ë­··§ŕĘAŰc[Ű~ЏRšyąµ]®€ 4Ŕ| rś¦ Ô¨3a1ŕ‚›Ă20–B: :_ĐaçÜsĎ%‹Ç‰=ç˝é”;Ői­@,á`*P3/·¶˘ËP  cEz™ŇviI¦ßlłÍ˘ŐĄšŚÔf°gEŞŽwóTKŞÜé….nÉJ+­”‹S§NŤŽŠä+·ŢzëôVua•UVÉ «+ĚqIô'ó›¨ňkĚźS¤ęňÉÉęÎqä]kÇÎü}ńÝÍÖµ¦ärZ`I.Ą\ýőĚ[—ć¬äËx˙ý÷źwŢy,ççË0¬E:* €s#`¶nnô\WşH€(^'ŁGŹf8ĆĘ+ŻťJ8Ł{ë­·®˝öZ2(qsĹv´›ŐŁőyž.-ě˘s7 Ô˛ťŃRş” á€ŇŤGůJîż˙ţä†ŇQ˛„îc‡~8I“XH'ŮM7Ý4OĘĐçŽáW;ě°CZ‹Áď©Ü)…Ľ_[Ú`ń–pľš78mBľĺäWHerFoĽq^?˝Ĺ´P|pőČbťíĽóÎx`:aN«ä…´ßÎőO›Í÷Ő±rőQ3=*y;OźťăŽ;Ž·b/d3cćľÖZ‚kEĺĽăßyçťXNޡµĎ®cÇâZ 4‚ß,şŃÝ|óÍżůÍo;8zFsŕ|ąXČmdďĽóNĆł§/`“q†᲎ 4 ŔĽé‡˛ŢCV Tćĺ异N„5Ąî¨ˇ6ÎOÖóĎ?Ďř‹˙ůź˙aŚXÇą+·et·3ŁÜÚ$tôÜaľ¦ĐâQ1p#~ _|ńĹłÎ:‹.L–ÇtQAĆ[QF›BÚ~ZKňš©<ÇURÍŠBl“ÓÚ'žx‚V‘°8ńÄO>ůäęsř†ú(é`ýÂv –.® ´ŚuąGDLEW˝)Îâ¸, :޵8„“S>î¨Ŕ0+*l×)_őîćfI·„ńžÜ—ź22ML!ź2S?ä&NśČooÁÂÜXmçéZ;đZńçg™!Ő/ąţ–RF µă*¸Ľŕ_iÁ­Y­TŠKĺ픍ÓŮ™Éěţđ‡?äÝ]ůŃf6aÂ0.©·¤0©bŹTăbl°Ýô*¦1áŹL:WaO:é$~ ¶SX¶SQŕeŰ S…T--É y9ŐŚB­˘©„…´ś«,ô(ĚoD͆}řmmŘŹŢď2ç­ë2jw¤€ť @śÇđ±3Ď<“®7 ˝ë®»čRGTÇăŃGe>»Í7ßśî*tĐ fkÁb´#â3Ę©PQî„ćş ę]€Ä÷Ýwßw„xŕZËÖ1a9—.ÚŔ EÎŁŤ ]öV·„ fk'~ü j~Ěý±×Š?ąHn˛Ácî9m¸™xĽ6lXk˘©ľh[`™e–aNaşÚ‘˝â.±\e!#”zúé§ąäI ĆDĚ)L’Ë0¬mIßU@Úp$lŰ>ľ«€=Q€3:FŠq·D:Ůq…–Ţ(śÖŇPîúGŕČőOćkg•Ö†;Sň ~*T”{â1Ű&z¤˝źŇ tśŞŃ+ŞG6ÓF5®Ŕ“O>IÉ8~ň Ť á‘+Đ©L@;:ĐKŽ™ " cNa†Ä†1§0˙´†ŃHä†uęgâĆP ŢĚÖŐŰ'ęń(Đ8 c°ęŤ7ŢČcé.!ů1pěšk®!‘÷ř㏶,ć »(GěĎ­­Ő•ĽÄľÜľŤ)ŕ}Í»ësçgŤ‹„Ýe—]FÔEř-ˇËwĄ¤{Úk¬Aş-Ĺj\8;v,ł«EMś)2Žj Ä Ě)±oń L$s!#›"GČ…_ ‹éw•B”ÓľxÉĚ´ŠL"»#.$(äÁʤÉŮńĚ»l=˛Mn»yŔlłÍ6ěş»Të~ż~aëţ#öP ç řSÜó?Ł"-|ăŤ7ţřÇ?ţ÷˙7!V ĂVZi%v< "4b!QaŘ˝÷ŢË‚Ř8WU—_~yޢ{X„aĽĹ¨Űć(laⱥ—^šŚ±·D_ôď¦2kń’B„^Ôo Â>H‘Ę´‡‘­c4€‹Ł$ąJĘ˝hh*e°x°"1BG6K]†Ňzčˇ1IkF¨ă·µ>eʱ{ě[×˝ţî]:_€kąĺ–;ýôÓwß}w®îŇ±ŽŚhŹřŚ›2Öuüřń\§%d$ţ{ŕ9Kí`¶ňtGq/čÔĆđ‡4?‘J ÇUbb8*çŮ·;|qĄ7=S .dĐ.×Zk-ňt Ĺ1b„yş »˘ ( € tĄYłď˙ű;í´ÓąçžKW;Â'Â0â%ća;:¬mşé¦«­¶1ĎĂ?|Űm·‘5‹ćq‘’DŢwżű]ćÂc AÚ#Ź<ÂőTVä'×2ąşIrŤMŃ /ps†4ć.”Ň*Â0ĆRp‰—pqťuÖ!˝hž®+˙~Ü— „€Ů:˙P >¸ĘtuLZÄČ®îŐä‘e#d$4dĆ–räŚÔ gGřŚ‹´;ďĽó‘GÉ€‹@a–}öه+®\ď}íµ×/‰ą$K÷7\ f9ů»Č¶+^ڬ„Ů)A!W‰Łk{¤ÍŚŘ%ZeĐn-Rź’GĄ€ ( €u*@<óë_˙šK§Ě)LŢŤ‹ „a]ÜŹhŠ\—' Ď" #."ćab¸ăŹ?ž\^ěŮü Ö"UÇl!\s%KťŕŢyç"1nmDhÇFÚ†‘ˇ#PdVb0".‚±…Zgşé‘F¤mŚlŕB)ďÖé‡ăa) @ ­«É&* @‡łč%·ŐV[]qĹ^x!C*čaG°HŠíńǏͱ1ŤńQGEHěďŽwɦń ż^ ©@ĐÉŐ]ÂDúÜ‘­#H¤Č–ă‘¶±c\¶e!Á(.óL\1"3°PN«XP@P@ę@€Ś×A7ß|ó«ŻľšŰP0R!.ťňĚ„Âq€ÄHŚl`<yşÝvŰ­ú:%`y 6Ś>nÉ„ÎzôłăA"ŹŚGx„a„^}Q9 ě‚2ĎÍQXÓL#÷¸PJŞŽÄĎiËP@"`¶®‡|6CĘ 8cDĆqÇÇŐ]n@ńç?˙™JY#Îă-b5ćFaV¸C9„p­x#X‘Ŕ‘GńU¬©€ ( € 4š×&ą?Sż]zéĄÜż‹ľudÖĂp ťÇ t\X=účŁŰ5Ú”Ś3óh4LŹWGŔl]ă|Ö© -ŔETnęzĘ)§vŘaĚFwÇwpÓU.ŐŇín‡v a×Đ:Ľ ( € (P¦É¸ď}ď{|0’Ś=š©HčF·ĺ–[2cÉĘ+Ż\ćžÝ¶ (P“fëjňcłŃ (Đ1rvÜ˝Ç׾öµ|pDǶćZ ( € ( €ĹýcÇć‡aXq4k* @c ­kĚĎÝŁV@¦éKTP@P@čzð®7wŹ (P[óŐVsm­ ( € ( € ( € ( €u,`¶®Ž?\MP@P@P@P ĆĚÖŐŘfsP@P@P@P@ęXŔl]¸š ( € ( € ( € ( @Ť ­«±Ěć* € ( € ( € ( € Ô±€Ůş:ţp=4P@P@P@P@0[WcÍU@P@P@P@¨cłuuüázh ( € ( € ( € ( €5&`¶®Ć>0›«€ ( € ( € ( € (PÇfëęřĂőĐP@P@P@P@jLŔl]Ť}`6WP@P@P@P ŽĚÖŐń‡ëˇ) € ( € ( € ( € ԀٺűŔl® ( € ( € ( € ( @ ­«ă×CS@P@P@P@¨1łu5öŮ\P@P@P@P@:0[WÇ®‡¦€ ( € ( € ( € (Pcfëjěłą ( € ( € ( € ( €u,`¶®Ž?\MP@P@P@P ĆĚÖŐŘfsP@P@P@P@ęXŔl]¸š ( € ( € ( € ( @Ť ­«±Ěć* € ( € ( € ( € Ô±€Ůş:ţp=4P@P@P@P@0[WcÍU@P@P@P@¨cłuuüázh ( € ( € ( € ( €5&`¶®Ć>0›«€ ( € ( € ( € (PÇfëęřĂőĐP@P@P@P@jLŔl]Ť}`6WP@P@P@P ŽĚÖŐń‡ëˇ) € ( € ( € ( € ԀٺűŔl® ( € ( € ( € ( @ ­«ă×CS@P@P@P@¨1łu5öŮ\P@P@P@P@:0[WÇ®‡¦€ ( € ( € ( € (Pcfëjěłą ( € ( € ( € ( €u,`¶®Ž?\MP@P@P@P Ćz×X{m®µ&0qâÄÇ{¬ÖZm{h8ľŞ w̰ (Đ#ŚťzäÇbŁř‚€Ó8|ˇ@ fëJ@u“ 4 ôîÝôýz»ů!‰ Ô„@|mk˘©6R¨?c§úűL=˘ú0pŞďĎףë^łuÝëďŢëY`ĹWäđfÍšUĎé±)PGDśńµ­ŁcňPP@Z0vŞĄO˶6Ľ€SĂ˙ P®ŔĽź~úią{pë ( € ( € ( € ( € (PLŔ»Ls˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŔl]1'k) € ( € ( € ( € (Pľ€ŮşňŤÝ ( € ( € ( € ( €ĹĚÖs˛– ( € ( € ( € ( €ĺ ­+ßŘ=( € ( € ( € ( € (PLŕ˙•<ęłő˘fIEND®B`‚barman-2.10/doc/barman-cloud-backup.1.md0000644000015500001620000000600613571162460016112 0ustar 00000000000000% BARMAN-CLOUD-BACKUP(1) Barman User manuals | Version 2.10 % 2ndQuadrant % December 5, 2019 # NAME barman-cloud-backup - Backup a PostgreSQL instance and stores it in the Cloud # SYNOPSIS barman-cloud-backup [*OPTIONS*] *DESTINATION_URL* *SERVER_NAME* # DESCRIPTION This script can be used to perform a backup of a local PostgreSQL instance and ship the resulting tarball(s) to the Cloud. It requires read access to PGDATA and tablespaces (normally run as `postgres` user). Currently only AWS S3 is supported. This script and Barman are administration tools for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. # POSITIONAL ARGUMENTS DESTINATION_URL : URL of the cloud destination, such as a bucket in AWS S3. For example: `s3://BUCKET_NAME/path/to/folder` (where `BUCKET_NAME` is the bucket you have created in AWS). SERVER_NAME : the name of the server as configured in Barman. # OPTIONS -h, --help : show a help message and exit -V, --version : show program's version number and exit -v, --verbose : increase output verbosity (e.g., -vv is more than -v) -q, --quiet : decrease output verbosity (e.g., -qq is less than -q) -t, --test : test connectivity to the cloud destination and exit -P, --profile : profile name (e.g. INI section in AWS credentials file) -z, --gzip : gzip-compress the tar files when uploading to the cloud -j, --bzip2 : bzip2-compress the tar files when uploading to the cloud -e, --encrypt : enable server-side encryption for the transfer. Allowed values: 'AES256'|'aws:kms'. -h, --host : host or Unix socket for PostgreSQL connection (default: libpq settings) -p, --port : port for PostgreSQL connection (default: libpq settings) -U, --user : user name for PostgreSQL connection (default: libpq settings) --immediate-checkpoint : forces the initial checkpoint to be done as quickly as possible -J JOBS, --jobs JOBS : number of subprocesses to upload data to S3 (default: 2) # REFERENCES For Boto: * https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html For AWS: * http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html * http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html. For libpq settings information: * https://www.postgresql.org/docs/current/libpq-envars.html # DEPENDENCIES * boto3 # EXIT STATUS 0 : Success Not zero : Failure # BUGS Barman has been extensively tested, and is currently being used in several production environments. However, we cannot exclude the presence of bugs. Any bug can be reported via the Github issue tracker. # RESOURCES * Homepage: * Documentation: * Professional support: # COPYING Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. Copyright (C) 2011-2019 2ndQuadrant Ltd - . barman-2.10/doc/barman.1.d/0000755000015500001620000000000013571162463013444 5ustar 00000000000000barman-2.10/doc/barman.1.d/85-bugs.md0000644000015500001620000000053313571162460015156 0ustar 00000000000000# BUGS Barman has been extensively tested, and is currently being used in several production environments. However, we cannot exclude the presence of bugs. Any bug can be reported via the Sourceforge bug tracker. Along the bug submission, users can provide developers with diagnostics information obtained through the `barman diagnose` command. barman-2.10/doc/barman.1.d/50-list-server.md0000644000015500001620000000011113571162460016455 0ustar 00000000000000list-server : Show all the configured servers, and their descriptions. barman-2.10/doc/barman.1.d/50-diagnose.md0000644000015500001620000000041613571162460015777 0ustar 00000000000000diagnose : Collect diagnostic information about the server where barman is installed and all the configured servers, including: global configuration, SSH version, Python version, `rsync` version, as well as current configuration and status of all servers. barman-2.10/doc/barman.1.d/50-check-backup.md0000644000015500001620000000051513571162460016526 0ustar 00000000000000check-backup *SERVER_NAME* *BACKUP_ID* : Make sure that all the required WAL files to check the consistency of a physical backup (that is, from the beginning to the end of the full backup) are correctly archived. This command is automatically invoked by the `cron` command and at the end of every backup operation. barman-2.10/doc/barman.1.d/00-header.md0000644000015500001620000000016613571162460015433 0ustar 00000000000000% BARMAN(1) Barman User manuals | Version 2.10 % 2ndQuadrant Limited % December 5, 2019 barman-2.10/doc/barman.1.d/50-rebuild-xlogdb.md0000644000015500001620000000044713571162460017115 0ustar 00000000000000rebuild-xlogdb *SERVER_NAME* : Perform a rebuild of the WAL file metadata for `SERVER_NAME` (or every server, using the `all` shortcut) guessing it from the disk content. The metadata of the WAL archive is contained in the `xlog.db` file, and every Barman server has its own copy. barman-2.10/doc/barman.1.d/50-check.md0000644000015500001620000000061113571162460015260 0ustar 00000000000000check *SERVER_NAME* : Show diagnostic information about `SERVER_NAME`, including: Ssh connection check, PostgreSQL version, configuration and backup directories, archiving process, streaming process, replication slots, etc. Specify `all` as `SERVER_NAME` to show diagnostic information about all the configured servers. --nagios : Nagios plugin compatible output barman-2.10/doc/barman.1.d/50-sync-backup.md0000644000015500001620000000056013571162460016425 0ustar 00000000000000sync-backup *SERVER_NAME* *BACKUP_ID* : Command used for the synchronisation of a passive node with its primary. Executes a copy of all the files of a `BACKUP_ID` that is present on `SERVER_NAME` node. This command is available only for passive nodes, and uses the `primary_ssh_command` option to establish a secure connection with the primary node. barman-2.10/doc/barman.1.d/50-backup.md0000644000015500001620000000451113571162460015453 0ustar 00000000000000backup *SERVER_NAME* : Perform a backup of `SERVER_NAME` using parameters specified in the configuration file. Specify `all` as `SERVER_NAME` to perform a backup of all the configured servers. --immediate-checkpoint : forces the initial checkpoint to be done as quickly as possible. Overrides value of the parameter `immediate_checkpoint`, if present in the configuration file. --no-immediate-checkpoint : forces to wait for the checkpoint. Overrides value of the parameter `immediate_checkpoint`, if present in the configuration file. --reuse-backup [INCREMENTAL_TYPE] : Overrides `reuse_backup` option behaviour. Possible values for `INCREMENTAL_TYPE` are: - *off*: do not reuse the last available backup; - *copy*: reuse the last available backup for a server and create a copy of the unchanged files (reduce backup time); - *link*: reuse the last available backup for a server and create a hard link of the unchanged files (reduce backup time and space); `link` is the default target if `--reuse-backup` is used and `INCREMENTAL_TYPE` is not explicited. --retry-times : Number of retries of base backup copy, after an error. Used during both backup and recovery operations. Overrides value of the parameter `basebackup_retry_times`, if present in the configuration file. --no-retry : Same as `--retry-times 0` --retry-sleep : Number of seconds of wait after a failed copy, before retrying. Used during both backup and recovery operations. Overrides value of the parameter `basebackup_retry_sleep`, if present in the configuration file. -j, --jobs : Number of parallel workers to copy files during backup. Overrides value of the parameter `parallel_jobs`, if present in the configuration file. --bwlimit KBPS : maximum transfer rate in kilobytes per second. A value of 0 means no limit. Overrides 'bandwidth_limit' configuration option. Default is undefined. --wait, -w : wait for all required WAL files by the base backup to be archived --wait-timeout : the time, in seconds, spent waiting for the required WAL files to be archived before timing out barman-2.10/doc/barman.1.d/50-show-server.md0000644000015500001620000000036013571162460016470 0ustar 00000000000000show-server *SERVER_NAME* : Show information about `SERVER_NAME`, including: `conninfo`, `backup_directory`, `wals_directory` and many more. Specify `all` as `SERVER_NAME` to show information about all the configured servers. barman-2.10/doc/barman.1.d/10-synopsis.md0000644000015500001620000000005113571162460016064 0ustar 00000000000000# SYNOPSIS barman [*OPTIONS*] *COMMAND* barman-2.10/doc/barman.1.d/50-recover.md0000644000015500001620000000622013571162460015652 0ustar 00000000000000recover *\[OPTIONS\]* *SERVER_NAME* *BACKUP_ID* *DESTINATION_DIRECTORY* : Recover a backup in a given directory (local or remote, depending on the `--remote-ssh-command` option settings). See the [Backup ID shortcuts](#shortcuts) section below for available shortcuts. --target-tli *TARGET_TLI* : Recover the specified timeline. --target-time *TARGET_TIME* : Recover to the specified time. You can use any valid unambiguous representation (e.g: "YYYY-MM-DD HH:MM:SS.mmm"). --target-xid *TARGET_XID* : Recover to the specified transaction ID. --target-lsn *TARGET_LSN* : Recover to the specified LSN (Log Sequence Number). Requires PostgreSQL 10 or above. --target-name *TARGET_NAME* : Recover to the named restore point previously created with the `pg_create_restore_point(name)` (for PostgreSQL 9.1 and above users). --target-immediate : Recover ends when a consistent state is reached (end of the base backup) --exclusive : Set target (time, XID or LSN) to be non inclusive. --target-action *ACTION* : Trigger the specified action once the recovery target is reached. Possible actions are: `pause` (PostgreSQL 9.1 and above), `shutdown` (PostgreSQL 9.5 and above) and `promote` (ditto). This option requires a target to be defined, with one of the above options. --tablespace *NAME:LOCATION* : Specify tablespace relocation rule. --remote-ssh-command *SSH_COMMAND* : This options activates remote recovery, by specifying the secure shell command to be launched on a remote host. This is the equivalent of the "ssh_command" server option in the configuration file for remote recovery. Example: 'ssh postgres@db2'. --retry-times *RETRY_TIMES* : Number of retries of data copy during base backup after an error. Overrides value of the parameter `basebackup_retry_times`, if present in the configuration file. --no-retry : Same as `--retry-times 0` --retry-sleep : Number of seconds of wait after a failed copy, before retrying. Overrides value of the parameter `basebackup_retry_sleep`, if present in the configuration file. --bwlimit KBPS : maximum transfer rate in kilobytes per second. A value of 0 means no limit. Overrides 'bandwidth_limit' configuration option. Default is undefined. -j , --jobs : Number of parallel workers to copy files during recovery. Overrides value of the parameter `parallel_jobs`, if present in the configuration file. Works only for servers configured through `rsync`/SSH. --get-wal, --no-get-wal : Enable/Disable usage of `get-wal` for WAL fetching during recovery. Default is based on `recovery_options` setting. --network-compression, --no-network-compression : Enable/Disable network compression during remote recovery. Default is based on `network_compression` configuration setting. --standby-mode : Specifies whether to start the PostgreSQL server as a standby. Default is undefined. barman-2.10/doc/barman.1.d/80-see-also.md0000644000015500001620000000003213571162460015713 0ustar 00000000000000# SEE ALSO `barman` (5). barman-2.10/doc/barman.1.d/75-exit-status.md0000644000015500001620000000006313571162460016505 0ustar 00000000000000# EXIT STATUS 0 : Success Not zero : Failure barman-2.10/doc/barman.1.d/50-sync-info.md0000644000015500001620000000120213571162460016105 0ustar 00000000000000sync-info *SERVER_NAME* \[*LAST_WAL* \[*LAST_POSITION*\]\] : Collect information regarding the current status of a Barman server, to be used for synchronisation purposes. Returns a JSON output representing `SERVER_NAME`, that contains: all the successfully finished backup, all the archived WAL files, the configuration, last WAL file been read from the `xlog.db` and the position in the file. LAST_WAL : tells sync-info to skip any WAL file previous to that (incremental synchronisation) LAST_POSITION : hint for quickly positioning in the `xlog.db` file (incremental synchronisation) barman-2.10/doc/barman.1.d/50-status.md0000644000015500001620000000150413571162460015530 0ustar 00000000000000status *SERVER_NAME* : Show information about the status of a server, including: number of available backups, `archive_command`, `archive_status` and many more. For example: ``` Server quagmire: Description: The Giggity database Passive node: False PostgreSQL version: 9.3.9 pgespresso extension: Not available PostgreSQL Data directory: /srv/postgresql/9.3/data PostgreSQL 'archive_command' setting: rsync -a %p barman@backup:/var/lib/barman/quagmire/incoming Last archived WAL: 0000000100003103000000AD Current WAL segment: 0000000100003103000000AE Retention policies: enforced (mode: auto, retention: REDUNDANCY 2, WAL retention: MAIN) No. of available backups: 2 First available backup: 20150908T003001 Last available backup: 20150909T003001 Minimum redundancy requirements: satisfied (2/1) ``` barman-2.10/doc/barman.1.d/50-switch-xlog.md0000644000015500001620000000012113571162460016447 0ustar 00000000000000switch-xlog *SERVER_NAME* : Alias for switch-wal (kept for back-compatibility) barman-2.10/doc/barman.1.d/50-list-files.md0000644000015500001620000000142413571162460016261 0ustar 00000000000000list-files *\[OPTIONS\]* *SERVER_NAME* *BACKUP_ID* : List all the files in a particular backup, identified by the server name and the backup ID. See the [Backup ID shortcuts](#shortcuts) section below for available shortcuts. --target *TARGET_TYPE* : Possible values for TARGET_TYPE are: - *data*: lists just the data files; - *standalone*: lists the base backup files, including required WAL files; - *wal*: lists all the WAL files between the start of the base backup and the end of the log / the start of the following base backup (depending on whether the specified base backup is the most recent one available); - *full*: same as data + wal. The default value is `standalone`. barman-2.10/doc/barman.1.d/50-switch-wal.md0000644000015500001620000000152113571162460016266 0ustar 00000000000000switch-wal *SERVER_NAME* : Execute pg_switch_wal() on the target server (from PostgreSQL 10), or pg_switch_xlog (for PostgreSQL 8.3 to 9.6). --force : Forces the switch by executing CHECKPOINT before pg_switch_xlog(). *IMPORTANT:* executing a CHECKPOINT might increase I/O load on a PostgreSQL server. Use this option with care. --archive : Wait for one xlog file to be archived. If after a defined amount of time (default: 30 seconds) no xlog file is archived, Barman will teminate with failure exit code. Available also on standby servers. --archive-timeout *TIMEOUT* : Specifies the amount of time in seconds (default: 30 seconds) the archiver will wait for a new xlog file to be archived before timing out. Available also on standby servers. barman-2.10/doc/barman.1.d/50-list-backup.md0000644000015500001620000000044213571162460016423 0ustar 00000000000000list-backup *SERVER_NAME* : Show available backups for `SERVER_NAME`. This command is useful to retrieve a backup ID. For example: ``` servername 20111104T102647 - Fri Nov 4 10:26:48 2011 - Size: 17.0 MiB - WAL Size: 100 B ``` In this case, *20111104T102647* is the backup ID. barman-2.10/doc/barman.1.d/50-archive-wal.md0000644000015500001620000000041213571162460016404 0ustar 00000000000000archive-wal *SERVER_NAME* : Get any incoming xlog file (both through standard `archive_command` and streaming replication, where applicable) and moves them in the WAL archive for that server. If necessary, apply compression when requested by the user. barman-2.10/doc/barman.1.d/50-replication-status.md0000644000015500001620000000110213571162460020031 0ustar 00000000000000replication-status *\[OPTIONS\]* *SERVER_NAME* : Shows live information and status of any streaming client attached to the given server (or servers). Default behaviour can be changed through the following options: --minimal : machine readable output (default: False) --target *TARGET_TYPE* : Possible values for TARGET_TYPE are: - *hot-standby*: lists only hot standby servers - *wal-streamer*: lists only WAL streaming clients, such as pg_receivewal - *all*: any streaming client (default) barman-2.10/doc/barman.1.d/50-show-backup.md0000644000015500001620000000261413571162460016433 0ustar 00000000000000show-backup *SERVER_NAME* *BACKUP_ID* : Show detailed information about a particular backup, identified by the server name and the backup ID. See the [Backup ID shortcuts](#shortcuts) section below for available shortcuts. For example: ``` Backup 20150828T130001: Server Name : quagmire Status : DONE PostgreSQL Version : 90402 PGDATA directory : /srv/postgresql/9.4/main/data Base backup information: Disk usage : 12.4 TiB (12.4 TiB with WALs) Incremental size : 4.9 TiB (-60.02%) Timeline : 1 Begin WAL : 0000000100000CFD000000AD End WAL : 0000000100000D0D00000008 WAL number : 3932 WAL compression ratio: 79.51% Begin time : 2015-08-28 13:00:01.633925+00:00 End time : 2015-08-29 10:27:06.522846+00:00 Begin Offset : 1575048 End Offset : 13853016 Begin XLOG : CFD/AD180888 End XLOG : D0D/8D36158 WAL information: No of files : 35039 Disk usage : 121.5 GiB WAL rate : 275.50/hour Compression ratio : 77.81% Last available : 0000000100000D95000000E7 Catalog information: Retention Policy : not enforced Previous Backup : 20150821T130001 Next Backup : - (this is the latest base backup) ``` barman-2.10/doc/barman.1.d/50-receive-wal.md0000644000015500001620000000123413571162460016410 0ustar 00000000000000receive-wal *SERVER_NAME* : Start the stream of transaction logs for a server. The process relies on `pg_receivewal`/`pg_receivexlog` to receive WAL files from the PostgreSQL servers through the streaming protocol. --stop : stop the receive-wal process for the server --reset : reset the status of receive-wal, restarting the streaming from the current WAL file of the server --create-slot : create the physical replication slot configured with the `slot_name` configuration parameter --drop-slot : drop the physical replication slot configured with the `slot_name` configuration parameter barman-2.10/doc/barman.1.d/99-copying.md0000644000015500001620000000031013571162460015664 0ustar 00000000000000# COPYING Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. Copyright (C) 2011-2019 2ndQuadrant Limited - . barman-2.10/doc/barman.1.d/70-backup-id-shortcuts.md0000644000015500001620000000057513571162460020111 0ustar 00000000000000# BACKUP ID SHORTCUTS {#shortcuts} Rather than using the timestamp backup ID, you can use any of the following shortcuts/aliases to identity a backup for a given server: first : Oldest available backup for that server, in chronological order. last : Latest available backup for that server, in chronological order. latest : same ast *last*. oldest : same ast *first*. barman-2.10/doc/barman.1.d/50-sync-wals.md0000644000015500001620000000053713571162460016132 0ustar 00000000000000sync-wals *SERVER_NAME* : Command used for the synchronisation of a passive node with its primary. Executes a copy of all the archived WAL files that are present on `SERVER_NAME` node. This command is available only for passive nodes, and uses the `primary_ssh_command` option to establish a secure connection with the primary node. barman-2.10/doc/barman.1.d/50-delete.md0000644000015500001620000000021713571162460015447 0ustar 00000000000000delete *SERVER_NAME* *BACKUP_ID* : Delete the specified backup. [Backup ID shortcuts](#shortcuts) section below for available shortcuts. barman-2.10/doc/barman.1.d/90-authors.md0000644000015500001620000000125713571162460015703 0ustar 00000000000000# AUTHORS In alphabetical order: * Gabriele Bartolini (architect) * Jonathan Battiato (QA/testing) * Giulio Calacoci (developer) * Francesco Canovai (QA/testing) * Leonardo Cecchi (developer) * Gianni Ciolli (QA/testing) * Britt Cole (documentation) * Marco Nenciarini (project leader) * Rubens Souza (QA/testing) Past contributors: * Carlo Ascani * Stefano Bianucci * Giuseppe Broccolo barman-2.10/doc/barman.1.d/50-put-wal.md0000644000015500001620000000127513571162460015603 0ustar 00000000000000put-wal *\[OPTIONS\]* *SERVER_NAME* : Receive a WAL file from a remote server and securely store it into the `SERVER_NAME` incoming directory. The WAL file is retrieved from the `STDIN`, and must be encapsulated in a tar stream together with a `MD5SUMS` file to validate it. This command is meant to be invoked through SSH from a remote `barman-wal-archive` utility (part of `barman-cli` package). Do not use this command directly unless you take full responsibility of the content of files. -t, --test : test both the connection and the configuration of the requested PostgreSQL server in Barman to make sure it is ready to receive WAL files. barman-2.10/doc/barman.1.d/95-resources.md0000644000015500001620000000022713571162460016231 0ustar 00000000000000# RESOURCES * Homepage: * Documentation: * Professional support: barman-2.10/doc/barman.1.d/45-commands.md0000644000015500001620000000006713571162460016015 0ustar 00000000000000# COMMANDS Important: every command has a help option barman-2.10/doc/barman.1.d/05-name.md0000644000015500001620000000007413571162460015126 0ustar 00000000000000# NAME barman - Backup and Recovery Manager for PostgreSQL barman-2.10/doc/barman.1.d/50-get-wal.md0000644000015500001620000000203013571162460015540 0ustar 00000000000000get-wal *\[OPTIONS\]* *SERVER_NAME* *WAL\_NAME* : Retrieve a WAL file from the `xlog` archive of a given server. By default, the requested WAL file, if found, is returned as uncompressed content to `STDOUT`. The following options allow users to change this behaviour: -o *OUTPUT_DIRECTORY* : destination directory where the `get-wal` will deposit the requested WAL -P, --partial : retrieve also partial WAL files (.partial) -z : output will be compressed using gzip -j : output will be compressed using bzip2 -p *SIZE* : peek from the WAL archive up to *SIZE* WAL files, starting from the requested one. 'SIZE' must be an integer >= 1. When invoked with this option, get-wal returns a list of zero to 'SIZE' WAL segment names, one per row. -t, --test : test both the connection and the configuration of the requested PostgreSQL server in Barman for WAL retrieval. With this option, the 'WAL_NAME' mandatory argument is ignored. barman-2.10/doc/barman.1.d/15-description.md0000644000015500001620000000041713571162460016533 0ustar 00000000000000# DESCRIPTION Barman is an administration tool for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. Barman can perform remote backups of multiple servers in business critical environments and helps DBAs during the recovery phase. barman-2.10/doc/barman.1.d/20-options.md0000644000015500001620000000077113571162460015702 0ustar 00000000000000# OPTIONS -h, --help : Show a help message and exit. -v, --version : Show program version number and exit. -c *CONFIG*, --config *CONFIG* : Use the specified configuration file. --color *{never,always,auto}*, --colour *{never,always,auto}* : Whether to use colors in the output (default: *auto*) -q, --quiet : Do not output anything. Useful for cron scripts. -d, --debug : debug output (default: False) -f {json,console}, --format {json,console} : output format (default: 'console') barman-2.10/doc/barman.1.d/50-cron.md0000644000015500001620000000042713571162460015151 0ustar 00000000000000cron : Perform maintenance tasks, such as enforcing retention policies or WAL files management. --keep-descriptors : Keep the stdout and the stderr streams of the Barman subprocesses attached to this one. This is useful for Docker based installations. barman-2.10/doc/barman-wal-restore.1.md0000644000015500001620000000541613571162460016011 0ustar 00000000000000% BARMAN-WAL-RESTORE(1) Barman User manuals | Version 2.10 % 2ndQuadrant % December 5, 2019 # NAME barman-wal-restore - 'restore_command' based on Barman's get-wal # SYNOPSIS barman-wal-restore [*OPTIONS*] *BARMAN_HOST* *SERVER_NAME* *WAL_NAME* *WAL_DEST* # DESCRIPTION This script can be used as a 'restore_command' for PostgreSQL servers, retrieving WAL files using the 'get-wal' feature of Barman. An SSH connection will be opened to the Barman host. `barman-wal-restore` allows the integration of Barman in PostgreSQL clusters for better business continuity results. This script and Barman are administration tools for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. # POSITIONAL ARGUMENTS BARMAN_HOST : the host of the Barman server. SERVER_NAME : the server name configured in Barman from which WALs are taken. WAL_NAME : the value of the '%f' keyword (according to 'restore_command'). WAL_DEST : the value of the '%p' keyword (according to 'restore_command'). # OPTIONS -h, --help : show a help message and exit -V, --version : show program's version number and exit -U *USER*, --user *USER* : the user used for the ssh connection to the Barman server. Defaults to 'barman'. -s *SECONDS*, --sleep *SECONDS* : sleep for SECONDS after a failure of get-wal request. Defaults to 0 (nowait). -p *JOBS*, --parallel *JOBS* : specifies the number of files to peek and transfer in parallel, defaults to 0 (disabled). --spool-dir *SPOOL_DIR* : Specifies spool directory for WAL files. Defaults to '/var/tmp/walrestore' -P, --partial : retrieve also partial WAL files (.partial) -z, --gzip : transfer the WAL files compressed with gzip -j, --bzip2 : transfer the WAL files compressed with bzip2 -c *CONFIG*, --config *CONFIG* : configuration file on the Barman server -t, --test : test both the connection and the configuration of the requested PostgreSQL server in Barman to make sure it is ready to receive WAL files. With this option, the 'WAL_NAME' and 'WAL\_DEST' mandatory arguments are ignored. # EXIT STATUS 0 : Success Not zero : Failure # SEE ALSO `barman` (1), `barman` (5). # BUGS Barman has been extensively tested, and is currently being used in several production environments. However, we cannot exclude the presence of bugs. Any bug can be reported via the Github issue tracker. # RESOURCES * Homepage: * Documentation: * Professional support: # COPYING Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. Copyright (C) 2011-2019 2ndQuadrant Ltd - . barman-2.10/doc/barman-cloud-backup.10000644000015500001620000000635513571162460015522 0ustar 00000000000000.\" Automatically generated by Pandoc 2.8.0.1 .\" .TH "BARMAN-CLOUD-BACKUP" "1" "December 5, 2019" "Barman User manuals" "Version 2.10" .hy .SH NAME .PP barman-cloud-backup - Backup a PostgreSQL instance and stores it in the Cloud .SH SYNOPSIS .PP barman-cloud-backup [\f[I]OPTIONS\f[R]] \f[I]DESTINATION_URL\f[R] \f[I]SERVER_NAME\f[R] .SH DESCRIPTION .PP This script can be used to perform a backup of a local PostgreSQL instance and ship the resulting tarball(s) to the Cloud. It requires read access to PGDATA and tablespaces (normally run as \f[C]postgres\f[R] user). Currently only AWS S3 is supported. .PP This script and Barman are administration tools for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. .SH POSITIONAL ARGUMENTS .TP DESTINATION_URL URL of the cloud destination, such as a bucket in AWS S3. For example: \f[C]s3://BUCKET_NAME/path/to/folder\f[R] (where \f[C]BUCKET_NAME\f[R] is the bucket you have created in AWS). .TP SERVER_NAME the name of the server as configured in Barman. .SH OPTIONS .TP -h, \[en]help show a help message and exit .TP -V, \[en]version show program\[cq]s version number and exit .TP -v, \[en]verbose increase output verbosity (e.g., -vv is more than -v) .TP -q, \[en]quiet decrease output verbosity (e.g., -qq is less than -q) .TP -t, \[en]test test connectivity to the cloud destination and exit .TP -P, \[en]profile profile name (e.g.\ INI section in AWS credentials file) .TP -z, \[en]gzip gzip-compress the tar files when uploading to the cloud .TP -j, \[en]bzip2 bzip2-compress the tar files when uploading to the cloud .TP -e, \[en]encrypt enable server-side encryption for the transfer. Allowed values: `AES256'|`aws:kms'. .TP -h, \[en]host host or Unix socket for PostgreSQL connection (default: libpq settings) .TP -p, \[en]port port for PostgreSQL connection (default: libpq settings) .TP -U, \[en]user user name for PostgreSQL connection (default: libpq settings) .TP \[en]immediate-checkpoint forces the initial checkpoint to be done as quickly as possible .TP -J JOBS, \[en]jobs JOBS number of subprocesses to upload data to S3 (default: 2) .SH REFERENCES .PP For Boto: .IP \[bu] 2 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html .PP For AWS: .IP \[bu] 2 http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html .IP \[bu] 2 http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html. .PP For libpq settings information: .IP \[bu] 2 https://www.postgresql.org/docs/current/libpq-envars.html .SH DEPENDENCIES .IP \[bu] 2 boto3 .SH EXIT STATUS .TP 0 Success .TP Not zero Failure .SH BUGS .PP Barman has been extensively tested, and is currently being used in several production environments. However, we cannot exclude the presence of bugs. .PP Any bug can be reported via the Github issue tracker. .SH RESOURCES .IP \[bu] 2 Homepage: .IP \[bu] 2 Documentation: .IP \[bu] 2 Professional support: .SH COPYING .PP Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. .PP Copyright (C) 2011-2019 2ndQuadrant Ltd - . .SH AUTHORS 2ndQuadrant . barman-2.10/doc/barman.d/0000755000015500001620000000000013571162463013305 5ustar 00000000000000barman-2.10/doc/barman.d/passive-server.conf-template0000644000015500001620000000166313571162460020746 0ustar 00000000000000; Barman, Backup and Recovery Manager for PostgreSQL ; http://www.pgbarman.org/ - http://www.2ndQuadrant.com/ ; ; Template configuration file for a server using ; SSH connections and rsync for copy. ; [passive] ; Human readable description description = "Example of a Barman passive server" ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Passive server configuration ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Local parameter that identifies a barman server as 'passive'. ; A passive node uses as source for backups another barman server ; instead of a PostgreSQL cluster. ; If a primary ssh command is specified, barman will use it to establish a ; connection with the barman "master" server. ; Empty by default it can be also set as global value. primary_ssh_command = ssh barman@backup ; Incremental backup settings ;reuse_backup = link ; Compression: must be identical to the source ;compression = gzip barman-2.10/doc/barman.d/streaming-server.conf-template0000644000015500001620000000272413571162460021264 0ustar 00000000000000; Barman, Backup and Recovery Manager for PostgreSQL ; http://www.pgbarman.org/ - http://www.2ndQuadrant.com/ ; ; Template configuration file for a server using ; only streaming replication protocol ; [streaming] ; Human readable description description = "Example of PostgreSQL Database (Streaming-Only)" ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; PostgreSQL connection string (mandatory) ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; conninfo = host=pg user=barman dbname=postgres ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; PostgreSQL streaming connection string ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; To be used by pg_basebackup for backup and pg_receivexlog for WAL streaming ; NOTE: streaming_barman is a regular user with REPLICATION privilege streaming_conninfo = host=pg user=streaming_barman ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Backup settings (via pg_basebackup) ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; backup_method = postgres ;streaming_backup_name = barman_streaming_backup ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; WAL streaming settings (via pg_receivexlog) ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; streaming_archiver = on slot_name = barman ;create_slot = auto ;streaming_archiver_name = barman_receive_wal ;streaming_archiver_batch_size = 50 ; PATH setting for this server ;path_prefix = "/usr/pgsql-12/bin" barman-2.10/doc/barman.d/ssh-server.conf-template0000644000015500001620000000303513571162460020064 0ustar 00000000000000; Barman, Backup and Recovery Manager for PostgreSQL ; http://www.pgbarman.org/ - http://www.2ndQuadrant.com/ ; ; Template configuration file for a server using ; SSH connections and rsync for copy. ; [ssh] ; Human readable description description = "Example of PostgreSQL Database (via SSH)" ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; SSH options (mandatory) ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ssh_command = ssh postgres@pg ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; PostgreSQL connection string (mandatory) ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; conninfo = host=pg user=barman dbname=postgres ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Backup settings (via rsync over SSH) ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; backup_method = rsync ; Incremental backup support: possible values are None (default), link or copy ;reuse_backup = link ; Identify the standard behavior for backup operations: possible values are ; exclusive_backup (default), concurrent_backup ; concurrent_backup is the preferred method with PostgreSQL >= 9.6 backup_options = exclusive_backup ; Number of parallel workers to perform file copy during backup and recover ;parallel_jobs = 1 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Continuous WAL archiving (via 'archive_command') ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; archiver = on ;archiver_batch_size = 50 ; PATH setting for this server ;path_prefix = "/usr/pgsql-12/bin" barman-2.10/doc/barman-wal-archive.1.md0000644000015500001620000000420113571162460015736 0ustar 00000000000000% BARMAN-WAL-ARCHIVE(1) Barman User manuals | Version 2.10 % 2ndQuadrant % December 5, 2019 # NAME barman-wal-archive - `archive_command` based on Barman's put-wal # SYNOPSIS barman-wal-archive [*OPTIONS*] *BARMAN_HOST* *SERVER_NAME* *WAL_PATH* # DESCRIPTION This script can be used in the `archive_command` of a PostgreSQL server to ship WAL files to a Barman host using the 'put-wal' command (introduced in Barman 2.6). An SSH connection will be opened to the Barman host. `barman-wal-archive` allows the integration of Barman in PostgreSQL clusters for better business continuity results. This script and Barman are administration tools for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. # POSITIONAL ARGUMENTS BARMAN_HOST : the host of the Barman server. SERVER_NAME : the server name configured in Barman from which WALs are taken. WAL_PATH : the value of the '%p' keyword (according to 'archive_command'). # OPTIONS -h, --help : show a help message and exit -V, --version : show program's version number and exit -U *USER*, --user *USER* : the user used for the ssh connection to the Barman server. Defaults to 'barman'. -c *CONFIG*, --config *CONFIG* : configuration file on the Barman server -t, --test : test both the connection and the configuration of the requested PostgreSQL server in Barman for WAL retrieval. With this option, the 'WAL_PATH' mandatory argument is ignored. # EXIT STATUS 0 : Success Not zero : Failure # SEE ALSO `barman` (1), `barman` (5). # BUGS Barman has been extensively tested, and is currently being used in several production environments. However, we cannot exclude the presence of bugs. Any bug can be reported via the Github issue tracker. # RESOURCES * Homepage: * Documentation: * Professional support: # COPYING Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. Copyright (C) 2011-2019 2ndQuadrant Ltd - . barman-2.10/doc/barman-wal-restore.10000644000015500001620000000607113571162460015410 0ustar 00000000000000.\" Automatically generated by Pandoc 2.8.0.1 .\" .TH "BARMAN-WAL-RESTORE" "1" "December 5, 2019" "Barman User manuals" "Version 2.10" .hy .SH NAME .PP barman-wal-restore - \[aq]restore_command\[aq] based on Barman\[aq]s get-wal .SH SYNOPSIS .PP barman-wal-restore [\f[I]OPTIONS\f[R]] \f[I]BARMAN_HOST\f[R] \f[I]SERVER_NAME\f[R] \f[I]WAL_NAME\f[R] \f[I]WAL_DEST\f[R] .SH DESCRIPTION .PP This script can be used as a \[aq]restore_command\[aq] for PostgreSQL servers, retrieving WAL files using the \[aq]get-wal\[aq] feature of Barman. An SSH connection will be opened to the Barman host. \f[C]barman-wal-restore\f[R] allows the integration of Barman in PostgreSQL clusters for better business continuity results. .PP This script and Barman are administration tools for disaster recovery of PostgreSQL servers written in Python and maintained by 2ndQuadrant. .SH POSITIONAL ARGUMENTS .TP BARMAN_HOST the host of the Barman server. .TP SERVER_NAME the server name configured in Barman from which WALs are taken. .TP WAL_NAME the value of the \[aq]%f\[aq] keyword (according to \[aq]restore_command\[aq]). .TP WAL_DEST the value of the \[aq]%p\[aq] keyword (according to \[aq]restore_command\[aq]). .SH OPTIONS .TP -h, --help show a help message and exit .TP -V, --version show program\[aq]s version number and exit .TP -U \f[I]USER\f[R], --user \f[I]USER\f[R] the user used for the ssh connection to the Barman server. Defaults to \[aq]barman\[aq]. .TP -s \f[I]SECONDS\f[R], --sleep \f[I]SECONDS\f[R] sleep for SECONDS after a failure of get-wal request. Defaults to 0 (nowait). .TP -p \f[I]JOBS\f[R], --parallel \f[I]JOBS\f[R] specifies the number of files to peek and transfer in parallel, defaults to 0 (disabled). .TP --spool-dir \f[I]SPOOL_DIR\f[R] Specifies spool directory for WAL files. Defaults to \[aq]/var/tmp/walrestore\[aq] .TP -P, --partial retrieve also partial WAL files (.partial) .TP -z, --gzip transfer the WAL files compressed with gzip .TP -j, --bzip2 transfer the WAL files compressed with bzip2 .TP -c \f[I]CONFIG\f[R], --config \f[I]CONFIG\f[R] configuration file on the Barman server .TP -t, --test test both the connection and the configuration of the requested PostgreSQL server in Barman to make sure it is ready to receive WAL files. With this option, the \[aq]WAL_NAME\[aq] and \[aq]WAL_DEST\[aq] mandatory arguments are ignored. .SH EXIT STATUS .TP 0 Success .TP Not zero Failure .SH SEE ALSO .PP \f[C]barman\f[R] (1), \f[C]barman\f[R] (5). .SH BUGS .PP Barman has been extensively tested, and is currently being used in several production environments. However, we cannot exclude the presence of bugs. .PP Any bug can be reported via the Github issue tracker. .SH RESOURCES .IP \[bu] 2 Homepage: .IP \[bu] 2 Documentation: .IP \[bu] 2 Professional support: .SH COPYING .PP Barman is the property of 2ndQuadrant Limited and its code is distributed under GNU General Public License v3. .PP Copyright (C) 2011-2019 2ndQuadrant Ltd - . .SH AUTHORS 2ndQuadrant . barman-2.10/LICENSE0000644000015500001620000010451313571162460012064 0ustar 00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . barman-2.10/setup.cfg0000644000015500001620000000043613571162463012702 0ustar 00000000000000[bdist_wheel] universal = 1 [aliases] test = pytest [isort] known_first_party = barman known_third_party = setuptools distutils argh argcomplete dateutil psycopg2 mock pytest boto3 botocore sphinx sphinx_bootstrap_theme skip = .tox [egg_info] tag_build = tag_date = 0 barman-2.10/PKG-INFO0000644000015500001620000000264613571162463012163 0ustar 00000000000000Metadata-Version: 2.1 Name: barman Version: 2.10 Summary: Backup and Recovery Manager for PostgreSQL Home-page: http://www.pgbarman.org/ Author: 2ndQuadrant Limited Author-email: info@2ndquadrant.com License: GPL-3.0 Description: Barman (Backup and Recovery Manager) is an open-source administration tool for disaster recovery of PostgreSQL servers written in Python. It allows your organisation to perform remote backups of multiple servers in business critical environments to reduce risk and help DBAs during the recovery phase. Barman is distributed under GNU GPL 3 and maintained by 2ndQuadrant. Platform: Linux Platform: Mac OS X Classifier: Environment :: Console Classifier: Development Status :: 5 - Production/Stable Classifier: Topic :: System :: Archiving :: Backup Classifier: Topic :: Database Classifier: Topic :: System :: Recovery Tools Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+) Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Provides-Extra: completion Provides-Extra: cloud barman-2.10/scripts/0000755000015500001620000000000013571162463012545 5ustar 00000000000000barman-2.10/scripts/barman.bash_completion0000644000015500001620000000014213571162460017067 0ustar 00000000000000eval "$((register-python-argcomplete3 barman || register-python-argcomplete barman) 2>/dev/null)" barman-2.10/setup.py0000755000015500001620000001014513571162460012571 0ustar 00000000000000#!/usr/bin/env python # # barman - Backup and Recovery Manager for PostgreSQL # # Copyright (C) 2011-2018 2ndQuadrant Limited # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . """Backup and Recovery Manager for PostgreSQL Barman (Backup and Recovery Manager) is an open-source administration tool for disaster recovery of PostgreSQL servers written in Python. It allows your organisation to perform remote backups of multiple servers in business critical environments to reduce risk and help DBAs during the recovery phase. Barman is distributed under GNU GPL 3 and maintained by 2ndQuadrant. """ import sys from setuptools import find_packages, setup if sys.version_info < (2, 6): raise SystemExit('ERROR: Barman needs at least python 2.6 to work') # Depend on pytest_runner only when the tests are actually invoked needs_pytest = set(['pytest', 'test']).intersection(sys.argv) pytest_runner = ['pytest_runner'] if needs_pytest else [] setup_requires = pytest_runner install_requires = [ 'psycopg2 >= 2.4.2', 'argh >= 0.21.2', 'python-dateutil', ] if sys.version_info < (2, 7): install_requires += [ 'argparse', ] # If we are going to execute tests, we need to enforce wheel # version before installing mock, or it will fail if needs_pytest: setup_requires += [ 'wheel<0.30.0', # wheel has dropped 2.6 support in 0.30.0 ] barman = {} with open('barman/version.py', 'r') as fversion: exec(fversion.read(), barman) setup( name='barman', version=barman['__version__'], author='2ndQuadrant Limited', author_email='info@2ndquadrant.com', url='http://www.pgbarman.org/', packages=find_packages(exclude=["tests"]), data_files=[ ('share/man/man1', ['doc/barman.1', 'doc/barman-cloud-backup.1', 'doc/barman-cloud-wal-archive.1', 'doc/barman-wal-archive.1', 'doc/barman-wal-restore.1']), ('share/man/man5', ['doc/barman.5']), ], entry_points={ 'console_scripts': [ 'barman=barman.cli:main', 'barman-cloud-backup=barman.clients.cloud_backup:main', 'barman-cloud-wal-archive=barman.clients.cloud_walarchive:main', 'barman-wal-archive=barman.clients.walarchive:main', 'barman-wal-restore=barman.clients.walrestore:main', ], }, license='GPL-3.0', description=__doc__.split("\n")[0], long_description="\n".join(__doc__.split("\n")[2:]), install_requires=install_requires, extras_require={ 'cloud': ['boto3'], 'completion': ['argcomplete'], }, platforms=['Linux', 'Mac OS X'], classifiers=[ 'Environment :: Console', 'Development Status :: 5 - Production/Stable', 'Topic :: System :: Archiving :: Backup', 'Topic :: Database', 'Topic :: System :: Recovery Tools', 'Intended Audience :: System Administrators', 'License :: OSI Approved :: GNU General Public License v3 or later ' '(GPLv3+)', 'Programming Language :: Python', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', ], setup_requires=setup_requires, tests_require=[ 'mock', 'pytest-timeout', 'pytest', ], ) barman-2.10/ChangeLog0000644000015500001620000052165013571162460012636 0ustar 000000000000002019-12-02 Marco Nenciarini Update the ChangeLog file 2019-12-02 Gabriele Bartolini Version set to 2.10 2019-11-29 Gabriele Bartolini Small improvements in cloud utilities documentation 2019-11-29 Marco Nenciarini Remove race condition on cloud upload completion 2019-11-28 Marco Nenciarini Fix WAL file name validation in barman-cloud-walarchive 2019-11-27 Gabriele Bartolini Fix issue with list-server and empty description Fixes GH-242 Removed broken link on standby settings Fixes GH-251 2019-11-27 Marco Nenciarini Improve error in cloud clients when boto3 is missing 2019-11-27 Gabriele Bartolini Add man pages for cloud utilities to setup.py Add disclaimer for experimental support for cloud utilities 2019-11-27 Anna Bellandi Remove recovery documentation link from documentation 2019-11-27 Gabriele Bartolini Small change in log file for `get-wal` command 2019-11-25 Marco Nenciarini Update set-version.sh script with the new doc files 2019-11-15 Marco Nenciarini Implement statistics during cloud-backup upload 2019-11-14 Marco Nenciarini Improve `receive-wal --reset` command Verify the last partial file is aligned with current WAL location or, if present, with the replication slot's. Add '-w/--wait' option to backup command With this option, Barman wait for all required WAL files to be archived before considering the backup completed. The patch includes `--wait-timeout` option (default 0, no timeout) 2019-11-12 Marco Nenciarini Automated creation of replication slots Introduce the `create_slot` option with two possible values: `auto` and `manual` (default, for back-compatibility). When set to `auto`, Barman automatically attemps to create the replication slot defined by the `slot_name` option. 2019-11-13 Marco Nenciarini Setup the bucket in the region specified in the AWS profile 2019-11-14 Marco Nenciarini Fix exception when a server is passed twice on the command line 2019-11-08 Marco Nenciarini Add support for .partial WAL files to `get-wal` Remove the long-standing limitation of `restore_command` that were not capable of automatically handling `.partial` WAL files shipped to Barman via streaming replication. When invoked with `--partial/-P`, `get-wal` command will look also for the `.partial` content of the requested WAL file. This is extremely useful in case of disaster recovery situations with RPO=0. The patch also covers `barman-wal-restore`. 2019-11-12 Marco Nenciarini Improve error handling in `barman-cloud-backup` Set application name in barman-cloud-backup 2019-11-12 Gabriele Bartolini Display a warning for WAITING_FOR_WALS backups In case a backup is completed as 'WAITING_FOR_WALS' display a warning that explains the state. 2019-11-06 Marco Nenciarini Manage KeyboardInterrupt exception in barman-cloud-backup 2019-11-05 Marco Nenciarini Make sure to remove temporary files during unit tests Fix circular import error importing barman.compression 2019-10-30 Leonardo Cecchi Parallel barman-cloud-backup upload Add a parallel S3 upload feature to barman-cloud-backup to enhance performance. 2019-11-05 Marco Nenciarini Add sphinx to isort configuration 2019-11-06 Ian Barwick Minor clarification to "backup_options" description Make it clear that "concurrent_backup" should be set for *all versions* from 9.6. 2019-11-02 Gabriele Bartolini Add documentation section about `barman-cli` 2019-11-04 Marco Nenciarini Verify the PostgreSQL system identifier Retrieve the PostgreSQL system identifier (`systemid`) from the from the main connection or from the streaming connection, then store it in the server directory and in every backup. Verify via the `check` command that systemid does not change over time, otherwise fail. This reduces the risk of data corruption and mixing data originating from different PostgreSQL instances or physical clusters. Fix GH-246 2019-10-30 Leonardo Cecchi Add WAL file name validation in barman-cloud-walarchive 2019-10-28 Gabriele Bartolini Use the same WAL directory structure in S3 Fix exception with server side encryption 2019-06-12 frankgard Enable python3 for bash completion This modified bash completion snippet should work for Python3 (preferred, if installed) and Python2 (as a fallback) 2019-10-25 Leonardo Cecchi Add `--keep-descriptors` run-time option to `cron` command That new command-line option enables Docker-based installations of Barman to show the output of the Barman subprocess in the container log. Fixes GH-243 2019-10-25 Marco Nenciarini Add current timestamp to diagnose 2019-10-24 Leonardo Cecchi Use CloudInterface class in cloud_wal_archive Refactor Cloud WAL archive code to reuse the CloudInterface module 2019-10-25 Marco Nenciarini Ignore vanished and truncated files uploading cloud backups This is to avoid backup errors if PostgreSQL rewrite or delete a file in its data directory while the backup is running. If a file change its size during the backup, we pad the file contents with zeroes, and the WAL reply will take care of the original contents during recovery. 2019-10-24 Marco Nenciarini Redact passwords from Barman output (InfoSec) This prevents that `barman diagnose` or other output commands will contain a password. Co-authored-by: Leonardo Cecchi 2019-10-24 Gabriele Bartolini Add note about PostgreSQL upgrades Closes GH-244 2019-10-23 Marco Nenciarini Wrong string matching operation when excluding tablespaces inside PGDATA Fixes GH-245 2019-10-15 Marco Nenciarini Move cloud functions to a dedicated file 2019-10-15 Leonardo Cecchi Isolate all S3-related methods in their own class This patch isolates all the AWS methods in a class, to make parallel processing easier. 2019-07-31 Marco Nenciarini Implement include/exclude logic on cloud backup Filter the files to include in the backup using a pattern-matching algorithm similar to the one implemented by rsync, which is powering the BackupExecutor. The patterns have been moved in a new module, named `postgres_plumbing.py`, containing them and also the low-level PostgreSQL related features. Co-authored-by: Leonardo Cecchi Add barman-cloud-backup command 2019-05-16 Giulio Calacoci Add barman-cloud-wal-archive command 2019-06-06 Marco Nenciarini Untie PostgreSQLConnection from a barman configuration 2019-06-04 Marco Nenciarini Separate BackupInfo and LocalBackupInfo Minor changes: * Improve Python 3 support * Do not close a fileobj passed to save() 2019-10-21 Gabriele Bartolini Mention `wal_level = logical` in documentation 2019-08-09 Ian Barwick Log formatting tweak for consistency Patch changes the "Starting check" log output to quote the check name, which is consistent with the following "Check '...' succeeded" log output. Closes GH-236 2019-08-28 vegorov Minor fixes in WAL delete hook scripts Fixed bug, enviroment variables not set in wal delete retry scripts. Wrong parameter passed to HookScriptRunner for wal delete scripts. Closes GH-240 2019-09-12 Marco Nenciarini Pandoc not to be smart while producing Barman documentation Better handling of unicode output and logging 2019-09-03 Gabriele Bartolini Improved documentation on upgrading Barman 2019-09-02 Marco Nenciarini Fix PostgreSQL connection aliveness check The previous code was raising an error when the PostgreSQL connection was unexpectedly dropped: ERROR: Backup failed issuing stop backup command. DETAILS: 'NoneType' object has no attribute 'rollback' Now the rollback is only issued when the connection is healty. Regression introduced in 4b493022be79624da8deef95b88dd57b3ab5c12b Closes: GH-239 2019-08-29 Gabriele Bartolini Add note about `receive-wal` being run as a foreground process 2019-07-31 Marco Nenciarini Upgrade testing tools version Declare argcomplete requirement as optional 2019-07-26 Marco Nenciarini Update the ChangeLog file Version set to 2.9 2019-07-25 Gabriele Bartolini Add release notes for version 2.9 Manage `synchronous_standby_names = '*'` special entry Fixes GH-231 2019-07-23 Gabriele Bartolini Clarify documentation about WAL archiving from standby Fixes GH-232 2019-07-24 Leonardo Cecchi Fix exception in check-backup for in progress backups Backups that are in progress have not `end_wal` and that was causing check_backup to fail. Fixes GH-224 2019-07-11 Marcin Hlybin JSON Output Writer (experimental) Add -f/--format option with 'json' value. Default is 'console'. Currently declared experimental. Actual structure of the output will be defined and documented in a future release based on feedback and production experience. Fixes GH-234 2019-07-22 Marco Nenciarini Truncate the .partial WAL file when size is wrong During the `receive-wal` startup, if we detect that the partial file size is wrong, we truncate it and then start `pg_receivewal`, making Barman more resilient. This is coherent with the behaviour of `pg_receivewal`, that will allocate the exact size needed for a WAL segment before starting to write it. This also enables `receive-wal` to automatically resume after the backup server ran out of disk space. 2019-07-18 Gabriele Bartolini Add `--target-lsn` option to `recover` command Support `recovery_target_lsn` option in recovery, allowing users to specify a Log Sequence Number (LSN) as recovery target. Extract 'checkpoint_timeout' 2019-03-29 Timothy Alexander Fix execution environment of recovery retry scripts This patch fix the execution environment of the recovery retry scripts: previously the environment applyied was the one for the "recovery script" instead of the one for the "recovery retry script". Pull request GH-203 2019-04-13 Jeff Janes Fix "Backup completed" elapsed time The message issued when a backup completes does not include all of the elapsed time, but rather only a non-intuitive subset of it. Notably it does not include the time taken to fsync all of the files, which can be substantial. Make the message include all time up to when the message is issued. Pull request GH-216 2019-07-11 Marco Nenciarini Support for PostgreSQL 12 PostgreSQL 12 removes support for `recovery.conf`, in favour of GUC options and introduces two signal files: `recovery.signal` for recovery and `standby.signal` for standby mode. Barman detects PostgreSQL 12 and transparently supports it both during backup (by excluding some files) and, most importantly, during recovery, by rewriting configuration options in the `postgresql.auto.conf` file. Support for versions prior to 12 has not been changed. 2019-07-12 Marco Nenciarini Rename barman_xlog directory to barman_wal 2019-07-15 Marco Nenciarini Preserve PostgreSQL connection status in aliveness check In some cases, PostgreSQL was terminating the connection for the start backup with the following error message: "FATAL: terminating connection due to idle-in-transaction timeout". This was caused by the "SELECT 1" query that checks that a connection is alive. Fixes GH149 2019-06-04 Gabriele Bartolini Skip WAL archive failure if we have a terminated backup In low workload situations with concurrent backup, at the end of the backup the WAL archive might be temporarily empty and therefore throw a failure with `check` or commands that rely on it such as `backup`. Ignore the error if the last backup is `WAITING_FOR_WALS` as WAL archiving must have been verified before running that backup. 2019-05-20 Drazen Kacar barman-wal-restore: Add --spool-dir option Allow the user to change the spool directory location from the default, avoiding conflicts in case of multiple PostgreSQL instances on the same server. Closes: GH-225, 2ndquadrant-it/barman-cli#2 2019-05-23 Gabriele Bartolini Add '--bwlimit' option to backup and recover commands 2019-05-16 Gabriele Bartolini replication-status doesn't show streamers without a slot Fixes #GH222 2019-05-23 Marco Nenciarini Use latest PostgreSQL release in sample configurations 2019-05-17 Gabriele Bartolini Clarify some options in passive node configuration example 2019-05-16 Gabriele Bartolini Version set to 2.9a1 2019-05-14 Marco Nenciarini Update the ChangeLog file Update NEWS file for release 2.8 Version set to 2.8 2019-05-10 Gabriele Bartolini Improve documentation on backup from standby From now on support only PostgreSQL 9.4+ and recommend just WAL streaming (with replication slots) from the standby as WAL shipping method. 2019-05-13 Gabriele Bartolini Updated requirements section in the documentation Python 3 becomes officially supported. 2.6 and 2.7 are deprecated. Marked pre-9.4 versions of PostgreSQL deprecated. 2019-05-14 Marco Nenciarini Add '--test' option to barman-wal-archive and barman-wal-restore 2019-05-13 Marco Nenciarini Add a warning on empty backup_option with rsync_backup method 2019-05-12 Gabriele Bartolini Cosmetic changes in default barman.conf 2019-05-10 Marco Nenciarini Do not report logical decoding connection is replication-status Report remote command in logs during recovery Clarify check --nagios output about inactive servers Fix issues found by flake8 running on Python 3.x 2019-05-09 Marco Nenciarini Incremental backup copy in passive nodes Add support for `reuse_backup` in geo-redundancy 2019-05-08 Marco Nenciarini Support for double quotes in 'synchronous_standby_names' setting 2019-05-07 Marco Nenciarini Fix sync-wals error if primary has WALs older than the first backup 2019-04-30 Marco Nenciarini Update Sphinx docuemntation build environment 2019-04-15 Giulio Calacoci Merge barman-cli code with barman We are in the process or reorganising the barman codebase. During this stage the code from barman-cli is going to be included in the barman codebase and distributed with the barman package. 2019-04-26 Marco Nenciarini Avoid using dateutil.parser in copy_controller Parsing the date with dateutil.parser is too slow to be used with millions of files. We know the format of the date we are going to parse so we can replace it with a couple of strptime calls. Closes: GH-210 2019-04-12 Jeff Janes Remove spurious message when resetting WAL When calling "barman receive-wal --reset foo", it gives a message: Starting receive-wal for server foo However, it does not actually attempt to start the receive-wal process when called with --reset. Closes: GH-215 2019-04-13 Jeff Janes Fix exclude_and_protect_filter Filters which do not start with '/' are treated as wildcards. For the exclude_and_protect_filter, this is both slow and incorrect. For example, if there were a spurious file named "pg_xact/0000" somewhere other than the top-level dest data directory, the unachored protect filter means it would not get deleted. With an anchored protect filter, it will get deleted, as it should. So fix this by prefixing the filter paths with a '/'. The bug fix is minor (it is not clear why such spurious files would exist in the first place) but the speed-up should be appreciated by anyone with a large number of files in their database. Closes: GH-217 2019-04-24 Marco Nenciarini Fix encoding error in get-wal on Python 3 Make sure that WAL files are read and written as bytes. Closes: GH-221 Fix TypeError exception running sync-info --primary with Python 3 In Python 2, additional positional arguments passed to json.dumps are silently discarded. Python 3 is stricter and highlighted an unused positional argument in a json.dumps call. The argument has been removed. 2019-04-17 Marco Nenciarini Make sure barman configuration does not use a strict ConfigParser In Python 3 ConfigParser has changed to be strict by default. Barman wants to preserve the Python 2 behavior, so we are explicitly building it passing strict=False. 2019-04-16 Marco Nenciarini Add Python 3.7 to unit tests 2019-04-15 Marco Nenciarini Support psycopg2 2.8 in unit tests 2019-04-02 Gabriele Bartolini Collect more PostgreSQL settings during get_remote_status() Added settings are: * archive_timeout * data_checksums * hot_standby * max_wal_senders * max_replication_slots * wal_compression Display the above settings in the `show-server` and `diagnose` commands 2019-03-20 Marco Nenciarini Version set to 2.8a1 Update the ChangeLog file Update NEWS file for release 2.7 Version set to 2.7 Add utility script to set a new barman version Remove obsolete rpp packagin files 2019-03-19 Marco Nenciarini Make `barman cron` resilient to unhandled exceptions Before this patch, any unhandled exceptions raised during the handling of a server, would have terminated the cron, preventing any other maintenance operation required by subsequent servers. Now the exception is logged and the cron continues with eventual other servers. Thanks to MartĂ­n MarquĂ©s for the analysis. Closes: #202 Clarify cron error message on primary server connection failures This patch also avoids to propagate and log the SyncError exception. Fixes: #202 Update import sorting using latest isort 2019-03-01 Marco Nenciarini Fix error handling exceptions containing non-ascii error messages Fixes #194 Fix broken unit test (s/asset_called/assert_called/) 2019-02-17 Marco Nenciarini Avoid failing if the output contains non ascii characters Fixes #196 2019-02-22 Marco Nenciarini Fix backup validation in PostgreSQL older than 9.2 2019-02-05 tomascassidy Fix typo in passive-server.conf-template 2019-02-14 Luc Didry Fix doc typo 2019-02-21 Giulio Calacoci Set version to 2.7a1 2019-02-17 Marco Nenciarini Make CommandMaxRetryExceeded exception serializable The CommandMaxRetryExceeded could be raised by one of the parallel worker subprocesses, and if not serializable it causes a failure reporting the error. Fixes: #199 2019-02-17 Gabriele Bartolini Ignore history/backup/partial files for first sync of geo-redundancy Fixes #198 2019-02-06 Marco Nenciarini Manual: fix example of archiving with barman-wal-archive 2019-01-31 Marco Nenciarini Update the ChangeLog file Prepare release 2.6 2019-01-30 Giulio Calacoci Fix flake8 errors 2019-01-29 Gabriele Bartolini Improved documentation on geo-redundancy Contains also minor fixes and typos fixes 2019-01-10 Marco Nenciarini Add colored output for check and error/warning messages Use ANSI escape codes for color selection 2018-11-15 Giulio Calacoci Geographic redundancy implementation Introduce three new commands (`sync-info`, `sync-backup` and `sync-wals`) and one global/server configuration option called `primary_ssh_command`. When the latter is specified globally, the whole instance of Barman is an async copy of the server reached via SSH by `primary_ssh_command`. If specified on a single server definition, that server in Barman is an async copy of the same server that is defined on another Barman installation. Geo-redundancy is asynchronous and based on SSH connections between Barman servers. Cascading backup is supported. 2019-01-04 Marco Nenciarini Implement put-wal command 2019-01-08 Marco Nenciarini Add utils.fsync_file() method 2019-01-10 Marco Nenciarini Clarify output of list-backup on 'WAITING_FOR_WALS' backups 2018-12-24 Marco Nenciarini Do not treat lock file busy as an error when validating a backup This patch prevents the `barman backup` command to terminate with a failure because of a race condition with the cron starting a backup validation. 2018-12-06 Abhijit Menon-Sen Fix typo: consistencty → consistency 2018-11-23 MartĂ­n MarquĂ©s Typo in NEWS file refering to xlogdb 2018-11-24 Marco Nenciarini Fix current_action in concurrent stop backup errors 2018-11-21 Gabriele Bartolini Documentation: exclude PGDG repository from Barman RPM management Document how to exclude any Barman related software from getting updated via PGDG RPM repositories. 2018-11-13 Marco Nenciarini Fix WAL compression detection algorithm This patch fixes a misdetection of the compression status of WAL files into the archive when compression method changes. 2018-11-09 Giulio Calacoci Set version to 2.6a1 2018-11-08 Marco Nenciarini Honour archiver locking in `wait_for_wal` method Fixes a race between the archiver run by the `cron` and the archiver run by `wait_for_wal` method. Now only one archiver can run at the same time. 2018-11-05 Leonardo Cecchi Make code compliant with the newer Flake8 Fix switch-wal on standby with WAL dir empty This patch fixes an error happening using the `switch-wal` command on a standby server when the WAL directory is empty. Closes: #5993 2018-10-22 Marco Nenciarini Update the ChangeLog file Set version to 2.5 2018-10-17 Leonardo Cecchi Avoid checking failed backups If a backup is in a different state than WAITING_FOR_WALS, we don't need to check it for consistency. 2018-10-17 Gabriele Bartolini Prepared release notes for 2.5 with tentative release date 2018-10-16 Marco Nenciarini Avoid being verbose about missing WAL files in `check-backup` The number of missing WAL files can be huge, and storing such list or displaying it in the error message is consuming and not useful. The check now stops as soon as it finds a missing file, and the message has changed to display only that file. 2018-10-15 Leonardo Cecchi Support switch-wal on standby server The switch-wal command can also be used on standby servers, but only for the `--archive` option. Use XLOG segment size in check_backup The `check_backup` command wasn't using the current XLOG segment size to generate the WAL file names. 2018-10-15 Marco Nenciarini Implement atomic BackupInfo writes 2018-10-15 Leonardo Cecchi Notify users when attempting to recover a WAITING_FOR_WALS backup When a backup which is still in WAITING_FOR_WALS state will be recovered, a warning message will be raised if the get-wal feature is not in use. Another warning message will be raised if the backup is still in the same state after having copied the data files. 2018-10-15 Marco Nenciarini Always update the backup status during `check-backup` execution This change aims to detect cases where the content of the WAL archive has been modified outside Barman. 2018-10-15 Gabriele Bartolini Cover WAL streaming in documentation for backup from a standby 2018-10-14 Marco Nenciarini In PostgreSQL 11 `wal_segment_size` is returned in bytes 2018-10-04 Leonardo Cecchi Add `check-backup` command Make sure that all the required WAL files to check the consistency of a physical backup (that is, from the beginning to the end of the full backup, as outlined in the backup label) are correctly archived. This command is automatically invoked by the `cron` command, and at the end of every backup operation. 2018-10-09 Marco Nenciarini Set version to 2.5a1 2018-09-14 Marco Nenciarini Pin py<1.6.0 to keep 2.6 support 2018-08-02 Marco Nenciarini Fix decoding errors reading external commands output Completed the fix started in commit f14e405e9b36de912899d0735563eed76f479164 The StreamLineProcessor implementation is enough to ensure that the Command out and err property are proper unicode strings or None Closes: #174 Pin pytest-timeout<1.2.1 to continue supporting Python 2.6 2018-05-23 Marco Nenciarini Update the ChangeLog file Set version to 2.4 2018-05-23 Gabriele Bartolini Fix doc about RPM/APT repositories 2018-05-18 Marco Nenciarini Update the ChangeLog file 2018-05-15 Giulio Calacoci Fix invalid "Last Archived WAL" for Postgres < 9.4 Closes #110 #113 2018-05-14 Gabriele Bartolini Fix links syntax for Markdown in documentation Add 2ndQuadrant public repositories info Prepared release notes for 2.4 with tentative release date 2018-05-11 Gabriele Bartolini Downgraded sync standby names messages to debug Fixes #89 2018-05-10 Leonardo Cecchi Ensure CommandWrapper has an unicode output Depending on the version of Python and on the usage, the CommandWrapper was collecting the output of the wrapper command as a byte string or as an unicode string. This patch makes the `out` and the `err` properties of the CommandWrapper be always an unicode string. Closes #150 Closes #143 2018-05-09 Leonardo Cecchi Treat slot names as lowercase PostgreSQL replication slot names can contain only lowercase letters, numbers and the underscore character. This patch makes Barman treating the slot names as lowercase and reporting configuration errors when invalid characters (beside uppercase letters) are used. Closes: #170 2018-05-09 Marco Nenciarini Improve usability of point-in-time recovery Add a check to stop the recovery immediately if the recovery time is before the backup end time. If the timezone is not specified, the target recovery time is interpreted according to the Barman server timezone. This is a behavior change, because previously the specified time was simply passed to PostgreSQL and thus interpreted according the PostgreSQL settings. 2018-05-10 Leonardo Cecchi Fix target_action handling when not specified 2018-05-10 Marco Nenciarini Make DataTransferFailure.from_command_error() more resilient Closes: #86 2018-05-09 Marco Nenciarini Remove workaround for gforcada/flake8-isort#9 Fix remote get_file_content method Recover was always failing to pull .barman-recover.info because of a typo in remote get_file_content method. Closes: #151 2018-05-09 Leonardo Cecchi Ensure item_class is specified for resources to copy Add an assertion to the RsyncCopyController item preventing the code to create items without item_class set. 2018-05-08 Gabriele Bartolini Suggest stricter `archive_command` in documentation Add an example of stricter `archive_command` that checks that it is executed only on a specific server. Suggested by Florent Xicluna (https://github.com/florentx) Closes #11 2018-05-08 Leonardo Cecchi Add '--standby-mode' option to barman recover This option is only available for PostgreSQL older than 9.0 and will make 'barman recover' generate the recovery.conf file even if the get-wal and PITR are not active. 2018-01-12 Todd Seidelmann Add hook script for recovery The list of new hook scripts is: * pre_recovery_script * pre_recovery_retry_script * post_recovery_retry_script * post_recovery_script Closes GitHub #137 2018-05-08 Marco Nenciarini Add hook script for wal deletion The list of new hook scripts is: * pre_wal_delete_script * pre_wal_delete_retry_script * post_wal_delete_retry_script * post_wal_delete_script 2018-05-07 Marco Nenciarini Add hook script for delete command The list of new hook scripts is: * pre_delete_script * pre_delete_retry_script * post_delete_retry_script * post_delete_script 2018-05-08 Leonardo Cecchi Add '--target-action' option to barman recover The option is only active when Barman creates a recovery.conf suitable for PITR. Possible values are: - None (default, for back portability) - shutdown (for PostgreSQL 9.5+) - pause (for PostgreSQL 9.1+) - promote (for PostgreSQL 9.5+) 2017-08-06 Reto Zingg rename command() to barman_command() Fixes #118 2017-07-22 Matthew Hawn Initialise synchronous standby names list if not set Fixes #111 2018-05-07 Gabriele Bartolini Documentation: add limitations about .partial files and recovery Closes Github #79 Documentation: remind that recovery requires a shutdown Postgres Closes GitHub #96 2018-01-15 Feike Steenbergen Correct placeholders ordering The number of backups on disk and the configured redundancy were reported in the wrong order, causing some confusion. Closes GitHub #138 2017-06-28 Ian Barwick Add recovery completed message 2016-10-21 Christoph Moench-Tegeder force the datestyle to iso for replication connections this works around a bug in some psycopg2 versions 2018-05-07 Marco Nenciarini Drop support for Python 3.3 Python 3.3 is EOL since 2017-09-29. 2018-05-04 Giulio Calacoci Fix 2.6 compatibility Fix version of pyton-dateutils to version < 2.7.0, as more recent versions dropped support for py 2.6 2018-05-04 Gabriele Bartolini Fix misleading message about PITR when having just `get-wal` Returns error if `delete` command does not remove the backup 2018-03-18 Gabriele Bartolini Improve max_wal_senders documentation 2018-03-02 Marco Nenciarini Enable more flake8 tests and update the copyright year 2018-02-13 Marco Nenciarini Better way to pin wheel package to support testing on python 2.6 Using setup_requires instead of install_requires we avoid depending on wheel at runtime 2018-02-09 Marco Nenciarini Fix missing documentation in MANIFEST.in 2017-12-19 Gabriele Bartolini Improve documentation for pg_receivewal/pg_receivexlog 2018-02-06 Marco Nenciarini Pin wheel package on python 2.6 to avoid build failures Fix error reported by latest version of flake8-isort 2018-02-02 Marco Nenciarini Split manpages generation code to ease the management. With this patch we also support using pandoc 2.x to generate the documentation. 2018-01-15 Marco Nenciarini Ignore vanished files in streaming directory A file could get renamed by pg_receivewal while Barman reads the content of the streaming directory, resulting in an error message in the logs. With this patch, Barman stops treating it as an error, and ignores it instead. 2018-01-10 Marco Nenciarini Disable minimal tox env in travis-ci The minimal tox env requires psycopg2==2.4.2, but that version does not compile anymore in the travis-ci environment because it does not understand the libpq version returned by PostgreSQL 10. 2017-12-12 Jonathan Battiato Fix exception when calling is_power_of_two(None) The function `is_power_of_two(number)` must return None if the `number` argument is None, instead of printing a Traceback. 2017-12-04 Marco Nenciarini Safer handling of types in FieldListFile class 2017-11-29 Giulio Calacoci Require pytest < 3.3.0 as we are still support Python 2.6 2017-11-29 Gabriele Bartolini Add '--wal-method=none' when pg_basebackup >= 10 Fixes #133 2017-10-03 Flavio Curella fix typo in hooks docs 2017-11-15 Marco Nenciarini Stop process manager module from ovewriting lock files content Previously a bug in the process manager code was writing its own PID in all the existing lock files which didn't have an owner. Due to a bug, the content of all the lock files without owner was overwritten with the PID of every barman command interacting with a server object. Because of this barman cron was wrongly identifying other commands as a running `receive-wal` process and then terminating them. The code has now changed to avoid modifying the content of the lock file when accessed by the process manager. 2017-10-26 Marco Nenciarini Fix some stylistic issues raised by flake8 2017-10-18 Gabriele Bartolini Add Postgres 10 to feature matrix (docs) 2017-09-27 Marco Nenciarini Relax the rules for rsync output parsing In rare cases the rsync error message about vanished files is emitted from the receiver process instead of from the generator. Furthermore recent versions of rsync have changed the capitalization of error messages, so the regular expression Barman uses to parse the output has been generalized and made case insensitive. Set version to 2.4a1 2017-09-04 Marco Nenciarini Update the ChangeLog file Set version to 2.3 2017-09-01 Marco Nenciarini Support `path_prefix` for PostgreSQL 10 With PostgreSQL 10, `pg_receivexlog` has been renamed to `pg_receivewal`. Barman will try both and will pick `pg_receivewal` in case it find both of them. The user can override this behavior by using the `path_prefix` setting and prepending a directory containing only the desired command version. 2017-08-30 Gabriele Bartolini Improve naming consistency with PostgreSQL 10 The `switch-xlog` command has been renamed to `switch-wal`. In commands output, the `xlog` word has been changed to `WAL` and `location` has been changed to `LSN` when appropriate. Improve documentation about recovery target 2017-08-29 Gabriele Bartolini Fix typo in doc for createuser 2017-08-26 Gabriele Bartolini Add `--target-immediate` option to `recover` command Throught the `--target-immediate` option, Barman writes the `recovery_target = 'immediate'` line to recovery.conf. By doing so, PostgreSQL will exit from recovery mode as soon as a consistent state is reached (end of the base backup). Only available for PostgreSQL 9.4 or newer. 2017-08-25 Gabriele Bartolini Show cluster state with `barman status` Similarly to `pg_controldata`, the `status` command now displays the cluster state of a PostgreSQL server ('in production' or 'in archive recovery'). 2017-08-23 Marco Nenciarini Support PostgreSQL 10 in `barman replication-status` command Invoke pg_basebackup with --no-slot option in PostgreSQL 10+ Starting from PostgreSQL 10 pg_basebackup uses a temporary replication slot unless explicitly instructed. Barman don't need it because it already stores the full WAL stream 2017-08-02 Marco Nenciarini Fix exception during exclusive backup with PostgreSQL 10 2017-08-01 Gabriele Bartolini Add `--network-compression` option to remote recovery Enable/disable network compression at run-time to remote recovery with `--network-compression` and `--no-network-compression` options. 2017-08-01 Marco Nenciarini Describe the actual error when invoking archiving hooks script In case of error the `BARMAN_ERROR` variable will contain a string starting with the name of the actual WALFileException subclass. 2017-07-28 Giulio Calacoci Ignore `.tmp` files in `incoming` and `streaming` directories The pg_receivewal utility occasionally writes to a `.tmp` file and then renames it to the final name to ensure an atomic creation. Barman must ignore this temporary file. Other programs could do the same, so Barman will ignore any file name with a `.tmp` suffix in the incoming and streaming directories. 2017-07-20 Leonardo Cecchi Add support to PostgreSQL 10 PostgreSQL 10 renames SQL functions, tools and options that references `xlog` to `wal`. Also WAL related functions referencing `location` have been renamed to `lsn`. That change have been made to improve consistency of terminology. This patch improves Barman adding support to PostgreSQL 10. 2017-07-26 Marco Nenciarini Make flake8 happy again Improve `barman diagnose` robustness 2017-07-22 Marco Nenciarini Fix high memory usage with parallel_jobs > 1 This patch avoids bloating the memory with objects duplicated by pickle/unpickle cycles. Fixes #116 2017-07-21 Marco Nenciarini Improve travis integration Fix unit test for FileWalArchiver to work with Python 3.6 Python 3.6 is stricter about what the `os.path.join` function can receive as input. This change has highlighted missing prerequisite setting in the FileWalArchiver.archive test. Set version 2.3a1 Fix exception in `barman get-wal --peek` requiring history files Fix exception during check if ssh works and conninfo is invalid Make sure that parallel workers are cleaned up in case of errors In CopyController code, at the end of parallel copy, it is necessary to terminate all the parallel workers, whether the copy finishes naturally or it is terminated by an error. Closes: #114 2017-07-17 Marco Nenciarini Update the ChangeLog file 2017-07-14 Marco Nenciarini Set version to 2.2 Update copyright 2017-07-12 Marco Nenciarini Log get-wal source host when called through SSH 2017-07-06 Leonardo Cecchi Check the number of files in the archiving queue Add a new configuration parameter, named `max_incoming_wals_queue`, that enables a new check for the number of files in the incoming directories. This check will fail if the number of WALs to be archived goes over the allowed threshold. This check does not block normal operations. The purpose of this check is to improve robustness of the Barman system when integrated in an alerting/monitoring infrastructure, by warning users in case Barman is not archiving fast enough. 2017-07-10 Marco Nenciarini Fix missing mock in test_pg_stat_archiver_status 2017-07-11 Leonardo Cecchi Show-backup fails on incomplete backups The barman `show-backup` command was failing on failed backups with a stacktrace. Fixed unit tests as well as the bug. 2017-07-05 Marco Nenciarini Update copy_controller unit tests 2017-07-04 Gabriele Bartolini Improve copy output messages 2017-07-03 Leonardo Cecchi Support dynamic WAL size Barman now asks PostgreSQL for the current WAL file size at every start of backup. This information is stored in the backup info and then used while showing statistics. Previously the size of WAL files was hardcoded into Barman, giving wrong statistics when PostgreSQL was compiled with a different value. IMPORTANT: Release notes must mention that the format of the backup info file has changed. A backup made with Barman 2.2 cannot be read by a previous version of Barman (in the rare event that a user downgrades version). 2017-07-05 Leonardo Cecchi Make cuncurrent backup killable Barman was able to recover from a KeyboardInterrupt while executing a backup, so you were not able to interrupt a backup anymore. This patch disable the handling of the SIGINT signal from the worker processes. The signal is now handled by the parent process, which is responsible for the termination of the children processes. The backup will be then stopped in the usual way. 2017-07-04 Gabriele Bartolini Allow replication-status to work against a standby 2017-07-04 Marco Nenciarini Close all PostgreSQL connections before starting pg_basebackup With this commit we avoid keeping an idle transaction during the file copy and fix incorrect end time reported at the end of the backup. Closes: #108, #104 Fix exception in show-backup with postgres backup_method 2017-06-01 Giulio Calacoci Safely handle paths containing special characters This patch makes Barman correctly handle path containing those characters having special meaning to the Unix shells such as quotes, double quotes, spaces, and so on. 2017-06-12 Gabriele Bartolini Improve backup completed message 2017-06-05 Marco Nenciarini Display statistics about the copy gathered during backup The statistics will be displayed in `barman show-backup` output as 'Copy time' and 'Estimated throughput' values. Fix an error message interpolation Make the method rsync_factory private The method rsync_factory should be private, as it must be used only from the copy controller. 2017-05-29 Giulio Calacoci Ensure incoming directory is empty when `archiver=off` This commit adds a check that warns the user when there are files in the incoming directory but the `archiver` option is disabled. This is something that could happen when the archiver is disabled in favor of the `streaming_archiver`, but PostgreSQL is still configured to ship WAL files to the incoming directory. This check is a non blocking check with the purpose of warning the user about the disk filling up with unarchived WALs. Closes: #80 2017-05-25 Giulio Calacoci Add `external_configuration` to `backup_options` It is now possible to instruct Barman that we are aware that configuration files reside outside of PGDATA, through the `external_configuration` value for the `backup_options` option. By doing so, users will suppress any warning regarding external configuration files during backup. 2017-05-23 Giulio Calacoci Command line options to enable/disable `get-wal` usage during recovery Add two options `--get-wal` and `--no-get-wal` to the `barman recover` command. They will control the usage of the `get-wal` option during the recovery, overriding what is specified in the configuration file. 2017-05-26 William Ivanski Documentation on parallel copy Updated documentation and man pages regarding parallel copy feature for both backup and recovery. 2017-05-22 Marco Nenciarini Archive .partial files coming from promotion of streaming source Change the way Barman handles multiple partial files during the archiving process. Archive older partial files as normal files, instead of aborting. Fix .gitignore syntax under sphinx directory 2017-05-12 Gabriele Bartolini Update TODO 2017-04-03 Mitchel Humpherys Document how to stop `cron` It's not immediately clear from the docs how to stop all of the processes that get started by the `cron` command. Add some instructions to the section on `cron` documenting how to stop things properly. Fixes #97 Documentation improvement: clarification about cron It can be a bit surprising to discover that barman doesn't have any sort of daemon program, as many long-running services do. Make this clear up front to avoid confusion. 2017-03-20 CĂ©dric Villemain Documentation improvements 2017-05-05 Marco Nenciarini Ensure that PGCONTROL_CLASS items are copied as last step 2017-05-04 Marco Nenciarini Implement parallel copy for backup/recovery When `parallel_jobs` configuration option (or the `--jobs` run-time option) is set to a value greater than 1, the files to be copied are equally distributed between a number of buckets equal to the number of workers. The current maximum size of a bucket is 10GB. 2017-05-03 Marco Nenciarini In RsyncCopyController use an in-memory file_list instead of a file This provides enough information to the _generate_job to implement a job sharding strategy in a future commit. 2017-05-02 Marco Nenciarini Use a process pool to execute backup and recovery Add initial multiprocessing infrastructure to support parallel backup and recovery using rsync. Added the 'parallel_jobs' global/server configuration option, that specifies the number of parallel processes used for both backup and recovery operations. Default value is 1 (for retro-compatibility). Added also the `--jobs` and `-j` run-time option for the `backup` and `recover` commands to override the server behaviour. At the moment, when the value is set to 2 or more, copy operations are parallelized, but the logic to split them in smaller chunks is not yet implemented. 2017-04-18 Marco Nenciarini Recursively create directories during recovery Closes: SF#44 2017-04-05 Giulio Calacoci Reduce time ServerXLOGDBLock is held while archiving The ServerXLOGDBLock was held from the start to the end of the archiving process, but that was not how it was supposed to be. The implicit contract of a waiting lock such as the ServerXLOGDBLock requires that the lock is kept for the shortest possible time. However, that is not the case when archiving a large number of WAL files or when executing the pre/post archive hooks. This commit changes the acquisition strategy to acquire and release the lock on a per-WAL file basis. Fixes #99 2017-03-31 Marco Nenciarini Fix a docstring typo 2017-03-31 Giulio Calacoci Remove `tablespace_map` file during `recover` Barman takes care of tablespaces relocation during `recover` by creating the appropriate links into `pg_tblspc` directory. The eventual presence of `tablespace_map` file would instruct PostgreSQL to rollback these changes, so it is mandatory to remove this file during `recover`. For the same reason the code that was writing the `tablespace_map` file during `backup` was disabled. Fixes #95 2017-03-09 Marco Nenciarini Improve log messages when a backup fails 2017-02-27 Gabriele Bartolini Improve log message for streaming connections Add the server name in log messages when opening a streaming connection to PostgreSQL fails. Reported by Andreas Kretschmer 2017-02-06 Marco Nenciarini Properly detect broken Postgres connections When a Postgres cursor is required, issue a 'SELECT 1' query to check that connection is properly working. 2017-02-01 Gabriele Bartolini Cosmetic change in documentation 2017-02-01 Marco Nenciarini Reconnect to PostgreSQL if the connection drops Now Barman will try to reconnect automatically if the connection to PostgreSQL drops. Closes: SF#82 2017-01-20 Giulio Calacoci Add a init_check method to CheckStrategy Add a init_check method to the CheckStrategy object, the method will help keeping track of the check execution and produce a clear output in case of timeout failure. Set version 2.2a1 2017-01-05 Giulio Calacoci Update the ChangeLog file Set version to 2.1 2016-12-22 Marco Nenciarini Avoid importing barman.utils module twice 2017-01-03 Gabriele Bartolini Make retry hook script options global (bugfix) 2016-12-27 Marco Nenciarini Update the ChangeLog file 2016-12-26 Gabriele Bartolini Release 2.1a1 2016-12-21 Marco Nenciarini Add PostgreSQL 10 versioning scheme compatibility Fix #73 Exclude extraneous files during tablespace copy PostgreSQL stores the tablespace data in a directory defined in the PostgreSQL source as: "PG_" PG_MAJORVERSION "_" CATALOG_VERSION_NO The CATALOG_VERSION_NO is not easy to retrieve, so we copy "PG_" + PG_MAJORVERSION + "_*" It could select some spurious directory if a development or a beta version have been used, but it's good enough for a production system as it filters out other major versions. Fix #74 2016-12-20 Marco Nenciarini Align the list of excluded files to pg_basebackup Fixes #72 2016-12-18 Marco Nenciarini Return failure when 'barman get-wal' command is used on inactive servers The 'barman get-wal' command is meant to be used used as PostgreSQL's restore_command, so it must succeed only if the target WAL file has been actually returned. 2016-12-17 Marco Nenciarini Add last archived WAL info to diagnose output Show in diagnose the last archived WAL per timeline switch-xlog --archive waits for the closed WAL file Modify the switch-xlog --archive behaviour to wait for the specific WAL file, instead of a generic one. This is faster and it avoids possible issues when a higher timeline is present in the archive. 2016-12-03 Marco Nenciarini Add --archive and --archive-timeout options to switch-xlog command Improve the switch-xlog command adding the --archive and --archive-timeout options. The --archive option will start an archiver process for the selected server, and will wait for 30 seconds for a new xlog to be archived. The --archive-timeout TIMEOUT will allow the user to increase or decrease the number of seconds the archiver process will wait for the archival of a new xlog file, before exiting. 2016-11-26 Gabriele Bartolini Make streaming application name options global Make both 'streaming_archiver_name' and 'streaming_backup_name' global options, as per documentation. Bugfix. Fixes #57 2016-11-27 Marco Nenciarini Fix rsync failures due to files truncated during transfer Fixes #64 2016-11-26 Gabriele Bartolini Fix typo in documentation 2016-11-17 Gabriele Bartolini Convert README in README.rst Suggested by ckeeney. Closes #69 2016-11-24 Giulio Calacoci Correctly handle compressed history files Fix how barman behave when a compressed history files is found. Fixes: #66 Avoid dereferencing symlinks in pg_tblspc when preparing recovery This commit fixes a bug triggered by the presence of a broken tablespace symlink in the target pg_tblspc directory when recovery starts. Fixes: #55 2016-10-06 Martin Swiech Fix comparation of last archiving failure Compare the time of last failure instead of the WAL name to detect archiving failures. Closes: #40, #58 2016-11-13 Marco Nenciarini Avoid failing recovery if postgresql.conf is not writable Fixes: #68 2016-11-08 Giulio Calacoci Add start time and execution time to delete output Improve the output of `barman delete` command by adding some execution time statistics. Additionally, the utility function that prints human readable time deltas has been improved to correctly handle a wider range of values. Closes #67 2016-10-26 Ian Barwick Change references from non-existent `path` option to `path_prefix` 2016-10-28 Marco Nenciarini Exclude files within pg_replslot from backups Thanks to Magnus Hagander for reporting the issue. Ref: https://www.postgresql.org/docs/current/static/continuous-archiving.html#BACKUP-LOWLEVEL-BASE-BACKUP-DATA Fixes #65 2016-10-20 Giulio Calacoci Workaroud to setuptools testrunner bug. Ref links: * https://bitbucket.org/pypa/setuptools/issue/196 * https://github.com/pypa/setuptools/issues/196 2016-10-17 Giulio Calacoci Fix output of the replication-status command. The replication-status command used to emit an exception in some PostgreSQL releases, due to the different structure of the `pg_stat_replication` view. This patch fixes the issue checking for the existence of the fields before writing them to the output. Fixes #56 2016-10-11 Marco Nenciarini Move isort configuration in setup.cfg 2016-10-11 Gabriele Bartolini Add a note in docs about concurrent backup for 9.6 2016-09-30 Giulio Calacoci Split the logic of the copy method in CopyController This patch creates an analisys phase and a copy phase. the analisys phase is responsible for the preparation of the list of files that we want to copy. The copy phase is responsible for the execution of the actual copy using rsync. 2016-10-02 Gabriele Bartolini Fix level of section about WAL verification 2016-09-27 Giulio Calacoci Update sphinx index page 2016-09-26 Gabriele Bartolini Set version 2.1a1 2016-09-26 Marco Nenciarini Update the ChangeLog file 2016-09-26 Gabriele Bartolini Update architecture diagrams 2016-09-26 Marco Nenciarini Review of example configurations in doc/barman.d/ 2016-09-26 Leonardo Cecchi Fix image size in manual 2016-09-26 Gabriele Bartolini Set version to 2.0 2016-09-25 Gabriele Bartolini General review of the manual before 2.0 release 2016-09-23 Giulio Calacoci Add section `Upgrade from Barman 1.X` to manual. 2016-09-23 Leonardo Cecchi Improve documentation of get-wal command This patch improves the documentation of the get-wal command for the local recovery, specifying that the command must be executed as `barman` user and not as the user which is running the PostgreSQL server. It also includes details about the barman-wal-restore command. 2016-09-23 Gabriele Bartolini Update INSTALL, README and TODO files 2016-09-23 Leonardo Cecchi Add Windows server documentation Add a Windows server section in the "Setup a new server in Barman" chapter. 2016-09-21 Leonardo Cecchi Fix wrongly named max_replication_slots configuration parameter 2016-09-20 Marco Nenciarini Update the ChangeLog file 2016-09-19 csawyerYumaed Improve barman(5) manual page, adding conninfo Add additional information to documentation around conninfo. Closes #53 2016-09-20 Marco Nenciarini Set version to 2.0b1 Remove the quickstart guide At the moment, it is an empty document. It may be reintroduced later. 2016-09-20 Leonardo Cecchi Improve configurantion error message The configuration error message raised when a parameter has an invalid value was not telling the wrong value but only the key. This patch improves the error message in that case. 2016-09-16 Giulio Calacoci Add troubleshooting section to manual 2016-09-16 Leonardo Cecchi Improve "Features in detail" section 2016-09-19 Giulio Calacoci Avoid logging tracebacks in case of expected failures There was a few places in the code where an expected error was producing a traceback in the logs. They have been replaced with a simple error output. 2016-09-16 Giulio Calacoci Integrate barman-wal-restore in barman recovery During a remote restore, use the barman-wal-restore command instead of calling `barman get-wal` on the remote machine. It requires the barman-cli package to be installed on the target server. Force special tox environments to use a specific Python version Use Python 2.7 in the 'flake8' environment, because it doesn't work with Python 2.6. Use Python 2.6 in the 'minimal' envorinment, because it doesn't work with Python 3.x due to the presence of Python-2-only modules. Enable the minimal target in Travis-CI again, as it was failing due to the default Python version used there (Python 3.5). 2016-09-19 Marco Nenciarini Fix wrongly named database parameter in configuration examples Thanks to Abhijit Menon-Sen who found it. 2016-09-14 Leonardo Cecchi Add "server commands" documentation section This patch complete the section "Server commands" inside the Barman manual 2016-09-14 Giulio Calacoci Backup command section of the manual 2016-09-14 Leonardo Cecchi Add the "general commands" documentation section This patch complete the section "general commands" inside the Barman manual. 2016-09-13 Leonardo Cecchi Add the "setup new server" documentation section This patch complete the work on the "Setup of a new server in Barman" documentation section. 2016-09-13 Giulio Calacoci Make sure 'dbname' parameter is not set for streaming connections Also fix an issue in the parse_dsn method, many thanks to ThĂ©ophile Helleboid for reporting it. 2016-09-15 Marco Nenciarini Fix flake8 plugin versions 2016-09-13 Marco Nenciarini Make sure path_prefix is honored in every Command subclass Commit ad8002745326fe20a2c4ce2a5e9115a26c5a5f49 contains a typo so it was not working at all. The typo is fixed in this commit. 2016-09-13 Giulio Calacoci Pass `--no-password` option to pg_basebackup and pg_receivexlog Barman will never send any password through the pg_basebackup
or pg_receivexlog standard input channel. Invoking them with the `--no-password` option will produce a cleaner error message in case of authentication failure. Modify tests accordingly. 2016-09-12 Giulio Calacoci Improve the warning message for configuration files outside PGDATA Now the `backup_method=postgres` code emits the warning message for configuration files that are located outside PGDATA only when that's the actual case. 2016-09-12 Gabriele Bartolini Moved barman-wal-restore in barman-cli project 2016-09-12 Marco Nenciarini Enable `show-server` command on inactive or disabled servers 2016-09-09 Marco Nenciarini Add missing release date on manual front page Disable minimal tox env on travis-ci as it doesn't work on py35 Update the ChangeLog file Prepare release 2.0a1 Run minimal and flake8 tox envs in travis-ci 2016-09-09 Gabriele Bartolini Fix flake8 error 2016-08-26 Gabriele Bartolini First stub of documentation for 2.0 This is a first attempt to change the documentation in Barman, which creates two artifacts: a manual and a quickstart guide. The work is currently incomplete, but it is ok for a first alpha release, given that all required information from a technical point of view is in man pages. The reason for this is that now Barman does not have a sequential installation procedure, but different options for backup and WAL archiving that produce several possibile combinations of setups. 2016-09-09 Marco Nenciarini Set last supported version by argh for Python 2.x Add minimal checks in Tox 2016-09-09 Gabriele Bartolini Release notes for 2.0a1 2016-09-09 Marco Nenciarini Rename barman-wal-restore.py to barman-wal-restore 2016-09-09 Leonardo Cecchi Fix exception in barman check Barman check raise an exception when streaming_archiver is on and streaming_conninfo is not configured. This patch controls if the streaming connection is correctly configured before checking the pg_basebackup compatibility, removing the exception cause. 2016-09-09 Marco Nenciarini Remove unit test dependency on environment Previously unit tests were failing the $USER environment variable was not defined. This patch removes this requirement. 2016-09-08 Leonardo Cecchi Make sure path is used in every Command class Switch xlog after a concurrent backup For a backup to be usable, all the XLOG files written between the backup start and the backup end must be archived. This patch makes PostgreSQL switch the current XLOG file after a concurrent backup either using rsync or streaming backup mode, in this way the WAL file containing the backup end position will be archived as soon as possible. 2016-09-07 Giulio Calacoci Add retry support when `backup_method=postgres` Modify the backup executor to handle the retry of a streaming backup with pg_basebackup (`backup_method=postgres`). Between every retry attempt, the PGDATA and the directories that contain the tablespaces are removed. Therefore, subsequent backup attempts restart from scratch. 2016-09-07 Gabriele Bartolini Fix E303 too many blank lines (flake8) 2016-09-07 Marco Nenciarini Support /etc/barman.d in rpm packaging 2016-09-01 Marco Nenciarini Redesign retry logic for backup and recovery The CommandWrapper class is now responsible to specifically design the logic of a retry operation in case of failure. Previously, retry was managed at an outer level, by the backup manager and the executor classes. With this new approach, every single command can now develop its own retry logic. 2016-09-05 Giulio Calacoci Force `archiver=on` when no archiver is active. This is a back-compatibility feature that will be kept in Barman for a few releases, and mitigate the upgrade to version 2.0 (which requires explicit setting of an archiving method - before, `archiver` was `on` by default) 2016-09-05 Gabriele Bartolini Change 'wal_level' to 'replica' in unit tests 2016-08-29 Ian Barwick Enable barman-wal-restore.py to pass -c/--config to Barman This enables barman-wal-restore.py to be used if the Barman server uses a non-default configuration file. 2016-09-02 Gabriele Bartolini Add slot name to `replication-status` (PostgreSQL 9.5+) Handle PostgresConnectionError exception differently Changed the way PostgresConnectionError works, in order to be more easily used in 'check' methods for both standard and streaming connection purposes. Specified also a new exception (PostgresAppNameError). 2016-09-01 Giulio Calacoci Remove any reference to Rsync.smart_copy() Remove the smart copy logic from the command wrappers module, as it is now part of RsyncCopyController. Support 9.6 syntax for `synchronous_standby_names` 2016-09-01 Gabriele Bartolini Cosmetic changes in recovery_executor.py Renamed also some methods as they are private 2016-08-30 Giulio Calacoci Introduce the CopyController module for recovery This patch introduces the use of the RsyncCopyController inside the recovery_executor.py module. 2016-08-31 Gabriele Bartolini Add Config.get_bwlimit() public method Move the private method _bwlimit() from RsyncBackupExecutor class into Config, and rename it into get_bwlimit(). 2016-08-30 Gabriele Bartolini Add status() method for archiver classes 2016-08-30 Marco Nenciarini Add StreamingWalArchiver._is_synchronous() Make code clearer and easier to read by encapsulating checks for synchronous replication in a separate method of the StreamingWalArchiver class. Make code more resilient by checking that PostgreSQL connection is working. 2016-08-25 Marco Nenciarini Introduce the CopyController module for backup This patch adds a new module called copy_controller.py. The new module is responsible for containing the logic of a physical copy of for a backup, starting with basic rsync support. This patch is a refactor of the existing code, with no additional functionality yet. Only backup executor is using this class for now. 2016-08-30 Marco Nenciarini Fix exception in 'check' when postgres is unreachable The check method of PostgresBackupExecutor and ConcurrentBackupStrategy objects were raising an exception if PostgreSQL connection was not working. This commit fixes this behaviour by correctly handling this case. 2016-08-26 Gabriele Bartolini Set default value of 'archiver' to 'off' This is a milestone in Barman's history as it removes the need for standard WAL archiving through the `archive_command` configuration option in PostgreSQL (even though it is still recommended to use it in conjunction with WAL streaming, for more robust architectures). **IMPORTANT**: When upgrading from 1.X.X versions of Barman to 2.X versions, users must explicitly add `archiver = on` (either globally or at server level). Created configuration templates for streaming and Ssh use cases 2016-08-24 Giulio Calacoci Enable streaming-only archiver with replication slots Remove the previous restriction that required standard WAL archiver (`archiver=on`) to be always present. Allow a server to operate with just WAL streaming if a replication slot is set (PostgreSQL 9.4 or higher is required). Replication slots make sure that every WAL file is streamed to the Barman server. Basic checks have been implemented at configuration level, requiring `streaming_archiver=on` and a `slot_name` if `archiver=off`. 2016-08-25 Leonardo Cecchi Improve replication slot error messages Barman didn't catch connection related exceptions in the `receive-wal` subcommand while creating and deleting a replication slot. This patch fixes that and reports to the user the connection error, avoiding to print a stack trace. This commit also adds a specific error message in case of drop of a replication slot that is currently in use. 2016-08-23 Giulio Calacoci Manage 'all replication slots are in use' error during slot creation Display an informative message to the user instead of a raw exception when the PostgreSQL's max_replication_slots setting is too low. 2016-08-23 Leonardo Cecchi Improve replication slot related messages This patch improves the replicaiton slot creation and drop messages quoting the names of the servers and of the replication slots. 2016-08-23 Giulio Calacoci Fix error messages during create and drop of replication slots Modified error message emitted in case of an already existing replication slot during the execution of receive-wal --create-slot. the message have been changed to error from info, replicating the behaviour of pg_receivexlog. Now, in case on error, the barman process exit code will be 1. The error message emitted during the execution of the receive-wal --drop-slot in case of a not existing replication slot have been changed to error as well. 2016-08-23 Marco Nenciarini Set version to 2.0 alpha 1 Anticipating PostgreSQL's new versioning system kicking in from version 10.0, development team has decided to adopt the same policy to Barman's versioning system starting from version 2.0. The development team has also decided that this version deserves to be 2.0 due to the scope of the new features that will be introduced, in particular streaming-only backup and "zero data loss" backups. 2016-08-23 Giulio Calacoci Improve error messages for receive-wal subcommand Error messages for the receive-wal subcommands were incoherent and this patch improves them, using a common form. In addition to that, the availability of the 'slot_name' configuration parameter was checked before the server version, making that check useless if the PostgreSQL server version has no support for replication slots. 2016-08-20 Gabriele Bartolini Support zero data loss backup (synchronous WAL streaming) Automatically start `pg_receivexlog` with `--synchronous` if the following conditions are met: - WAL streaming is active (see `streaming_archiver` and `streaming_conninfo`) - the WAL streamer application name (see `streaming_archiver_name`) is in the `synchronous_standby_names` priority list of the PostgreSQL server (which defines the synchronous standby servers) - PostgreSQL server 9.4 or higher - pg_receivexlog 9.5 or higher This feature allows a Barman backup solution to act like a synchronous standby server in a PostgreSQL business continuity cluster, bringing RPO=0 backups (zero data loss). Currently, RPO=0 requires a replication slot to be properly configured (see `slot_name`). 2016-08-23 Giulio Calacoci Fix exception during `barman diagnose` Barman diagnose was trying to serialize a LooseVersion object to the JSON stream, which is not serializable by default. This patch add the support for (Loose|Strict)Version objects to the BarmanEncoder object treting them as a string. 2016-08-22 Giulio Calacoci Fix archiver by catching ENOENT exception Fixed a corner-case error that could occour when an unexpected file (e.g. .partial file) was not found anymore by the archiver process while trying to move it in the errors directory. This commit also makes logging messages easier to read. 2016-08-17 Giulio Calacoci Add support for replication slots in `receive-wal` command If `slot_name` option is set and `streaming_archiver` is enabled, the `receive-wal` command will use the given replication slot to ensure that no WAL file is lost before its archival. The `check` command will monitor the status of the configured slot on the PostgreSQL side, accordingly with the value of the `streaming_archiver` option: if `streaming_archiver` is on, it will make sure that the slot exists and it is used, otherwise it will warn the user in case a stale slot is found. 2016-08-19 Giulio Calacoci Fix directory permissions when backup_method=postgres This patch fixes how pg_basebackup manages the permissions of the destination directory of a backup on the barman server, forcing 0700 at creation time. The same rights are applied to the destination directory of every tablespace copied. Fix misleading message on pg_receivexlog termination In case of termination of the pg_receivexlog subprocess using a signal, a misleading entry was written in the log file. This patch improves the error message. 2016-08-13 Gabriele Bartolini Introduce batch size for WAL archiving Previously, the `archive-wal` command would scan the incoming directories for both standard and streaming archiving and then process all the available WAL files in one single run. While this remains the default behaviour, two global/server options have been added to Barman: `archiver_batch_size` and `streaming_archiver_batch_size`. The first controls the batch size for the `archiver` process, the latter for the `streaming_archiver` process. The default value is 0, meaning unlimited batch (traditional behaviour in Barman). A value greater than 0 would trigger batch processing of WAL archiving in Barman, limiting a single run of `archive-wal` for the specific incoming queue (file archival or streaming) to that value. For example, setting `archiver_batch_size` to `10` would allow the `archive_wal` command to stop after processing a maximum of 10 WAL segments from `archive_command` in the same run (assuming `archiver` is enabled). In those contexts where `streaming_archiver` is enabled, setting `streaming_archiver_batch_size` to `10` would reach the same goal for WAL segments that have been streamed to Barman. These settings should be tuned based on the server's workload and the frequency of the `barman cron`. A more distributed WAL processing certainly reduces the probability of xlog.db locking (be careful not to set these value too low - the risk is that your Barman server stays behind the server's WAL production). Renamed WalArchiverBatch class into a more appropriate WalArchiverQueue. 2016-08-02 Leonardo Cecchi Add to receive-wal the '--drop-slot' option This patch adds to the 'receive-wal' Barman subcommand a '--drop-slot' option. That option drop the replication slot named in the 'slot_name' configuration parameter. The patch also adds the relative documentation to the Barman man page in the section 1. TODO: section in the tutorial that explains replication slots 2016-07-30 Leonardo Cecchi Add to receive-wal the '--create-slot' option This patch adds to the 'receive-wal' Barman subcommand a '--create-slot' option that creates a replication slot using the PostgreSQL streaming connection. The patch also adds the relative documentation to the Barman man page in the section 1. TODO: section in the tutorial that explains replication slots 2016-08-12 Leonardo Cecchi Correctly handle history files from streaming Since 9.3, `pg_receivexlog` follows timeline switches and creates appropriate `.history` files when needed. Previous implementation in Barman of WAL archiving from streaming connections erroneously skipped history files and treated them as errors. This patch fixes this behaviour. 2016-08-04 Leonardo Cecchi Avoid to lock XLOGDB while checking if WAL archiving is set up The patch avoid to take a lock during the checking of the WAL archiving setup. This is important for invocations of `barman check` to work correctly even when there are long activities on the XLOGDB file, i.e. when the archive process is managing many WAL files. 2016-07-29 Giulio Calacoci Fix flake8 version for Unit Tests 2016-07-28 Leonardo Cecchi Check tablespace-mapping option in pg_basebackup With `postgres` backup method, tablespaces are supported only for PostgreSQL servers 9.3 or higher and pg_basebackup 9.4 or higher. The reason is that pg_basebackup supports the `tablespace-mapping` option only from 9.4, and this option is needed in case there are tablespaces in the server. Given that pg_basebackup 9.4 is not compatible with PostgreSQL 9.1 and 9.2, these versions are not supported in case of tablespace presence. This patch adds a check for this scenario, providing users with warnings and preventing them from starting a backup in case the aforementioned requirements are not met. Documentation has been modified accordingly. 2016-07-19 Marco Nenciarini Add the `slot_name` configuration parameter Setting the `slot_name` parameter on a server running at least PostgreSQL 9.4 will enable the usage of a physical replication slot to track the position of the `receive-wal` process. 2016-07-19 Gabriele Bartolini Cosmetic changes in barman-wal-restore.py help page 2016-07-14 Marco Nenciarini Add a check for spurious messages in ssh_command output The aim of this check is to early detect potential communication problems through the configured ssh_command. For example, if the login script on the PostgreSQL server outputs any messages, this additional output could confuse Barman and therefore trigger random backup failures. 2016-07-13 Leonardo Cecchi Fix replication-status command on PostgreSQL 9.1 Barman was using the `pg_xlog_location_diff` function to calculate the difference in bytes between the master and the standby xlog locations. As `pg_xlog_location_diff` is available only from PostgreSQL 9.2, the `replication-status` command wasn't working on PostgreSQL 9.1. Adds the diff_lsn function to calculate the difference between two xlog locations. Fixes #45 2016-07-07 Marco Nenciarini 9.6 backup API support improvement PostgreSQL 9.6 provides functions to read the control file, so we can avoid parsing the backup_label to know the current timeline. 2016-06-16 Marco Nenciarini Support backup from standby This commit allows to backup standby servers using rsync or the new PostgreSQL 9.6 backup API. Allow invoking current_xlog_info on standby servers Previously, `pg_current_xlog_location` was used to get the current transaction log location, but this function can't be used on a standby server. Now the code checks the server type and use `pg_last_xlog_replay_location` if the server is in recovery mode. Uniform backup_label parsing The backup_label file was previouly parsed in multiple places of code. This code has been moved in a dedicated method. 2016-05-30 Gabriele Bartolini Add support for concurrent backups with PostgreSQL 9.6 As of version 9.6 PostgreSQL support concurrent backups natively. Add support to the new API, using new calls for concurrent backups. Users from PostgreSQL 9.2 to 9.5 can continue using the pgespresso extension. Code has been refactored accordingly. 2016-06-14 Giulio Calacoci Introduce PostgreSQLClient base class Refactor the PgBaseBackup and PgReceiveXlog classes, by moving common code in the PostgreSQLClient base class. Add PgBasebackup class unit tests. 2016-06-16 Giulio Calacoci Fix flake8 problem in tox See: https://github.com/gforcada/flake8-isort/issues/9 2016-06-13 Marco Nenciarini Refine the logic to detect unused WAL files. When multiple timelines are present in the archive, avoid purging WAL files that could be used by a backup on a different timeline. 2016-06-13 Giulio Calacoci Store detailed backup mode in backup.info file The `mode` field is present since long time, but before was always set to `default`. From now on, the `mode` field contains a descriptive string that shows the type of executor involved in the backup (rsync/postgres) and, if present, the strategy of the backup executor (exclusive/concurrent) 2016-06-03 Leonardo Cecchi Add a warning message to show-backup checking timelines If after a backup there is a timeline switch, the "Last WAL" field from the show-backup subcommand will show the last available WAL on the timeline on which the backup was taken and not the last archived one. This behaviour, while it's correct, can confuse the user. Now barman handles such situation and emits a warning if there is more than one timeline reachable from the displayed backup. 2016-06-10 Gabriele Bartolini Fix replication-status with no sent and write locations Fix bug with reuse_backup and backup_method=postgres 2016-06-09 Giulio Calacoci Add `streaming_backup_name` option When `backup_method` is set to `postgres`, the `streaming_backup_name` option sets the `application_name` of the managed `pg_basebackup` connection, improving monitoring of backups taken using `pg_basebackup`. By default, `streaming_backup_name` is set to `barman_streaming_backup`. Available for PostgreSQL 9.3 and above. 2016-06-05 Gabriele Bartolini Refine documentation and messages 2016-06-03 Giulio Calacoci Change psycopg2 cursor type to DictCursor Instruct the cursor object to use DictCursor objects to manage the results of the execute commands. Update calling methods accordingly. 2016-05-31 Giulio Calacoci Move exceptions in a dedicated module Exceptions have been moved in a dedicated `exceptions` module and organised into a hierarchy. 2016-03-30 Stefano Bianucci Base backups through PostgreSQL streaming replication Enable 'streamrep' only base backups with `backup_method=postgres` configuration option (global/server). Requires a valid streaming replication connection. Barman's implementation relies on `pg_basebackup`, therefore the following limitations apply: - `bandwidth_limit` is available with `pg_basebackup` >= 9.4 only - `network_compression`, `reuse_backup` and `tablespace_bandwidth_limit` are not supported - configuration files outside PGDATA are not copied 2016-05-30 Marco Nenciarini Add contrib/barman-wal-restore.py Python version of the WAL restore script to be used as 'restore_command' for recovery or fallback method with standby servers. This script invokes 'barman get-wal' through a secure shell channel, and supports also parallel fetching of WAL files (requires Barman 1.6.1+). Requires argparse. Supersedes barman-wal-restore for bash. 2016-05-27 Giulio Calacoci Limit the maximum execution time of 'barman check' command Add a configurable timeout for the execution of the 'barman check' command. It limits the maximum execution time to 30 seconds per server by default. The user can change this value using the 'check_timeout' configuration parameter. 2016-05-18 Giulio Calacoci Add version properties to PostgreSQL base class Add server_txt_version and server_major_version properties to the PostgreSQL class to quickly retrieve the major version of the PostgreSQL server. Refactor current_xlog_* properties in PostgreSQLConnection Introduce the current_xlog_info property that returns detailed info about current xlog location. Rename current_xlog property as current_xlog_file_name. Now current_xlog_file_name and current_xlog_location properties have been reimplemented and now they call current_xlog_info. Generalise DataTransferFailure exception A DataTransferFailure exception is not necessarily related to rsync only. Make it generic by accepting the command name as argument in the from_command_error factory method. Extract _purge_unused_wal_files method from SshBackupExecutor For reuse purposed, the code responsible for removing unused wal files in the backup method of SshBackupExecutor has been extracted. A new method called _purge_unused_wal_files is now part of the base class. 2016-05-11 Giulio Calacoci Use UnixRemoteCommand to execute remote operations When execute operation on remote server use UnixRemoteCommand instead of manually build an ssh Command. Some pre-existing UnixRemoteCommand invocations have also been fixed to honour the path_prefix setting. 2016-05-18 Marco Nenciarini Set version to 1.6.2a1 Update the ChangeLog file Prepared release 1.6.1 2016-05-16 Giulio Calacoci Clarify switch-xlog and replication-status failure output Change the output messages to be more clear regarding the cause of the failure. 2016-05-12 Gabriele Bartolini Fix traceback for switch-xlog with unknown server 2016-05-09 Marco Nenciarini Avoid logging tracebacks during WAL files deletion During WAL files deletion, if the target file doesn't exists, print a WARNING message and continue. 2016-05-06 Marco Nenciarini Update the ChangeLog file Prepared version 1.6.1a1 2016-05-06 Leonardo Cecchi Fix "PostgreSQL connection forced cleanup message" during unit tests 2016-05-06 Giulio Calacoci Modify manifest to include tutorial file in dist tar. 2016-05-06 Gabriele Bartolini Rolling out 1.6.1a1 Add "replication-status" command The "replication-status" command shows live information and status of any streaming client attached to one or more given servers. The --target option allows users to limit the scope to only hot standby servers ('hot-standby') or WAL streaming clients, such as pg_receivexlog ('wal-streamer'). By default, --target is set to 'all'. 2016-05-05 Gabriele Bartolini Check for 'backup_label' on the master If a PostgreSQL server is abruptly shut down when an exclusive backup is in progress, the 'backup_label' file will stay inside PGDATA. In case of a failed exclusive backup, if the Postgres server is down, "barman check" verifies that a backup_label is present. If so, prints "A 'backup_label' is present". Fixes #69 2016-05-04 Gabriele Bartolini Add check for empty WAL archive Add a check, visible in the check output only if fails, that war the user about a bad configuration of WAL shipping checking the dimension of the xlog.db file. 2016-05-03 Giulio Calacoci Add implementation of the switch-xlog command Implement the switch-xlog command that invokes pg_switch_xlog() on one or any PostgreSQL server. A --force option issues a CHECKPOINT just before the execution of the switch, forcing the server to generate a new WAL file. 2016-05-05 Marco Nenciarini Avoid logging a traceback during check with wrong ssh_command If ssh_command does not exists avoid logging an exception during checks with PostgreSQL versions older than 9.4 2016-05-02 Gabriele Bartolini Add `streaming_archiver_name` option When `streaming_archiver` is enabled, the `streaming_archiver_name` option properly sets the `application_name` of the managed `pg_receivexlog` process, improving monitoring of physical streaming replication clients. By default, `streaming_archiver_name` is set to `barman_receive_wal`. Available for PostgreSQL 9.3 and above. Remove redundant initial assignment 2016-04-28 Gabriele Bartolini Add reference to external project BarmanAPI 2016-04-22 Gabriele Bartolini Use absolute unit values in pretty_size() 2016-04-12 Giulio Calacoci Avoid crashing with a malformed conninfo parameter When a connection fails, prepend the error message with the connnection type ('conninfo' or 'streaming_conninfo'). 2016-04-09 Marco Nenciarini Fix usage of the --dbname option. The --dbname option is available only from version 9.3 of pg_receivexlog. This patch fixes the wal_archiver module, forcing barman when pg_receivexlog version is <= 9.2 to split the conninfo parameter. Fixes #36 2016-04-05 Marco Nenciarini Add timestamp and exit code to barman-wal-restore output 2016-04-01 Marco Nenciarini Make sure PostgreSQL connections are cleanly closed Modified the cli module to wrap every Server's top level command in a closing(server) context. Added also an atexit handler which logs a warning for stale connections. During backup command, the PostgreSQL connections are closed as soon as they are no longer needed. 2016-03-15 Leonardo Cecchi Make Barman unit tests remove temporary folders During the recovery executor unit tests, Barman was leaving a few temporary folders. This patch makes the unit tests remove them and covers a few corner cases where Barman, in consequence of a command failure, was not deleting the temporary folders. 2016-03-16 Rubens Souza Minor change in man page for streaming_conninfo 2016-03-14 Marco Nenciarini Fix warning notices during sphinx execution 2016-03-12 Christoph Moench-Tegeder Mark "failed backups" check as non-fatal Allow taking a new backup in case of presence of failed backups. This bug was introduced in version 1.6.0. 2016-03-11 Marco Nenciarini Rename '-x' get-wal option as '-z' The old '-x' remains as a deprecated undocumented alias. 2016-03-10 Leonardo Cecchi Add archive_mode=always support for PostgreSQL 9.5 This patch adds a basic archive_mode=always support for PostgreSQL 9.5. This archive mode is simply considered equal to "on". Thanks to Koichi Suzuki for opening a bug and proposing a fix. Fixes #32 2016-03-07 Marco Nenciarini Small comment fix in scripts/barman-wal-restore 2016-03-04 Gabriele Bartolini Set version to 1.6.1a1 2016-03-03 Gabriele Bartolini Check for PostgreSQL superuser privileges * Add the is_superuser property to PostgreSQLConnection * Add a related check for the server Closes #30 2016-02-26 Marco Nenciarini Add `--peek SIZE` option to `barman get-wal` When the `--peek SIZE` option is passed to `get-wal`, it will peek from the WAL archive the requested WAL file as well as subsequent files. 'SIZE' must be an integer >= 1. When invoked with this option, get-wal returns a list of zero to 'SIZE' WAL segment names, one per row. 2016-03-01 Marco Nenciarini Refine dependencies on external software Barman requires psycopg2 >= 2.4.2 to support streaming archiving 2016-02-26 Marco Nenciarini Update the ChangeLog file Prepared version 1.6.0 2016-02-24 Giulio Calacoci Fix subtle bug in local recovery 2016-02-20 Marco Nenciarini Depend on pytest-runner module only when tests are actually invoked 2016-02-18 Marco Nenciarini Enable E501 check (long lines) in flake8 Enabled in flake8 the E501 check, and reformatted text according to the new line length policy. Use pytest-runner module to run tests in setup.py 2016-02-18 Leonardo Cecchi Fix check if ssh is missing Catch any 'command not found' errors during ssh check 2016-02-17 Marco Nenciarini Update the ChangeLog file Prepared version 1.6.0b3 2016-02-15 Marco Nenciarini Stop running tests on Python 3.2 2016-02-11 Marco Nenciarini Make the code compatible with Python >= 3.2 All the incompatible constructs were rewritten to support both Python 2.x and 3.x. Previously we were running 2to3 during the setup execution. 2016-02-16 Gabriele Bartolini Add Leonardo Cecchi to authors 2016-02-15 Leonardo Cecchi Rollback transaction after starting a backup Following the complete refactoring of the PostgreSQL connection code, part of this 1.6.0 previous versions (alpha1, beta1 and beta2), Barman is keeping an IDLE connection while taking a backup. This could trigger spurious alerts if a transaction has been left open. 2016-02-15 Giulio Calacoci Fix output of 'barman check --nagios' Display the correct number of servers with 'barman check --nagios' 2016-02-12 Leonardo Cecchi Enhance test coverage for the wal_archiver module Remove the unused 'is_wal_relevant' method as well. 2016-02-12 Gabriele Bartolini Add section about contributing for Barman Add a section about .partial files in the documentation 2016-02-12 Leonardo Cecchi Add 'receive-wal running' check When `streaming_archiver` is enabled, this check ensures that a `receive-wal` process is running. 2016-02-12 Giulio Calacoci Add --reset option to receive-wal comand Add the `--reset` option to the `receive-wal` command, allowing users to reset the WAL location of the streaming archiver. This is useful in case Barman goes out of sync with the master server. 2016-02-10 Marco Nenciarini Update the ChangeLog file 2016-02-10 Gabriele Bartolini Prepared version 1.6.0b2 2016-02-05 Leonardo Cecchi Add check for FAILED backups The 'barman check' command now checks for the presence of failed backups. 2016-02-08 Giulio Calacoci Complete integration of RemoteStatusMixin class Let classes implementing the the get_remote_status method inherit from the RemoteStatusMixin base class, completing the refactoring activity started with a previous commit (3179a1e). 2016-02-08 Marco Nenciarini Fix unwanted removal of duplicate WAL from archive This commit removes an unused and dangerous option from the Compressor interface that allowed the removal of the source WAL file after compression (introduced in 1.6.0 development branch). Fixes: #27 Remove trashing of old WAL files from the archiver The archiver now always archives any file with a valid name that finds inside the incoming directory. NOTE: The block of code that has been removed changes behaviour of existing Barman installations, but in a conservative way. We defer to future versions of Barman to better understand WAL files' sequentiality (parsing history files, for example), by writing specific classes/modules responsible for deeper and more robust checks in the archive area. 2016-02-05 Marco Nenciarini Manage the termination of receive-wal in cron When the 'streaming_archive' option is disabled for a server, a cron execution makes sure that a running receive-wal process is correctly terminated. Clearer output and logging messages for `receive-wal`. 2016-02-05 Leonardo Cecchi Add check for archiver errors Barman now checks for the presence of files in the error directory. 2016-02-04 Giulio Calacoci Improve error handling when required server parameters are missing Add error handling in case a required parameter (i.e. ssh_command, conninfo, ...) is missing, by emitting meaningful error messages. 2016-02-02 Giulio Calacoci Adjust severity of some messages produced by cron command The messages about subprocess execution produced by the cron command were emitted for every cron run. They provide little information and their presence may make the log difficult to analyse, so they have been removed from log. 2016-02-02 Aydan Update docs - Added remote recovery command Closes: #26 2016-02-01 Marco Nenciarini Update the ChangeLog file Prepared version 1.6.0b1 2016-01-29 Marco Nenciarini Fix python 3.2 error on travis-ci Avoid exceptions during ProcessManager initialization Previously a LockFileParsingError exception could have been raised if a lock file were empty. Also, the LockFile class now writes the lock content atomically 2016-01-28 Giulio Calacoci Remove a spurious error when last_failed_wal is a history file Fixes: SF#77 2016-01-27 Giulio Calacoci Fix the 'status' command output with PostgreSQL < 9.4 Make sure only one 'Last archived WAL' line is present. Fix the command used to retrieve the last archived WAL through ssh when the pg_stat_archiver view is not available. Fixes: #25 2016-01-28 Gabriele Bartolini Set version to 1.6.0b1 2016-01-21 Giulio Calacoci Add --stop option to receive-wal command Add the option --stop to the receive-wal command, allowing the user to stop a receive-wal process that running in background for a specific server. The implementation is based on the new class ProcessManager that will be used in the future to manage all barman's sub-processes. 2016-01-24 Gabriele Bartolini Add current data size of the server in 'barman status' 2016-01-22 Gabriele Bartolini Updated NEWS with current code 2016-01-19 Giulio Calacoci Improve archive-wal robustness and log messages Display clearer error messages when discarding a WAL file. Also, WAL files that are older than the first backup are now moved in the 'errors' directory: FAILED backups are now ignored in this process. TODO: Add a method to check the presence of files in the error directory. Fixes: #24 2016-01-21 Marco Nenciarini Move archive-wal code into the wal_archiver module 2016-01-17 Gabriele Bartolini Reorder options in barman.5 man page 2016-01-15 Marco Nenciarini Add include sorting check in tox flake8 environment 2015-12-05 Giulio Calacoci Implement pygzip and pybzip2 compressors The new pygzip and pybzip2 compressors are implemented using Python's internal modules for compressing and decompressing gzip and bzip2 files. This avoids the cost of forking and executing the shell. Initial idea by Christoph Moench-Tegeder 2016-01-14 Marco Nenciarini Update copyright years to 2016 2016-01-08 Giulio Calacoci Add 'receive-wal' cron integration Add integration of the new command 'receive-wal' during the execution of the cron command. If the option 'streaming_archiver' is on, the command 'receive-wal' is automatically executed as subprocess by the cron command, allowing Barman to receive WAL files from PostgreSQL using the native streaming protocol. TODO: Implement a way to interrupt a running streaming process 2015-12-09 Stefano Zacchiroli Add support for the pigz compressor Pigz on-disk format is the same of gzip, but (de)compression is much faster due to the usage of CPU parallelism. For write-intense workloads pigz vs gzip might make the difference, between struggling to keep up with archiving incoming WALs and being able to keep up easily. 2016-01-09 Gabriele Bartolini Add check() method in WalArchiver classes Move code from the server.check_postgres() method in the WalArchiver class, so that each implementation (FileWalArchiver and StreamingArchiver) perform their specific checks. Created the RemoteStatusMixin class that implements a cacheable version of remote status information. Currently it is only used by the WalArchiver class tree. TODO: propagate it to all other classes implementing the get_remote_status() function in a later commit. 2016-01-08 Christoph Moench-Tegeder Permit `archive_mode=always` for 9.5 servers PostgreSQL 9.5 introduces archive_mode=always. Even though Barman's current framework for checks does not allow yet to correctly monitor archiving from standby servers, Barman now allows users to set `archive_mode` to `always`, provided that archiving happens from the master. 2016-01-08 Giulio Calacoci Fix server creation and output of check command Modified the init method of Server Object, managing errors/exception using the msg_list attribute of the configuration. Modified the check command output. 2016-01-04 Giulio Calacoci Rename get_first_backup and get_last_backup methods Renamed get_first_backup() and get_last_backup() methods of the Server and BackupManager classes, respectively into get_first_backup_id() and get_last_backup_id(), for coherence and code clarity. Now the fact that the method returns the ID of a backup instead of a BackupInfo object has been made explicit. Fix management of backup id during backup deletion Fix an error that prevents the deletion of an existing backup while a backup on the same server is in progress. Fixes #22 2015-12-31 Marco Nenciarini Use isort python package to keep imports ordered 2015-12-14 Giulio Calacoci Implement `receive-wal` command The `receive-wal` command receives the stream of transaction logs for a server. The process relies on `pg_receivexlog` to receive WAL files from a PostgreSQL server through the streaming protocol. It is a foreground process which lasts until it receives a SIGINT. 2015-12-31 Marco Nenciarini Add support for long running Commands The Command class now supports the execution of long running subprocesses, by passing the subprocess output and error streams to a handler, line by line. Remove spurious newlines from log lines Error messages coming from libpq often terminate with a newline. Always call strip() on strings that have been extracted from exceptions before logging them. Make get_remote_status methods behaviour coherent A 'get_remote_status' method should never raise an exception in case of error. The expected behaviour is to set missing values to None in the resulting dictionary. 2015-12-29 Leonardo Cecchi Fix exception when streaming connection is unavailable Previously, when 'streaming_archiver' was on and pg_receivexlog correctly installed, Barman would raise an AttributeError exception when streaming connection to PostgreSQL was unavailable, as it could not detect the server version. This commit fixes the error by modifying the management of a failed connection to PostgreSQL through streaming connection. It also adds an unit test for this scenario, as well as hints for the user during `barman check` suggesting a possible streaming connection error. 2015-12-28 Leonardo Cecchi Propagate "-c" option to any Barman subprocess The "-c" option lets users specify a custom location for the configuration file. It must be propagated to every Barman subprocess for consistency of behaviour. Fixes #19 2015-12-24 Gabriele Bartolini Update documentation about WAL archiving 2015-12-22 Marco Nenciarini Manage WAL duplicates in `archive-wal` command In case a WAL file is archived twice, `archive-wal` will check if the new file is identical to the already archived one (compressed WAL files will be decompressed and checked). If yes, the second file is discarded, otherwise it is saved in the 'errors' directory. Accept compressed WAL files in incoming directory In case a WAL file in the incoming directory is already compressed using a known algorithm, archive it as is. Add streaming support to 'archive-wal' command The `archive-wal` command now looks for both archived WAL files (shipped from PostgreSQL through its `archive_command`) and streamed ones (via the `receive-wal` command). 2015-12-24 Giulio Calacoci Add sleep time option to `barman-wal-restore` script Introduce the '-s seconds' option to the barman-wal-restore script. After a failure of the get-wal command, the script will sleep for the specified amount of seconds (default 0, no wait) before exiting the restore_command from PostgreSQL. Closes #7 2015-12-22 Marco Nenciarini Add `streaming_wals_directory` and `errors_directory` options Make sure WAL archiving is atomic. Fixes: #9,#12 2015-12-15 Marco Nenciarini Get rid of pytest warnings from pytest-catchlog 2015-12-11 Marco Nenciarini Restore compatibility with PostgreSQL 8.3 On PostgreSQL older than 8.4, disable the query that detects those settings coming from an included file - as the required pg_setting field was only included in that release. 2015-11-24 Marco Nenciarini Fixes possible unhandled exceptions in barman.postgres Improve the testing coverage of barman.postgres module. 2015-12-06 Christoph Moench-Tegeder Remove redundant sete[gu]id() calls Python's documentation of the os.setuid/os.setgid calls is oversimplified to the point of being wrong. Under the hood, the setuid(2)/setgid(2) functions are used, thus making these calls as POSIX compliant as the underlying operating system. As barman won't be installed SUID (it's an interpreter file), effective, real and saved user id should always be the same. That way, the only reason to use setuid() family calls at all is for a privileged user (root) to change over to the barman (unprivileged) user. According to POSIX.1-2013, the setuid() call changes all three (real, effective and saved) uids if called by a privileged user (the same holds for setgid() and the group ids). In this construct, the additional seti[gu]id calls are redundant no-ops and can be removed. 2015-11-27 Giulio Calacoci Add support for 'streaming_archiver' option Add a global/server boolean option called 'streaming_archiver' which enables the use of the PostgreSQL's streaming protocol to receive transaction logs from a server. If set to 'on', Barman expects to find `pg_receivexlog` in the PATH (see `path` option) and that streaming connection for the server is properly working. Subsequently, it activates both proper connection checks and management of WAL files. Refactored the code to use a new class, the StreamingWalArchiver, which is responsible for managing WAL files using a streaming connection. Add support for 'archiver' option Add a global/server boolean option called 'archiver' which enables continuous WAL archiving (through log shipping using PostgreSQL's archive_command) for a specific server. If set the 'true' (default), Barman expects that PostgreSQL continously deposits WAL files in the 'incoming' directory of that server, and subsequently activates proper checks and management. Refactored the code to use a new class, the FileWalArchiver. The class is in charge of both archival and compression of WAL files. This is the first step towards the implementation of streaming archiving support. 2015-11-25 Marco Nenciarini Reorder constants in barman.config module 2015-11-20 Giulio Calacoci Add `streaming_conninfo` server option Added the `streaming_conninfo` option to Barman configuration. This option (with server scope only), adds the support in Barman for a streaming replication connection to a PostgreSQL server. Added also a simple check for the barman check command, that tests that the streaming connection to PostgreSQL is properly working. 2015-11-13 Giulio Calacoci Add support for `path_prefix` configuration option The `path_prefix` global/server option can contain one or more absolute paths, separated by colon, where Barman looks for executable files. The paths specified in `path_prefix` are tried before the ones specified in `PATH` environment variable. 2015-11-10 Gabriele Bartolini Refactored access to PostgreSQL Created the 'postgres' module which is responsible for any communication with a PostgreSQL server, wrapping all connection and query management activities. This module is the only point of access to PostgreSQL. 2015-11-06 Stefano Bianucci Rename `copy_method` configuration key to `backup_method` 2015-11-03 Giuseppe Broccolo Create an implicit restore point at the end of a backup At the end of a backup, if the PostgreSQL version is 9.1 or newer, create an implicit restore point using the pg_create_restore_point() function. 2015-11-11 Gabriele Bartolini Set version to 1.6.0a1 2015-11-13 Marco Nenciarini Update the ChangeLog file Prepared version 1.5.1 2015-11-13 Giulio Calacoci Create pg_xlog/archive_status directory at the end of recovery On PostgreSQL 8.3, the pg_xlog/archive_status directory is not automatically created, if missing, during the startup. To avoid errors Barman now creates that directory at the end of any recovery operation. 2015-11-13 Marco Nenciarini Converted sphinx directory README to Markdown 2015-11-10 Marco Nenciarini Pin (temporarily) pytest-catchlog to version 1.1 The pytest-catchlog release 1.2.0 broke Python 2.6 compatibility, so pin the 1.1 version until it will be restored. Ref: https://github.com/eisensheng/pytest-catchlog/pull/15 In latest release of pytest-catchlog the result of caplog.records() call is a copy of the event list so any modification of that has no global effect. Change the code that uses caplog.records() to not rely on the previous undocumented behaviour. 2015-11-05 Marco Nenciarini Fix a typo in barman-wal-restore help output 2015-11-04 Marco Nenciarini Update the ChangeLog file Avoid forcing arcfour cypher in barman-wal-restore OpenSSH 6.7 dropped many low security algorithms, and arcfour is one of them. So we stop forcing it in the script, allowing the user to define the wanted algorithm in ~/.ssh/config Ref: http://www.openssh.com/txt/release-6.7 2015-11-04 Giulio Calacoci Improve error messaging for missing config files 2015-11-04 Gabriele Bartolini Set version to 1.5.1b1 2015-10-27 Giulio Calacoci Manage 'wal_level' only for PostgreSQL >= 9.0 Really fixes #3 2015-10-26 Marco Nenciarini Fix all E731 pep8 errors Always use a def statement instead of an assignment statement that binds a lambda expression directly to a name. See: https://www.python.org/dev/peps/pep-0008/#programming-recommendations 2015-10-22 Marco Nenciarini Update the ChangeLog file 2015-10-22 Gabriele Bartolini NEWS for 1.5.1a1 Set version to 1.5.1a1 Revert version to 1.5 branch due to relevant bug fixing 2015-10-12 Giulio Calacoci Add the 'archive-wal' command The 'archive-wal' command executes the WAL maintenance operations on a given server. This command is automatically executed as a subprocess by the cron command, allowing the parallel execution of WAL archiving on different servers. 2015-10-20 Giuseppe Broccolo Avoid 'wal_level' check on PostgreSQL version < 9.0 Conditionally skip 'wal_level' check in PostgreSQL versions prior to 9.0. Fixes #3 Avoid retention policy checks during the recovery Additionally, skip any missing tablespace directory during the deletion of a backup (like we already do with missing pgdata directory) 2015-10-20 Marco Nenciarini Fix more incorrect mock assert calls in unit tests Add flake8-mock plugin in flake8 tox environment to make sure it will not happen again. Some more cleanup of testing infrastructure has been done: * Switch from pytest-capturelog (unresponsive upstream) to pytest-catchlog. * Remove the version pinning from mock as 1.3.0 supports py2.6 again. * Add flake8-copyright and flake8-string-format plugins. 2015-10-09 Giulio Calacoci Allow parallel cron execution for different servers Allow the execution of multiple 'barman cron' processes, each one handling a different server. Servers will be handled sequentially, skipping those that are already being served by another cron process. 2015-10-22 Marco Nenciarini Fix calculation of backup size In Barman 1.5.0 the internal directory structure of a backup has been changed, moving tablespaces from being inside the data directory to being inside the backup directory. The method backup_fsync_and_set_sizes() now takes that into account by running against the whole backup directory. Fixes #5 2015-10-12 Marco Nenciarini Fix some incorrect mock assert calls in unit tests 2015-10-06 Giulio Calacoci Support for mixed compression types in WAL files (#61) Decompress each WAL file using the specific algorithm reported in the XLOG archive (xlogdb). Improve management of xlog.db errors Better management of errors during the decoding of the name of an xlog segment. Added a hint that suggests to run "barman rebuild-xlogdb" to fix corruptions in the xlogdb file. 2015-10-02 Gabriele Bartolini Started version 1.6.0a1 2015-09-25 Marco Nenciarini Update the ChangeLog file Update Copyright notice 2015-09-25 Gabriele Bartolini Remove obsolete section from tutorial Removed a section in the tutorial regarding the 'delete' command, as pointed out by Ian Barwick. 2015-09-25 Marco Nenciarini Enable flake8 in every tox run 2015-09-24 Gabriele Bartolini Prepared version 1.5.0 for final release 2015-09-24 Marco Nenciarini Update tox.ini to allow specifying a target test Also add .cache directory, which is created by latest tox, to .gitignore 2015-09-24 Giulio Calacoci Changed import of call() method. Now is compatible with all versions of py.test libraries 2015-09-16 Giulio Calacoci Support for non-critical checks during backup Add a filter for non-critical checks during backup operations. This patch fixes a bug that prevented users from taking a new backup when minimum redundancy or smelly backup checks failed. 2015-09-15 Marco Nenciarini Update the ChangeLog file 2015-09-15 Gabriele Bartolini Prepared for 1.5.0 alpha 1 2015-09-09 Gabriele Bartolini Converted man pages to Markdown 2015-09-08 Gianni Ciolli Some small fixes to the tutorial 2015-09-01 Francesco Canovai Updated spec file for RPM building 2015-09-04 Giuseppe Broccolo Add barman-wal-restore script Add a simple bash script to be used as `restore_command` in a standby scenario, as fallback method. The script uses ssh to connect to the Barman server and requests the required WAL file for recovery. The script checks that destination path is not a directory. 2015-08-27 Gabriele Bartolini Convert tutorial to Markdown 2015-08-28 Giulio Calacoci Manage options without '=' in PostgreSQL configuration files 2015-08-18 Gabriele Bartolini Allow 'pre' retry hook scripts to stop the command Add EXIT_ABORT_STOP (63) and EXIT_ABORT_CONTINUE (62) exit codes to control how a retry hook script is aborted. Termination of a retry hook script with EXIT_ABORT_CONTINUE informs Barman to continue with its operations. By terminating a retry hook script with EXIT_ABORT_STOP, users request Barman to stop its main operation (i.e. backup or WAL archival). EXIT_ABORT_CONTINUE is implemented by every retry hook script. EXIT_ABORT_STOP is currently implemented only with 'pre_backup_retry_script' and 'pre_archive_retry_script'. EXIT_ABORT_STOP is currently ignored by 'post_backup_retry_script' and 'post_archive_retry_script', and its behaviour in these cases is identical to EXIT_ABORT_CONTINUE. 2015-08-21 Marco Nenciarini Add flake8 tox environment 2015-08-18 Gabriele Bartolini Documentation for 'barman_lock_directory' 2015-08-18 Giulio Calacoci Analyse include directives for PostgreSQL Check if PostgreSQL administrators take advantage of include directives and specify additional files. Include directives (include, include_if_exists, include_dir) are not supported in Barman for files that reside outside PGDATA. During backup, warn users and list the files that require manual backup. During recovery, warn users about the presence of include directives in PostgreSQL configuration. 2015-08-18 Gabriele Bartolini Workaround for rsync on SUSE Linux Many thanks to Christoph Moench-Tegeder for his workaround proposal. This fixes the outstanding issue on SUSE Linux - previously raised by issues #13 and #26. See also: https://bugzilla.opensuse.org/show_bug.cgi?id=898513 2015-08-17 Gabriele Bartolini Added copy_method option (fixed to rsync) 2015-08-06 Giulio Calacoci Support for 'retry' hook scripts for backup and WAL archiving A 'retry' hook script is a special kind of hook scripts that Barman tries to run indefinitely until it either returns a SUCCESS (0) or an ABORT (63) exit code. Safe hook scripts are executed immediately before (pre) and after (post) the command execution. Standard hook scripts are executed immediately before (pre) and after (post) the retry hook scripts. This patch adds support for pre/post retry hook scripts for backup and WAL archiving. The following four global/server configuration options have been added: * pre_backup_retry_script: executed before a backup * post_backup_retry_script: executed after a backup * pre_archive_retry_script: executed before a WAL archive operation * post_archive_retry_script: executed after a WAL archive operation By default, no retry hook script is executed. Environment variables are identical to the equivalent standard hook script. 2015-08-12 Gabriele Bartolini Updated AUTHORS file 2014-05-29 Giulio Calacoci Support for the 'get-wal' command The 'barman get-wal' command allows users to fetch any WAL file from the archive of a specific server in Barman. 2015-08-21 Marco Nenciarini Add simple Travis CI integration 2015-08-11 Gabriele Bartolini Set version 1.5.0a1 2015-07-30 Giulio Calacoci Preserve Timeline history files. Fixes #70. Added check for the management of history files during the removal of a backup or during normal maintenance operations (cron). 2015-08-06 Giulio Calacoci Forbid the delete of a running backup Block the execution of a barman delete command on a backup that is in progress. Use locks to ensure that there are no running backups on that server. Otherwise check for the position of the backup to be deleted in the catalogue and its status: if it is the first backup and its status is STARTED or EMPTY, the backup is running and delete is forbidden. 2015-08-03 Giulio Calacoci Follow symlinks when checking directory paths Check conflicting paths in configuration files using canonical paths and following symlinks when necessary. 2015-07-13 Francesco Canovai Pin mock==1.0.1 for testing. In version 1.1.x mock has changed some behaviours and is currently incompatible with our unit tests. 2015-07-08 Stefano Bianucci Execute check() before starting a backup Execute the full suite of tests from barman check command before starting a backup. Skip the execution of a backup in case check fails. Add a strategy for managing the results of the checks. Now every check is properly logged as error (failure) or debug (success). 2015-07-03 Giulio Calacoci Support code documentation using Sphinx Generate code documentation using Sphinx autodocs 2015-07-13 Giulio Calacoci Modified test for correct management of timezone 2015-07-10 Marco Nenciarini Properly support BackupInfo serialization in JSON format. 2015-07-01 Giulio Calacoci Improved management of configuration in tests Improved and simplified the management of configurations in tests. Added a method for the creation of dictionaries containing all the keys that are usually present in a configuration. Updated tests accordingly. 2015-06-18 Giulio Calacoci Second part of the backup_executor module's refactor Refactored and streamlined the executor module. Introduced a specific class for physical backup with Rsync through Ssh, as well as a strategy pattern for the management of exclusive and concurrent backups (for backups from a standby). 2015-06-23 Gabriele Bartolini Standard error management for server commands Standardised the process of managing errors with server commands in barman/cli.py. By default, inactive servers are skipped (without error) as well as temporarily disabled servers (with error). No distinction is made between calling a command with one server as target or with a list of them (including 'all'). Exceptions are check (no server is skipped, errors are returned only for active servers), cron (no error is ever returned), list-server and diagnose (both managing active/disabled servers with no errors). Inactive servers are the ones with 'active' option set to False. Disabled servers are the ones with internal directory conflicts (e.g. WALs directory = base backup directory). 2015-06-23 Gabriele Bartolini Asciidoc support for man pages and tutorial 2015-06-16 Giulio Calacoci Fixed error in WAL rate calculation. Solved an error during the evaluation of the WAL rate for a backup. Added two basic unit tests. 2015-06-12 Stefano Bianucci Add check for wal_level For better usability, warn users about setting a proper value for wal_level setting in PostgreSQL. 2015-05-14 Stefano Bianucci Add check for conflicting paths in Barman's configuration Added controls for path-clash during the creation of Barman servers. If there are conflicting paths, Barman will disable those servers containing errors. If a potentially destructive command like "backup" is issued on a server containing conflicts, Barman exits with an error message. 2015-05-21 Giulio Calacoci Complete refactor of the 'recover' command The main 'recover' command has been completely refactored, through the creation of a separate module, called 'recovery_executor'. The RecoveryExecutor class now embodies both local and remote operations, laying the road for future improvements. This patch also fixes #68, by disabling dangerous settings in postgresql.auto.conf (available from PostgreSQL 9.4). Basic unit tests have been added. 2015-05-19 Giulio Calacoci Rename class Server to ServerConfig in barman.config module Previously both barman.config and barman.server modules had a Server class. The former has now been renamed to ServerConfig, hence removing the ambiguity. 2015-05-21 Marco Nenciarini Fix incompatibility with tox version >= 2 2015-05-08 Giulio Calacoci Make sure that even an EMPTY backup has a server set. 2015-05-07 Giulio Calacoci Improve xlog.db integrity (Closes: #67) * Execute flush() and fsync() after writing a line in xlog.db * Execute fsync() on incoming directory after every WAL is archived 2015-04-13 Giulio Calacoci Remove unused 'server' argument from WalFile.from_xlogdb_line() This also fix regression in 'barman delete' command introduced with commit 7ac8fe9c41fd7e5636f370abdc92ca785057263e. 2015-04-13 Giulio Calacoci Fix exception during error handling in barman recovery (Closes: #65) 2015-03-24 Giulio Calacoci Improved cache management of backups Streamlined the management of the cache of the backups. It is now possible to register and remove a backup from the cache. The cache structure has been simplified and now it is a simple dictionary of backups. Status filters are applied by the get_available_backups() method. Managed registration and removal of a backup in the cache during backup operations. 2015-03-02 Giulio Calacoci Create backup_executor module and refactor backup. Extract all the methods relative to the execution of a backup into a dedicated object. The RsyncBackupExecutor encapsulates the operation of backing up a remote server using rsync and ssh to copy files. 2015-03-27 Marco Nenciarini Improved management of xlogb file The xlogdb file is now correctly fsynced when updated. Also, the rebuild-xlogdb command now operates on a temporary new file, which overwrites the main one when finished. 2015-03-27 Stefano Bianucci Add "active" configuration option for a server It is now possible to temporarily disable a server through the 'active' configuration option. Defined at server level as a boolean, when set to False the server is ignored by main operational commands such as cron, backup and recover. By default, it is set to True. 2015-03-20 Giulio Calacoci Modified Barman version following PEP 440 rules. Changed Barman version from 1.4.1-alpha1 to 1.4.1a1 following PEP 440 rules. Adapted RPM build scripts to produce packages with the correct names. 2015-03-17 Giulio Calacoci Fix computation of WAL production ratio The WAL file ratio reported in the 'show-backup' command output was wrong because it was considering only the number of WALS produced during the backup instead of the number of WALs produced until next backup. 2015-02-25 Giulio Calacoci Fix for WAL archival stop working if first backup is EMPTY In some rare cases, if an empty backup has left by a failure during a backup, the cron could start trashing WAL files, as if there is no available backups. Closes: #64 2015-03-06 Gabriele Bartolini Added 'barman_lock_directory' global option Barman now allows to specify the default directory for locks through the global option called 'barman_lock_directory', by default set to 'barman_home'. Lock files will be created inside this directory. Names of lock files have been slightly changed. However, this won't affect users of Barman, unless you are relying on their locations and paths. This patch introduces four classes for managing lock files: GlobalCronLock, ServerBackupLock, ServerCronLock and ServerXLOGDBLock. 2015-02-03 Giulio Calacoci New backup directory structure Inside the backup directory the 'pgdata' has been renamed to 'data'. Tablespaces, if present, are stored into individual directories alongside the 'data' directory. During backup and recovery operations, tablespaces are copied individually using a separate rsync command. 2015-02-12 Giulio Calacoci Improve backup delete command Improve robustness and error reporting of backup delete command 2015-02-10 Stefano Bianucci Add unit tests for dateutil module compatibility 2015-02-08 Gabriele Bartolini After a backup, limit cron activity to WAL archiving only (#62) 2015-01-28 Marco Nenciarini Clarify rpm spec comments about pre-releases 2015-01-28 Gabriele Bartolini Updated backlog (TODO list) 2015-01-23 Marco Nenciarini Update metadata in setup.py - Improve barman description - Add Python 3.4 2015-01-23 Gabriele Bartolini Started version 1.4.1-alpha.1 Update the ChangeLog file Prepared version 1.4.0 2015-01-20 Francesco Canovai Updated spec files for RHEL7 2015-01-16 Giulio Calacoci Delete basebackup dir as last action of a delete. Split the delete operation: remove the PGDATA directory first, then the related WAL files and, at last, the basebackup directory. 2015-01-13 Giulio Calacoci Add minimum_redundancy tests in test_retention_policy.py 2015-01-13 Gabriele Bartolini Fix calculation of deduplication ratio 2015-01-12 Gabriele Bartolini Update the ChangeLog file Prepared documentation for version 1.4.0-alpha1 2015-01-11 Gabriele Bartolini Store deduplication effects for incremental backup When incremental backup is enabled and uses hard links (reuse_backup = link), output of 'backup' command reports the effects of deduplication. The metrict is stored along the backup.info file in the 'deduplicated_size' field. IMPORTANT: this metric refers to the increment in size of the current backup from the previous backup and reflects only the situation at backup time. 2015-01-10 Gabriele Bartolini Prepared version 1.4.0-alpha1 Updated copyright to 2015 2015-01-09 Marco Nenciarini Fix smart_copy of tablespaces when using bwlimit option 2015-01-07 Giulio Calacoci Add dedicated exception for PostgreSQL connection errors 2015-01-08 Giulio Calacoci Fix missing argument error in retention policies backup_status method Improve test coverage for retention_policy.py module 2015-01-07 Giulio Calacoci Remove logging of tracebacks on error during backup 2015-01-05 Gabriele Bartolini Avoid logging of tracebacks during smart copy While retrieving the list of files on destination for smart copy, log any failure as error instead of exception 2014-12-22 Giulio Calacoci Unit tests for BackupInfo object 2014-12-24 Giulio Calacoci Change the way BackupInfo are created for testing Merge the method build_test_backup_info and the mock_backup_info. Now we use real BackupInfo objects instead of a Mock 2011-12-07 Marco Nenciarini Incremental base backup implementation Add support for reuse_backup global/server option, accepting three possible values: * off: no incremental backup support (default) * copy: uses the last available backup as source (preventing unmodified files from being copied) * link: same as copy but uses hard links on destination, if the filesystem on the backup server allows it (reducing the occupied space) Add support for command line '--reuse-backup' option (default: link). 2014-12-24 Gabriele Bartolini Allow last_archived_wal to be any xlog file Correctly show any xlog file as last_archived_wal for pre-pg_stat_archiver cases. Improve testing and docstrings for barman/xlog.py module. 2014-12-09 Giulio Calacoci Improve robustness of ssh_command and conninfo options 2014-12-18 Giulio Calacoci pg_stat_archiver support for PostgreSQL 9.4 Integrate pg_stat_archiver with PostgreSQL 9.4 servers for the barman check, show-server and status commands. 2014-11-28 Giulio Calacoci Improve robustness of retention policy unit tests 2014-12-16 Giulio Calacoci Fixes retention policies delete bug (#58) The method responsible for deleting obsolete backup in retention policies enforement, will not raise anymore the 'NoneType object is not iterable'. This prevents barman from terminating abruptly. 2014-11-28 Giulio Calacoci Pass list of available backups to retention policy code 2014-12-02 Giulio Calacoci Include history files in WAL management 2014-12-04 Giulio Calacoci Added a util method to find an executable in system path. If rsync is not present on system, a proper error message is displayed to the user when a command using rsync is issued 2014-12-09 Giulio Calacoci Changed behaviour if pg_ident.conf is missing from an error to a warning 2014-10-22 Marco Nenciarini Remove code to replace output stream when quiet Previously the '-q' option was handled replacing the standard output stream with one which trows away averything it gets. Now it is not needed anymore because we haver a proper output module. 2014-09-26 Giulio Calacoci Remove all remaining output done by yield Migrate all the remaining part using yeld to do output to using the new output module. 2014-10-07 Marco Nenciarini Ignore fsync EINVAL errors on directories (#55) On some filesystem doing a fsync on a directory raises an EINVAL error. Ignoring it is usually safe. 2014-09-23 Giulio Calacoci Modified output module to access protected properties: quiet and debug 2014-09-10 Marco Nenciarini Fix bash autocompleter Minor changes: * Some code formatting adjustments Move cron retention policy management to a separate method 2014-09-05 Marco Nenciarini Fix dates in rpm changelog 2014-09-03 Giulio Calacoci Calculate backup WAL statistics only if the WALs are already processed 2014-09-02 Giulio Calacoci Change default LockFile behaviour to raise if fails acquisition 2014-09-01 Gabriele Bartolini Invoke WAL maintenance after a successful backup * At the end of the 'barman backup' command, maintenance operations are automatically started for successful backups (equivalent to manually executing a 'barman cron' command, just for that server) * Trashing of unuseful WALs (part of 'barman cron') has been changed as follows: * in case of one or more backups, delete WAL files older than the start WAL of the first backup * otherwise, trash WAL files in case of exclusive backup server (that is, not concurrent) 2014-09-03 Marco Nenciarini Remove redundant server argument from HookScriptRunner.env_from_wal_info() 2014-08-27 Gabriele Bartolini Add relpath() and fullpath() methods in WalInfoFile * Remove 'full_path' attribute in WalInfoFile * Add 'relpath()' method to WalInfoFile, which returns the relative path of a WAL file within the 'wals_directory' directory * Add 'fullpath()' method to WalInfoFile, which returns the full path of a WAL file within a server installation (requires a server object) 2014-08-23 Gabriele Bartolini Updated version in .spec file 2014-08-20 Marco Nenciarini Add build_config_from_dicts to testing_helpers module Make Config.Server, WalFileInfo and BackupInfo objects json encodable 2014-08-20 Gabriele Bartolini Added unit to JSON representation of a retention policy Started version 1.3.4-alpha.1 2014-08-18 Gabriele Bartolini Update the ChangeLog file Fixed typo in release date 2014-08-13 Gabriele Bartolini Prepared version 1.3.3 2014-08-12 Marco Nenciarini Add an unit-test for Server.get_wal_full_path() method 2014-08-12 Gabriele Bartolini Refactored building of full path of a WAL file 2014-08-01 Marco Nenciarini Report which file is about to be archived before actually doing it 2014-07-25 Giulio Calacoci Remove traceback from output when Barman is interrupted by CTRL-c Avoid flushing/fsyncing read only files Fixes: #49 EXCEPTION: [Errno 9] Bad file descriptor 2014-07-24 Giulio Calacoci Added Barman's version number to 'barman diagnose' 2014-07-22 Giulio Calacoci Move xlogdb_parse_line method in WalFileInfo class 2014-07-23 Marco Nenciarini Cleanup output API status at the end of test_output.py 2014-07-22 Gabriele Bartolini Estimates WAL production rate for a backup 2014-07-18 Giulio Calacoci Removed duplicate log message at the end of 'barman recover' wal segments copy Fix datetime.timedelta json serialization in 'barman diagnose' command 2014-07-17 Marco Nenciarini Update the ChangeLog file 2014-07-17 Gabriele Bartolini Prepared version 1.3.3-alpha.1 docs 2014-07-17 Marco Nenciarini Really fix "ssh" version detection in "barman diagnose" command 2014-07-16 Giulio Calacoci Add command line options for retry of backup/recover copy Implemented the --retry-times (including --no-retry) and --retry-sleep command line options for backup/recovery copy Emit warnings in case of unexptected configuration options 2014-07-14 Giulio Calacoci Reduce the verbosity of the log for "barman cron" Currently the "barman cron" command emits one log line for every WAL file that's archived (including the server name as a prefix). No log line is emitted for an empty cron run. Make recovery --target-time option more resilient to wrongly formatted values Workaround a bug in dateutil.parser.parse() implementation ref: https://bugs.launchpad.net/dateutil/+bug/1247643 Improved logging for "barman recover" command Default log prefix now contains barman process ID (pid) 2014-07-16 Marco Nenciarini Fix "ssh" version detection in "barman diagnose" command 2014-07-11 Marco Nenciarini Fix wrong variable name in BackupManager.delete_wal() 2014-07-09 Giulio Calacoci Add unit test for LockFile object and server.xlogdb() call Minor changes: - converted test_xlog.py to py.test style 2014-07-11 Giulio Calacoci Make sure remote WAL destination path is a directory Add a trailing slash to the remote WAL destination path, in order to ensure it is a directory 2014-07-07 Giulio Calacoci Fix serialisation of CvsOption during "barman diagnose" command 2014-07-11 Marco Nenciarini Use a WalFileInfo object when decoding an xlogdb line Add --no-human-readable to rsync --list-only invocation In rsync >= 3.1.0 the --list-only format changed adding digit groupings by default in "size" field. To obtain the pre 3.1.0 behavior you need to add --no-human-readable Ref: http://ftp.samba.org/pub/rsync/src/rsync-3.1.0-NEWS 2014-07-09 Marco Nenciarini Log any hook script failure with its output at warning level 2014-07-08 Gabriele Bartolini Wraps xlogdb() code in a try/finally block 2014-06-28 Marco Nenciarini Fix wait parameter logic in LockFile class In previous versions the wait argument on the LockFile constructor was mistakenly ignored, actually preventing the usage of a waiting lock through the Context Manager interface Always use utils.mkpath() to create directories that could already exist Minor changes: - In retry_backup_copy log the exception which caused the failure 2014-06-27 Marco Nenciarini Really ignore vanished files errors in rsync smart copy routine 2014-06-27 Gabriele Bartolini Added info messages for the four phases of the new rsync smart copy Minor changes: - Fix unit tests for basebackup_retry_* config values Updated documentation for 1.3.3-alpha1 Set default for basebackup_retry_times to 0 For compatibility with previous Barman versions, set basebackup_retry_times to 0 as default value. 2014-06-26 Giulio Calacoci Make sure timestamps are tz-aware anywhere in the code Minor changes: - Add basic unit tests for retention policies 2014-06-26 Marco Nenciarini Close all open descriptors but std{in,out,err} when spawning a child process Minor changes: - Remove some dead code - fix missing 'last_backup_maximum_age' as global option 2014-06-24 Gabriele Bartolini Display compression ratio for WALs in show-backup 2014-06-23 Giulio Calacoci Improved Nagios output for check command 2014-06-25 Giulio Calacoci Manage KeyboardInterrupt exception in 'barman backup' 2014-06-23 Gabriele Bartolini Added support for PostgreSQL 8.3 2014-06-24 Marco Nenciarini Updated rpm packaging spec to work with pre-releases Minor changes: - add rsync dependency to barman.spec file 2014-05-29 Giulio Calacoci Support for comma separated list options Added support for a new data type in configuration options: comma separated list values. The first option to be implemented is backup_options, now accepting a list of values. 2014-06-18 Marco Nenciarini Decode binary strings in command_wrapper This fixes python2.7 and python3 compatibility Minor changes: - make scripts/release.sh python3 compatible 2014-06-10 Giulio Calacoci Support for 'last_backup_max_age' This new global/server option allows administrators to set the max age of the last backup, making it easier to detect any issues with periodical backup execution. 2014-06-18 Marco Nenciarini Support for "smart" incremental recovery Avoid invoking rsync with --checksum option during recovery, while maintaining the same level of safety by splitting the copy operation in multiple steps. Barman will only use the --checksum option on files having identical time and size that have been modified after the start of the backup. This change greatly improves the speed of "incremental" recovery. Minor changes: - disable --checksum even for backup. During a backup the rsync destination directory is empty, so it is safe to go with a plain rsync - Put a ".barman-recover.info" with backup metadata inside the destination directory during recover. Use Postgres' server time for both begin_time and end_time Minor changes: - make sure exceptions during backup are logged with stacktraces - commit on disk the backup status just after issuing the PostgreSQL start_backup command Change version to 1.3.3-alpha.1 2014-06-09 Giulio Calacoci Added fsync() for backup and cron operations 2014-06-06 Marco Nenciarini Fix parsing of 'basebackup_retry_times' and 'basebackup_retry_sleep' options 2014-05-30 Giulio Calacoci Fix for #43 recovery.conf not copied on remote recovery 2014-05-08 Giulio Calacoci Retry option for base backup If a network error happens during rsync, add the ability to retry a defined number of time. Two options have been added: * basebackup_retry_times: INT (> 0, default 1) maximum number or retry before giving up * basebackup_retry_sleep: INT (> 0, default 10) wait time (seconds) before retrying, after an error 2014-05-29 Marco Nenciarini Improve robustness of backup code Improve error message about stop_backup failure 2014-04-23 Giulio Calacoci fixed missing pre/post archive parameters. #41 on sourceforge 2014-04-15 Marco Nenciarini Update the ChangeLog file Update unit tests to match current rsync flags 2014-04-15 Gabriele Bartolini Prepared source code for version 1.3.2 2014-04-15 Gabriele Bartolini Added checks for pg_extension (>= 9.1) and pg_is_in_recovery (>= 9.0) 2014-04-11 Marco Nenciarini Update the ChangeLog file 2014-04-10 Marco Nenciarini Always pass --checksum to rsync invocations Emit a warning if backup_options is set to an invalid value Clarify some "permission denied" error 2014-04-08 Gabriele Bartolini Cosmetic change: Pgespresso -> pgespresso 2014-04-07 Marco Nenciarini Update RPM spec file for 1.3.1 2014-04-04 Gabriele Bartolini Prepared documentation for version 1.3.1 2014-04-04 Marco Nenciarini Fix 'barman diagnose' python3 support Improved logging and error reporting 2014-04-03 Gabriele Bartolini Fixed SourceForge bug #36: Unhandled exception for minimum redundancy 2014-04-03 Giulio Calacoci Empty strings are now treated as None in Barman configuration 2014-04-02 Marco Nenciarini Removed spurious "file not found" message in cron output Add release information to 'barman diagnose' Sort 'barman show-server' output Use a Tablespace object to carry tablespace information 2014-03-26 Giulio Calacoci Protect during recovery tablespaces inside PGDATA * When performing a recovery operation, tablespaces that will be recovered inside the new destination directory (PGDATA) are be 'protected' by rsync. This avoids overwrites by rsync when copying PGDATA content. * Add debug messages to FS class 2014-03-24 Gabriele Bartolini Implementation of 'barman diagnose' command (JSON output) 2014-03-21 Gabriele Bartolini Concurrent backup using the 'pgespresso' extension * Fix bwlimit tablespaces backup (missing destination directory) * Purge unused wal files at first backup in concurrent mode * Exclusion of recovery.conf during backup 2014-03-19 Marco Nenciarini Fix unhandled exception in recover when destination dir is not writable 2014-02-19 Marco Nenciarini Make -q command line switch working again Also demote "another cron is running" message from error to info level. 2014-02-02 Marco Nenciarini Update the ChangeLog file Update RPM spec file for release 1.3.0 Review of NEWS and AUTHORS files 2014-01-31 Gabriele Bartolini Updated files for final release 2014-01-30 Marco Nenciarini Improve error messages during remote recovery 2014-01-29 Marco Nenciarini Use fsync to avoid xlog.db file corruption (Closes #32) Add network_compression configuration option (Closes #19) When network_compression is enabled, all network transfers are done using compression (if available). 2014-01-29 Gabriele Bartolini Check directories exist before executing a backup (#14) 2014-01-28 Giulio Calacoci Reduce log verbosity during initialisation phase 2014-01-28 Gabriele Bartolini Load configuration files after logger initialisation 2014-01-21 Marco Nenciarini Avoid tablespaces inside pgdata directory from being copied twice 2014-01-09 Marco Nenciarini Generalise recovery operations (local/remote) 2014-01-28 Gabriele Bartolini Reviewed documentation of WAL archive hook scripts 2014-01-07 Marco Nenciarini Add pre_archive_script and post_archive_scrip hook scripts 2014-01-23 Marco Nenciarini Refactor the LockFile management class to report permission errors. Fix 'Invalid cross-device link' error in cron when incoming is on a different filesystem (merge request #4 by Holger Hamann) 2014-01-22 Marco Nenciarini Port 'show-server' command to the new output interface 2014-01-21 Giulio Calacoci Updated copyright (2014) 2014-01-17 Marco Nenciarini Port 'status' and 'list-server' commands to the new output interface 2014-01-09 Marco Nenciarini Port the 'show-backup' command to the new output interface 2014-01-16 Giulio Calacoci Added implementation for backup command --immediate-checkpoint option and immediate_checkpoint configuration option 2014-01-08 Gabriele Bartolini Bump version number and add release notes for 1.3.0 2013-11-27 Giulio Calacoci Add unit tests for infofile and compression modules Fix some python3 compatibility bugs highlighted by the tests 2013-10-18 Marco Nenciarini Move barman._pretty_size() to barman.utils.pretty_size() 2014-01-03 Marco Nenciarini Implement BackupInfo as a FieldListFile and move it in infofile module. 2014-01-07 Marco Nenciarini Refactor output to a dedicate module. The following commands have been ported to the new interface: * backup * check * list-backup A special NagiosOutputWriter has been added to support Nagios compatible output for the check command WARNING: this code doesn't run due to a circular dependency. The issue will be fixed in the next commit 2013-09-12 Marco Nenciarini Isolate subrocesses' stdin/stdout in command_wrappers module 2014-01-07 Marco Nenciarini Refactor hooks management 2013-09-12 Marco Nenciarini Split out logging configuration and userid enforcement from the configuration class. 2013-12-16 Gabriele Bartolini Added rebuild-xlogdb command man page 2013-11-08 Marco Nenciarini Implement the rebuild-xlogdb command. (Closes #27) 2013-11-19 Giulio Calacoci added documentation for tablespaces relocation (#22) 2013-10-30 Gabriele Bartolini Added TODO list 2013-09-05 Marco Nenciarini Update the ChangeLog file Bump version to 1.2.3 2013-08-29 Gabriele Bartolini Updated README and man page Added stub of release notes 2013-08-26 Marco Nenciarini Initial Python 3 support Update setup.py to support py.test and recent setuptools 2013-08-24 Damon Snyder 27: Addresses potential corruption of WAL xlog.db files. In barman.lockfile.release() the file is unlinked (deleted). This effectively nullifies any future attempts to lock the file by a blocking process by deleting the open file table entry upon which the flock is based. This commit removes the unlink and instead unlocks the file and then closes the file descriptor leaving the lock file and open file table entry intact. 2013-08-22 Marco Nenciarini Add support for restore target name (PostgreSQL 9.1+) 2013-08-21 Marco Nenciarini PostgreSQL version in backup.info file is an integer Make WAL sequence calculation compatible with PostgreSQL 9.3 With PostgreSQL 9.3 WAL files are written in a continuous stream, rather than skipping the last 16MB segment every 4GB, meaning WAL filenames may end in FF. 2013-06-24 Marco Nenciarini Update the ChangeLog file Fix config file parser tests Bump version to 1.2.2 Fix python 2.6 compatibility Fix history in spec file 2013-06-17 Marco Nenciarini Update RPM spec file 2013-06-13 Marco Nenciarini Update the ChangeLog file Fix remote recovery with bwlimit on a tablespace 2013-06-07 Marco Nenciarini Added the "tablespace_bandwidth_limit" option 2013-06-12 Gabriele Bartolini Updated docs and man pages for 1.2.1 Prepared NEWS file for 1.2.1 release 2013-04-26 Gabriele Bartolini Added the "bandwidth_limit" global/server option which allows to limit the I/O bandwidth (in KBPS) for backup and recovery operations Added /etc/barman/barman.conf as default location 2013-03-13 Gabriele Bartolini Removed duplicate message for previous backup in show command 2013-03-07 Gabriele Bartolini Cosmetic change in message for "all" reserved section 2013-02-08 Marco Nenciarini Avoid triggering the minimum_redundancy check on FAILED backups Add BARMAN_VERSION to hook script environment 2013-01-31 Marco Nenciarini Update the ChangeLog file Update RPM's spec files 2013-01-30 Gabriele Bartolini Finalised files for version 1.2.0 2013-01-28 Marco Nenciarini Forbid the usage of 'all' word as server name 2013-01-11 Gabriele Bartolini Added basic support for Nagios plugin output for check command through the --nagios option 2013-01-28 Marco Nenciarini Add @expects_obj decorator to cli function as required by the upcoming Argh 1.0 API 2013-01-11 Marco Nenciarini Migratte to new argh api. Now barman requires arg => 0.21.2 and argcomplete- 2013-01-11 Gabriele Bartolini Prepared release notes 2012-12-18 Marco Nenciarini Fix typo in doc/barman.conf 2012-12-14 Marco Nenciarini Return failure exit code if backup command fails in any way 2012-12-14 Gabriele Bartolini Prepared copyright lines for 2013 Updated documentation and man pages Added retention policy examples in configuration file 2012-12-13 Marco Nenciarini Q/A on retention policy code 2012-12-12 Marco Nenciarini Fix configuration parser unit tests Exit with error if an invalid server name is passed in any command which takes a list of server 2012-12-08 Gabriele Bartolini Add retention status to show-backup and list-backup commands Auto-management of retention policies for base backups Using the report() method for retention policies, enforce retention policy through cron (if policy mode is 'auto'), by deleting OBSOLETE backups. Retention status and report() method for retention policies Created the following states for retention policies: VALID, OBSOLETE, NONE and POTENTIALLY_OBSOLETE (an object which is OBSOLETE but cannot be removed automatically due to minimum_redundancy requirements). Created the report() method for the retention policy base class, which exected the _backup_report() method for base backups and the _wal_report() method for WAL retention policies (currently not enforced). The report method iterates through the DONE backups and according to the retention policy, classifies the backup. RedundancyRetentionPolicy uses the number of backups, RecoveryWindowRetentionPolicy uses the time window and the recoverability point concept. Integrated minimum_redundancy with "barman check" Initialisation of retention policies for a server Added the _init_retention_policies() method in the Server class constructor, which integrates with the new RetentionPolicy classes and performs syntax checking. Integrated retention policies with log, 'barman check' and 'barman status'. String representation conforms to retention syntax The string representation produces now a syntax-valid retention policy configuration string. The previous __str__ method has been renamed into debug() SimpleWALRetentionPolicy objects are now created from the server's main retention policy by the factory class. 2012-12-07 Gabriele Bartolini Add the global/server option minimum_redundancy. Check it is >= 0. Guarantees that when delete is performed (or retention policies are enforced), this is the minimum number of backups to be kept for that server. Add support for retention_policy_mode global/server option which defines the method for enforcing retention policies (currently only "auto", in future versions "manual" will be allowed) Added first stub of retention policy classes Started version 1.2.0 2012-12-04 Marco Nenciarini Fix unit config tests Update the ChangeLog file Add ssl_*_file and unix_socket_directory to dangerous options list Display tablespace's oid in show-backup output Alphabetically sort servers in all commands output Don't give up on first error in 'barman check all' command 2012-12-03 Gabriele Bartolini Added sorting of files in configuration directory 2012-11-29 Marco Nenciarini Fix regression in barman check command when configuration_files_directory is None Update rpm files to 1.1.2 release 2012-11-29 Carlo Ascani Update README 2012-11-29 Gabriele Bartolini Prepared files for release 2012-11-28 Gabriele Bartolini Add the configuration_files_directory option which allows to include multiple files from a directory 2012-11-29 Carlo Ascani Update README 2012-11-28 Marco Nenciarini Update NEWS file 2012-11-05 Gabriele Bartolini Added support for list-backup all 2012-11-04 Gabriele Bartolini Added latest/oldest for show-backup, delete, list-files and recover commands Added get_first_backup and get_last_backup functions to Server class Added application_name management for PostgreSQL >= 9.0 2012-11-13 Gabriele Bartolini Switched to version 1.1.2 Continue if a WAL file is not found during delete (bug #18) 2012-11-04 Gabriele Bartolini Includes version 90200 for tablespace new function 2012-10-16 Marco Nenciarini Update the ChangeLog file Update NEWS file and rpm package Bump version to 1.1.1 Add more information about the failing line in xlogdb_parse_line errors 2012-10-15 Marco Nenciarini Fix two bug on recover command 2012-10-12 Marco Nenciarini Update the ChangeLog file Update rpm changelog Make recover fail if an invalid tablespace relocation rule is given Remove unused imports from cli.py 2012-10-11 Gabriele Bartolini Updated version to 1.1.0 Fixes bug #12 2012-10-11 Marco Nenciarini Fail fast on recover command if the destination directory contains the ':' character (Closes: #4) Fix typo in recovery messages Report an informative message when pg_start_backup() invocation fails because an exclusive backup is already running (Closes: #8) Make current_action an attribute of BackupManager class 2012-10-08 Gabriele Bartolini Added ticket #10 to NEWS Add pg_config_detect_possible_issues function for issue #10 2012-10-04 Gabriele Bartolini Updated NEWS file with bug fixing #9 Fixes issue #9 on pg_tablespace_location() for 9.2 2012-08-31 Marco Nenciarini Add BARMAN_PREVIOUS_ID variable to hooks environment 2012-08-20 Marco Nenciarini Merge spec changes from Devrim Add BARMAN_ERROR and BARMAN_STATUS variables to hook's environment Added backup all documentation to README 2012-08-20 Gabriele Bartolini Updated release notes Set version to 1.0.1 2012-08-20 Marco Nenciarini Document {pre,post}_backup_script in README Document {pre,post}_backup_script in configuration man-page 2012-08-17 Marco Nenciarini Add pre/post backup hook scripts definition (Closes: #7) Add the possibility to manage hook scripts before and after a base backup. Add the global (overridden per server) configuration options called: * pre_backup_script: executed before a backup * post_backup_script: executed after a backup Use the environment to pass at least the following variabiles: * BARMAN_BACKUP_DIR: backup destination directory * BARMAN_BACKUP_ID: ID of the backup * BARMAN_CONFIGURATION: configuration file used by barman * BARMAN_PHASE: 'pre' or 'post' * BARMAN_SERVER: name of the server The script definition is passed to the shell and can return any exit code. Barman won't perform any exit code check. It will simply log the result in the log file. To test it you can try adding pre_backup_script = env | grep ^BARMAN post_backup_script = env | grep ^BARMAN in your barman config and you'll see the variables on console. 2012-08-16 Marco Nenciarini Add documentation for 'backup all' command. 2012-07-19 Gabriele Bartolini Add 'backup all' shortcut and, in general, multiple servers specification (issue #1) Add 'backup all' shortcut and, in general, multiple servers specification (issue #1) 2012-07-16 Gabriele Bartolini Fixed typo (thanks to Daymel Bonne SolĂ­s) 2012-07-06 Marco Nenciarini Initial commit