ÿØÿà JFIF ÿþ >CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality
ÿÛ C
Server IP : 172.67.171.101 / Your IP : 216.73.216.123 Web Server : Apache System : Linux server1.morocco-tours.com 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64 User : zagoradraa ( 1005) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/include/mysql/server/private/ |
Upload File : |
| Current File : /usr/include/mysql/server/private//mdl.h |
#ifndef MDL_H
#define MDL_H
/* Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
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; version 2 of the License.
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, write to the Free Software Foundation,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */
#include "sql_plist.h"
#include <my_sys.h>
#include <m_string.h>
#include <mysql_com.h>
#include <lf.h>
class THD;
class MDL_context;
class MDL_lock;
class MDL_ticket;
bool ok_for_lower_case_names(const char *name);
/**
@def ENTER_COND(C, M, S, O)
Start a wait on a condition.
@param C the condition to wait on
@param M the associated mutex
@param S the new stage to enter
@param O the previous stage
@sa EXIT_COND().
*/
#define ENTER_COND(C, M, S, O) enter_cond(C, M, S, O, __func__, __FILE__, __LINE__)
/**
@def EXIT_COND(S)
End a wait on a condition
@param S the new stage to enter
*/
#define EXIT_COND(S) exit_cond(S, __func__, __FILE__, __LINE__)
/**
An interface to separate the MDL module from the THD, and the rest of the
server code.
*/
class MDL_context_owner
{
public:
virtual ~MDL_context_owner() {}
/**
Enter a condition wait.
For @c enter_cond() / @c exit_cond() to work the mutex must be held before
@c enter_cond(); this mutex is then released by @c exit_cond().
Usage must be: lock mutex; enter_cond(); your code; exit_cond().
@param cond the condition to wait on
@param mutex the associated mutex
@param [in] stage the stage to enter, or NULL
@param [out] old_stage the previous stage, or NULL
@param src_function function name of the caller
@param src_file file name of the caller
@param src_line line number of the caller
@sa ENTER_COND(), THD::enter_cond()
@sa EXIT_COND(), THD::exit_cond()
*/
virtual void enter_cond(mysql_cond_t *cond, mysql_mutex_t *mutex,
const PSI_stage_info *stage, PSI_stage_info *old_stage,
const char *src_function, const char *src_file,
int src_line) = 0;
/**
@def EXIT_COND(S)
End a wait on a condition
@param [in] stage the new stage to enter
@param src_function function name of the caller
@param src_file file name of the caller
@param src_line line number of the caller
@sa ENTER_COND(), THD::enter_cond()
@sa EXIT_COND(), THD::exit_cond()
*/
virtual void exit_cond(const PSI_stage_info *stage,
const char *src_function, const char *src_file,
int src_line) = 0;
/**
Has the owner thread been killed?
*/
virtual int is_killed() = 0;
/**
This one is only used for DEBUG_SYNC.
(Do not use it to peek/poke into other parts of THD.)
*/
virtual THD* get_thd() = 0;
/**
@see THD::notify_shared_lock()
*/
virtual bool notify_shared_lock(MDL_context_owner *in_use,
bool needs_thr_lock_abort) = 0;
};
/**
Type of metadata lock request.
@sa Comments for MDL_object_lock::can_grant_lock() and
MDL_scoped_lock::can_grant_lock() for details.
*/
enum enum_mdl_type {
/*
An intention exclusive metadata lock. Used only for scoped locks.
Owner of this type of lock can acquire upgradable exclusive locks on
individual objects.
Compatible with other IX locks, but is incompatible with scoped S and
X locks.
*/
MDL_INTENTION_EXCLUSIVE= 0,
/*
A shared metadata lock.
To be used in cases when we are interested in object metadata only
and there is no intention to access object data (e.g. for stored
routines or during preparing prepared statements).
We also mis-use this type of lock for open HANDLERs, since lock
acquired by this statement has to be compatible with lock acquired
by LOCK TABLES ... WRITE statement, i.e. SNRW (We can't get by by
acquiring S lock at HANDLER ... OPEN time and upgrading it to SR
lock for HANDLER ... READ as it doesn't solve problem with need
to abort DML statements which wait on table level lock while having
open HANDLER in the same connection).
To avoid deadlock which may occur when SNRW lock is being upgraded to
X lock for table on which there is an active S lock which is owned by
thread which waits in its turn for table-level lock owned by thread
performing upgrade we have to use thr_abort_locks_for_thread()
facility in such situation.
This problem does not arise for locks on stored routines as we don't
use SNRW locks for them. It also does not arise when S locks are used
during PREPARE calls as table-level locks are not acquired in this
case.
*/
MDL_SHARED,
/*
A high priority shared metadata lock.
Used for cases when there is no intention to access object data (i.e.
data in the table).
"High priority" means that, unlike other shared locks, it is granted
ignoring pending requests for exclusive locks. Intended for use in
cases when we only need to access metadata and not data, e.g. when
filling an INFORMATION_SCHEMA table.
Since SH lock is compatible with SNRW lock, the connection that
holds SH lock lock should not try to acquire any kind of table-level
or row-level lock, as this can lead to a deadlock. Moreover, after
acquiring SH lock, the connection should not wait for any other
resource, as it might cause starvation for X locks and a potential
deadlock during upgrade of SNW or SNRW to X lock (e.g. if the
upgrading connection holds the resource that is being waited for).
*/
MDL_SHARED_HIGH_PRIO,
/*
A shared metadata lock for cases when there is an intention to read data
from table.
A connection holding this kind of lock can read table metadata and read
table data (after acquiring appropriate table and row-level locks).
This means that one can only acquire TL_READ, TL_READ_NO_INSERT, and
similar table-level locks on table if one holds SR MDL lock on it.
To be used for tables in SELECTs, subqueries, and LOCK TABLE ... READ
statements.
*/
MDL_SHARED_READ,
/*
A shared metadata lock for cases when there is an intention to modify
(and not just read) data in the table.
A connection holding SW lock can read table metadata and modify or read
table data (after acquiring appropriate table and row-level locks).
To be used for tables to be modified by INSERT, UPDATE, DELETE
statements, but not LOCK TABLE ... WRITE or DDL). Also taken by
SELECT ... FOR UPDATE.
*/
MDL_SHARED_WRITE,
/*
An upgradable shared metadata lock for cases when there is an intention
to modify (and not just read) data in the table.
Can be upgraded to MDL_SHARED_NO_WRITE and MDL_EXCLUSIVE.
A connection holding SU lock can read table metadata and modify or read
table data (after acquiring appropriate table and row-level locks).
To be used for the first phase of ALTER TABLE.
*/
MDL_SHARED_UPGRADABLE,
/*
A shared metadata lock for cases when we need to read data from table
and block all concurrent modifications to it (for both data and metadata).
Used by LOCK TABLES READ statement.
*/
MDL_SHARED_READ_ONLY,
/*
An upgradable shared metadata lock which blocks all attempts to update
table data, allowing reads.
A connection holding this kind of lock can read table metadata and read
table data.
Can be upgraded to X metadata lock.
Note, that since this type of lock is not compatible with SNRW or SW
lock types, acquiring appropriate engine-level locks for reading
(TL_READ* for MyISAM, shared row locks in InnoDB) should be
contention-free.
To be used for the first phase of ALTER TABLE, when copying data between
tables, to allow concurrent SELECTs from the table, but not UPDATEs.
*/
MDL_SHARED_NO_WRITE,
/*
An upgradable shared metadata lock which allows other connections
to access table metadata, but not data.
It blocks all attempts to read or update table data, while allowing
INFORMATION_SCHEMA and SHOW queries.
A connection holding this kind of lock can read table metadata modify and
read table data.
Can be upgraded to X metadata lock.
To be used for LOCK TABLES WRITE statement.
Not compatible with any other lock type except S and SH.
*/
MDL_SHARED_NO_READ_WRITE,
/*
An exclusive metadata lock.
A connection holding this lock can modify both table's metadata and data.
No other type of metadata lock can be granted while this lock is held.
To be used for CREATE/DROP/RENAME TABLE statements and for execution of
certain phases of other DDL statements.
*/
MDL_EXCLUSIVE,
/* This should be the last !!! */
MDL_TYPE_END};
/** Duration of metadata lock. */
enum enum_mdl_duration {
/**
Locks with statement duration are automatically released at the end
of statement or transaction.
*/
MDL_STATEMENT= 0,
/**
Locks with transaction duration are automatically released at the end
of transaction.
*/
MDL_TRANSACTION,
/**
Locks with explicit duration survive the end of statement and transaction.
They have to be released explicitly by calling MDL_context::release_lock().
*/
MDL_EXPLICIT,
/* This should be the last ! */
MDL_DURATION_END };
/** Maximal length of key for metadata locking subsystem. */
#define MAX_MDLKEY_LENGTH (1 + NAME_LEN + 1 + NAME_LEN + 1)
/**
Metadata lock object key.
A lock is requested or granted based on a fully qualified name and type.
E.g. They key for a table consists of <0 (=table)>+<database>+<table name>.
Elsewhere in the comments this triple will be referred to simply as "key"
or "name".
*/
class MDL_key
{
public:
#ifdef HAVE_PSI_INTERFACE
static void init_psi_keys();
#endif
/**
Object namespaces.
Sic: when adding a new member to this enum make sure to
update m_namespace_to_wait_state_name array in mdl.cc!
Different types of objects exist in different namespaces
- TABLE is for tables and views.
- FUNCTION is for stored functions.
- PROCEDURE is for stored procedures.
- TRIGGER is for triggers.
- EVENT is for event scheduler events
Note that although there isn't metadata locking on triggers,
it's necessary to have a separate namespace for them since
MDL_key is also used outside of the MDL subsystem.
*/
enum enum_mdl_namespace { GLOBAL=0,
SCHEMA,
TABLE,
FUNCTION,
PROCEDURE,
PACKAGE_BODY,
TRIGGER,
EVENT,
COMMIT,
USER_LOCK, /* user level locks. */
/* This should be the last ! */
NAMESPACE_END };
const uchar *ptr() const { return (uchar*) m_ptr; }
uint length() const { return m_length; }
const char *db_name() const { return m_ptr + 1; }
uint db_name_length() const { return m_db_name_length; }
const char *name() const { return m_ptr + m_db_name_length + 2; }
uint name_length() const { return m_length - m_db_name_length - 3; }
enum_mdl_namespace mdl_namespace() const
{ return (enum_mdl_namespace)(m_ptr[0]); }
/**
Construct a metadata lock key from a triplet (mdl_namespace,
database and name).
@remark The key for a table is <mdl_namespace>+<database name>+<table name>
@param mdl_namespace Id of namespace of object to be locked
@param db Name of database to which the object belongs
@param name Name of of the object
@param key Where to store the the MDL key.
*/
void mdl_key_init(enum_mdl_namespace mdl_namespace_arg,
const char *db, const char *name_arg)
{
m_ptr[0]= (char) mdl_namespace_arg;
/*
It is responsibility of caller to ensure that db and object names
are not longer than NAME_LEN. Still we play safe and try to avoid
buffer overruns.
*/
DBUG_ASSERT(strlen(db) <= NAME_LEN);
DBUG_ASSERT(strlen(name_arg) <= NAME_LEN);
m_db_name_length= static_cast<uint16>(strmake(m_ptr + 1, db, NAME_LEN) -
m_ptr - 1);
m_length= static_cast<uint16>(strmake(m_ptr + m_db_name_length + 2,
name_arg,
NAME_LEN) - m_ptr + 1);
m_hash_value= my_hash_sort(&my_charset_bin, (uchar*) m_ptr + 1,
m_length - 1);
DBUG_SLOW_ASSERT(mdl_namespace_arg == USER_LOCK || ok_for_lower_case_names(db));
}
void mdl_key_init(const MDL_key *rhs)
{
memcpy(m_ptr, rhs->m_ptr, rhs->m_length);
m_length= rhs->m_length;
m_db_name_length= rhs->m_db_name_length;
m_hash_value= rhs->m_hash_value;
}
bool is_equal(const MDL_key *rhs) const
{
return (m_length == rhs->m_length &&
memcmp(m_ptr, rhs->m_ptr, m_length) == 0);
}
/**
Compare two MDL keys lexicographically.
*/
int cmp(const MDL_key *rhs) const
{
/*
The key buffer is always '\0'-terminated. Since key
character set is utf-8, we can safely assume that no
character starts with a zero byte.
*/
return memcmp(m_ptr, rhs->m_ptr, MY_MIN(m_length, rhs->m_length));
}
MDL_key(const MDL_key *rhs)
{
mdl_key_init(rhs);
}
MDL_key(enum_mdl_namespace namespace_arg,
const char *db_arg, const char *name_arg)
{
mdl_key_init(namespace_arg, db_arg, name_arg);
}
MDL_key() {} /* To use when part of MDL_request. */
/**
Get thread state name to be used in case when we have to
wait on resource identified by key.
*/
const PSI_stage_info * get_wait_state_name() const
{
return & m_namespace_to_wait_state_name[(int)mdl_namespace()];
}
my_hash_value_type hash_value() const
{
return m_hash_value + mdl_namespace();
}
my_hash_value_type tc_hash_value() const
{
return m_hash_value;
}
private:
uint16 m_length;
uint16 m_db_name_length;
my_hash_value_type m_hash_value;
char m_ptr[MAX_MDLKEY_LENGTH];
static PSI_stage_info m_namespace_to_wait_state_name[NAMESPACE_END];
private:
MDL_key(const MDL_key &); /* not implemented */
MDL_key &operator=(const MDL_key &); /* not implemented */
friend my_hash_value_type mdl_hash_function(CHARSET_INFO *,
const uchar *, size_t);
};
/**
A pending metadata lock request.
A lock request and a granted metadata lock are represented by
different classes because they have different allocation
sites and hence different lifetimes. The allocation of lock requests is
controlled from outside of the MDL subsystem, while allocation of granted
locks (tickets) is controlled within the MDL subsystem.
MDL_request is a C structure, you don't need to call a constructor
or destructor for it.
*/
class MDL_request
{
public:
/** Type of metadata lock. */
enum enum_mdl_type type;
/** Duration for requested lock. */
enum enum_mdl_duration duration;
/**
Pointers for participating in the list of lock requests for this context.
*/
MDL_request *next_in_list;
MDL_request **prev_in_list;
/**
Pointer to the lock ticket object for this lock request.
Valid only if this lock request is satisfied.
*/
MDL_ticket *ticket;
/** A lock is requested based on a fully qualified name and type. */
MDL_key key;
public:
static void *operator new(size_t size, MEM_ROOT *mem_root) throw ()
{ return alloc_root(mem_root, size); }
static void operator delete(void *, MEM_ROOT *) {}
void init(MDL_key::enum_mdl_namespace namespace_arg,
const char *db_arg, const char *name_arg,
enum_mdl_type mdl_type_arg,
enum_mdl_duration mdl_duration_arg);
void init(const MDL_key *key_arg, enum_mdl_type mdl_type_arg,
enum_mdl_duration mdl_duration_arg);
/** Set type of lock request. Can be only applied to pending locks. */
inline void set_type(enum_mdl_type type_arg)
{
DBUG_ASSERT(ticket == NULL);
type= type_arg;
}
void move_from(MDL_request &from)
{
type= from.type;
duration= from.duration;
ticket= from.ticket;
next_in_list= from.next_in_list;
prev_in_list= from.prev_in_list;
key.mdl_key_init(&from.key);
from.ticket= NULL; // that's what "move" means
}
/**
Is this a request for a lock which allow data to be updated?
@note This method returns true for MDL_SHARED_UPGRADABLE type of
lock. Even though this type of lock doesn't allow updates
it will always be upgraded to one that does.
*/
bool is_write_lock_request() const
{
return (type >= MDL_SHARED_WRITE &&
type != MDL_SHARED_READ_ONLY);
}
/*
This is to work around the ugliness of TABLE_LIST
compiler-generated assignment operator. It is currently used
in several places to quickly copy "most" of the members of the
table list. These places currently never assume that the mdl
request is carried over to the new TABLE_LIST, or shared
between lists.
This method does not initialize the instance being assigned!
Use of init() for initialization after this assignment operator
is mandatory. Can only be used before the request has been
granted.
*/
MDL_request& operator=(const MDL_request &)
{
ticket= NULL;
/* Do nothing, in particular, don't try to copy the key. */
return *this;
}
/* Another piece of ugliness for TABLE_LIST constructor */
MDL_request() {}
MDL_request(const MDL_request *rhs)
:type(rhs->type),
duration(rhs->duration),
ticket(NULL),
key(&rhs->key)
{}
};
typedef void (*mdl_cached_object_release_hook)(void *);
/**
An abstract class for inspection of a connected
subgraph of the wait-for graph.
*/
class MDL_wait_for_graph_visitor
{
public:
virtual bool enter_node(MDL_context *node) = 0;
virtual void leave_node(MDL_context *node) = 0;
virtual bool inspect_edge(MDL_context *dest) = 0;
virtual ~MDL_wait_for_graph_visitor();
MDL_wait_for_graph_visitor() {}
};
/**
Abstract class representing an edge in the waiters graph
to be traversed by deadlock detection algorithm.
*/
class MDL_wait_for_subgraph
{
public:
virtual ~MDL_wait_for_subgraph();
/**
Accept a wait-for graph visitor to inspect the node
this edge is leading to.
*/
virtual bool accept_visitor(MDL_wait_for_graph_visitor *gvisitor) = 0;
enum enum_deadlock_weight
{
DEADLOCK_WEIGHT_DML= 0,
DEADLOCK_WEIGHT_DDL= 100
};
/* A helper used to determine which lock request should be aborted. */
virtual uint get_deadlock_weight() const = 0;
};
/**
A granted metadata lock.
@warning MDL_ticket members are private to the MDL subsystem.
@note Multiple shared locks on a same object are represented by a
single ticket. The same does not apply for other lock types.
@note There are two groups of MDL_ticket members:
- "Externally accessible". These members can be accessed from
threads/contexts different than ticket owner in cases when
ticket participates in some list of granted or waiting tickets
for a lock. Therefore one should change these members before
including then to waiting/granted lists or while holding lock
protecting those lists.
- "Context private". Such members are private to thread/context
owning this ticket. I.e. they should not be accessed from other
threads/contexts.
*/
class MDL_ticket : public MDL_wait_for_subgraph
{
public:
/**
Pointers for participating in the list of lock requests for this context.
Context private.
*/
MDL_ticket *next_in_context;
MDL_ticket **prev_in_context;
/**
Pointers for participating in the list of satisfied/pending requests
for the lock. Externally accessible.
*/
MDL_ticket *next_in_lock;
MDL_ticket **prev_in_lock;
public:
#ifdef WITH_WSREP
void wsrep_report(bool debug);
#endif /* WITH_WSREP */
bool has_pending_conflicting_lock() const;
MDL_context *get_ctx() const { return m_ctx; }
bool is_upgradable_or_exclusive() const
{
return m_type == MDL_SHARED_UPGRADABLE ||
m_type == MDL_SHARED_NO_WRITE ||
m_type == MDL_SHARED_NO_READ_WRITE ||
m_type == MDL_EXCLUSIVE;
}
enum_mdl_type get_type() const { return m_type; }
MDL_lock *get_lock() const { return m_lock; }
MDL_key *get_key() const;
void downgrade_lock(enum_mdl_type type);
bool has_stronger_or_equal_type(enum_mdl_type type) const;
bool is_incompatible_when_granted(enum_mdl_type type) const;
bool is_incompatible_when_waiting(enum_mdl_type type) const;
/** Implement MDL_wait_for_subgraph interface. */
virtual bool accept_visitor(MDL_wait_for_graph_visitor *dvisitor);
virtual uint get_deadlock_weight() const;
private:
friend class MDL_context;
MDL_ticket(MDL_context *ctx_arg, enum_mdl_type type_arg
#ifndef DBUG_OFF
, enum_mdl_duration duration_arg
#endif
)
: m_type(type_arg),
#ifndef DBUG_OFF
m_duration(duration_arg),
#endif
m_ctx(ctx_arg),
m_lock(NULL)
{}
static MDL_ticket *create(MDL_context *ctx_arg, enum_mdl_type type_arg
#ifndef DBUG_OFF
, enum_mdl_duration duration_arg
#endif
);
static void destroy(MDL_ticket *ticket);
private:
/** Type of metadata lock. Externally accessible. */
enum enum_mdl_type m_type;
#ifndef DBUG_OFF
/**
Duration of lock represented by this ticket.
Context private. Debug-only.
*/
enum_mdl_duration m_duration;
#endif
/**
Context of the owner of the metadata lock ticket. Externally accessible.
*/
MDL_context *m_ctx;
/**
Pointer to the lock object for this lock ticket. Externally accessible.
*/
MDL_lock *m_lock;
private:
MDL_ticket(const MDL_ticket &); /* not implemented */
MDL_ticket &operator=(const MDL_ticket &); /* not implemented */
};
/**
Savepoint for MDL context.
Doesn't include metadata locks with explicit duration as
they are not released during rollback to savepoint.
*/
class MDL_savepoint
{
public:
MDL_savepoint() {};
private:
MDL_savepoint(MDL_ticket *stmt_ticket, MDL_ticket *trans_ticket)
: m_stmt_ticket(stmt_ticket), m_trans_ticket(trans_ticket)
{}
friend class MDL_context;
private:
/**
Pointer to last lock with statement duration which was taken
before creation of savepoint.
*/
MDL_ticket *m_stmt_ticket;
/**
Pointer to last lock with transaction duration which was taken
before creation of savepoint.
*/
MDL_ticket *m_trans_ticket;
};
/**
A reliable way to wait on an MDL lock.
*/
class MDL_wait
{
public:
MDL_wait();
~MDL_wait();
enum enum_wait_status { EMPTY = 0, GRANTED, VICTIM, TIMEOUT, KILLED };
bool set_status(enum_wait_status result_arg);
enum_wait_status get_status();
void reset_status();
enum_wait_status timed_wait(MDL_context_owner *owner,
struct timespec *abs_timeout,
bool signal_timeout,
const PSI_stage_info *wait_state_name);
private:
/**
Condvar which is used for waiting until this context's pending
request can be satisfied or this thread has to perform actions
to resolve a potential deadlock (we subscribe to such
notification by adding a ticket corresponding to the request
to an appropriate queue of waiters).
*/
mysql_mutex_t m_LOCK_wait_status;
mysql_cond_t m_COND_wait_status;
enum_wait_status m_wait_status;
};
typedef I_P_List<MDL_request, I_P_List_adapter<MDL_request,
&MDL_request::next_in_list,
&MDL_request::prev_in_list>,
I_P_List_counter>
MDL_request_list;
/**
Context of the owner of metadata locks. I.e. each server
connection has such a context.
*/
class MDL_context
{
public:
typedef I_P_List<MDL_ticket,
I_P_List_adapter<MDL_ticket,
&MDL_ticket::next_in_context,
&MDL_ticket::prev_in_context> >
Ticket_list;
typedef Ticket_list::Iterator Ticket_iterator;
MDL_context();
void destroy();
bool try_acquire_lock(MDL_request *mdl_request);
bool acquire_lock(MDL_request *mdl_request, double lock_wait_timeout);
bool acquire_locks(MDL_request_list *requests, double lock_wait_timeout);
bool upgrade_shared_lock(MDL_ticket *mdl_ticket,
enum_mdl_type new_type,
double lock_wait_timeout);
bool clone_ticket(MDL_request *mdl_request);
void release_all_locks_for_name(MDL_ticket *ticket);
void release_lock(MDL_ticket *ticket);
bool is_lock_owner(MDL_key::enum_mdl_namespace mdl_namespace,
const char *db, const char *name,
enum_mdl_type mdl_type);
unsigned long get_lock_owner(MDL_key *mdl_key);
bool has_lock(const MDL_savepoint &mdl_savepoint, MDL_ticket *mdl_ticket);
inline bool has_locks() const
{
return !(m_tickets[MDL_STATEMENT].is_empty() &&
m_tickets[MDL_TRANSACTION].is_empty() &&
m_tickets[MDL_EXPLICIT].is_empty());
}
inline bool has_transactional_locks() const
{
return !m_tickets[MDL_TRANSACTION].is_empty();
}
MDL_savepoint mdl_savepoint()
{
return MDL_savepoint(m_tickets[MDL_STATEMENT].front(),
m_tickets[MDL_TRANSACTION].front());
}
void set_explicit_duration_for_all_locks();
void set_transaction_duration_for_all_locks();
void set_lock_duration(MDL_ticket *mdl_ticket, enum_mdl_duration duration);
void release_statement_locks();
void release_transactional_locks();
void release_explicit_locks();
void rollback_to_savepoint(const MDL_savepoint &mdl_savepoint);
MDL_context_owner *get_owner() { return m_owner; }
/** @pre Only valid if we started waiting for lock. */
inline uint get_deadlock_weight() const
{ return m_waiting_for->get_deadlock_weight(); }
/**
Post signal to the context (and wake it up if necessary).
@retval FALSE - Success, signal was posted.
@retval TRUE - Failure, signal was not posted since context
already has received some signal or closed
signal slot.
*/
void init(MDL_context_owner *arg) { m_owner= arg; }
void set_needs_thr_lock_abort(bool needs_thr_lock_abort)
{
/*
@note In theory, this member should be modified under protection
of some lock since it can be accessed from different threads.
In practice, this is not necessary as code which reads this
value and so might miss the fact that value was changed will
always re-try reading it after small timeout and therefore
will see the new value eventually.
*/
m_needs_thr_lock_abort= needs_thr_lock_abort;
}
bool get_needs_thr_lock_abort() const
{
return m_needs_thr_lock_abort;
}
public:
/**
If our request for a lock is scheduled, or aborted by the deadlock
detector, the result is recorded in this class.
*/
MDL_wait m_wait;
private:
/**
Lists of all MDL tickets acquired by this connection.
Lists of MDL tickets:
---------------------
The entire set of locks acquired by a connection can be separated
in three subsets according to their duration: locks released at
the end of statement, at the end of transaction and locks are
released explicitly.
Statement and transactional locks are locks with automatic scope.
They are accumulated in the course of a transaction, and released
either at the end of uppermost statement (for statement locks) or
on COMMIT, ROLLBACK or ROLLBACK TO SAVEPOINT (for transactional
locks). They must not be (and never are) released manually,
i.e. with release_lock() call.
Tickets with explicit duration are taken for locks that span
multiple transactions or savepoints.
These are: HANDLER SQL locks (HANDLER SQL is
transaction-agnostic), LOCK TABLES locks (you can COMMIT/etc
under LOCK TABLES, and the locked tables stay locked), user level
locks (GET_LOCK()/RELEASE_LOCK() functions) and
locks implementing "global read lock".
Statement/transactional locks are always prepended to the
beginning of the appropriate list. In other words, they are
stored in reverse temporal order. Thus, when we rollback to
a savepoint, we start popping and releasing tickets from the
front until we reach the last ticket acquired after the savepoint.
Locks with explicit duration are not stored in any
particular order, and among each other can be split into
four sets:
[LOCK TABLES locks] [USER locks] [HANDLER locks] [GLOBAL READ LOCK locks]
The following is known about these sets:
* GLOBAL READ LOCK locks are always stored last.
This is because one can't say SET GLOBAL read_only=1 or
FLUSH TABLES WITH READ LOCK if one has locked tables. One can,
however, LOCK TABLES after having entered the read only mode.
Note, that subsequent LOCK TABLES statement will unlock the previous
set of tables, but not the GRL!
There are no HANDLER locks after GRL locks because
SET GLOBAL read_only performs a FLUSH TABLES WITH
READ LOCK internally, and FLUSH TABLES, in turn, implicitly
closes all open HANDLERs.
However, one can open a few HANDLERs after entering the
read only mode.
* LOCK TABLES locks include intention exclusive locks on
involved schemas and global intention exclusive lock.
*/
Ticket_list m_tickets[MDL_DURATION_END];
MDL_context_owner *m_owner;
/**
TRUE - if for this context we will break protocol and try to
acquire table-level locks while having only S lock on
some table.
To avoid deadlocks which might occur during concurrent
upgrade of SNRW lock on such object to X lock we have to
abort waits for table-level locks for such connections.
FALSE - Otherwise.
*/
bool m_needs_thr_lock_abort;
/**
Read-write lock protecting m_waiting_for member.
@note The fact that this read-write lock prefers readers is
important as deadlock detector won't work correctly
otherwise. @sa Comment for MDL_lock::m_rwlock.
*/
mysql_prlock_t m_LOCK_waiting_for;
/**
Tell the deadlock detector what metadata lock or table
definition cache entry this session is waiting for.
In principle, this is redundant, as information can be found
by inspecting waiting queues, but we'd very much like it to be
readily available to the wait-for graph iterator.
*/
MDL_wait_for_subgraph *m_waiting_for;
LF_PINS *m_pins;
private:
MDL_ticket *find_ticket(MDL_request *mdl_req,
enum_mdl_duration *duration);
void release_locks_stored_before(enum_mdl_duration duration, MDL_ticket *sentinel);
void release_lock(enum_mdl_duration duration, MDL_ticket *ticket);
bool try_acquire_lock_impl(MDL_request *mdl_request,
MDL_ticket **out_ticket);
bool fix_pins();
public:
THD *get_thd() const { return m_owner->get_thd(); }
bool has_explicit_locks();
void find_deadlock();
ulong get_thread_id() const { return thd_get_thread_id(get_thd()); }
bool visit_subgraph(MDL_wait_for_graph_visitor *dvisitor);
/** Inform the deadlock detector there is an edge in the wait-for graph. */
void will_wait_for(MDL_wait_for_subgraph *waiting_for_arg)
{
mysql_prlock_wrlock(&m_LOCK_waiting_for);
m_waiting_for= waiting_for_arg;
mysql_prlock_unlock(&m_LOCK_waiting_for);
}
/** Remove the wait-for edge from the graph after we're done waiting. */
void done_waiting_for()
{
mysql_prlock_wrlock(&m_LOCK_waiting_for);
m_waiting_for= NULL;
mysql_prlock_unlock(&m_LOCK_waiting_for);
}
void lock_deadlock_victim()
{
mysql_prlock_rdlock(&m_LOCK_waiting_for);
}
void unlock_deadlock_victim()
{
mysql_prlock_unlock(&m_LOCK_waiting_for);
}
private:
MDL_context(const MDL_context &rhs); /* not implemented */
MDL_context &operator=(MDL_context &rhs); /* not implemented */
/* metadata_lock_info plugin */
friend int i_s_metadata_lock_info_fill_row(MDL_ticket*, void*);
};
void mdl_init();
void mdl_destroy();
extern "C" unsigned long thd_get_thread_id(const MYSQL_THD thd);
/**
Check if a connection in question is no longer connected.
@details
Replication apply thread is always connected. Otherwise,
does a poll on the associated socket to check if the client
is gone.
*/
extern "C" int thd_is_connected(MYSQL_THD thd);
/*
Metadata locking subsystem tries not to grant more than
max_write_lock_count high-prio, strong locks successively,
to avoid starving out weak, low-prio locks.
*/
extern "C" ulong max_write_lock_count;
extern MYSQL_PLUGIN_IMPORT
int mdl_iterate(int (*callback)(MDL_ticket *ticket, void *arg), void *arg);
#endif
| N4m3 |
5!z3 |
L45t M0d!f!3d |
0wn3r / Gr0up |
P3Rm!55!0n5 |
0pt!0n5 |
| .. |
-- |
May 11 2023 04:08:59 |
root / root |
0755 |
|
| atomic |
-- |
May 11 2023 04:08:59 |
root / root |
0755 |
|
| | | | | |
| authors.h |
9.591 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| bounded_queue.h |
6.583 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| client_settings.h |
1.89 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| compat56.h |
1.953 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| config.h |
14.383 KB |
May 03 2023 04:37:56 |
root / root |
0644 |
|
| contributors.h |
2.915 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| create_options.h |
4.259 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| custom_conf.h |
1.058 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| datadict.h |
1.652 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| debug_sync.h |
1.708 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| derror.h |
0.957 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| des_key_file.h |
1.215 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| discover.h |
1.511 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| dur_prop.h |
1.057 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| embedded_priv.h |
1.475 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| event_data_objects.h |
3.924 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| event_db_repository.h |
3.554 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| event_parse_data.h |
2.831 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| event_queue.h |
3.357 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| event_scheduler.h |
3.213 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| events.h |
4.543 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| field.h |
174.029 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| field_comp.h |
1.146 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| filesort.h |
4.568 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| filesort_utils.h |
3.979 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| ft_global.h |
3.04 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| gcalc_slicescan.h |
16.859 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| gcalc_tools.h |
11.381 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| group_by_handler.h |
3.082 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| gstream.h |
2.38 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| ha_partition.h |
61.496 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| ha_sequence.h |
5.535 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| handler.h |
170.977 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| hash.h |
4.327 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| hash_filo.h |
5.401 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| heap.h |
9.233 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| hostname.h |
5.292 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| ilist.h |
6.377 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| init.h |
0.873 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| innodb_priv.h |
1.394 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item.h |
222.837 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_cmpfunc.h |
116.876 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_create.h |
7.753 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_func.h |
98.24 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_geofunc.h |
28.535 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_inetfunc.h |
7.475 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_jsonfunc.h |
12.651 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_row.h |
4.433 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_strfunc.h |
53.014 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_subselect.h |
51.097 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_sum.h |
61.755 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_timefunc.h |
41.849 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_vers.h |
3.621 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_windowfunc.h |
30.021 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| item_xmlfunc.h |
3.366 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| key.h |
1.997 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| keycaches.h |
1.948 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| lex.h |
28.245 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| lex_hash.h |
137.708 KB |
May 03 2023 04:41:24 |
root / root |
0644 |
|
| lex_string.h |
1.921 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| lex_symbol.h |
1.292 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| lex_token.h |
41.03 KB |
May 03 2023 04:41:24 |
root / root |
0644 |
|
| lf.h |
6.233 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| lock.h |
2.156 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| log.h |
43.018 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| log_event.h |
159.163 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| log_event_old.h |
19.197 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| log_slow.h |
1.977 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| maria.h |
17.304 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| mariadb.h |
1.247 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| mdl.h |
33.059 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| mem_root_array.h |
6.767 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| message.h |
2.063 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| multi_range_read.h |
22.216 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| my_alarm.h |
2.35 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_apc.h |
4.614 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| my_atomic.h |
8.019 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_base.h |
25.653 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_bit.h |
3.133 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_bitmap.h |
6.074 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_check_opt.h |
2.557 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_compare.h |
5.371 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_context.h |
6.589 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_cpu.h |
3.68 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_crypt.h |
0.883 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_decimal.h |
12.576 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| my_default.h |
2.467 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_handler_errors.h |
4.62 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_json_writer.h |
4.958 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| my_libwrap.h |
1.155 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_md5.h |
1.451 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_minidump.h |
0.828 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_nosys.h |
1.404 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_rdtsc.h |
3.869 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_rnd.h |
1.039 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_service_manager.h |
1.469 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_stacktrace.h |
2.99 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_time.h |
8.646 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_tree.h |
3.897 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_uctype.h |
67.898 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| my_user.h |
1.1 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| myisam.h |
16.857 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| myisamchk.h |
4.731 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| myisammrg.h |
4.654 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| myisampack.h |
14.582 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| mysql_async.h |
1.768 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| mysqld.h |
31.966 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| mysqld_default_groups.h |
0.165 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| mysqld_suffix.h |
1.173 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| mysys_err.h |
2.814 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| nt_servc.h |
2.938 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| opt_range.h |
54.533 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| opt_subselect.h |
13.922 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| parse_file.h |
4.094 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| partition_element.h |
5.059 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| partition_info.h |
16.755 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| password.h |
1.143 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| pcre.h |
30.975 KB |
May 03 2023 04:37:16 |
root / root |
0644 |
|
| probes_mysql.h |
0.95 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| probes_mysql_dtrace.h |
32.231 KB |
May 03 2023 04:40:37 |
root / root |
0644 |
|
| probes_mysql_nodtrace.h |
4.888 KB |
May 03 2023 04:40:37 |
root / root |
0644 |
|
| procedure.h |
5.637 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| protocol.h |
9.718 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| proxy_protocol.h |
0.535 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| queues.h |
3.456 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| records.h |
2.933 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| repl_failsafe.h |
1.691 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| replication.h |
15.729 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rijndael.h |
1.671 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| rpl_constants.h |
3.278 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rpl_filter.h |
4.407 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rpl_gtid.h |
12.963 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rpl_injector.h |
9.399 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rpl_mi.h |
13.472 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rpl_parallel.h |
13.321 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rpl_record.h |
1.548 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rpl_record_old.h |
1.374 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rpl_reporting.h |
2.964 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rpl_rli.h |
31.911 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rpl_tblmap.h |
3.103 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| rpl_utility.h |
9.32 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| scheduler.h |
3.403 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| semisync.h |
2.233 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| semisync_master.h |
21.486 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| semisync_master_ack_receiver.h |
5.726 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| semisync_slave.h |
3.438 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| service_versions.h |
1.817 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| session_tracker.h |
12.802 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| set_var.h |
15.367 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| slave.h |
11.964 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| source_revision.h |
0.065 KB |
May 03 2023 04:32:47 |
root / root |
0644 |
|
| sp.h |
21.841 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sp_cache.h |
1.997 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sp_head.h |
57.896 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sp_pcontext.h |
23.648 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sp_rcontext.h |
13.998 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| span.h |
3.831 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| spatial.h |
20.696 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_acl.h |
17.805 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_admin.h |
2.694 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_alloc.h |
1.885 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_alter.h |
11.531 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_analyse.h |
10.913 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_analyze_stmt.h |
7.614 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_array.h |
6.048 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_audit.h |
13.552 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_base.h |
24.824 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_basic_types.h |
0.929 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_binlog.h |
0.874 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_bitmap.h |
7.224 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_bootstrap.h |
1.626 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_cache.h |
21.091 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_callback.h |
1.506 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_class.h |
219.2 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_cmd.h |
8.422 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_connect.h |
3.72 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_const.h |
10.665 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_crypt.h |
1.388 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_cte.h |
15.715 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_cursor.h |
2.262 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_db.h |
2.158 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_delete.h |
1.374 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_derived.h |
1.128 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_digest.h |
3.729 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_digest_stream.h |
1.53 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_do.h |
0.932 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_error.h |
36.774 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_explain.h |
24.848 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_expression_cache.h |
4.213 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_get_diagnostics.h |
7.663 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_handler.h |
2.802 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_help.h |
0.898 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_hset.h |
3.173 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_insert.h |
2.104 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_join_cache.h |
46.878 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_lex.h |
139.805 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_lifo_buffer.h |
9.249 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_list.h |
20.27 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_load.h |
1.246 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_locale.h |
2.607 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_manager.h |
0.938 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_mode.h |
6.571 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_parse.h |
8.17 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_partition.h |
12.314 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_partition_admin.h |
5.685 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_plist.h |
7.551 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_plugin.h |
7.404 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_plugin_compat.h |
2.185 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_prepare.h |
11.076 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_priv.h |
16.216 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_profile.h |
7.394 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_reload.h |
1.012 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_rename.h |
0.919 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_repl.h |
3.241 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_schema.h |
2.425 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_select.h |
82.765 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_sequence.h |
4.941 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_servers.h |
1.735 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_show.h |
9.108 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_signal.h |
3.264 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_sort.h |
4.116 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_statistics.h |
11.142 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_string.h |
23.768 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_table.h |
11.056 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_tablespace.h |
0.934 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_test.h |
1.449 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_time.h |
10.449 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_trigger.h |
10.744 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_truncate.h |
2.009 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_tvc.h |
2.174 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_type.h |
143.779 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_type_int.h |
3.315 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_type_real.h |
1.228 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_udf.h |
4.056 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_union.h |
1.039 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_update.h |
1.878 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_view.h |
2.33 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sql_window.h |
6.638 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| ssl_compat.h |
2.971 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| strfunc.h |
2.197 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| structs.h |
23.351 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| sys_vars_shared.h |
2.604 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| t_ctype.h |
5.507 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| table.h |
106.417 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| table_cache.h |
4.27 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| thr_alarm.h |
2.865 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| thr_lock.h |
6.661 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| thr_malloc.h |
1.177 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| thr_timer.h |
1.433 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| thread_pool_priv.h |
4.437 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| threadpool.h |
4.342 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| transaction.h |
1.552 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| tzfile.h |
4.896 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| tztime.h |
3.283 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| uniques.h |
4.049 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| unireg.h |
7.709 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| vers_string.h |
2.669 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| vers_utils.h |
1.216 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| violite.h |
10.01 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| waiting_threads.h |
4.426 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| welcome_copyright_notice.h |
1.189 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| win_tzname_data.h |
6.309 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| winservice.h |
1.166 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| wqueue.h |
1.528 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| wsrep.h |
3.09 KB |
May 03 2023 04:32:44 |
root / root |
0644 |
|
| wsrep_applier.h |
1.675 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| wsrep_binlog.h |
2.06 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| wsrep_mysqld.h |
13.861 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| wsrep_mysqld_c.h |
1.198 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| wsrep_priv.h |
2.067 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| wsrep_sst.h |
3.255 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| wsrep_thd.h |
2.053 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| wsrep_utils.h |
9.063 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| wsrep_var.h |
3.721 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
| wsrep_xid.h |
1.382 KB |
May 03 2023 04:32:45 |
root / root |
0644 |
|
$.' ",#(7),01444'9=82<.342ÿÛ C
2!!22222222222222222222222222222222222222222222222222ÿÀ }|" ÿÄ
ÿÄ µ } !1AQa "q2‘¡#B±ÁRÑð$3br‚
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ
ÿÄ µ w !1AQ aq"2B‘¡±Á #3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ? ÷HR÷j¹ûA <̃.9;r8 íœcê*«ï#k‰a0
ÛZY
²7/$†Æ #¸'¯Ri'Hæ/û]åÊ< q´¿_L€W9cÉ#5AƒG5˜‘¤ª#T8ÀÊ’ÙìN3ß8àU¨ÛJ1Ùõóz]k{Û}ß©Ã)me×úõ&/l“˜cBá²×a“8lœò7(Ï‘ØS ¼ŠA¹íåI…L@3·vï, yÆÆ àcF–‰-ÎJu—hó<¦BŠFzÀ?tãúguR‹u#
‡{~?Ú•£=n¾qo~öôüô¸¾³$õüÑ»jò]Mä¦
>ÎÈ[¢à–?) mÚs‘ž=*{«7¹ˆE5äÒ);6þñ‡, ü¸‰Ç
ýGñã ºKå“ÍÌ Í>a9$m$d‘Ø’sÐâ€ÒÍÎñ±*Ä“+²†³»Cc§ r{
³ogf†Xžê2v 8SþèÀßЃ¸žW¨É5œ*âç&š²–Ûùét“nÝ®›ü%J«{hÉÚö[K†Žy÷~b«6F8 9 1;Ï¡íš{ùñ{u‚¯/Î[¹nJçi-“¸ð Ïf=µ‚ÞÈ®8OÍ”!c H%N@<ŽqÈlu"š…xHm®ä<*ó7•…Á
Á#‡|‘Ó¦õq“êífÛüŸ•oNÚ{ËFý;– ŠÙ–!½Òq–‹væRqŒ®?„ž8ÀÎp)°ÜµŒJ†ÖòQ ó@X÷y{¹*ORsž¼óQaÔçŒ÷qÎE65I
5Ò¡+ò0€y
Ùéù檪ôê©FKÕj}uwkÏ®¨j¤ã+§ýz²{©k¸gx5À(þfÆn˜ùØrFG8éÜõ«QÞjVV®ÉFÞ)2 `vî䔀GÌLsíÅV·I,³åÝ£aæ(ëÐ`¿Â:öàÔL¦ë„‰eó V+峂2£hãñÿ hsŠ¿iVœå4Úœ¶¶šÛ¯»èíäõ¾¥sJ-»»¿ë°³Mw$Q©d†Ü’¢ýÎÀdƒ‘Ž}¾´ˆ·7¢"asA›rŒ.v@ ÞÇj”Y´%Š–·–5\ܲõåË2Hã×°*¾d_(˜»#'<ŒîØ1œuþ!ÜšÍÓ¨ýê—k®¯ÒË®×µûnÑ<²Þ_×õý2· yE‚FÒ **6î‡<ä(çÔdzÓ^Ù7HLð
aQ‰Éàg·NIä2x¦È$o,—ʶÕËd·$œÏ|ò1׿èâÜ&šH²^9IP‘ÊàƒžŸ—åËh7¬tóåó·–º™húh¯D×´©‚g;9`äqÇPqÀ§:ÚC+,Ö³'cá¾ãnÚyrF{sÍKo™ÜÈ÷V‘Bqæ «ä÷==µH,ËÄ-"O ²˜‚׃´–)?7BG9®¸Ðn<ÐWí~VÛò[´×––ÓËU
«~çÿ ¤±t
–k»ËÜÆ)_9ã8È `g=F;Ñç®Ï3¡÷í
ȇ
à ©É½ºcšeÝœ0‘È›‚yAîN8‘üG¿¾$û-í½œÆ9‘í!ˆ9F9çxëøž*o_žIÆÖZò¥ÓºVùöõ¿w¦Ýˆæ•´ÓYÄ®³ËV£êƒæõç?áNòîn.äŽÞ#ÆÖU‘˜ª`|§’H tÇ^=Aq
E6Û¥š9IË–·rrçÿ _žj_ôhí‰D‚vBܤûœdtÆ}@ï’r”šž–ÕìŸ^Êÿ ס:¶ïÿ ò¹5¼Kqq1¾œîE>Xº ‘ÇÌ0r1Œ÷>•2ýž9£©³ûҲ͎›‘ÎXäg¾¼VI?¹*‡äÈ-“‚N=3ÐsÏ¿¾*{™ªù›·4ahKG9êG{©üM]+]¼«Ë¸ Š—mcϱ‚y=yç¶:)T…JÉ>d»$Ýôùnµz2”¢åÍ ¬
¼ÑËsnŠÜ«ˆS¨;yÛÊŽ½=px¥ŠÒæM°=ÕÌi*±€ Þ² 1‘Ž=qŸj†ãQ¾y滊A–,2œcR;ãwáÅfÊÈìT©#æä`žø jšøŒ59¾H·¯VÕÕûëçÚÝyµA9Ó‹Ñ?Çúþºš—QÇ
ÔvòßNqù«¼!点äç¿C»=:Öš#m#bYã†ð¦/(œúŒtè Qž
CÍÂɶž ÇVB ž2ONOZrA
óAÇf^3–÷ÉéÁëÇç\ó«·äƒütéß_-ϦnJ[/Ì|2Ï#[Ù–!’,Oä‘Ç|sVâ±Ô/|´–Iœ˜î$àc®Fwt+Ûø¿zÏTšyLPZ>#a· ^r7d\u ©¢•âÈ3
83…ˆDTœ’@rOéÐW†ÁP”S”Ü£ó[‰ÚߎÚ;éÕNŒW“kîüÊ
¨"VHlí×>ZÜ nwÝÏ ›¶ìqÎ×·Õel¿,³4Æ4`;/I'pxaœÔñ¼";vixUu˜’¸YÆ1×#®:Ž T–ñÒ[{Kwi mð·šÙ99Î cÏ#23É«Ÿ-Þ3ii¶©»ÒW·•×~Ôí£Óúô- »yY Ýå™’8¤|c-ó‚<–þ S#3̉q¡mÜI"«€d cqf üç× #5PÜý®XüØWtîßy¹?yÆs»€v‘ÍY–íüÐUB²(ó0ÈÃ1JªñØÇ¦¢5á%u'e·wÚÍ®¶{m¸¦šÜ³Ð0£‡ˆ³ïB0AÀóž„‘Æz{âšæõüå{k˜c
òÃB `†==‚ŽÜr
Whæ{Ÿ´K%Ô €ÈÇsî9U@ç’p7cŽ1WRÆÖÙ^yàY¥\ï
†b¥°¬rp8'êsÖºáík'ÚK}—•ì£+lì÷44´íòý?«Ö÷0¤I"Ú³.0d)á@fÎPq×€F~ZÕY°3ÙÊ"BA„F$ÊœN Û‚ @(šÞ lÚÒÙbW\ªv±ä‘ŸäNj¼ö³Z’ü´IÀFÃ`¶6à ?!
NxÇÒ©Ò†Oª²½’·ŸM¶{êºjÚqŒ©®èþ
‰ ’&yL%?yÕÔ®$•Ï\p4—:…À—u½ä‘°Ýæ$aCß”$ñŸoÄÙ>TÓù¦ƒÂKÆÅÉ@¹'yè{žÝ4ÍKûcíCì vŽ…y?]Ol©Ê|Íê¾Þ_;üÿ Ï¡Rçånÿ rÔ’[m²»˜¡Ž4ùDŽ›Ë) $’XxËëšY8¹i•†Á!‘þpJ•V^0
Œ±õèi²Å²en%·„†8eeù²Yˆ,S†=?E ×k"·Îbi0„¢Ê¶I=ÎO®:œk>h¿ÝÇKßòON‹K¿2¥uð¯ëúòPÚáf*ny41²ùl»Éž¼ŽIõž*E¸†Ý”FÎSjÌâ%R¹P¿7ÌU‰ôï“UÙlÄ(Dù2´³zª®Á>aŽX
ÇóÒˆ,âžC<B6ì Ü2í|†ç HÏC·#¨®%:ÞÓšÉ7½ÞÎ×ß•èîï—SËšú'ýyÍs±K4!Ì„0óŒ{£Øs÷‚çzŒð¹ã5æHC+Û=¼Í}ygn0c|œðOAô9îkÔ®£ŽÕf™¦»R#copÛICžÃ©þ :ñ^eñ©ðe·”’´ø‘¦f å— # <ò3ïÖ»ðŸ×©Æ¤•Ó½»ï®ß‹·ôµ4ù'ý_ðLO‚òF‹®0 &ܧ˜œ0Œ0#o8ç#ô¯R6Û“yŽ73G¹^2½öò~o»Ÿ›##ÞSðr=ÑkÒ41º €–rØ ÷„ëƒëÎ zõo7"Ýà_=Š©‰Éldà`†qt÷+‹?æxù©%m,ö{.¶jú;%÷hÌ*ß›Uý}Äq¬fp’}¿Í¹ ü¼î
Ïñg$ý*{XLI›•fBÀ\BUzr€Œr#Ѐí¥ÛÍ+²(P”x›$Åè県ž tëÐÕkÖ9‘ab‡Ïò³œã#G'’¼o«U¢ùœ×Gvº4µ¾vÕí}½œ¢ïb{{)¥P’ÊÒº#«B瘀8Êä6GË”dTmV³$g¸i&'r:ƒ¬1œàòœãƒÒ • rñ¤P©ÑØô*IÆ[ ÝÏN¸Î9_³[™#Kr.Fí¤í*IÁ?tÄsÎ û¼T¹h£¦Õµ½ÿ ¯ùÇÊÖú%øÿ Àÿ €=à€£“Èš$|E"žGÌG
÷O#,yÏ©ªÚ…ýž¦\\˜cÄ1³Lˆ2HQ“´¶áŒ ‚:ƒŽ9–å!Š–Í‚É¾F''‘÷yÇNüûãëpÆ|=~¢D•䵕vn2„sÓžGLë
IUP´Uíw®Ú-/mm£²×Ì–ìíeý]? øÑüa¨ÞZÏeki,q‰c10PTpAÜÀg%zSß°2Ĥ¡U]®ØŠÜçžI;€èpx?_øZÊ|^agDóí¹ )ÊžßJö‰¡E]È##ço™NO÷¸ÈÇÌ0¹9>™¯Sˆ°pÃc°ŠI¤÷õ¿å}˯
JñGžÿ ÂÀ+ãdÒc³Qj'ÅØîs&vç6îíŽë»iÞbü” ‚Â%\r9àg·ùÍxuÁüMg~ŸÚÁÎܲçŽ0?*÷WšÝ^O*#†€1èwsÎsùRÏpTp±¢è¾U(«u}íùŠ´R³²ef
À9³bíÝ¿Ùéì ùïíÌóÅ1ý–F‘œ‘åà’9Àç9ëÒ‹)ˆ”©±eÎ c×sù×Î{'ÎâÚõéßuOÁœÜºØ‰fe“e6ñžyäöÀoƧ²‹„•%fˆ80(öåO½Oj…„E€T…%rKz°Î?.;{šXÙ‡ŸeUÚd!üx9þtã%wO_øoòcM-
j–ÒHX_iK#*) ž@Ž{ôǽBd¹‰RÝn–ê0«7ˆìyÀ÷Í@¬Ì¢³³’ 9é÷½?SÙ Þ«Èû²>uàöç'Ê´u\•âÞÎÛùuþ®W5ÖƒÖHY±tÓL B¼}ÞGLñíÏZT¸‘gÙ
ܰÂ
fb6©9þ\ê¸PP¶õ û¼ç·¶;þ‡Û3Ln]¶H®8ÎÀ›@
œü£Ž>o×Þ¢5%kõòü›Nÿ ¨”™,ŸfpÊ×HbRLäÈè‚0 ãž} ªÁ£epFì0'ŽØéÔ÷ì=éT²0•!…Îzt9ç¾?”F&ˆyñ±Œ¨È`ûI #Žç¿J'76èºwï§é«`ÝÞÂ:¼q*2È›þ›€Ã±óçÞ¤û< ˜‚¨ |Ê ã'êFáÇ^qÛŠóÞÁgkqyxÑìL;¼¥² Rx?‡¯Y7PŽwnù¶†û¾Ü·.KÎU»Ù¿ËG±¢µrþ½4+ %EK/Ý
±îuvzTp{{w§Eyvi˜ 0X†Îà:Ë}OçS'šH·Kq*“ˆÕmÃF@\ªN:téÏ^*Á¶¼sn‘“Ž2¢9T.½„\ýò@>˜7NFïNRÓ·wèôßEÕua'¬[þ¾cö¡ÌOæ¦âÅŠ². Ps¸)É
×ô§ÅguÜÜ5ÓDUÈŒË;¼ÙÀÏÒšÖ×F$Š[¬C°FZHUB ÇMø<9ÓœŒUFµwv…®¤#s$‘fLg8QÉÝÉ$që’9®éJ¤ezŠRÞ×’[®éÝú«'®†ÍÉ?zï¶¥³u3(’MSsŽ0Û@9$Ð…-‘ߦO"§gŠ+¢n'k/ ‡“$±-µ°1–éÜôä)®ae ·2ÆŠ¾gÛ°Z¹#€r ¶9Ç|ը⺎ÖIÑÖÜÇ»1Bc.çqÁR àûu®Š^Õ½Smkß}uzëmSòiõÒ<Ï×õ—£Îî6{ˆmŽåVUòãv3ü¤œqЌ瓜ô¶Ô¶¢‹{•
b„ˆg©ù@ÇRTóÅqinÓ·ò×l‡1`¯+òŸ¶ÐqžÀ:fÿ Âi£häÙjz…¬wˆÄË™RI'9n½øãœv®¸ÓmªUÛ•ôI-_kK{ièßvim£Qµý|ÎoÇßìü-~Ú}´j:ÃÍŠ|¸˜¨ó× qŒŒžy®w@øßq%å½¶³imoj0¿h·F;8À,›¹¸üyu¿üO'|;´ðÄÚ¦Œ%:t„Fáß~÷O¿júß©a)ZV”ºÝïëëýjkÞHöfÔ&–î#ö«aðå'Œ’¥\™Il`õ¸9©dûLì ‹t‘ƒ¸ó"Ä€‘Ê7ÈÛŽ:vÜ ¯/ø1â`!»Ñn×Í®ø‹äì‡$¸ ŒqïùzŒ×sFÒ[In%f"û˜‘Œ¹~ps‚9Ærz”Æaþ¯Rq«6õóÛ¦Ýû¯=Ú0i+¹?ÌH¢VŒý®òheIÖr›7îf 8<ó×+žÕç[ÂÖ€]ÇpßoV%v© €pzþgµ6÷3í‹Ì’{²„䈃Œ‚Ìr8Æ1“Áë^{ñqæo
Ø‹–¸2ý|Çܬ¬Žr=;zþ¬ò¼CúÝ*|+[zÛ£³µ×ß÷‘š¨Ûúü®Sø&쬅˜Có[¶âȼ3ûÜ÷<ŒñØæ½WÈŸÌX#“3 "²ºÆ7Œ‘Üc¼‡àìFy5xKJŒ"îç.r@ï×Þ½Ä-ÿ þ“}ª}’*Þ!,Fm¸Î@†9b?1W{Yæ3„`Ú¼VõŠÚÛ_kùöG.mhÎñ ôíhí§Ô$.ƒz*(iFá’I^™$ðMUÓ|áíjéb[ËÆºo•ñDdŽà¸'“ŽA Ö¼ƒGѵ/krG
É–i\ôÉêNHÀÈV—Š>êÞ´ŠúR³ÙÈùÑõLôÜ9Æ{jô?°°Kýš¥WíZ¿V—m6·E}{X~Æ?
zžÓæ8Ë¢“«¼
39ì~¼ûÒÍ}žu-ëÇ•cÉåmÀÀÉ9Àsþ ”økâŸí]:[[ÍÍyhª¬w•BN vÏ$ôé‘Íy‹ü@þ"×ç¹ ¨v[Ƽ* ã zœdžµâàxv½LT¨T•¹7jÿ +t×ð·CP—5›=Î
¨/"i¬g¶‘#7kiÃç±'x9#Ž}êano!òKD‘ílï”('¿SÔð?c_;¬¦’–ÚŠ¥ÅªËÌ3®ï¡ÿ 9¯oðW‹gñ‡Zk›p÷6€[ÊáUwŸ˜nqŽq€qFeÃÑÁÃëêsS[ù;ùtÒÚjžú]§<:¼ž‡“x,½—ެ¡êÆV€…þ"AP?ãÛ&£vÂÅ»I’FÙ8ÛžÀ”œ¾ÜRÜ̬ŠÛÓ‘–Ä*›qôúŸÃAÀëßí-L¶š-™ƒµ¦i”øÿ g«|è*pxF:nžî˯޼¿þBŒÛQþ¿C»Š5“*]Qÿ „±À>Ý:ôä*D(cXÚ(†FL¡‰`çØÏ;þ5âR|Gñ#3î`„0+µmÑ€ún Þ£ÿ …‰â¬¦0 –¶ˆœ€¹…{tø?ʯ(_çþ_Š5XY[¡Ù|Q¿ú
µŠ2︛sO* Бÿ ×â°<+à›MkÂ÷š…ij
·Ü–ˆ«ò‚?ˆœúäc½øåunû]¹Iïåè› ç ¯[ð&©¥Ýxn;6>}²’'`IË0ÁèN}zö5éâ©âr\¢0¥ñs^Ml¿«%®ýM$¥F•–ç‘Øj÷Ze¦£k
2¥ô"FqÀ`„~5Ùü+Ò¤—QºÕ†GÙ—Ë‹ çqä°=¶ÏûÔÍcá¶¡/ˆ¤[ý†iK ™°"ó•Æp;`t¯MÑt}+@²¶Óí·Ídy’3mÕË‘’zc€0 íyÎq„ž ¬4×5[_]Rë{]ì¬UZ±p÷^åØÞÈ[©&OúÝÛ‚‚s÷zžIïßó btÎΪ\ya¾U;C¤t*IÎFF3Џ™c
1žYD…U° êÄàõë\oŒ¼a ‡c[[GŽãP‘7 â znÈ>Ãü3ñ˜,=lUENŒäô¾ÚÀÓ[_ð9 œ´JçMy©E¢Àí}x,bpAó¦üdcûŒW9?Å[Há$¿¹pÄ™#^9O88©zO=«Ë!µÖüY¨³ªÍy9ûÒ1 úôÚ»M?àô÷«ÞëÖ–ÙMÌ#C&ßnJ“Üp#Ђ~²†G–àíekϵío»_žŸuΨQ„t“ÔÛ²øáû›´W6»Øoy FQÎr $Óõìk¬„‹ïÞÚ¼sÆíòÉ67\míÎyF¯ð¯TÓã’K;ë[ð·ld«7üyíšÉ𯊵 êáeYžÏq[«&vMÀðßFà}p3ÅgW‡°8ØßVín›þšõ³¹/ ü,÷ií|’‘´R,®ŠÉ‡W“Ž1ØöëÓ¾xžÖÞ¹xÞݬXZGù\’vŒž˜ÆsØúÓïí&ÒÒ{]Qž9£Ê¡ù·ÄÀ»¶áHäž™5—ìö« -&ù¤U<±ÉÆA>½ý+æg
jžö륢þNÛ=÷JÖÛfdÔ õýËúû‹ÓØB²¬fInZ8wÌÉЮ~aƒÎ=3ìx‚+/¶äÁlŠ‚?™Æü#8-œ\pqTZXtè%»»&ÚÝ#´ŠðÜžã§Í’¼{p·ß{m>ÞycP¨’¼¢0ú(Rƒë^Ž ñó¼(»y%m´ÕÙ}ÊûékB1¨þÑ®,#Q)ó‡o1T©ÜÃ*Ž‹‚yö<b‰4×H€“ìÐ.
¤²9ÌŠ>„Žãøgšñ
¯Š~)¸ßå\ÛÛoBŒa·L²œg$‚Iã¯ZÈ—Æ~%”äë—È8â)Œcƒ‘Âàu9¯b%)ÞS²¿Ïïÿ 4Öºù}Z/[H%¤vÉ#Ì’x§†b
© ³´tÜ{gn=iï%õªÇç]ܧ—!åw„SÓp ·VÈÏ¡?5Âcâb¥_ĤŠz¬—nàþÖΟñKÄöJé=ÌWèêT‹¸÷qÎჟ•q’zWUN«N/ØO^Ÿe|í¾©k{üõ4öV^ïù~G¹êzÂèº|·÷×[’Þ31†rpjg·n
Æ0Ý}kåË‹‰nîe¹ËÍ+™ÏVbrOç]'‰¼o®xÎh`¹Ç*±ÙÚ!T$d/$žN>¼WqᯅZ9ÑÒO\ÜÛê1o&,-z ~^NCgNÕéá)ÒÊ©7‰¨¯'Õþ¯þ_¿Ehîþóâ €ï¬uÛûý*ÎK9ä.â-öv<²‘×h$àãúW%ö¯~«g-ÕõÀàG~>Zú¾Iš+(šM³ Û#9äl%ðc¬ ûÝ xÖKG´x®|¸¤Ï™O:Ê8Ã’qÉcÔä‚yÇNJyËŒTj¥&µOmztjÿ ?KëaµÔù¯áýóXøãLeb¾tžAÇû`¨êGBAõ¾•:g˜’ù·,þhÀ`¬qÜ` e·~+å[±ý“âYÄjWì—µHé±ø?Nõô>½âX<5 Ç©ÏѼM¶8cܪXŽÉ^r?¼IróÈS•ZmÇ›™5»òÚÚ7ïu«&|·÷•Ά
>[©ÞXHeS$Œyà€ ÷ù²:ò2|óãDf? Z¼PD¶ÓßC(xÆ0|©ßR;ôMsÿ µ´ÔVi¬,͹›Ìxâi˜`¹,GAéÇlV§ÄýF×Yø§ê–‘:Ã=ò2³9n±ÉžØÏ@yÎWžæ±Ãàe„ÄÒN ]ïòêìú_Go'¦ŽÑ’_×õЯðR66þ!›ÑÄ gFMÙ— äžäqôÈ;ÿ eX<#%»Aö‰ãR¤ Í”Ž¹È G&¹Ÿƒ&á?¶Zˆ±keRè Kãnz·ãŠÕøÄÒÂ9j%@®×q±ÜŒý[õ-É$uíè&¤¶9zÇï·Oøï®ÄJKšÖìdü"µˆ[jײÎc;ã…B(g<9nàȯG½µŸPÓ.´Éfâ¼FŽP
31 ‘ÏR}<3šä~
Ã2xVöî Dr
Ç\›}Ý#S÷ÈÀëŽHÆI®à\OçKuäI¹†ó(”—GWî ñ³¹¸æ2¨›‹ºÚû%¾ýÖ_3ºNú¯ëúì|ÕÅÖ‰}ylM’ZËîTÿ á[ðÐñ/ˆ9Àû
¸ón3 Mòd‘÷ döª^.Êñް›BâîNp>cëÏçÍzïÃôÏ
YÍ%ª¬·ãÏ-*9ÜÂãhéŒc¾dÈêú¼Ë,. VŠ÷çeÿ n/¡¼äãõâ=‹xGQKx”|¹bÌŠD@2Œ 8'Ž àúƒŽ+áDÒ&¡¨"Œ§–Žr22 Ç·s]ŸÄ‹«ð%ÚÄ<¹ä’(×{e›HÀqÁç©Ç½`üŽÚõK饚9ƒÄ±€<–úƒú~ çðñO#Í%iKKlµ¦¾F)'Iê¬Î+Ç(`ñ¾£œdÈ’`™ºcßéé^ÿ i¸”Û\ý¡æhÔB«aq¸}ãÀÆ:ÜWƒ|FÛÿ BŒÇÀeaŸ-sÊ€:úW½ÜÝÜ<%$µ†%CóDªÀí%IÈÏʤ…ôäñÞŒ÷‘a0“ôŽÚë¤nŸoW÷0«e¶y'Å»aΗ2r’# Û°A^ý9ÉQÔõ=ù5¬£Öü.(Þ’M$~V«=éSÄFN½®©ÔWô»ÿ þHžkR‹ìÏ+µµžöê;khÚI¤m¨‹Ôš–âÖçJ¾_Z•’6a”Èô> ÕÉaÕ<%®£2n bQŠå\tÈõUÿ ø»þ‹k15‚ÃuCL$ݹp P1=Oøýs¯^u éEJ”–éêŸê½5ýzy›jÛ³á›Ûkÿ ÚOcn±ÛÏîW;boºz{ãžüVÆ¡a£a5½äÎÂks¸J@?1è¿{$ä‘=k”øsÖ^nŒ¦)ÝåXÃíùN1ØõÚOJë–xF÷h¸ Œ"Ž?x䜚ü³ì¨c*Fœ¯i;7~ñí׫Ðó¥Ë»3Ãü púw ‰°<Á%»ñž ÿ P+Û^ ¾Ye£ŽCÄŒ„/>˜>•á¶Ìm~&&À>M[hÈÈÿ [Ž•íd…RO@3^Ç(ʽ*¶ÖQZyßþ
1Vº}Ñç?¼O4Rh6R€ª£í¡ûÙ
a‚3ß·Õ
ü=mRÍ/µ9¤‚0ÑC¼Iè:cŽsÛ¾™x£ÆÐ¬ªÍöˢ샒W$•€Å{¨ÀPG
ÀÀàŸZìÍ1RÉ0´ðxEË9+Éÿ ^rEÕ—±Š„70l¼áË@û.' ¼¹Žz€N3úUÉ<3á×*?²¬‚ä†"Ùc=p íÛ'¡ª1ñ"økJ†HÒ'»Ÿ+
oÏN¬Ã9 dÙãÜדÏâÍ~æc+j·Jzâ7(£ðW]•æ™?nê´º6åwéåç÷N•ZŠíž›¬|?Ðõ?Ñ-E…®³ÇV$~X¯/…õ x‘LˆÑÜÚÈ7¦pzãÜüë½ðÄ^õtÝYËÍ7ÉÖÕ8ÏUe# #€r=sU¾/é’E§jRC4mxNÝ´9†íuá»›V‘
ZI€×cr1Ÿpzsøf»¨åV‹ìû`qËLÊIã?\~¼³áËC©êhªOîO»‘ÃmçÛçút×¢x“Z}?Üê#b-¤X7õÄò gž zzbº3œm*qvs·M=íúéw}¿&Úª°^Ö×µÏ(ø‡â†Öµƒenñý†×åQáYûœ÷ÇLœôÎNk¡ð‡¼/µ¸n0æÉ0¬ƒ‚üîÉÆvŒw®Sáö”š¯‹-üÕVŠØÙ[$`(9cqƒÔ_@BëqûÙ`Ýæ0;79È?w<ó |ÙÜkßÌ1±Ëã¿ìÒ»ðlìï«ÓnªèèrP´NÏš&ŽéöÙ¸÷æ°~-_O'‰`°!RÚÚÝ%]Ø%þbß1'¿ÿ XÕáOöÎŒ·‹¬+Åæ*ÛÛ™0¤ƒOÍÔ`u¯¦ÂaèÐÃÓ«‹¨Ô¥µœ¿¯ÉyÅÙ.oÔôŸ Úx&(STðݽ¦õ] ’ÒNóÁäÈùr3í·žÚ[™ƒ¼veÈ÷ÞIõÎGlqÎ=M|«gsªxÅI6
]Z·Îªä,¨zŒŽÄ~#ØŠúFñiÉqc©éÐD>S딑 GñŽ1éÐ^+
Ëi;Ô„µVÕú»i¯ÈÒ-ZÍ]òܘ®ì`bÛÙ¥_/y(@÷qÐúg Ô÷W0.Ø›
6Ò© r>QƒŒ0+Èîzb¨É+I0TbNñ"$~)ÕÒ6Þ‹{0VÆ27œWWñcÄcX×íôûyKZéðªc'iQ¿¯LaWŠŸS\·Š“źʸ…ôÙÂí|öÀÇåV|!¤ÂGâÛ[[’ï
3OrÙËPY¹=Î1õ5öåTžÑè Ú64/üö?Zëžk}¬¶éàoá¾á}3“ü]8Éæ¿´n²Žš_6¾pœ)2?úWÓÚ¥¾¨iWúdŽq{*ª1rXŒd…m»‰äcô¯–dâ•ã‘Jº¬§¨#¨®§,df«8ÉÅßN¾hˆ;îÓ=7áùpën®É 6ûJžO2^œÐò JÖø¥²ã›Ò6Ü·‰!wbÍ‚¬O©»õ¬ÿ ƒP=Ä:â¤-&ÙŽ
`È9 r9íϧzë> XÅ7ƒ5X–krÑ¢L7€ìw}ÑŸNHëŒüþ:2†á¼+u·á÷N/Û'Ðç~ߘô«ëh!ónRéeQ´6QÛÿ èEwëÅÒ|¸Yqó1uêyùzð8 ƒŠù¦Ò;¹ä6öi<'ü³„[ÃZhu½ ùÍ¡g‚>r¯×ŠîÌx}bñ2“k꣧oø~›hTèóËWò4|ki"xßQ˜Ï6øÀLnß‚0 ¹Æ{±–¶Öe#¨27È@^Ìß.1N¾œyç€õ†ñeé·Õã†çQ°€=Ì©ºB€Ø8<‚ÃSõ®ùcc>×Ú .Fr:žÝGæ=kÁâ,^!Fž
¬,àµ}%¶«îõ¹†"r²ƒGœüYÕd?aÑÃY®49PyU ÷þ!žxÅm|/‚ãNð˜¼PcûTÒ,¹/Ý=FkÏ|u¨¶«âë…{¤m¢]Û¾ïP>®XãÞ½iÓÁ¾
‰'¬–6ß¼(„ï— í!úÙäzôë^–:œ¨å|,_¿&š×]uÓѵÛô4’j”bž§x‘Æ©ã›á,‚[Ô
ÎÞ= ŒËæ ÀùYÁ?ŽïÚ¼?ÁªxºÕÛ,°1¸‘¿ÝäãØ¯v…@¤åq½ºã œàûââ·z8Xýˆþz~—û»™âµj=Ž
â~ãáh@'h¼F#·Üp?ŸëQü-løvépx»cŸø…lxâÃûG·‰¶ø”L£©%y?¦úõÆü-Õ¶¥y`Òl7>q’2üA?•F}c‡jB:¸Jÿ +§¹¿¸Q÷°ív=VÑìu[Qml%R7a×IèTõéŽx¬
?†š7
1†îã-ˆã’L¡lŽ0OÓ=ÅuˆpÇ•¼3ÛùÒ¶W/!|’wŽw^qÔ×ÏaóM8Q¨ãÑ?ëï0IEhÄa¸X•`a
?!ÐñùQ!Rä žqŽžÝO`I0ÿ J“y|ñ!Îã@99>þ8–+éáu…!ù—ä
ʰ<÷6’I®z
ÅS„¾)Zþ_Öýµ×ËPåOwø÷þ*üïænÖùmØÝûþ¹=>¦½öî×Jh]¼ç&@§nTŒ6ITÀõ^Fxð7Å3!Ö·aÛ$þÿ ¹ã5îIo:ȪmËY[’8ÇӾlj*òû¢¥xõ¾¼ú•åk+\ð¯ HÚoŽl•Ûk,¯ ç²²cõÅ{²Z\
´ìQ åpzŽ3Ôð}ÿ Jð¯XO¡øÎé€hÙ¥ûLdŒ`““ù6Gá^ÃáÝ^Ë[Ñb¾YåŒÊ»dŽ4†2§,;ÿ CQÄ´¾°¨c–±”mºV{«ßÕýÄW\ÖŸ‘çŸ,çMRÆí“l-ƒn~ë©ÉÈê Ü?#Ž•¹ðãSÒ¥ÐWNíà½;ãž)™ÎSÈ9cóLj뵿ūiÍk¨ió¶X‚7÷ƒ€yãnyÏŽëÞ Öt`×À×V's$È9Ú:ä{wÆEk€«†Çàc—â$éÎ.éí~Ýëk}ÅAÆpörÑ¢‡Šl¡ÑüSs‹¨‰IÄóÀ×wñ&eºðf™pŒÆ9gŽTø£lñëÀçŽ NkÊUK0U’p ï^¡ãÈ¥´ø{£ÙHp`’ØåbqÏ©äó^Æ:
Ž' ÊóM«õz+ß×ó5Ÿ»('¹ð¦C„$˜Å¢_ºÈI?»^äã'ñêzž+ë€ñ-½»´}¡Ë*õ?.xÇ^1ŽMyǸ&“—L–îëöâ7…' bqéÎGé]˪â1$o²¸R8Ã`.q€}sÖ¾C98cêÆÞíïóòvÓòùœÕfÔÚéýuèÖ·Ú
Å‚_¤³ÜۺƑß”àרý:׃xPþÅÕî-/üØmnQìïGΊÙRqê=>¢½õnæ·r!—h`+’;ò3È<“Û©éšóŸx*÷V¹¸×tÈiˆßwiÔÿ |cŒñÏ®3ֽ̰‰Ë Qr©ö½®¼ÛoÑÙZÅÑ«O൯ýw8;k›ÿ x†;ˆJa;‘º9÷÷R+¡ñgŽí|Iáë{ôáo2ʲ9 029ÉÏLí\‰¿¸Ÿb˜ "Bv$£ßiê>=ªª©f
’N ëí>¡NXW~5×úíø\‰»½Ï^ø(—wÖú¥¤2íŽÞXæÁ$°eÈ888^nÝë²ñÝÔ^ ÖÚ9Q~Ëå7ï
DC¶ÑµƒsËÇè9®Wáþƒ6‡£´·°2\Ý:ÈÑ?(#¨'$õèGJ¥ñW\ÿ ‰E¶—¸™g˜ÌÀ¹;Pv ú±ÎNs·ëŸ’–"Ž/:té+ûË]öJöÓM»ëø˜*‘•^Uý—êd|‰åñMæÔÝ‹23å™6æHùÛ‚ëüñ^…ñ1¢oêûÑEØ.õ7*ÅHtÎp{g<·Á«+¸c¿¿pÓ¾Æby=8É_ÄsÆk¬ñB\jÞÔì••Ë[9Píb‹Bヅ =93§ð§LšÛáÖšÆæXÌÞdÛP.0\ãïÛ0?™úJ¸™Ë
”•œº+=<µI£¦í¯õêt¬d‹T¬P=ËFêT>ÍØØ@Ï9<÷AQÌ×»Õ¡xùk",JÎæù±Éç$œŽŸZWH®¯"·UÌQ ’ÙÈ]ÅXg<ã
ߨg3-Üqe€0¢¨*Œ$܃
’Sû 8㎼_/e'+Ï–-èÓ¶¶Õíß[·ÙÙ½îì—¼sk%§µxä‰â-pÒeÆCrú
ôσžû=”šÅô(QW‚Õd\ƒæ. \àö¹¯F½°³½0M>‘gr÷q+œ¶NïºHO— ¤ ܥݔn·J|ÆP6Kµc=Isó}Ò çGš)a=—#vK›åoK§ßóÙ¤¶¿õú…ÄRÚ[ËsöÙ¼Ë•Ë ópw®qœŒ·Ø
ùÇâ‹ý‡ãKèS&ÞvûDAù‘É9ŒîqÅ}
$SnIV[]Ñ´Ó}ØÜ¾A Ü|½kÅþÓ|EMuR¼.I¼¶däò‚ÃkÆ}ðy¹vciUœZ…Õõ»z¾÷¿n¦*j-É/àœHã\y5 Û ß™ó0—äŸnzôã#Ô¯,†¥ÚeÔ÷ÜÅ´„“'c…<íÝ€<·SŠ¥k§Ã¢éÆÆÙna‚8–=«Êª[Ÿ™°pNî02z“ÔÙ–K8.È’Þî(vƒ2®@ äÈûãçžxäÇf¯ˆu¹yUÕîýWšÙ|›ëÒ%Q^í[æ|éo5ZY•^{96ˆY‚§v*x>âº_|U¹Ö´©tûMÒÂ9PÇ#«£#€ éÉñ‘ƒÍz/‰´-į¹°dd,Б›p03ƒœ{ç9=+
Ûᧇ¬¦[‡‚ê婺¸#±ß=³ý¿•Õµjñ½HÙh›Û[§ÚýÊöô÷{˜?ô÷·Ô.u©–_%còcAÀ˜’
}0x9Î>žñÇáÍ9,ahï¦Ì2òÓ ñÛAäry$V²Nð
]=$Ž
‚#Ù‚1ƒƒødõMax‡ÂÖ^!±KkÛ‘
«“Çó²FN8+ëÎ{Ò¼oí§[«ÕMRoËeç×[_m/¦¦k.kôgŽxsSÓ´ý`êzªÜÜKo‰cPC9ÎY‰#§^üý9¹âïÞx£Ë·Ú`±‰‹¤;³–=ÏaôÕAð‚÷kêÁNBéÎælcõö®£Fð†ô2Ò¬]ßÂK$ÓÜ®•”/ÊHàã$ä¸÷ëf¹Oµúâ“”’²øè´µþöjçNü÷üÌ¿ xNïFÒd»¼·h®îT9ŽAµÖ>qÁçÔœtïÒ»\ȶÎîcÞäîó3¶@#ÉIÎ ÔñW.<´’¥–ÑÑ€ÕšA‚ ;†qÓë‚2q
ÒÂó$# Çí‡
!Ë}Õ9ÈÎÑÉã=;ŒÇÎuñ+ÉûÏ¥öíeÙ+$úíÜ娯'+êZH4ƒq¶FV‹gïŒ208ÆÌ)íб>M|÷âÍã¾"iì‹¥£Jd´™OÝç;sÈúr+ÜäˆË)DŒ¥šF°*3Õ”d{zÔwºQ¿·UžÉf†~>I+ŒqÔ`ð3œ“Ü×f]œTÁÔn4“ƒø’Ýßõ_«*5šzGCÊ,þ+ê1ò÷O¶¸cœºb2yÇ;cùÕ£ñh¬›áÑŠr¤ÝäNBk¥—á—†gxšX/쑘hŸ*Tçn =ûã¦2|(ð¿e·ºÖ$
ýìŸ!'åΰyîî+×öœ=Y:²¦ÓÞ×iü’—ü
-BK™£˜›âÆ¡&véðõ-ûÉY¹=Onj¹ø¯¯yf4·±T Pó`çœ7={×mÃ/¢˜ZÚòK…G½¥b„’G AãÜœ*í¯Ã¿ IoæI¦NU8‘RwÈã;·€ Û×ëÒ”1Y
•£E»ÿ Oyto¢<£Áö·šï,䉧ûA¼sû»Nò}¹üE{ÜÖªò1’õÞr0â}ÎØ#>à/8ïéÎ~—áÍ#ñÎlí§³2f'h”?C÷YËdð:qëõÓ·‚ïeÄ©
ÔÈØÜRL+žAÎ3¼g=åšó³Œt3
ÑQ¦ùRÙßE®¼±w_;þhš’Sirÿ ^ˆã¼iੇ|RòO„m°J/“$·l“ ÇÓ¿ÿ [ÑŠÆ“„†Õø>cFÆ6Ø1ƒ– àz7Ldòxäüwá‹ÝAXùO•Úý’é®ähm •NÀ±ÌTÈç
ƒ‘I$pGž:‚ÄbêW¢®œ´|¦nÍ>¶ÖÏ¢§ÎÜ¢ºö¹•%ÄqL^öÛKpNA<ã¡ …î==ª¸óffËF‡yÌcÉ ©ç$ð=ñÏYþÊ’Ú]—¥‚¬‚eDïÎH>Ÿ_ÌTP™a‰ch['çÆÜò7a‡?w°Ïn§âÎ5”’¨¹uÚÛ|´ÓÓc§{O—ü1•ªxsÃZ…ÊÏy¡Ã3¸Ë2Èé» ‘ƒÎ äžÜðA§cáOéúÛ4ý5-fŒï„ù¬ûô.Ç Üsž•Ò¾•wo<¶Ÿ"¬¡º|£
î2sÇ¡éE²ÉFѱrU°dÜ6œ¨ mc†Îxë׺Þ'0²¡Rr„{j¾í·è›µ÷)º·å–‹î2|I®Y¼ºÍË·–ÃÆàã£'óÆxƒOÆÞ&>\lóÌxP Xc¸ì Sþ5§qà/ê>#žÞW¸if$\3 ® ûÄ“ùŽÕê¾ð<Ó‹H¶óÏ" å·( á‘€:ã†8Ï=+ꨬUA×ÃËÚT’ÑÞöù¥¢]{»ms¥F0\ÑÕ—ô}&ÛB´ƒOŽÚ+›xíÄÀ1
,v± žIëíZ0ǧ™3í2®0ทp9öÝÔž)ÓZËoq/Ú“‘L ²ŒmùŽï‘Ó9§[Û#Ä‘\ÞB¬Çs [;à à«g‚2ôòªœÝV§»·¯/[uó½õÛï¾
/šÍ}öüÿ «=x»HŸÂÞ.™ ÌQùŸh´‘#a$‚'¡u<Š›Æ>2>+ƒLSiöwµFó1!eg`£åœ ÷ëÛö}Á¿ÛVÙêv $¬ƒ|,s÷z€ð΃¨x÷ÅD\ÜŒÞmåÔ„ ˆ o| :{ÇÓ¶–òÁn!´0Ål€, ƒ ( ÛŒŒc¶rsšæ,4‹MÛOH!@¢ ÇŽ„`å²9ÝÃw;AÍt0®¤¡…¯ØÄ.Àìí´ƒ‘ßñ5Í,Óëu-ÈÔc¢KÃÓ£òÖ̺U.õL¯0…%2È—"~x
‚[`có±nHàŽyàö™¥keˆìŒÛFç{(Ø©†`Jã#Žwg<“:ÚÉ;M
^\yhûX‡vB·÷zrF?§BÊÔ/s<ÐÈB)Û± ·ÍÔwç5Âã:så§e{mѤï«Òíh—]Wm4âí¿ùþW4bC3¶ª¾Ùr$pw`àädzt!yŠI„hÂîàM)!edŒm'æ>Ç?wzºKìcŒ´¯Ìq6fp$)ãw¡éUl`µ»ARAˆÝÕgr:äŒgƒéé[Ôö±”iYs5Ýï«ÙG—K=þF’æMG«óÿ `ŠKɦuOQ!ÕåŒ/ÎGÞ`@ËqÕzdõâ«Ê/Ö(ƒK´%ŽbMüåÜŸö—>¤óŒŒV‘°„I¢Yž#™¥ùÏÊ@8
œgqöö5ª4vד[¬(q cò¨À!FGaÁõõ¯?§†¥ÏU½í¿WªZ$úyú½Žz×§Éþ?>Ã×È•6°{™™ŽÙ.$`ÎUœ…çè ' ¤r$1Ø(y7 ðV<ž:È ÁÎMw¾Â'Øb§øxb7gãО½óÉÊë²,i„Fȹ£§8ãä½k¹¥¦ê/ç{ïê驪2œ/«ü?¯Ô›ìñÜ$þeýœRIåŒg9Ác’zrrNO bÚi¢
ѺË/$,“ª¯Ýä;Œ× ´<ÛÑn³IvŸb™¥ nm–ÄŸ—nÝÀãŽ3ëÍG,.öó³˜Ù£¹uÊÌrŠ[<±!@Æ:c9ÅZh
ì’M5ÄìÌ-‚¼ëÉùqŽGì9¬á ;¨A-ž—évþÖ–^ON·Ô”ŸEý}ú×PO&e[]ÒG¸˜Ûp ƒÃà/Ë·8ûÀ€1ž@¿ÚB*²¼ñì8@p™8Q“žÆH'8«I-%¸‚
F»“åó6°Uù|¶Ú¸ã ò^Äw¥ŠÖK–1ÜÝK,Žddlí²0PÀü“×ükG…¯U«·¶–´w¶ŽÍ¾©yÞú[Zös•¯Á[™6°
¨¼ÉVæq·,#
ìãï‘×8îry®A››¨,ãc66»Ë´ã'æÉù?t}¢æH--Òá"›|ˆ¬[í 7¶ö#¸9«––‹$,+Ëqœ\Êøc€yê^ݸÄa°«™B-9%«×®‹V´w~vÜTéꢷþ¼ˆ%·¹• ’[xç•÷2gØS?6åÀÚ õ9É#š@÷bT¸º²C*3Bá¤òÎA9 =úU§Ó"2Ãlá0iÝIc‚2Î@%öç94ùô»'»HÄ¥Ô¾@à Tp£šíx:úÊ:5eºßMý×wµ›Ó_+šº3Ýyvÿ "ºÇ<ÂI>Õ1G·Ë«È«É# àÈÇ øp Jv·šæDûE¿›†Ë’NFr2qŸ½ÇAÜšu•´éí#Ħ8£2”Ú2Ã/€[ÎTr;qŠz*ý’Îþ(≠;¡TÆâ›;ºÿ àçœk‘Þ8¾Uª¾íé{^×IZéwÓkXÉûÑZo¯_øo×È¡¬ â–ÞR§2„‚Àœü½ùç® SVa†Âüª¼±D‘ŒísŸàä|ä2 æ[‹z”¯s{wn„ÆmáóCO+†GO8Ïeçåº`¯^¼ðG5f{Xžä,k‰<á y™¥voÆ éÛõëI=œ1‹éíÔÀÑ)R#;AÂncäŽ:tÏ#¶TkB.0Œ-ÖÞZÛgumß}fÎJÉ+#2êÔP£žùÈÅi¢%œ3P*Yƒò‚A쓎2r:ƒÐúñiRUQq‰H9!”={~¼“JŽV¥»×²m.ÛߺiYl¾òk˜gL³·rT•
’…wHÁ6ä`–Î3ùÌ4Øe³†&òL‘•%clyîAÂäà0 žüç$[3uŘpNOÀÉ=† cï{rYK
ååä~FÁ
•a»"Lär1Ó¯2Äõæ<™C•.fÕ»è¥~½-¿g½Â4¡{[ør¨¶·Žõäx¥’l®qpwÇ»8ärF \cޏܯÓ-g‚yciÏÀ¾rÎwèØÈ#o°Á9ã5¢šfÔxÞæfGusÏÌJÿ µ×œ/LtãÅT7²¶w,l
ɳ;”eúà·¨çîŒsÜgTÃS¦^ '~‹®›¯+k÷ZÖd©Æ*Ó[Ü«%Œk0ŽXƒ”$k#Ȩ P2bv‘ƒŸáÇ™ÆÕb)m$É*8óLE‘8'–ÜN Úyàúô+{uº±I'wvš4fÜr íì½=úuú
sFlìV$‘ö†HÑù€$§ õ=½¸«Ž]
:Ž+•¦ïmRþ½l´îÊT#nkiøÿ _ðÆT¶7Ò½ºÒ£Î¸d\ã8=yãŽÜäR{x]ZâÚé#¸r²#»ÎHÆ6õ ç® ÎFkr;sºÄ.&;só±Ç9êH÷ýSšÕtÐU¢-n Ì| vqœ„{gŒt§S.P‹’މ_[;m¥ÞZýRûÂX{+¥úü¼ú•-àÓ7!„G"“´‹žƒnrYXã¸îp éœ!ÓoPÌtÑ (‰Þ¹é€sÓ#GLçÕšÑnJý¡!‘Tä#“ß?îýp}xÇ‚I¥Õn#·¸–y'qó@r[ Êô÷<ÔWÃÓ¢áN¥4Ô’I&ݼ¬¬¼ÞºvéÆ
FQV~_ÒüJÖÚt¥¦Xá3BÄP^%ÈÎW-×c¡ú©¤·Iþèk¥š?–UQåIR[’O 5x\ÉhÆI¶K4«2ùªŠŒ<¼óœçØ`u«‚Í.VHä€ Ëgfx''9ÆI#±®Z8
sISºku¢ßÞ]úk»Jößl¡B.Ü»ÿ MWe
°·Ž%šêɆ¼»Âù³´œ O¿cÐÓÄh©"ÛÜÏ.ÖV’3nüÄmnq[ŒòznšÖ>J¬òˆæ…qýØP Ž:ä7^0yëWšÍ_79äoaÈ °#q0{ää×mœy”R{vÒÞ¶ÚÏe¥“ÚÆÐ¥Ì®—õýjR •íç›Ìb„+JyÜØÙ•Ç]¿Ôd þËOL²”9-Œ—õÃc'æÝלçÚ²ìejP“½
âù°¨†ðqòädЃÉäÖÜj÷PÇp“ÍšŠå«‘î
<iWNsmª»¶vÓz5»ûì:Rs\Ðßôû×uÔÿÙ